ADD 2011: Отчёт Русецкого Георгия/Nemerle Deep Dive

Материал из CustisWiki
Перейти к: навигация, поиск

Докладчик — ведущий программист проекта 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 в коммерческих проектах. По словам автора, язык будет развиваться. Посмотрим.