ADD 2011: Отчёт Русецкого Георгия/Nemerle Deep Dive
Докладчик — ведущий программист проекта Nemerle Владислав Чистяков.
Доклад длился 3 часа, но, по-моему, почти всё, что было прочитано и показано на 2х последних докладах — специфика разработки, интересная тем, кто уже программирует на Nemerle. По словам докладчика, Nemerle — гибридный язык, отчасти императивный, отчасти функциональный, отчасти метаязык, расширяемый с помощью макросов. Создан как язык, на который несложно перейти программистам, разрабатывающим приложения на C#.
Ядро языка
Типы: C# и ML.
Выражения: ML
Операторы: C (C#)
Макросы: LISP
Поддерживается indent-стиль кодирования.
Макросы языка служат для:
- Создания встроенного DSL
- Расширения языка
- Автоматизации программирования
- Контроля за кодом
Существующие макро-библиотеки:
- Computation Expressions
- Yield
- Асинхронное программирование
- Xml-литералы (Nemerle.Xml)
- Nemerle.Peg — быстрый парсер
- Nemerle.Web.Reactive — расширения для создания web-приложений (c поддержкой MVVM)
- Nemerle.Rails
Расширения:
- Автоматическая реализация Dependency Properties в WPF
- Record — автоматическое создание конструкторов
- Автоматизация паттернов проектирования ООП (abstract factory, aggregate, proxy, singleton)
- Позднее связывание (?)
- Surround with
- Lisp comprehensions
- Regexp math
Во второй части автор рассказал про тип variant — аналог union в C. Основную часть оставшегося времени подробно рассказал про pattern matching — технологию, которая позволяет, если я правильно понял, реализовать двойную диспетчеризацию. Язык интересный, но неясны перспективы развития (поддерживается де-факто сообществом, но что будет завтра — непонятно). Вероятно, поэтому ничего не слышно про применение Nemerle в коммерческих проектах. По словам автора, язык будет развиваться. Посмотрим.