Справочная

org@codefest.ru

2ГИС Intel

31 марта–1 апреля
Новосибирск, 2012

CodeFest 2012 закрыт. До встречи в следующем году


Language Oriented Programming (LOP) в действии. Как мы это делаем в JetBrains

Максим Мазин,
JetBrains

Если бы у нас, разработчиков, была такая возможность, мы бы применяли предметно-ориентированные языки (Domain Specific Languages — DSL) значительно чаще. Ведь формулировать свои программистские идеи в терминах предметной области намного удобнее и эффективнее, чем в терминах универсальных языков. Код, написанный на универсальном языке, содержит много лишней информации, необходимой компилятору, а не программисту. Поддержка такого кода — занятие чересчур трудное и невеселое, особенно, если код написан кем-то другим.

Для разрешения этой проблемы предлагается применять подход языко-ориентированного программирования (Language Oriented Programming — LOP), когда при разработке программы предметная область сначала формализуется в виде предметно-ориентированного языка, а затем программа пишется уже на этом языке. Исходный код получается максимально точным, компактным и понятным. Если в ходе разработки уточняются или изменяются наши знания о предметной области, мы можем изменить операционную семантику языка. Если изменяются требования к функциональности программы, мы вносим соответствующие изменения в код на предметно-ориентированном языке.

Несмотря на преимущества, которыми обладает описываемый подход, он до сих пор не пользуется популярностью. Это происходит потому, что, во-первых, создание компилятора для нового языка — задача трудоемкая и требующая высокой квалификации разработчиков, а во-вторых, процесс современной разработки программного обеспечения предполагает использование современных интегрированных сред разработки (Integrated Development Environment — IDE), повышающих продуктивность программистов.

Компания JetBrains изначально специализировалась на создании интегрированных сред разработки для популярных универсальных языков программирования (IntelliJ IDEA для Java, ReSharper для C# и VB, PhpStorm для PHP). Когда мы стали заниматься разработкой новых продуктов, мы поняли, что для новых предметных областей нам бы очень пригодились предметно-ориентированные языки программирования. Наш опыт помог нам создать среду языко-ориентированного программирования JetBrains MPS, которая не только значительно упрощает процесс создания языков, но и автоматически предоставляет для них среду разработки, поддерживающую подсветку кода, автодополнение, анализатор кода, подсветку ошибок, отладчик, интеграцию c системами контроля версий и многое другое.

При помощи среды MPS мы уже разработали багтрекер YouTrack, который является самостоятельным коммерческим продуктом, и продолжаем разработку еще нескольких проектов. Мы довели среду MPS до состояния, когда ее могут использовать сторонние разработчики, и теперь распространяем ее бесплатно вместе с исходными кодами. Мы бы хотели, чтобы и другие программисты начали применять LOP в реальной практике, ведь создавать собственные языки — это так круто!

Запись выступления:

Видеоприглашение на конференцию:

О докладчике:

Максим Мазин — кандидат технических наук, старший инженер-программист в проекте YouTrack компании JetBrains. Максим занимается разработкой веб-приложений последние семь лет. Он уверен, что программирование с применением предметно-ориентированных языков станет следующей доминирующей парадигмой в разработке ПО. Максим тесно взаимодействует с командой MPS и является одним из авторов предметно-ориентированных языков для работы с БД и для веб-разработки, используемых в проекте YouTrack.

Максим в соц. сетях: linkedin.com/in/maximmazin, mazin.moikrug.ru.

 



Intel

Генеральный партнёр CodeFest

2GIS

Организатор CodeFest

Badoo Social Quantum
HP Microsoft