2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 o 11 12 13 14
Генеральный
партнёр


Все на CodeFest X →

Десятый. Юбилейный. 30–31 марта 2019

Language Oriented Programming (LOP) в действии. Как мы это делаем в 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 в реальной практике, ведь создавать собственные языки — это так круто!

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

Партнёры