Мнение редакции может не совпадать с мнением автора
В жизни каждого программиста наступает момент, когда он хочет создать свой собственный язык. Увы, обычно дело заканчивается очередным диалектом Brainfuck (переведем это название как «головомойка», хорошо?)
Но недавно один британец удумал сделать новый язык программирования Rockstar, программы на котором выглядят как самые настоящие рок-баллады. Rockstar интересен и красив, и я, даром что программист и недаром что технарь, решил его немного освоить и написать программу, которая пройдется по всем цифровым струнам моей души.
И вот что вышло:
Sorrow takes the life and my feelings Soul is nothing without my feelings While the life is as high as my feelings Put the life with Soul into the life Give back the life Pain takes my soul Sadness was unfamiliar feeling i was laugted on it until now my life is dark it doomed and crushed Girl is left me spirit now alone Put my life minus Girl into Sadness If my soul is weaker than Sadness Give back lies While Sadness is less than my soul If Sorrow taking my soul, Sadness is nothing Give back lies Build Sadness up Give back ok your heart is waiting Say "Please give me your number!" Listen to your heart my feelings is strong Put your heart into my feelings your sorrow is lies your beauty is ok While my feelings is bigger than nothing If Pain taking my feelings is your sorrow Say my feelings Whisper "Too complex for me" If Pain taking my feelings is your beauty Scream my feelings Say "I like simple love!" Knock my feelings down Say "It's over, my baby"
При желании программу можно литературно перевести на русский язык:
Печаль забирает жизнь и мои чувства Душа ничто без моих чувств Пока жизнь так же высока как чувства Вдохни жизнь с душой в жизнь Верни жизнь Боль отбирает мою душу Грусть была незнакомым чувством. Я смеялся над ним до сих пор моя жизнь темна она проклята и уничтожена Девушка покинула меня душа сейчас одинока Брось мою жизнь без девушки в грусть Если моя душа слабее грусти Верни ложь Пока грусть не заполнила всю душу Если печаль заберет мою душу, грусть ничто Верни ложь Грусти больше Отдай хорошо Твое сердце ждет Я прошу «Дай мне свой номер» Послушай свое сердце Мои чувства сильны Доверь свое сердце моим чувствам Твоя печаль ложна твоя красота хороша Пока мои чувства не стали ничем Если боль забирающая мои чувства — твоя печаль Озвучу мои чувства Прошепчу «Они слишком сложны для меня» Если боль забирающая мои чувства красива Прокричу о моих чувствах Скажу «Я люблю простую любовь» Убей мои чувства Я скажу «Все кончено, детка»
История понятна — парня бросила девушка, он находится в глубокой печали, но под конец находит в себе силы и склеивает новую с хищнической целью, ибо его сердце отныне огрубело и он ищет только «простую любовь».
На деле программа определяет, какие из чисел простые, а какие нет. Пользователь вводит число, а программа проверяет все числа, от введенного до единицы, на их простоту.
Разумеется, из соображений пущего драматизма и лиричности в программе очень много лишних вычислений и переменных.
Например, строка Sadness was unfamiliar feeling i was lauged on it until now определяет переменную Sadness как 71362253, а строки my life is dark it doomed and crushed / Girl is left me spirit now alone присваивают переменной my life значение 42637, а переменной Girl — 42635. Все это нужно для того, чтобы отнять Girl из my life и получить Sadness = 2.
Так что лаконичность — это точно не про Rockstar. Rockstar хорош тем, что это полноценный язык программирования высокого уровня, в котором можно написать полезные, но главное — чертовски красивые и поэтичные программы. И он только-только начал развиваться, так что в будущем его возможности, надеемся, возрастут.
Хотелось бы, конечно, чтобы в язык были введены массивы. Например, это можно сделать с помощью ключевых слов «has» и «pieces», тогда строчкой my soul has a million pieces можно было бы объявить массив my soul с количеством элементов, заданных переменной a million. А обращение к массиву, пожалуй, можно реализовать через «part of», тогда Sorrow is Large part of my soul — передаст в переменную Sorrow элемент my soul с номером Large.
Еще, пожалуй, не хватает базовых математических функций, в первую очередь экспоненты и тригонометрии. С тригонометрией все просто — Sin сам по себе лиричен и точно про рок, а из него при желании и все остальную тригонометрию вытянуть можно. А еще, если это не оскорбит чувства рокеров, можно определить тригонометрическую функцию tango.
Очень бы хотелось написать с помощью лирики Rockstar программу численного решения дифференциальных уравнений, но без массивов и математических функций это будет крайне сложно и ни разу не лирично. Но простенькие задачки по олимпиадному программированию школьного уровня здесь решабельны вполне.
Также с помощью Rockstar можно попытаться выяснить тайный смысл песен всяких там AC/DC, Manowar и прочих начинающих программистских коллективов. Но увы — с синтаксисом языка рока они совершенно не дружат, хотя и пытаются местами. Все говорит о том, что из программиста можно без особого труда сделать рокера, а наоборот — не получится.