Как Microsoft Переписала Компилятор C# На C# И Сделала Его Открытым Исходным Кодом

Автор статьи — Мадс Торгерсен, ведущий архитектор C# в Microsoft. Проект Рослин Рослин — это кодовое имя, присвоенное компилятору с открытым исходным кодом для C# и Visual Basic.NET. Проект начался в глубочайшую тьму последнего десятилетия корпоративной жизни Microsoft — и закончился как кроссплатформенный общедоступный движок с открытым исходным кодом для C# (и VB, который я буду воспринимать как данность в оставшейся части статьи).

).

Первые разговоры о проекте, который впоследствии стал известен как Roslyn, уже велись, когда я присоединился к Microsoft в 2005 году, незадолго до выпуска .

NET 2.0. Ходили разговоры о переписывании C# на C#.

Это нормальная практика для языков программирования — доказательство зрелости языка.

Но была и более практичная и важная мотивация: мы, создатели C#, не сами программировали на C#, мы программировали на C++! Если вы программируете на C# каждый день, вы меняете свое мнение: великая сила работы над разрабатываемым вами инструментом (тестирование).

Пользователи полагаются на то, что новый компилятор будет вести себя точно так же, как старый.

Написание нового компилятора для C# — это попытка найти совпадение ошибок.

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

Написание нового компилятора для C# — это попытка найти совпадение ошибок.

И я говорю не только об известных ошибках, но также о неизвестных ошибках и нежелательном поведении, которые разработчики обнаружили и используют, часто неосознанно.

Масштаб этой проблемы долгие годы не позволял нам даже начать проект. Хотя языковая группа Microsoft увидела множество преимуществ нового компилятора C#, написанного на C#, ценность для конечных пользователей была менее очевидна: какую пользу им принесет новый компилятор? Пожалуй, единственные люди, которых волнует, что компилятор C# написан на C#, — это сами разработчики компилятора.

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

Помимо компилятора, другая команда работала над поддержкой IDE для C# в Visual Studio, и им также пришлось написать кучу кода (в то время также на C++), чтобы понять синтаксис и семантику C#.

В то же время росло количество инструментов от Microsoft и других компаний, таких как StyleCop, CodeRush и т. д.: все они должны реализовывать осмысленную обработку кода C#.

Каждая из этих программ имеет немного разные ошибки, разные уровни понимания, разные компромиссы и компромиссы.

И всем им пришлось бы приложить немало усилий, чтобы прийти к единому пониманию кода.

И мы определились с важным предложением: сделать так, чтобы в мире была только одна кодовая база — единая база для всех инструментов, работающих с кодом C#!
Ценность такого предложения заключается в увеличении количества доступных инструментов и особенно в улучшении качества существующих инструментов.

Все требования к корректности и производительности языка помещены в единую кодовую базу.

Все, что нужно, — это единоразовая попытка создать базу звездного качества и огромной универсальности.

Мы создадим настоящий движок для языка! Единый открытый API для кода C#.

Мы дадим новое определение понятию «компилятор».

Конечно, как только вы создадите API для более широкого сообщества C#, само собой разумеется, что это должен быть API .

NET, реализованный на C#.

Итак, давняя мечта написать C# на C# сбывается почти как случайный побочный эффект.

Таким образом, Roslyn родилась из менталитета открытости: она делилась внутренней работой C# для программного использования во всем мире.

Это само по себе было довольно смелым предложением для все еще довольно закрытой корпоративной культуры Microsoft.

Будем ли мы делиться интеллектуальной собственностью бесплатно? Будем ли мы расширять возможности инструментов, конкурирующих с нами? В корпоративной дискуссии нам помогли выиграть споры об укреплении экосистемы и создании наиболее оснащенного языка на планете.

Речь шла о долгосрочном росте C# и .

NET против краткосрочной монетизации и защиты активов Microsoft. Так что, даже не говоря уже об открытом исходном коде, ставка на Roslyn была для Microsoft большим и смелым шагом.

Конечно, разработать что-то подобное не может быть легко.

Концепция Рослин была очень амбициозной и сопряжена с техническими проблемами, и нам потребовалось полдесятилетия, чтобы во всем этом разобраться.

Но это уже другая история.

На протяжении большей части своей первоначальной разработки Roslyn оставался проектом с закрытым исходным кодом.

С самого начала серьёзной работы над проектом в 2009 году у нас были идеи сделать компиляторы открытыми, но Microsoft была просто ещё не готова.

В Microsoft существует культура закрытой разработки и патентной защиты исходного кода с 1970-х годов.

И хотя перемены уже были в воздухе, они происходили медленнее, чем надеялась наша команда.

На самом деле, какое-то время казалось, что компания действовала в совершенно противоположном направлении.

Проект Windows 8 оказал огромное влияние на всю компанию.

Благодаря новой модели программирования ее щупальца проникли глубоко в команды разработчиков инструментов и языков, и все было окутано строжайшей секретностью не только снаружи, но даже внутри компании.

Например, функция асинхронности, которую мы в то время разрабатывали, была скоординирована и смешана с моделью программирования Windows 8, и я бы не осмелился публиковать заметки о ее конструкции даже внутри компании, опасаясь случайной утечки информации о Windows 8 и возникновения проблем в работе системы.

мой собственный.

! Это создало ужасный климат для инноваций и, конечно же, не позволило нам надеяться на компилятор C# с открытым исходным кодом.

Однако в конце концов, когда Windows 8 пошла своим чередом, компания начала трансформироваться и нашла новое направление, новое лидерство и совершенно другую философию — ту Microsoft, которую мы знаем сегодня.

Открытый исходный код сейчас быстро распространяется в Microsoft. F# был выпущен уже в 2010 году с открытой лицензией и собственной организацией.

Фонд программного обеспечения F # .

Вокруг него сформировалось выдающееся сообщество, которое вскоре стало предметом зависти для всех нас.

Наша команда приложила все усилия, чтобы получить бесплатную лицензию для Roslyn, и, наконец, корпоративная инфраструктура сделала это возможным.

К 2012 году Microsoft создала организацию Microsoft Open Tech, специализирующуюся на проектах с открытым исходным кодом.

Roslyn перешла под ее опеку и официально стала проектом с открытым исходным кодом.

Roslyn для этого созрела: все ресурсы разработки были внутренними и общеизвестными, а сам проект не страдал от большого количества зависимостей, которые могли бы породить лицензионные конфликты.

В апреле 2014 года на конференции разработчиков Build в Сан-Франциско Андерс Хейлсберг представил Roslyn как проект с открытым исходным кодом , а сам исходный код был опубликован 3 апреля на CodePlex (ранее платформа репозитория Microsoft) под лицензией Apache 2.0.

Как Microsoft переписала компилятор C# на C# и сделала его открытым исходным кодом

В то же время Фонд .

NET объявлен основой для проектов .

NET, включая Roslyn. Этот выпуск стал настоящим глотком свежего воздуха! Мы начали пожинать плоды открытости уже в CodePlex, а затем оставшиеся процедурные препятствия с открытым исходным кодом в Microsoft были устранены, так что сегодня открытый исходный код является естественной и неотъемлемой частью того, как мы работаем во многих наших командах.

Мы больше не рассматриваем GitHub как место для публикации исходного кода — это просто то место, где мы работаем.

На других фронтах компания также осознала, что не обязательно контролировать все.

Стало ясно, что у CodePlex нет веских причин для существования — и Roslyn вместе с другими проектами мигрировала на GitHub, который к тому времени стал де-факто основной платформой для проектов с открытым исходным кодом.

Не только сам код, но и процесс его создания осуществляется в GitHub: мы больше не рассматриваем GitHub как место для публикации исходного кода — это просто место для нашей работы.



Как Microsoft переписала компилятор C# на C# и сделала его открытым исходным кодом

Проектирование языка C# и реализация компилятора теперь являются полностью открытыми процессами со значительным вкладом сторонних разработчиков.

Они создают, среди прочего, целые функции языка.

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

Это был долгий и сумасшедший путь, и для меня он символизирует огромные изменения, которые Microsoft претерпела за последнее десятилетие.

Самородок Roslyn родился в темноте, но вырос на идеях открытости - и сегодня получил миллион различных применений благодаря силе открытого исходного кода.

Изучите проектирование на языке Roslyn и C#: Рослин на GitHub С# на GitHub Теги: #с открытым исходным кодом #C++ #.

NET #компиляторы #F# #компилятор #windows 8 #roslyn #философия Microsoft

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.