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 в реальной практике, ведь создавать собственные языки - это так круто!

Комментарии

{{comment.AuthorInfo}}
{{ comment.DateCreated | date: 'dd.MM.yyyy' }}

Партнеры конференции

Заметили ошибку?