Главная » Хабрахабр » [Перевод] Как Microsoft переписала компилятор C# на C# и сделала его открытым

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

Автор статьи — Мэдс Торгерсен, ведущий архитектор C# в Microsoft

Проект Roslyn

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

NET 2. Первые разговоры о проекте, который впоследствии станет известен как Roslyn, уже шли, когда я пришёл на работу в Microsoft в 2005 году — незадолго до выпуска . Шёл разговор о переписывании C# на C#. 0. Но была и более практичная и важная мотивация: мы, создатели C#, сами не программировали на C#, мы программировали на C++! Это нормальная практика для языков программирования — доказательство зрелости языка. Если же ежедневно программировать на C#, то вы меняете своё мнение: великая сила работы на том инструменте, какой разрабатываете (dogfooding).

Написание нового компилятора для C# — это попытка найти соответствие баг-к-багу. Пользователи зависят от поведения нового компилятора в точности как от старого.

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

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

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

Кроме компилятора, другая команда работала над поддержкой IDE для C# в Visual Studio, и им тоже приходилось писать кучу кода (в то время тоже на C++), чтобы понять синтаксис и семантику C#. В то же время всё больше проявляла себя ещё одна проблема: дублирование усилий между различными инструментами, работающими на коде C#.

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

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

Ценность такого предложения вытекает из увеличения числа имеющихся инструментов, и особенно из повышения качества существующих инструментов. Все требования к правильности и производительности языка возлагаются на единую кодовую базу. Достаточно однократных усилий, чтобы сделать базу звёздного качества и огромной универсальности. Мы же создадим настоящий движок для языка! Унифицированный, открытый API для кода C#. Мы дадим новое определение понятию «компилятор».

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

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

Мы будем делиться интеллектуальной собственностью бесплатно? Мы будем расширять возможности инструментов, которые конкурируют с нами?

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

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

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

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

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

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

Благодаря новой модели программирования его щупальца проникли глубоко в команды разработчиков инструментов и языков, и всё было покрыто крайней секретностью, не только снаружи, но даже внутри компании. Проект Windows 8 очень сильно повлиял на всю компанию. Это создавало ужасный климат для инноваций, и конечно, не позволяло нам надеяться на открытый исходный код компилятора C#. В качестве примера, функция async, которую мы разрабатывали в то время, была скоординирована и смешана с моделью программирования Windows 8, и я бы не осмелился публиковать заметки о её дизайне даже внутри компании, опасаясь случайной утечки информации о Windows 8 и проблем на свою голову!

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

Вокруг него сформировалось выдающееся сообщество, которое вскоре стало предметом зависти для всех нас. F# выпущен уже в 2010 году с открытой лицензией и собственной организацией — F# Software Foundation. Наша команда упорно настаивала на том, чтобы получить свободную лицензию для Roslyn — и, наконец, корпоративная инфраструктура позволила осуществить это.

Roslyn перешёл под её крыло и официально стал проектом open source. К 2012 году Microsoft создала организацию Microsoft Open Tech, специально ориентированную на проекты с открытым исходным кодом. Roslyn вполне созрел для этого: все ресурсы разработки были внутренними и хорошо известными, и сам проект не страдал от большого количества зависимостей, которые могли бы породить лицензионные конфликты.

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

NET Foundation объявили базой для . В то же время . NET-проектов, включая Roslyn.

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

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

На других фронтах компания тоже поняла, что необязательно стремиться всё контролировать. Стало ясно, что нет никаких веских причин для существования CodePlex — и Roslyn вместе с другими проектами мигрировал на GitHub, к тому времени де-факто основную площадку для проектов с открытым исходным кодом. Не только сам код, но и процесс его создания ведётся в GitHub: мы уже не рассматриваем GitHub как место для публикации исходников — это просто место нашей работы.

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

Самородок Roslyn родился в темноте, но вырос на идеях открытости — и сегодня взорвался миллионом различных применений благодаря силе open source. Это было долгое и сумасшедшее путешествие, и для меня оно символизирует огромные изменения, которые претерпела Microsoft в последнее десятилетие.

Изучайте Roslyn и дизайн языка C#:

Roslyn на GitHub
C# на GitHub


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Дайджест свежих материалов из мира фронтенда за последнюю неделю №338 (5 — 11 ноября 2018)

Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.     Медиа    |    Веб-разработка    |    CSS    |    Javascript    |    Браузеры    |    Занимательное Медиа • Подкаст «Веб-стандарты», Выпуск №146: Веб-приложения на десктопе, безопасность и фронтопсы, Test262, Babel и Webpack, вопросы к HolyJS.• Подкаст «Frontend Weekend» #78 – ...

Расходы на Tesla

В закрытой группе Tesla Model 3 на Facebook (37,457 участников) один из её членов поднял интересную тему: Сколько на данный момент составили Ваши расходы с момента покупки автомобиля?» «Вопрос для всех владельцев Tesla. Всего написали уже более 100 комментариев примерно, ...