HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>27 ноя 2019</li>
2 <ul><li>27 ноя 2019</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Чтобы стать хорошим программистом, нужно понимать, как работают инструменты и технологии. Рассказываем, что такое .NET.</p>
4 </ul><p>Чтобы стать хорошим программистом, нужно понимать, как работают инструменты и технологии. Рассказываем, что такое .NET.</p>
5 <p> vlada_maestro / shutterstock</p>
5 <p> vlada_maestro / shutterstock</p>
6 <p>Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.</p>
6 <p>Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.</p>
7 <p><em>.NET</em> - это фреймворк от Microsoft, который позволяет использовать одни и те же пространства имён, библиотеки и API для разных языков. Чаще всего это четыре языка из семейства<em>.NET</em>:</p>
7 <p><em>.NET</em> - это фреймворк от Microsoft, который позволяет использовать одни и те же пространства имён, библиотеки и API для разных языков. Чаще всего это четыре языка из семейства<em>.NET</em>:</p>
8 <ul><li>C#;</li>
8 <ul><li>C#;</li>
9 <li>Visual Basic;</li>
9 <li>Visual Basic;</li>
10 <li>Visual C++;</li>
10 <li>Visual C++;</li>
11 <li>F#.</li>
11 <li>F#.</li>
12 </ul><p>Когда вы создаёте программу на одном из этих языков, в самом начале вы подключаете пространство имён<em>System</em>. Если бы не <em>.NET</em>, то для каждого из этих языков пришлось бы создавать отдельный<em>System</em>. То есть нарушился бы один из главных принципов программирования -<strong>DRY</strong><em>(англ. Don’t repeat yourself - не повторяйся).</em></p>
12 </ul><p>Когда вы создаёте программу на одном из этих языков, в самом начале вы подключаете пространство имён<em>System</em>. Если бы не <em>.NET</em>, то для каждого из этих языков пришлось бы создавать отдельный<em>System</em>. То есть нарушился бы один из главных принципов программирования -<strong>DRY</strong><em>(англ. Don’t repeat yourself - не повторяйся).</em></p>
13 <p><em>На момент написания статьи наиболее распространён .NET Framework, меньшей популярностью пользуется .NET Core. Возможно, когда вы будете читать эту статью, уже выйдет .NET 5, который объединит в себе оба фреймворка. Поэтому в статье используется название .NET.</em></p>
13 <p><em>На момент написания статьи наиболее распространён .NET Framework, меньшей популярностью пользуется .NET Core. Возможно, когда вы будете читать эту статью, уже выйдет .NET 5, который объединит в себе оба фреймворка. Поэтому в статье используется название .NET.</em></p>
14 <p>Обычным пользователям может показаться, что это какие-то программистские штуки, которые никак не влияют на их жизнь. На самом деле в этом есть смысл и для них.</p>
14 <p>Обычным пользователям может показаться, что это какие-то программистские штуки, которые никак не влияют на их жизнь. На самом деле в этом есть смысл и для них.</p>
15 <p>Если бы не .NET, пользователям пришлось бы устанавливать среду исполнения для программ на каждом языке. То есть чтобы запустить приложение на Visual Basic, нужно скачать среду выполнения для Visual Basic. Если же программа написана на C#, то придётся скачивать среду и для неё.</p>
15 <p>Если бы не .NET, пользователям пришлось бы устанавливать среду исполнения для программ на каждом языке. То есть чтобы запустить приложение на Visual Basic, нужно скачать среду выполнения для Visual Basic. Если же программа написана на C#, то придётся скачивать среду и для неё.</p>
16 <p>Это очень быстро забьёт всё место на компьютере немного отличающимися копиями одних и тех же библиотек.</p>
16 <p>Это очень быстро забьёт всё место на компьютере немного отличающимися копиями одних и тех же библиотек.</p>
17 <p>Для программистов это тоже важно, потому что даёт возможность развивать одну среду, которая используется сразу для четырёх языков. Иначе обычным разработчикам приходилось бы ждать, пока выйдет новая версия библиотек для их языка. Менее популярные языки, вроде<em>F#</em>, получали бы обновление намного позже<em>C#.</em></p>
17 <p>Для программистов это тоже важно, потому что даёт возможность развивать одну среду, которая используется сразу для четырёх языков. Иначе обычным разработчикам приходилось бы ждать, пока выйдет новая версия библиотек для их языка. Менее популярные языки, вроде<em>F#</em>, получали бы обновление намного позже<em>C#.</em></p>
18 <p>Кроме основных языков есть также и другие, которые поддерживаются<em>.NET</em>. Среди них<em>COBOL, Fortran, Haskell</em>и даже<em>Java</em> - вы можете<a>ознакомиться с полным списком</a>.</p>
18 <p>Кроме основных языков есть также и другие, которые поддерживаются<em>.NET</em>. Среди них<em>COBOL, Fortran, Haskell</em>и даже<em>Java</em> - вы можете<a>ознакомиться с полным списком</a>.</p>
19 <p>На этих языках часто написаны старые<em>(legacy)</em>проекты, которые сложно перевести на новую технологию.<em>.NET</em>позволяет переписать часть программы на <em>COBOL</em>под стандарты<em>.NET</em>, а потом просто писать новые части на более современном языке, вроде<em>Visual Basic.</em></p>
19 <p>На этих языках часто написаны старые<em>(legacy)</em>проекты, которые сложно перевести на новую технологию.<em>.NET</em>позволяет переписать часть программы на <em>COBOL</em>под стандарты<em>.NET</em>, а потом просто писать новые части на более современном языке, вроде<em>Visual Basic.</em></p>
20 <p>Принцип работы достаточно простой, хотя выглядит запутанным. В основном - из-за схожих названий:<em>CLR, CLI</em>и<em>CIL</em>. Для начала посмотрите на это изображение:</p>
20 <p>Принцип работы достаточно простой, хотя выглядит запутанным. В основном - из-за схожих названий:<em>CLR, CLI</em>и<em>CIL</em>. Для начала посмотрите на это изображение:</p>
21 <p>Это<strong>CLI</strong><em>(англ.<strong>Common Language Infrastructure</strong> - общеязыковая инфраструктура)</em>. Она определяет, как работает<em>.NET</em>(а также другие похожие фреймворки вроде<em>Mono</em>и<em>DotGNU</em>).</p>
21 <p>Это<strong>CLI</strong><em>(англ.<strong>Common Language Infrastructure</strong> - общеязыковая инфраструктура)</em>. Она определяет, как работает<em>.NET</em>(а также другие похожие фреймворки вроде<em>Mono</em>и<em>DotGNU</em>).</p>
22 <p>В <em>CLI</em>у каждого языка есть свой компилятор. Но программы компилируются не в нативный код<em>(исполняемый)</em>, а в промежуточный байт-код<strong>CIL</strong><em>(англ.<strong>Common Intermediate Language</strong> - общий промежуточный язык).</em></p>
22 <p>В <em>CLI</em>у каждого языка есть свой компилятор. Но программы компилируются не в нативный код<em>(исполняемый)</em>, а в промежуточный байт-код<strong>CIL</strong><em>(англ.<strong>Common Intermediate Language</strong> - общий промежуточный язык).</em></p>
23 <p>Например, если написать программу, которая выводит надпись "Hello, World!", на разных языках, то во всех она скомпилируется в такой промежуточный байт-код:</p>
23 <p>Например, если написать программу, которая выводит надпись "Hello, World!", на разных языках, то во всех она скомпилируется в такой промежуточный байт-код:</p>
24 .assembly Hello {} .method public static void Main() cil managed { .entrypoint .maxstack 1 ldstr "Hello, World!" call void [mscorlib]System.Console::WriteLine(string) ret }<p>Когда вы запускаете программу, написанную на одном из языков семейства<em>.NET,</em>её байт-код передаётся дальше по цепи в общеязыковую исполняющую среду CLR<em>(<strong>Common Language Runtime</strong>)</em>. Там этот байт-код компилируется в нативный и уже начинает выполняться.</p>
24 .assembly Hello {} .method public static void Main() cil managed { .entrypoint .maxstack 1 ldstr "Hello, World!" call void [mscorlib]System.Console::WriteLine(string) ret }<p>Когда вы запускаете программу, написанную на одном из языков семейства<em>.NET,</em>её байт-код передаётся дальше по цепи в общеязыковую исполняющую среду CLR<em>(<strong>Common Language Runtime</strong>)</em>. Там этот байт-код компилируется в нативный и уже начинает выполняться.</p>
25 <p>Почти по такому же принципу работает<a>виртуальная машина Java</a>, но программы на <em>.NET</em>быстрее запускаются, что делает их пригодными для работы не только на сервере, но и на персональных компьютерах.</p>
25 <p>Почти по такому же принципу работает<a>виртуальная машина Java</a>, но программы на <em>.NET</em>быстрее запускаются, что делает их пригодными для работы не только на сервере, но и на персональных компьютерах.</p>
26 <p>До 2014 года<em>.NET</em>работал только в операционной системе Windows, однако потом был создан<em>.NET Core</em> - кроссплатформенная версия фреймворка, которая в скором времени заменит основную версию.</p>
26 <p>До 2014 года<em>.NET</em>работал только в операционной системе Windows, однако потом был создан<em>.NET Core</em> - кроссплатформенная версия фреймворка, которая в скором времени заменит основную версию.</p>
27 <p>Понимание принципов работы<em>.NET</em>позволяет узнать новые архитектурные решения и увидеть одно из лучших воплощений реализации правила<em>DRY</em>. Это поможет писать более изящные программы, в которых не повторяется код или отдельные модули. Кроме того, об этом могут спросить на собеседовании.</p>
27 <p>Понимание принципов работы<em>.NET</em>позволяет узнать новые архитектурные решения и увидеть одно из лучших воплощений реализации правила<em>DRY</em>. Это поможет писать более изящные программы, в которых не повторяется код или отдельные модули. Кроме того, об этом могут спросить на собеседовании.</p>
28 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
28 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>