Персональные инструменты
 

Nemerle Deep Dive (Владислав Чистяков, ADD-2011)

Материал из CustisWiki

Версия от 14:10, 7 июля 2011; StasFomin (обсуждение | вклад)

Это снимок страницы. Он включает старые, но не удалённые версии шаблонов и изображений.
Перейти к: навигация, поиск

Аннотация

Технический редактор журнала RSDN Magazine. Ведущий программист проекта Nemerle.

Докладчик
Владислав Чистяков

Рассказ о новом языке программирования для .Net - Nemerle. Возможности языка. Отличия от других языков. Отдельное место будет уделено макро-системе.

  • Рассказ о языке
    • Ядро языка.
    • Вывод типов.
    • Мимикрия под C# в области поддержки ООП.
      • Поддержка функционального программирования.
      • Функции как первоклассные значения.
      • Алгебраические типы.
      • Сопоставление с образцом.
    • Макросы: Что такое? С чем едят? Как сочетаются с IDE и прочими .технологиями? Сложности разработки, отладки, сопровождения. Развенчание мифов.
    • Ограничения версии 1.0.
    • Что будет в Nemerle 2.0?
  • Примеры практического использования макросов:
  • Прикладные макро-библиотеки.
    • Nemerle.Xml - XML-литералы.
    • Nemerle.Peg - быстрый и гибкий генератор парсеров шаговой доступности.
    • ComputationExpressions.
      • Асинхронное программирование.
      • yield внутри выражения.
      • другие применения.
    • Nemerle on Rails - миграции, автоматизация формирования ViewModel, движок рендеренга HTML "Spark".
    • Nemerle.WUI.Reactive - реактивный Web-интерфейс на основе статически типизированного языка вместо скриптов.
  • Мелкие полезняшки:
    • Автоматизация реализации зависимых свойств в WPF.
    • Record - автоматизация создания конструкторов.
    • Автоматизация паттернов проектирования ООП (Abstract factory, Aggregate, Proxy, Singleton).
    • late - позднее связывание.
    • Surroundwith - создание аналогов using и lock в мгновение ока.
    • Memoize.
    • $-строки.
    • assertions.
    • ListComprehension.
    • regexp match.
    • StructuralEquality.
    • LexicographicCompareTo.
    • StructuralHashCode.
    • и многое другое.

Видео

Видео в HD-качестве, смотрите в полноэкранном режиме.

HTML-код включения <iframe src="http://player.vimeo.com/video/24508454?byline=0&portrait=0" width="720" height="405" frameborder="0"></iframe>

Скачать
http://ftp.linux.kiev.ua/pub/conference/peers/addconf/2011/2a5-nemerle-intro-tchistyakov.avs.avi

Видео в HD-качестве, смотрите в полноэкранном режиме.

HTML-код включения <iframe src="http://player.vimeo.com/video/25040935?byline=0&portrait=0" width="720" height="405" frameborder="0"></iframe>

Скачать
http://ftp.linux.kiev.ua/pub/conference/peers/addconf/2011/2c6-nemerle-deep-dive-tchistyakov-p1.avs.avi

Видео в HD-качестве, смотрите в полноэкранном режиме.

HTML-код включения <iframe src="http://player.vimeo.com/video/25040959?byline=0&portrait=0" width="720" height="405" frameborder="0"></iframe>

Скачать
http://ftp.linux.kiev.ua/pub/conference/peers/addconf/2011/2c6-nemerle-deep-dive-tchistyakov-p2.avs.avi


Примечания и отзывы

Дальше был отличный доклад Владислава "VladD2" Чистякова, тех. редактора журнала RSDN и по совместительству, главного нынешнего разработчика языка Nemerle. Доклад сам был хорош - единственное замечание по существу - ощущение такое, что аудитория не тянула уровень доклада, и докладчик это в общем понимал, из-за чего перескакивал со слайда на слайд, уходил в разъяснение каких-то деталей и прочее. Но, повторюсь - лично мне было очень интересно. ©

Я давно краем уха слышал про такой язык как Nemerle, но не был с ним знаком. Поэтому я решил исправить это упущение и, взяв снаряжение, погрузился в доклад Владислава Чистякова (RSDN Magazine) c названием «Nemerle Deep Dive». Влад рассказывал про возможности языка, про макросы – то, благодаря чему доступно большинство возможностей языка. Понравилась то, как был подан материал: на первом докладе было рассказано про основы языка – ядро, типы, поддерживаемые парадигмы, что такое макросы и с чем их едят. Затем целых два доклада подряд, которые проходили в секции C, были посвящены практическому применению возможностей языка с примерами кода в Visual Studio. Можно долго рассказывать про то, какими крутыми возможностями обладает язык но понятнее от этого не станет. Но стоит привести несколько примеров кода, как сразу понимаешь, какая огромная сила заложена в этот язык. В общем, взял на заметку, обязательно ознакомлюсь с Nemerle поближе. Владу большое спасибо за интересный доклад, узнал много нового.

©

У нас в CustIS на Alt.Net не был, так что решил послушать.

Как только услышал слово макрОс, сразу начал думать как это отлаживать. Спросить у докладчика как-то не успел, а на продолжение не пошел. Я лично не очень заинтересовался проектом, если уж смотреть на функциональщину — надо смотреть на поддерживаемый Микрософтом F# и его взаимодействие с C# там где нужно ООП. Смысла вкладываться во что-то еще не увидел.

  • Nemerle Deep Dive (Владислав Чистяков, ADD-2011)

Думал узнать что-то новое сверх семинара ALT.NET, но, к сожалению, процесс пошел еще медленнее, чем у нас.

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





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