Разработчик создал язык программирования Rockstar. Программы на нём выглядят как тексты песен 80-х Материал редакции

Программист хочет, чтобы рекрутёры перестали искать «рок-звёзд разработки».

В закладки
AC/DC, фото Associated Press

Британский разработчик Дилан Битти (Dylan Beattie) создал язык программирования Rockstar, основанный на рок-песнях 80-х. Код на нём выглядит как тексты хитов конца прошлого века. Описание языка и спецификации Битти опубликовал на GitHub.

По словам разработчика, Rockstar «создан для разработки программ, которые в то же время являются текстами песен». Битти рассказал, что придумал язык, чтобы менеджеры по подбору персонала перестали называть разработчиков «рок-звёздами» и указывать это в вакансиях.

Потому что если мы сделаем Rockstar реальным (и полностью бессмысленным) языком программирования, то рекрутёры больше не смогут говорить о «рок-звёздах разработки». Кроме того, это забавно.

Дилан Битти

Разработчик отметил, что если его язык начнут использовать, то можно сделать стикеры. Потому что «кто не хочет наклейку на ноутбук с надписью: „сертифицированный разработчик-рок-звезда“».

Битти подробно описал синтаксис языка. По его словам, Rockstar даёт программистам «беспрецедентный уровень поэтической вольности», когда речь идёт «о композиции и структуре их программ».

В отличие от других языков, использовать комментарии в Rockstar «категорически не рекомендуется». Но если всё же хочется, то разработчик советует использовать круглые скобки: в этом случае их не получится использовать для сложных арифметических выражений. Кроме того, не стоит пытаться быть кратким.

Это рок-н-ролл: аудитория сама найдёт свой собственный смысл.

из спецификаций языка программирования Rockstar

Язык также поддерживает переменные. Есть два способа объявлять и использовать их в Rockstar. «Классические» переменные начинаются с одного из ключевых слов: a, an, the или my. После этого можно указать уникальное имя переменной, которое должно быть набрано исключительно прописными буквами от a до z.

«Нарицательные» переменные должны называться как имена собственные и начинаться с большой буквы. Они могут содержать столько пробелов, сколько больших букв в них используется.

Такие переменные разработчики смогут использовать для создания идентификаторов клиентов, налоговых ставок или дистанций в километрах. В этом случае рекомендуется использовать названия известных песен 80-х, например, Tommy, Gina, Doctor Feelgood, Mister Crowley, Kayleigh, Tom Sawyer, Billie Jean and Janie.

Переменные не нужно объявлять заранее — они динамически типизируются. А с помощью местоимений он, она, оно и других можно сослаться на последнюю используемую переменную.

Также в языке есть типы переменных, которые базируются на системе ECMAScript, однако значение undefined «звучало не слишком рок-н-ролльно», поэтому его заменили на mysterious («загадочный»).

Типы переменных в языке Rockstar

  • Mysterious («загадочный») — значение любой переменной, у которой нет значения обозначается словом mysterious.
  • Null («пустой») — пустой тип. Равен нулю или false («ложь»). Ключевые слова nothing («ничто»), nowhere («нигде») и nobody («никто») распознаются как псевдонимы null.
  • Boolean («булево») — логический тип имеющий два значения: true («правда») или false («ложь»). Right («верный»), Yes («да») и Ok являются псевдонимами True. Wrong («неверный»), No («нет») и Lies («враньё») являются псевдонимами False.
  • Number («число») — числа в Rockstar хранятся с использованием цифрового типа DEC64.
  • String («строка») — строки в Rockstar представляют собой последовательности 16-битных целых значений без знака в кодировке UTF-16.
  • Object («объект») — совокупность названных свойств данных, как в ECMAScript.

Одиночная кавычка в Rockstar считается как буква алфавита. По словам разработчика, это звучит необычно «до тех пор, пока программисты не вспомнят, что „I ain't talkin' 'bout love“ («Я не говорю о любви») — идеальное рок-н-ролльное предложение».

Арифметические операции в Rockstar выполняются с помощью операторов plus («плюс»), minus («минус») , times («раз» — умножение), over («через» — деление) и ключевых слов with («с»), without («без»), of и by, которые дублируют функции.

Примеры арифметики в Rockstar

  • Put the whole of your heart into my hand («Положи всё сердце в мою руку») — умножить «твоё сердце» на «всё» и назначить результат в «мои руки»
  • My world is nothing without your love («Мой мир — ничто без твоей любви») — Создать «мой мир» с результатом вычитания «твоей любви» из нуля

Кроме того, одна из особенностей Rockstar — «поэтические литералы», позволяющие выразить «чудовищную тоску и обозначить переменную». Например, с помощью них присваивание переменной значения 100 выглядит как строка из рок-хита 80-х — «Tommy was a lovestruck ladykiller» («Томми был по уши влюблённым сердцеедом»).

Пример примитивной задачки FuzzBuzz на языке Rockstar

Битти также описал несколько идей, например, раздавать стикеры «сертифицированный разработчик Rockstar» всем, кто сможет написать хоть одну строку на языке, а также генерировать счёт использования текстов песен в коде.

В декабре 2016 года студенты петербуржского колледжа создали язык программирования YoptaScript. Он был предназначен «для гопников и чотких пацанов».

{ "author_name": "Дамир Камалетдинов", "author_type": "editor", "tags": ["\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438","\u043e\u0444\u0442\u043e\u043f"], "comments": 25, "likes": 97, "favorites": 32, "is_advertisement": false, "subsite_label": "flood", "id": 74084, "is_wide": false, "is_ugc": false, "date": "Tue, 24 Jul 2018 00:05:00 +0300", "is_special": false }
Комментарии

Неясный шмель

2

HJ - HabraJournal

Удивительный историк

3

новый язык программирования

ожидание
https://github.com/dylanbeattie/rockstar
реальность
https://github.com/Ky6uk/PETOOH

Блестящий огонь

2

Когда рекрутер скажет мне «мы ищем рок звезду», а я скажу «да пошел ты на хуй тогда», я пройду собеседование?

Офтоп
дискуссии в сообществе доступны только владельцам клубного аккаунта
С клубным аккаунтом вы сможете
создавать записи и вести дискуссии в закрытых сообществах
наслаждаться нашим сайтом без рекламы
помочь проекту и почувствовать себя лучше
Купить за 75₽
Обсуждаемое
Новости
Экипаж А321 «Уральских авиалиний» вышел на поле перед матчем в Екатеринбурге. Трибуны встретили их стоя и аплодисментами
Пилот самолёта Дамир Юсупов, спасший всех людей на борту, нанёс первый удар по мячу.
Новости
Православные активисты заставили новосибирца снять футболку
«Сегодня в районе метро Площадь Маркса молодой парень вежливо после прохода к сотрудникам полиции вместе с братом из Движения Сорок Сороков (Новосибирск) согласился снять футболку с карикатурой на святого. Хорошо, с собой у него была еще джинсовая накидка — если бы поехал с голым торсом — мог бы замерзнуть», — сказано в группе «Сорок…
Новости
The Guardian опубликовала доказательства участия российских военных в боях под Иловайском на Украине в 2014 году
Исследователи предоставили снимки с танками Т-72Б3, которые тогда использовало только Минобороны России.
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "i", "ps": "cndo", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovy", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfk" } } }, { "id": 6, "disable": true, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byswn", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "cndo", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223677-0", "render_to": "inpage_VI-223677-0-130073047", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=cndo&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudv", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "ccydt", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fzvc" } } } ]