По неизвестным причинам, Microsoft решила
приоткрыть завесу секретности над своим системым языком программирования M# который основан на принципах C#.
Одному из членов команды, которая уже на протяжении последних четырех лет
работала над системным программным расширением для C#, Джо Даффи, разрешили поделится подробностями
о новом языке. Первая
публикация из целой серии повествует о общей философии языка.
Даффи начинает с очевидных вещей:
“Первый вопрос: ‘Зачем нужен новый
язык?’ Без сомнений в мире уже и без того огромное количество других языков.
”
Но затем он начинает обосновывать создание нового языка, так же как это
делал бы любой другой энтузиаст на его месте. В данном случае речь идет о том
что C# прекрасный язык, но он
ограничен законом “исключенного третьего” – язык прост и удобен в использовании,
но недостаточно производителен.
В качестве аргумента он приводит более быстрые языки, С\С++ и более лекгие
в использовании, например JavaScript. Однако помимо быстрого, язык должен быть еще и безопасным для системного
программирования, и тут на сцену выходит M#, который базируется на управляемом языке C#. Другими словами, M# спроектирован что бы занять нишу в верхем
правом квадрате на представленной диаграмме производительности и безопасности.
Обратите внимание что безопасный в данном случае трактуется как безопасный по
отношению к работе с памятью, то есть структуры данных не могут переписать
другие данные в случае переполнения и вы не сможете ошибочно нарушить доступ к
памяти.
Разумеется, кто бы не хотел иметь на своем вооружении язык который вобрал в
себя все самое лучшее из этих двух миров. Конечно, большинство разработчиков C# попробуют возразить, что их язык также сможет
попасть в этот квадрат – достаточно оптимизировать среду выполнения.
Разработчики C++ также могут возразить что C++
можно сделать более безопасным и уж наверняка более производительным чем C#.
Но почему новый язык
взял за основу C#?
“Безопасноть типов является
немаловажным аспектом который должен присутствовать в языке, a C# представляет собой отличный вариант «современного и типобезопасного С++»,
который можно взять за основу. Он ближе к нашему идеалу, чем скажем Java, изза наличия таких современных
возможностей, как лямбды и делегаты. Конечно, есть и другие хорошие кандидаты, например
Rust и D. Но,
черт побери, моя команда работает в Microsoft и у нас есть в достатке талантов и сообществ C#, которые находятся на расстоянии вытянутой
руки. ”
Это похоже на честный
и корректный ответ. Кроме того, и такая точка зрения была озвучена:
“В результате наши труды следует рассматривать
скорее как набора расширений для
C # - с
минимальными изменениями - чем
как совершенно новый язык”.
Так что, возможно, мы несколько преувеличиваем говоря о M# как о «новом языке». Если я как разработчик C# просто начну использовать некоторые части M# которые мне нужны, то очевидно нельзя сказать что я использую некий новый несовместимый язык.
Также следует отметить что имя M# не
фигурирует в публикациях, но история группы, занимающейся созданием нового
языка, есть ссылки на то что это и есть новый язык M# который используется в процессе создания
новой операционной системы Microsoft, которая носит название Midori. Так что будте готовы к другому названию языка, в конце концов когда нибудь
Microsoft расскажет нам о Midori и ее инструментах.
Публикация продолжает давать характеристики языку в самых общих чертах,
котоыре можно обобщить следующим образом (можете обратиться к соответсвующей
публикации за подробностями) :
Понимание жизненного цикла
Кажется что поскольку язык является безопасным, то он использует управление
жизненным циклом C++ и
приемы функционального программирования для обеспечения корректной ликвидации
объектов, а не коллектор муссора.
Понимание побочных эффектов
Это эволюция того, что было опубликовано в OOPSLA 2012, об использование const для элементов C++ (но
опять таки с учетом специфики безопасности) совместно с неизменностью и
изолированностью первого класса.
Масштабы асинхронного программирования
Ключевым новшеством здесь является система типов распознающая модель
исполнения, и способная отображать эффективно либо продолжение передачи либо
блокировку контекста.
Программирование типобезопасных систем
Обычно гововрят, что с использованием безопасности типов теряется
производительность. Верным является и то, что наличие проверка границ
обязательно и предпочтительно иметь наличие проверки переполнений по умолчанию.
Удивительно как хорошо эти процессы может оптимизировать компилятор в отличие
от компиляции JIT.
Современная модель ошибок
Повсеместные контракты (предусловия, постусловия, инвариатны, ассерты и
т.д.) политика по умолчанию fail-fast, исключения для редких
динамических ошибок (ввод/вывод, парсинг и т.д.) и типизированные исключения только
в случае если вам действительно необходима подробная информация об ошибке. Все
это интегрировано в систему типов в первичном классе, таким образом у всех
наследников уже имеется требуемое поведение, делающее код безопасным и
эффектвным.
Современные фреймворки
Полный набор,
содержащий ткие вещи как асинхронный LINQ и улучшенный енумератор.
Напоследок, новый язык был реализован как часть компилятора Roslyn в виде сервис модели, котрая в данный момент развернута для C# и других управляемых языков программирования.
Думаю мы можем ожидать что в 2014 что то произойдет и язык станет открытым.
Что интересно, M# является
первым реальным знаком, что Microsoft не
планирует полностью отказываться от идеи управляемого кода. Недавнее
переориентирование компании на HTML/JavaScript и разработку на C++с приставкой “вы можете это делать также на C#”. Хотя M# и является языком для будущей операционной
системы, он может также обозначать возврат к вере в будущее управляемого
кода, что и нужно большинству программистов.
Так что,
следите за событиями связанными с M#, будь
то это новый язык программирования или же просто расширение C#.
Комментариев нет:
Отправить комментарий