Как работает .NET и зачем он нужен
Чтобы стать хорошим программистом, нужно понимать, как работают инструменты и технологии. Рассказываем, что такое .NET.
vlada_maestro / shutterstock
.NET — это фреймворк от Microsoft, который позволяет использовать одни и те же пространства имён, библиотеки и API для разных языков. Чаще всего это четыре языка из семейства .NET:
- C#;
- Visual Basic;
- Visual C++;
- F#.
Когда вы создаёте программу на одном из этих языков, в самом начале вы подключаете пространство имён System. Если бы не .NET, то для каждого из этих языков пришлось бы создавать отдельный System. То есть нарушился бы один из главных принципов программирования — DRY (англ. Don’t repeat yourself — не повторяйся).
На момент написания статьи наиболее распространён .NET Framework, меньшей популярностью пользуется .NET Core. Возможно, когда вы будете читать эту статью, уже выйдет .NET 5, который объединит в себе оба фреймворка. Поэтому в статье используется название .NET.
Для чего нужен .NET
Обычным пользователям может показаться, что это какие-то программистские штуки, которые никак не влияют на их жизнь. На самом деле в этом есть смысл и для них.
Если бы не .NET, пользователям пришлось бы устанавливать среду исполнения для программ на каждом языке. То есть чтобы запустить приложение на Visual Basic, нужно скачать среду выполнения для Visual Basic. Если же программа написана на C#, то придётся скачивать среду и для неё.
Это очень быстро забьёт всё место на компьютере немного отличающимися копиями одних и тех же библиотек.
Для программистов это тоже важно, потому что даёт возможность развивать одну среду, которая используется сразу для четырёх языков. Иначе обычным разработчикам приходилось бы ждать, пока выйдет новая версия библиотек для их языка. Менее популярные языки, вроде F#, получали бы обновление намного позже C#.
Кроме основных языков есть также и другие, которые поддерживаются .NET. Среди них COBOL, Fortran, Haskell и даже Java — вы можете ознакомиться с полным списком.
На этих языках часто написаны старые (legacy) проекты, которые сложно перевести на новую технологию. .NET позволяет переписать часть программы на COBOL под стандарты .NET, а потом просто писать новые части на более современном языке, вроде Visual Basic.
Как это работает
Принцип работы достаточно простой, хотя выглядит запутанным. В основном — из-за схожих названий: CLR, CLI и CIL. Для начала посмотрите на это изображение:
Это CLI (англ. Common Language Infrastructure — общеязыковая инфраструктура). Она определяет, как работает .NET (а также другие похожие фреймворки вроде Mono и DotGNU).
В CLI у каждого языка есть свой компилятор. Но программы компилируются не в нативный код (исполняемый), а в промежуточный байт-код CIL (англ. Common Intermediate Language — общий промежуточный язык).
Например, если написать программу, которая выводит надпись «Hello, World!», на разных языках, то во всех она скомпилируется в такой промежуточный байт-код:
Когда вы запускаете программу, написанную на одном из языков семейства .NET, её байт-код передаётся дальше по цепи в общеязыковую исполняющую среду CLR (Common Language Runtime). Там этот байт-код компилируется в нативный и уже начинает выполняться.
Почти по такому же принципу работает виртуальная машина Java, но программы на .NET быстрее запускаются, что делает их пригодными для работы не только на сервере, но и на персональных компьютерах.
До 2014 года .NET работал только в операционной системе Windows, однако потом был создан .NET Core — кроссплатформенная версия фреймворка, которая в скором времени заменит основную версию.
Заключение
Понимание принципов работы .NET позволяет узнать новые архитектурные решения и увидеть одно из лучших воплощений реализации правила DRY. Это поможет писать более изящные программы, в которых не повторяется код или отдельные модули. Кроме того, об этом могут спросить на собеседовании.