Новый язык Microsoft – M#


По непонятным причинам Microsoft решила снять некоторые покровы со своего системного языка программирования, основанного на C#, который, похоже, называется M#.

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

Даффи начинает с очевидного:

“Первый вопрос: “Почему новый язык?” Я с готовностью признаю, что в мире их уже предостаточно”

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

Аргумент заключается в том, что существуют более быстрые языки, C/C++, и языки, которые относятся к категории “простых в использовании”, например JavaScript. Однако аргумент заключается в том, что вам нужен безопасный, но быстрый язык для системного программирования и, следовательно, M#, который основан на управляемом языке C#. Другими словами, M# предназначен для того, чтобы занимать верхний правый квадрант на диаграмме соотношения безопасности и производительности. Обратите внимание, что “безопасный” в этом контексте означает что-то вроде “безопасный для памяти”, т. Е. Структуры данных не переполняют свои выделения, и вы не можете произвольно обращаться к памяти. 

Ну, кто бы не хотел язык, в котором есть лучшее из обоих миров. Конечно, многие программисты на C# будут утверждать, что он может занять этот сектор, просто имея лучшую реализацию во время выполнения. Другие утверждают, что C++ можно сделать более безопасным и всегда будет быстрее, чем C# в любом случае. 

Но зачем основывать новый язык на C#?

“Типобезопасность-это не подлежащий обсуждению аспект нашего желаемого языка, и C# представляет собой чертовски хороший холст “современный типобезопасный C++”, на котором можно начать рисовать. Это ближе к тому, что мы хотим, чем, скажем, Java, особенно из-за наличия современных функций, таких как лямбды и делегаты. Есть и другие кандидаты в начале их жизни, в первую очередь Rust и D. Но эй, моя команда работает в Microsoft, где есть достаточно талантов и сообщества C# всего на расстоянии вытянутой руки.”

Это кажется честным и обоснованным ответом. Кроме того, существует точка зрения, что:

“Результат должен быть больше похож на набор расширений для C# — с минимальными изменениями — чем на совершенно новый язык.”

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

Стоит отметить, что кодовое имя M# не используется в сообщении в блоге, но история группы, создавшей новый язык, убедительно свидетельствует о том, что это язык M#, используемый в производстве экспериментальной операционной системы Microsoft Midori.   Так что будьте готовы к тому, что это может не называться M# в конце концов, или, возможно, Microsoft готова рассказать больше о Мидори в будущем.

Далее в сообщении дается характеристика языка в самых общих чертах, которые можно резюмировать следующим образом (полную версию см. в сообщении в блоге):

Понимание времени жизни Кажется, что, хотя язык безопасен, он использует управление временем жизни C++ и функциональное программирование, чтобы обеспечить детерминированное уничтожение объектов, а не сборку мусора. 

Понимание побочных эффектов Это эволюция того, что было опубликовано в OOPSLA 2012, дающая элементы C++ const (но опять же с безопасностью), наряду с первоклассной неизменяемостью и изоляцией.

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

Типобезопасные системы программирования Обычно утверждают, что с типобезопасностью происходит неотъемлемая потеря производительности. Это правда, что проверка границ не подлежит обсуждению, и что мы предпочитаем проверку переполнения по умолчанию. Удивительно, что здесь может сделать хороший оптимизирующий компилятор по сравнению с JIT-компиляцией.

 Современная модель ошибок включает в себя все (предварительные условия, постусловия, инварианты, утверждения и т. Д.), Быстрые сбои в качестве политики по умолчанию, исключения для редких динамических сбоев (синтаксический анализ, ввод-вывод и т. Д.) И типизированные исключения только тогда, когда вам абсолютно необходимы богатые исключения. Все они интегрированы в систему типов в 1-м классе, так что вы получаете все правильное поведение подтипов, необходимое для обеспечения его безопасности и надежности.

 Современные фреймворки-это универсальное ведро, которое охватывает такие вещи, как асинхронный LINQ и улучшенная поддержка перечислителей и т. Д.

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

Что интересно в M# для программистов несистемного уровня, так это то, что это первый реальный признак того, что Microsoft не полностью отказалась от идеи управляемого кода. В последнее время внимание компаний было сосредоточено на разработке HTML/JavaScript и C++ с побочным заказом “вы можете сделать это и на C#”. Возможно, M# – это язык будущей операционной системы; это может означать возвращение к убеждению, что управляемый код-это то, что нужно большинству программистов. 

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


Добавить комментарий