Язык C# и .NET - C# и .NET

Язык C# и .NET

Язык C# (си шарп), на сегодняшний день, уверенно входит в десятку самых популярных языков программирования, согласно Tiobe Index. В 2023 году этот язык программирования был объявлен языком года, а пик его популярности пришелся на 2012 год, когда C# занял третье место среди всех языков программирования, участвующих в рейтинге Tiobe Index. На языке C# пишется огромное количество приложений, начиная от небольших утилит и, заканчивая крупными web-приложениями, системами машинного обучения, играми и так далее. Язык C# и .NET часто принимают за тождественные понятия, однако это не совсем так. А, точнее, совсем не так

Платформа .NET

Платформа .NET — это бесплатнаякроссплатформеннаяоткрытая платформа для разработки приложений самых разных типов на различных языках программирования.

Говоря несколько упрощенно, платформа .NET – это набор программных средств и компонентов и технологий для создания приложений на различных языкам программирования. Так, используя .NET мы можем разрабатывать программы на C#, VB, F# и других языках, поддерживающих эту платформу и язык C# здесь лишь один из языков для .NET, хотя и наиболее популярных.

Рассмотрим какие преимущества несет в себе платформа .NET

Преимущества .NET

Кроссплатформенность .NET

Кроссплатформенность означает, что на каком бы языке программирования мы не разрабатывали наше приложение, это приложение будет успешно запущено в любой операционной системе, поддерживающей .NET. Так, на сегодняшний день, мы можем разрабатывать приложения для Windows, Linux. MacOS, iOS, Android и Tizen (операционная система от компании Samsung). Так как .NET объединяет в себе целый ряд технологий, то у нас, как у разработчиков, есть огромнейший выбор того, как и под какую операционную систему мы будем разрабатывать наше приложение – будем ли мы писать простое консольное приложение для Windows или создадим web-приложение, будет ли наше приложение одинаково работать в iOS и Android или же это будет приложение с графическим интерфейсов только для Windows. Выбор только за нами.

Поддержка нескольких языков программирования

В основе всей платформы .NET лежит CLR (Common Language Runtime) — общеязыковая среда выполнения (о ней мы поговорим ниже). Благодаря этому, мы можем создавать приложения .NET, используя более шестидесяти языков программирования, девять из которых созданы непосредственно в Microsoft – это:

  1. VB .NET
  2. C# .NET
  3. VC++.NET
  4. J# .NET
  5. F# .NET
  6. Jscript.NET
  7. Windows PowerShell (объединяет в себе командную оболочку и среду написания сценариев, например, для автоматизации рутинных задач)
  8. Iron phyton
  9. Iron Ruby

Разнообразие технологий

CLR и библиотека базовых классов (BCL) .NET являются основой целого стека технологий, применяемых в .NET. Так, например, для разработки настольных приложений с графическим интерфейсом мы можем использовать технологии:

  • WPF,
  • Windows Forms
  • Universal Windows Platform (UWP),
  • MAUI (для кроссплатформенной разработки, включая Windows, iOS, Android)

для работы с базами данных

  • ADO.NET
  • Entity Framework Core.

Если же мы хотим написать полноценное web-приложение, то можем использовать целый стек технологий из ASP.NET Core, позволяющих создавать web-приложения от простейших API для доступа к данным и, заканчивая крупными web-порталами:

  • ASP.NET Core Minimal API
  • ASP.NET Core WebAPI
  • ASP.NET Core MVC
  • ASP.NET Core Blazor

Такой большой стек различных технологий может вначале испугать новичка так как, не зная даже основ языка, сложно понять какую технологию изучать в первую очередь, какую во вторую очередь, а какую вообще можно не изучать. Однако, мы с вами будем разбираться в этих технологиях по порядку и начнем с главного – с основ программирования на языке C# где для нас не важна конкретная технология.

Мощная система классов и автоматическая сборка мусора

Какое бы приложение на каком бы языке мы не разрабатывали, в любом случае мы задействуем библиотека базовых классов (BCL), а так называемые упаковка-преобразование и распаковка-преобразование позволяют работать с любым типом данных (например, со строками или целочисленными значениями) как с объектами, что значительно упрощает процесс изучения возможностей системы классов .NET.

Последнее в списке, но далеко не последнее по значимости преимущество – автоматическая сборка мусора. CLR самостоятельно удаляет не используемые объекты из памяти, благодаря чему, нам больше нет необходимости заботится о своевременном уничтожении неиспользуемых объектов, а значит — утечки памяти сведены к минимуму.

.NET Framework, .NET Core и .NET

Достаточно долгое время, начиная с 2002 года, платформа .NET развивалась, как платформа для разработки приложений исключительно под Windows и носила название .NET Framework. Платформа часто подвергалась критике и 9 августа 2022 года была выпущена последняя версия этой платформы — .NET Framework 4.8.1 и в новых версиях Windows .NET Framework уже не будет распространяться как компонент операционной системы.

В 2016 году Microsoft выпустила первую версию новой платформы с открытым исходным кодом, которая получила название .NET Core 1.0. В отличие от своей предшественницы, .NET Core — это кроссплатформенная модульная платформа для разработки приложений под различные операционные системы — Windows, Linux, MacOS и т.д. Достаточно долго .NET Core и .NET Framework существовали параллельно, а именно — до 20 ноября 2020 года, когда компания Microsoft значительно обновила и доработала .NET Core и платформа получила простое и лаконичное название — .NET 5. С этого момента очередные версии платформы получают свой порядковый номер — .NET 6.NET 7.NET 8 и т.д. На момент написания этого руководства основной версией является .NET 9, а .NET 10 готовится к выпуску.

Таким образом, можно с уверенностью сказать, что время .NET Framework подошло к концу и использовать сейчас эту платформу для разработки нового проекта не имеет никакого смысла. До сих пор мы можем создавать приложения, используя .NET Framework, однако, использовать эту версию платформы для обучения или разработки нового программного обеспечения лучше не стоит.

“Кубики” .NET

Выше уже упоминались две важнейшие части платформы .NET – это общеязыковая среда выполнения (Common Language Runtime, CLR) и библиотека базовых классов (Base Class Libraries, BCL). Рассмотрим, что скрывается за этими названиями.

Что такое BCL?

BCL – это библиотека базовых классов .NET, разработанная компанией Microsoft. Без BCL мы не можем писать код на .NET. Это основной блок (“кубик”) любой программ .NET. Библиотека базовых классов устанавливаются на компьютер при установке платформы .NET и содержит предопределённые классы, которые используются для разработки приложений на любых языках, использующих .NET. Таким образом, на каком бы языке программирования мы не писали наше приложение, наши классы и объекты будут задействовать одни и те же базовые элементы из BCL.

Что такое CLR?

CLR расшифровывается как Common Language Runtime и является основным компонентом платформы .NET, благодаря которому, собственно, мы и можем запускать наши приложения и видеть результаты их работы. Среда CLR – это виртуальная машина, которая не только выполняет приложения, но и создает, а также компилирует код с помощью JIT-компилятора.

Чтобы понять за что отвечает CLR, рассмотрим следующую схему:

Язык C# и .NET

Вне зависимости от того, на каком языке пишется приложение, исходный код этого приложения будет переведен в единый для .NET промежуточный язык, который носит название Common Intermediate Language (CIL, также можно встретить аббревиатуры IL, MSIL). Скомпилированное таким образом приложение сохраняется в файле, который носит название сборка (англ. assembly). Например, в Windows файл сборки имеет расширение *.exe или *.dll.

Как только пользователь запускает приложение (сборку), среда CLR выбирает необходимый для конкретной архитектуры инструмент под названием JIT-компилятор. JIT-компилятор в каждый конкретный момент времени компилирует из CIL в машинный код ту часть приложения, к которому в данный момент времени идёт обращение. Если обращение идёт к другой части приложения, то уже скомпилированный код сохраняется и компилируется следующая часть CIL и так далее. Таким образом JIT-компиляция позволяет серьезно повысить производительность приложений.

Часто, для приложения разработанного на языке C# используется термин — управляемый код (managed code). Это означает, что приложение создано на платформе .NET и управляется общеязыковой средой CLR — среда загружает приложения, очищает память, предоставляет необходимые службы и т.д.

Подведем итог

Язык C# и .NET – это не тождественные понятия. Платформа .NET – это целый набор различных технологий и средств для разработки приложений на различных языках программирования, включая язык программирования C#. В основе работы .NET лежат BCL – базовая библиотека классов, используя которую мы создаем свои приложения, используя различные технологии, а также CLR – общеязыковая среда выполнения, благодаря которой исходный код наших приложений компилируется и запускается на компьютере пользователя.