Rockstar язык программирования программы на котором похожи на песни
Разработчик Дилан Битти разработал и подробно описал динамический типизированный язык программирования Rockstar для создания программ, похожих на песни. На это его вдохновили не только лирические рок-композиции 1980-х годов, но и менеджеры по персоналу, которые стремятся найти «рок-звёзд» среди разработчиков.
Если язык станет популярным, Дилан планирует выпустить стикеры «Certified Rockstar Developer».
Спецификация Rockstar
Использовать комментарии настоятельно не рекомендуется, но если потребуется, то заключать их следует в круглые скобки. Применять скобки в арифметических выражениях нельзя.
Переменные
Язык Rockstar предлагает два способа объявлять переменные:
- Классические, включающие одно из слов: a , an , the или my . После программист указывает уникальное имя прописными буквами латинского алфавита.
- Нарицательные. Начинаются как имена собственные — с большой буквы. Можно использовать, чтобы написать название любимых композиций ( Tommy , Gina , Doctor Feelgood ) или создавать налоговые ставки, идентификаторы клиента.
Так же как и в Ruby, Python и VBScript, нет необходимости заранее объявлять переменные благодаря динамической типизации. Местоимения ссылаются на последнюю использованную переменную.
Типы переменных
В Rockstar используются переменные, схожие с системой ECMAScript:
- Mysterious (заменяет undefined) — любые переменные без конкретного значения.
- Null — false или ноль (слова nothing , nowhere и nobody ).
- Boolean — логический тип (слова right , yes , ok ; wrong , no , lies ).
- Number — хранятся посредством цифрового типа DEC64.
- String — последовательность 16-битных целых значений в кодировке UTF-16, которые не сопровождаются знаком.
- Object — комплекс свойств, аналогичных ECMAScript.
Литералы и присваивания
Строковые литералы в Rockstar заключают в двойные кавычки. Одиночная кавычка считается буквой алфавита. Числовые литералы записывают как десятичные числа. Присваивание обозначается комбинацией ключевых слов put/into .
Для арифметических действий используют plus , minus , times (умножение), over (деление), а также слова with , without , of и by , повторяющие функции.
- Put the whole of your heart into my hand — умножить your heart на whole и назначить результат into my hand .
Rockstar использует специфическую языковую деталь — «поэтический литерал», с помощью которого можно обозначить переменную и заодно «выразить непреодолимую тоску». Например, для ключевых слов true , false , nothing , nobody и nowhere поэтическое присваивание представляет собой одну строку, состоящую из имени переменной, ключевого слова is и литерала требуемого значения:
- My heart is true — инициализирует переменную my heart логическим значением true .
- Tommy is nobody — инициализирует переменную Tommy значением null с помощью псевдонима nobody .
Примеры
FizzBuzz в минималистском варианте Rockstar, с отступами блоков для ясности:
То же самое в идиоматическом Rockstar, с использованием поэтических литералов и без отступов:
Уже есть возможность преобразовать Rockstar в JavaScript.
В 2017 году появился ещё один «шуточный» язык программирования Motes, основанный на эмодзи. Для его освоения потребуется скачать нужные библиотеки и установить редактор, поддерживающий эмодзи.
Британский разработчик Дилан Битти (Dylan Beattie) опубликовал на сайте GitHub спецификации и описание необычного языка программирования Rockstar («рок-звезда»). По словам самого разработчика, полный по Тьюрингу язык с динамическим приведением типов был создан с целью ответить на набившую оскомину формулировку рекрутеров, что они ищут «рок-звезду разработки ПО».
Проектируя язык, его автор постарался сделать так, чтобы исходные тексты напоминали тексты песен. Более того, по словам Битти, язык Rockstar создавался «под сильным влиянием» рок-лирики 1980-х годов.
Переменные в Rockstar могут быть нарицательными и собственными. В первом случае именем может быть любое существительное, написанное со строчной буквы, которому может предшествовать артикль или личное местоимение. Во втором имя состоит из одного или нескольких слов, каждое из которых пишется с прописной буквы. Переменные не нужно предварительно объявлять.
Присваивание записывается словами put и into. Инкремент и декремент — конструкциями Build up и Knock down. Арифметические операции записываются не знаками, а словами. Кроме того, есть псевдонимы, которые позволяют придавать тексту читабельный вид. Вкупе с другими особенностями языка это позволяет получать примерно такие тексты:
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
В списке идей, которые еще есть у автора языка, значится «выяснение, является ли язык хотя бы примерно реализуемым», «исследование других идей компиляторов рок-баллад» и «изготовление наклеек Certified Rockstar Developer», которые будут вручаться каждому, кто смог написать хотя бы одну строку программы на новом языке.
В итоге Дилан затеял язык программирования Rockstar, код на котором должен быть похож на рок/метал-тексты. Во-первых, если получится сделать такой проект заметным, то можно отнять у рекрутеров слова «rockstar developer», дав им новое значение. А во-вторых, интересно же попробовать скомпилировать тексты любимых песен! Ну и делать наклейки на ноутбук «certified rockstar developer» тоже весело.
Конечно, всё это звучит как шутка, и изначально ей и было, но теперь становится всё реальнее. Подробности — под катом.
Началось всё с того, что разработчики стали иронично обыгрывать понятие «rockstar developer», вспоминая о настоящих рок-звёздах. Вы можете помнить эту картинку:
И подобные шуточки со временем дошли до такого твита:
To really confuse recruiters, someone should make a programming language called Rockstar.
— Paul Stovell (@paulstovell) July 3, 2018
Вряд ли автор этого твита предполагал, что кто-либо когда-либо действительно возьмётся делать подобное. Тут нужен человек, который одновременно очень любит и программирование, и рок-музыку, и юмор, причём готов ради одной удачной шутки проделывать большую работу.
Но Дилан Битти именно такой и есть. Он давно делает программистские пародии на рок-хиты — то есть как раз соединяет программирование, рок-музыку и юмор, затрачивая на это порядочно времени. Можете послушать, например, его версию «Another Brick in the Wall» Pink Floyd, которая на вечеринках IT-конференций заходит на ура:
Дилан вспомнил о уже существующих эзотерических языках, где не ставили цель «стать популярнее C++», а ставили цель «давайте реализуем интересную идею, просто потому что можем». Среди них есть такие, которые привносили в код лексику и стилистику из какой-то другой области: например, язык Shakespeare, стилизующий программы под шекспировские пьесы, и Lingua::Romana::Perligata, позиционирующийся как «Perl на латыни». Да, в продакшн на них никто не пишет, но сам факт их существования делает наш мир немного красочнее.
С такими мыслями он решил создать язык, где FizzBuzz может выглядеть так:
В августе Дилан завёл репозиторий на 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 :)
Новый язык программирования Rockstar создал разработчик Дилан Битти. Команды на нем звучат как строчки из рок-хитов 80-х, и благодаря этому Rockstar действительно помогает почувствовать себя рок-звездой, о которой грезят HR крупных корпораций.
Всем нужны рок-звезды
В описании Rockstar на GitHub говорится, что новый язык программирования придумали в пику хедхантерам ИТ-компаний. Все они хотят видеть на собеседовании исключительно рок-звезд от программирования, и этот ярлык давно опостылел кандидатам.
Битти не скрывает, что Rockstar – хоть и реальный, но, в общем-то, совершенно бессмысленный язык программирования. Если его выучить, ни один кадровик не сможет придраться к тому, что вы – «разработчик – рок-звезда».
Кроме того, Битти пообещал напечатать стикеры для фанатов. Действительно, ведь каждый кодер хочет стикер «Сертифицированный программист Rockstar»!
Особенности языка
Rockstar – тьюринг-полный язык с динамической типизацией. Битти подчеркнул, что он дарит разработчикам «беспрецедентный уровень поэтической свободы, когда речь заходит о композиции и структуре их программ».
Посудите сами – вот лишь несколько команд на Rockstar:
Put the whole of your heart into my hands — умножает your heart на the whole и выдает результат в my hands.
My world is nothing without your love — инициализирует my world с результатом вычитания your love от 0.
If the tears of a child is nothing — проверяет, когда the tears * a child = 0.
My love by your eyes — возвращает my love поделенное на your eyes.
Как это понять?
Начнем с переменных. Их в Rockstar можно объявить двумя способами: a, an, the, my, your и любое слово из строчных букв латинского алфавита или любое незарезервированное языком слово либо несколько слов, каждое с большой буквы. Ключевые слова it, he, she, him, her, them, they ссылаются на самую последнюю названную переменную, определенную во время парсинга.
Система типов Rockstar напоминает систему ECMAScript, за исключением неопределенных. Поддерживаются такие типы:
Mysterious (таинственный) – значение любой переменной, которой не присвоено значение.
Null – нулевой тип. Равен арифметическому нулю или false. Ключевые слова nothing, nowhere и nobody являются алиасами Null, имеют те же значения.
Boolean - логический объект, имеющий два значения: true и false. (Возможно, и, возможно, ключевые слова зарезервированы для использования в будущем). Right, yes и ok – псевдонимы для истинных значений, wrong, no и lies – псевдонимы для ложных значений.
Number – номера в Rockstar хранятся с использованием цифрового типа DEC64.
String – последовательности из 16-разрядных целочисленных значений без знака, представляющих кодовые единицы UTF-16.
Объект – совокупность перечисленных свойств данных, как в ECMAScript.
А вот комментарии в командах на Rockstar использовать не стоит. Ведь «это рок-н-ролл. Аудитория сама найдет подходящий для себя смысл». Но если очень нужно добавить комментарий в код, возьмите его в круглые скобки. Сюрприз: нельзя использовать круглые скобки в арифметических выражениях. Такой вот тяжелый рок.
Для языка уже выпущено три своеобразных трейера о проекте:
rockstar-js – для запуска JavaScript transpiler;
Пользователи же, обсуждая Rockstar, отметили, что разработчику теперь нужно будет взять и создать языки Ninja и Guru. Это уж точно не оставит рекрутерам шансов и заставить нанять именно вас.
Читайте также: