Словосочетание «rockstar developer» заставляет некоторых морщиться: «вот же глупый рекрутерский баззворд, среди самих разработчиков никто так себя не называет». В России оно встречается не так часто, а вот в англоговорящих странах многим уже надоело. И особенно остро ощущает его засилье британский .NET-разработчик Дилан Битти: он фанат рок-музыки, поэтому хорошо видит, насколько это «rockstar» далеко от настоящих rockstars.
В итоге Дилан затеял язык программирования Rockstar, код на котором должен быть похож на рок/метал-тексты. Во-первых, если получится сделать такой проект заметным, то можно отнять у рекрутеров слова «rockstar developer», дав им новое значение. А во-вторых, интересно же попробовать скомпилировать тексты любимых песен! Ну и делать наклейки на ноутбук «certified rockstar developer» тоже весело.
Конечно, всё это звучит как шутка, и изначально ей и было, но теперь становится всё реальнее. Подробности — под катом.
Началось всё с того, что разработчики стали иронично обыгрывать понятие «rockstar developer», вспоминая о настоящих рок-звёздах. Вы можете помнить эту картинку:
И подобные шуточки со временем дошли до такого твита:
Вряд ли автор этого твита предполагал, что кто-либо когда-либо действительно возьмётся делать подобное. Тут нужен человек, который одновременно очень любит и программирование, и рок-музыку, и юмор, причём готов ради одной удачной шутки проделывать большую работу.
Но Дилан Битти именно такой и есть. Он давно делает программистские пародии на рок-хиты — то есть как раз соединяет программирование, рок-музыку и юмор, затрачивая на это порядочно времени. Можете послушать, например, его версию «Another Brick in the Wall» Pink Floyd, которая на вечеринках IT-конференций заходит на ура:
Дилан вспомнил о уже существующих эзотерических языках, где не ставили цель «стать популярнее C++», а ставили цель «давайте попробуем реализовать что-то интересное просто из принципа». Среди них есть такие, которые привносили в код лексику и стилистику из какой-то другой области: например, язык Shakespeare, стилизующий программы под шекспировские пьесы, и Lingua::Romana::Perligata, позиционирующийся как «Perl на латыни». Да, в продакшн на них никто не пишет, но сам факт их существования делает наш мир немного красочнее.
С такими мыслями он решил создать язык, где FizzBuzz может выглядеть так:
Midnight takes your heart and your soul
While your heart is as high as your soul
Put your heart without your soul into your heart
Give back your heart
Desire is a lovestruck ladykiller
My world is nothing
Fire is ice
Hate is water
Until my world is Desire,
Build my world up
If Midnight taking my world, Fire is nothing and Midnight taking my world, Hate is nothing
Shout "FizzBuzz!"
Take it to the top
If Midnight taking my world, Fire is nothing
Shout "Fizz!"
Take it to the top
If Midnight taking my world, Hate is nothing
Say "Buzz!"
Take it to the top
Whisper my world
В августе Дилан завёл репозиторий на GitHub и написал о своей идее в Twitter, не ожидая никакой особенной реакции — и внезапно всё взорвалось ретвитами и гитхаб-звёздами. Круги разошлись вплоть до того, что у него взял интервью журнал Classic Rock.
В этом интервью Дилан заметил, что затевать подобный проект — это «как пытаться объехать Канаду на моноцикле: такое делают не для решения реальной задачи, а чтобы посмотреть, чего получится достичь, загнав самого себя в необычные рамки».
А ещё заметил, что при всей шумихе будущее проекта под вопросом: интернет очень быстро переключается на новые шутки, так что назавтра Rockstar может оказаться забыт, не успев оказаться реализованным.
Однако, хотя первая волна интереса действительно схлынула, проект не выглядит заброшенным. И уже сейчас он выглядит куда проработаннее, чем простая шутка на один день. Когда читаешь спецификацию, она впечатляет в двух отношениях. Во-первых, по ней видно, что там действительно задумывались «как должен выглядеть такой язык», а не просто набросали что-то за пять минут и забыли. А во-вторых, она местами очень забавная:
«Использование комментариев не поощряется. Это рок-н-ролл, аудитория должна сама находить в тексте смысл!»
«Система типов похожа на ECMAScript, только undefined звучит недостаточно рок-н-ролльно, так что мы решили использовать слово mysterious».
«Поскольку Rockstar объединяет программирование, английский язык и рок-н-ролл, с апострофами всё сложно. В программировании их используют для строковых значений — 'вроде этого'. В английском для сокращённых форм — you're, he's. А в рок-н-ролле, похоже, используют вообще рандомно: sweet child o' mine, ain't talkin' 'bout love, guns n' roses».
Мы решили уточнить некоторые подробности у самого Дилана:
— Эта затея на первый взгляд выглядит «шуткой на один коммит», за которым не последует второго. Но сейчас коммитов в проекте уже 132 — правильно понимаем, что он жив?
— Да! Начался он как шутка — первый черновик спецификации языка я написал, сидя в баре за ноутбуком. Выложил на GitHub, опубликовал ссылки в Twitter… и получил больше тысячи звёзд на GitHub. А затем люди занялись реализациями. Кто-то создал транспайлер Rockstar-JavaScript, кто-то другой — подсветку синтаксиса для Sublime Text и VS Code. Люди создавали пулл-реквесты, открывали issue, делали собственные имплементации — это было потрясающе.
Теперь есть целая маленькая команда, занимающаяся референсной реализацией Rockstar; есть группа в Discord, где мы обсуждаем дизайн языка. Это всё ещё шуточный язык — но это шуточный язык с набором интеграционных тестов и рекурсивным нисходящим парсером, а в ноябре мы планируем релиз 1.0.
— А этот язык предназначен строго для рок-фанатов? Любителям поп-музыки или хип-хопа тут ловить нечего?
— Даже не знаю! Изначальная идея была в том, чтобы рекрутеры не могли больше говорить о «rockstar developers»… есть ли такая вещь, как хип-хоп-разработчик? Но язык спроектирован так, чтобы соответствовать текстам песен в целом, там нет каких-то вещей, строго требующих использовать именно рок-лексику. Я уверен, что можно написать такой хип-хоп-текст, который будет валидной программой.
— А хотите ли как-то совмещать Rockstar с пародиями, которыми вы известны?
— Написать такую пародию на рок-песню, которая одновременно с этим будет ещё и валидной Rockstar-программой? Звучит интересно… возможно, попробую после того, как мы финализируем спецификацию 1.0 :)
Напоследок небольшое объявление. Мы знаем Дилана благодаря тому, что он регулярно выступает на нашей .NET-конференции DotNext: его доклады каждый раз получают отличные отзывы, показывая, что он хорош не только в пародиях. И на ближайшем DotNext 2018 Moscow (22-23 ноября) он закроет конференцию докладом «Ctrl-Alt-Del: learning to love legacy code». А ещё он наверняка, как обычно, прихватит с собой гитару, чтобы на конференционной вечеринке исполнить свои пародии перед всеми желающими. В общем, если хотите обсудить с ним Rockstar, увидеть его в качестве докладчика или услышать его творчество вживую — вы знаете, где это можно сделать.
Автор: Евгений Трифонов