Язык C# и .NET

На сегодняшний день язык C# (Си шарп) является одним из наиболее популярных языков программирования в мире. Согласно Tiobe Index, язык C# уверенно входит в десятку самых популярных языков программирования, уступая по популярности только таким «монстрам» как Java, Python и C/С++. 

На C# сегодня пишется огромное количество самых различных по составу и сложности приложений — от мелких утилит для Windows до крупных web-порталов, обслуживающих миллионы пользователей в сутки, а современные возможности платформы .NET позволяют создавать кроссплатформенные приложения практически под любую операционную систему, включая такие как Linux, Mac OS и другие. 

Язык C# и .NET

Изначально, язык программирования C# разрабатывался как объектно-ориентированный язык общего назначения для платформы .NET Framework под руководством Андерса Хейлсберга (разработчика Turbo Pascal и Delphi). Нередко, когда речь заходит о языке программирования C#, подразумевается платформа .NET и наоборот — при упоминании .NET имеют в виду C#. Однако, это не совсем так.

Сама платформа .NET — это более широкое понятие. Эта платформа объединяет в себе, на сегодняшний день, множество различных технологий. Для написания приложений с использованием возможностей .NET мы можем использовать различные языки программирования, начиная от Visual Basic и, заканчивая тем же C#. В свою же очередь, C# — это конкретный язык программирования (инструмент), благодаря которому, мы можем взаимодействовать с .NET и создавать свои приложения. 

Чтобы было понятно о чем идет речь — посмотрим на то, что из себя в настоящее врем представляет собой платформа .NET.

Платформа .NET

.NET — это платформа для разработки любых приложений: для Интернета, мобильных устройств, настольных ПК, игр, Интернета вещей и так далее. 

Можно выделить следующие преимущества платформы .NET:

  1. Поддержка нескольких языков программирования. В основе всей платформы .NET лежит CLR (Common Language Runtime) — общеязыковая среда выполнения. Поэтому, кроме C# приложения для .NET могут быть написаны, например, на таких языках как F#, Visual Basic, Visual C++ и даже на ныне «мёртвом» диалекте — Delphi.NET.
  2. Кроссплатформенность. Платформа .NET в современной её реализации позволяет разрабатывать приложения для Windows, Linux, Mac OS, Android и других операционных систем.
  3. Мощная система классов. Какое бы приложение на каком бы языке мы не разрабатывали, в любом случае мы задействуем систему классов .NET, а так называемые упаковка-преобразование и распаковка-преобразование позволяют работать с любым типом данных (например, со строками или целочисленными значениями) как с объектами, что значительно упрощает процесс изучения возможностей системы классов .NET.
  4. Разнообразие технологий. CLR и система классов .NET являются основой целого стека технологий, применяемых в .NET. Так, например, для разработки приложений с графическим интерфейсом мы можем использовать технологии WPF, Windows Forms или Universal Windows Platform (UWP), MAUI (для кроссплатформенной разработки), для работы с базами данных — ADO.NET и Entity Framework Core. Если же мы хотим написать полноценное web-приложение, то можем использовать целый стек технологий из ASP.NET Core, позволяющих создавать web-приложения от простейших API для доступа к данным и, заканчивая крупными web-порталами. 
  5. Автоматическая сборка мусора. Последнее в списке, но далеко не последнее по значимости преимущество. CLR самостоятельно удаляет не используемые объекты из памяти, благодаря чему, нам больше нет необходимости заботится о своевременном уничтожении неиспользуемых объектов, а значит — утечки памяти сведены к минимуму. 

Единственный момент, который может отпугивать новичков от изучения C# и .NET — это разнообразие технологий. Для опытного разработчика это не является проблемой, так как он знает, что необходимо разработать и какие технологии применить. Если же мы возьмем условного «любителя», который хочет начать свой путь в программировании с языка C# и дать ему на выбор все имеющиеся в .NET технологии, то вряд ли он сможет быстро сделать выбор в пользу той или иной технологии даже, если будет точно знать какое приложение он хочет разработать и как оно должно выглядеть. Возможно, что по этой же причине вы не увидите ни сейчас, ни через год всеобъемлющего учебника по C# и .NET в котором бы было абсолютно всё — от основ языка C# до описания работы на C# со всеми имеющимися технологиями. Такой учебник явно должен быть намного больше, чем знаменитый роман «Война и Мир». Поэтому и здесь, на этом сайте, все учебники и пособия по C# и .NET разбиты по различным категориям — основы C#, ASP.NET Core и т.д. И, прежде, чем переходить к изучению конкретной технологии, стоит вначале изучить основы языка C#, то есть тот самый учебник, который Вы читаете прямо сейчас.

.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 Framework подошло к концу и использовать сейчас эту платформу для разработки нового проекта не имеет никакого смысла. В настоящее время .NET Framework стоит использовать разве что для поддержки старого программного обеспечения. Для всего же остального у нас теперь есть платформа .NET.

Общеязыковая среда выполнения (Common Language Runtime, CLR)

Среда выполнения — это, по сути, виртуальная машина на которой выполняется программа.

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

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

Исходя из вышесказанного, процесс создания и выполнения приложения на C# и .NET можно представить в виде следующей упрощенной схемы:

Исходный код на C# —> компиляция сборки (CIL) —> Запуск приложения —> JIT-компиляция в машинный код —> Использование приложения пользователем.

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

В свою очередь, для приложений, которые не используют CLR, например, написанные на C++, Delphi применяется обратный термин — неуправляемый код. В этом случае очистка памяти и прочие важные функции целиком и полностью ложатся на плечи разработчика приложения. 

Стоит отметить, что при необходимости, мы можем задействовать в приложении на C# неуправляемый код и, например, использовать библиотеки DLL, разработанные в C++ в своем приложении C#, но такие приемы программирования явно выходят за пределы того, что называется основами.

Итого 

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

Подписаться
Уведомить о
guest
4 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии