Сергей Иванов

Суровый технарь

Урок программирования для поклонников рока

В жизни каждого программиста наступает момент, когда он хочет создать свой собственный язык. Увы, обычно дело заканчивается очередным диалектом 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 и прочих начинающих программистских коллективов. Но увы — с синтаксисом языка рока они совершенно не дружат, хотя и пытаются местами. Все говорит о том, что из программиста можно без особого труда сделать рокера, а наоборот — не получится.

Ранее в этом блоге

Нашли опечатку? Выделите фрагмент и нажмите Ctrl+Enter.