Пользователь
3,2
рейтинг
9 июля 2013 в 11:23

Разработка → Стихи в коде



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


Беглые поиски вырисовали не очень приятную ситуацию — в то время как за границей искусство стихов в коде более-менее развито, есть даже сборник code {poems}, за авторством отечественных программистов удалось найти всего парочку творений.

А как обстоят дела с программистами-поэтами на хабре? Пост будет дополняться стихотворениями из комментариев, приветствуются все языки программирования (поговаривают, что Perl в этом случае — самый богатый на выразительные средства). И не забывайте, что код должен компилироваться. Ах да, тут советуют выкладывать творения на Instacode.

Автор: Dark Dragon
if (newGame) resources.free();
s = FILENAME + 3;
setLocation(); load(s);
loadDialog.process();

try { setGamerColor(RED); }
catch(Exception e) { reset(); }
while (notReady) { objects.make();
if (resourceNotFound) break; }

byte result; // сменить на int!
music();
System.out.print("");

Instacode
(с) Dark Dragon


[Love.cpp], Автор: Лев Артурович Ткаченко
#include <God.h>
#include <Time.h>
#include <Love.h>
#include <persones\LonelyLion.obj>
#include <persones\She.obj>
// ----------------------------- 
#define is ==
// ----------------------------- 
begin:
// -----------------------------
 

if( Time() is EVENING ) {close(ALL_THE_STREAMING);
( shutdown(NULL) AND finished(ALL_PROCESS)) }
else {(close(EYES); start((float *)function Dreaming())
AND (see(Her->Body->Lips->Legs[i + next])); }
 
God->allocated(many_happy_seconds);
for(Me + You) {FOREVER_BE_INLOVE};
stop(RAIN); repeat { play(sound());} until(dancing());
#ifNotDefined EventExit (int) 1;
 
while (NOT say("YES")) repeat{1} until(waiting());
if(_say_ is TRUE) {( MyHeart(ONLINE); Volume(); 
Sky(ON_SUNSET); increasing(Brightness_Rating); )
AND (Date is new(*struct ParadiseForYou)) }
 
putstring(1,1, "Hello,world! I LOVE YOU!!!");
getch(); DRAW_SMILE(MAGENTA_COLOR, screen);
compile(My_And_Her_Life, InGodsDebugger)
AND {close(file); save(); goto begin;}

(с) Лев Артурович Ткаченко
Егор @YourDestiny
карма
37,7
рейтинг 3,2
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (89)

  • +19
    Это сразу на инстакод надо постить.
    image
    • +3
      спасибо за идею, сменил начальную картинку :)
  • +7
    Ну как сделал это Лев Артурович Ткаченко — никого не удивляет.
    Самое интересное — это стихи, которые работают в реальном проекте, работающий алкоритм в стихах — вот это прикольно.
    Т.е. специально созданный проект для стиха — это как-то слишком легко.
    • 0
      поэтому я и сделал пометку, что код должен быть компилируемым. А Лев Артурович — за недостатком других примеров.
  • НЛО прилетело и опубликовало эту надпись здесь
    • +7
      В поэзии только хокку признаете?
      • НЛО прилетело и опубликовало эту надпись здесь
        • +2
          Стихи в коде — это прикол, если что.
          • +1
            Приколы в коде далеко не всегда хорошо сопровождаются, к сожалению, поэтому не могу возразить предыдущему оратору.
            • 0
              На продакшене приколы не нужны. Такие приколы просто участвуют в каких-нибудь конкурсах, и не более того.
  • +6
  • –7
    Русские поэты-программисты сильно ограничены необходимость смешивать языки — полностью русских языков программирования не так много(
    Так
    s = FILENAME + 3
    

    должна читаться суржиком, чтобы звучать, а такое часто ранит чувствительную душу поэта…
    • +3
      Почему? «s equals filename plus three»
      или вместо equals — assign. тоже будет звучать
      • +7
        «s assign»
        • +3
          А да — почему-то я тоже equals сперва подумал — тогда звучит)
          • +4
            equals это == же
        • –4
          Или сокращенно «s as filename plus three»
        • +1
          «s will be» — ударение тоже куда надо
      • 0
        «equals» тут вообще не катит, потому что ударение в нём на первом слоге, а размер стиха требует ударения на втором :)
    • +6
      s is filename plus three
    • –1
      «эс равно файлнейм плюс три» в ритм попадает неплохо. Рифма тоже остается. А то, на каком языке слова — не без разницы ли?
  • –8
    Единственное, нашел косяк, свойственный русским:
    «loadDialog» правильно читается как «лоад дайлог», а не «лод диалог» (как предполагает автор) :)
    • +1
      Ну почему же?
      сет локейшн, лоад эс
      лоад дайалог процесс


      Вполне читается.

      PS: ни разу не слышал «лод» вместо «лоад».
      • +3
        Если читать не «процесс», а «просесс», то ещё гармоничнее получается.
        • +3
          Но есть небольшая проблема. Ударение в этом слове падает на первый слог, а не на второй.
          • –2
            Если верить яндекс.словарям, есть два варианта произношения: с ударением на первый слог и с ударением на второй слог, причём второй вариант характерен для британского английского. О том, что есть вариант с ударением на первый слог, я, по правде говоря, и не подозревал.
            • +5
              Вы неправильно поняли. При ударении на второй слог, слово обретает другой смысл — «участвовать в процессии». И там не ударение британское, а само слово, которое в этом значении в американском английском не употребляется.

              В том значении, в котором слово употреблено в коде («обрабатывать»), есть только один вариант произношения — с ударением на первый слог. В том, что вы об этом не подозревали, нет ничего удивительного — это распространенная ошибка у русскоговорящих.
              • 0
                Вообще-то существительное (процесс) читается с ударением на первый слог, а глагол (обрабатывать) — на второй.
                • +2
                  Словари об этом ничего не знают. В моей англоязычной среде все произносят глагол с ударением на первый слог.
                  Какие будут ваши доказательства? :-)
                  • +3
                    Всегда так произносил, и в видеозаписях выступлений слышал. Словари действительно говорят о другом, так что, скорее всего, я где-то что-то напутал. Признаю за собой ошибку.
      • +2
        Хм… Возможно, Вы правы)
        Google translate тоже как-то так читает.
        Беру свои слова назад)
      • +2
        Лоад дайлог дот прогресс
      • +1
        В пост призывается литературовед, дабы определить размер стиха.
        • +7
          Хорей
        • +11
          четырёхстопный хорей
      • +3
        load [ləud]

        Корректнее все-таки «Лоуд».
        • 0
          My bad, sorry.
          Но на ритме это не сказывается.
    • +3
      Можно и так читать: «лоад дайлог дот процесс»
  • +3
    Имхо, код должен исполняться, иначе это просто рифмованный набор слов отформатированный «под код».
  • +6
    >А что насчет самой высокой формы любого языка — поэзии?
    Вы имеете в виду самую нелепую и неэффективную форму языка, где, из-за необходимости втискивать слова в границы совершенно негибких шаблонов, зачастую смысл искажается в угоду форме?
    • +10
      Собственно, истинными поэтами считаются те, кому не надо искажать смысл, потому что они всегда могут подобрать к нему правильную форму ;)
    • 0
      Неэффективную?

      Поэзия в смысле передачи эмоций и чувств куда более эффективная форма, нежели проза. В смысле передачи информации — ничем не хуже.

      А про искажения смысла уже написали выше.
      • +2
        Лично я за собой замечаю, что при чтении стихов я могу улавливать либо общую гармонию стихотворения, либо информацию, которую они несут, но не одновременно. То же самое, например, с песнями. Возможно, это тренируется.
        • +2
          Ну, стихи, на мой взгляд, придают особую окраску смыслу. Мысль, выраженная в стихах, может иметь несколько иную смысловую окраску, нежели выраженная в прозе.
          • +5
            Я могу предложить способ такую «дополнительню окраску» добавлять и без стихов. Как это ни странно, это то, что делать на компьютере очень просто.

            Все слова имеют «ощущение от звучания». Это то, что вы думаете о слове, не зная его значения. Называется — «фоносемантический ореол». Есть даже слова, значения (семантика) которых полностью определяется этим ореолом. Например, трудно придумать определение слову «фитюлька», но вот ощущение от этого слова у всех примерно одинаковое, и вот это ощущение и стало значением слова. Другой пример — «взбутетененый».

            Эти ощущения можно систематезировать по набору признаков (большое-маленькое, доброе-злое, простое-сложное и т. д.). Составить словарь синонимов, в наборе будут слова сходного смысла, но с разными ореолами (напрмер, народ-население). А потом искусственно для данного текста заменить слова синонимами, склоняющиемися к определённому значению признака ореола.

            И получится злой и грозный текст о зайчиках :)
            • 0
              интересно, какой фоносематический ореол будет у того же byte :)
              • 0
                мужественное, храброе, большое, величественное, хорошее, громкое, грубое, яркое, сильное, активное, быстрое, подвижное, короткое, могучее
              • 0
                Была даже программа, предназначенная для фоносемантического анализа текста — «ВААЛ-мини».
                Уж не знаю, насколько ей можно доверять, но поиграться с ней когда-то было забавно.
    • НЛО прилетело и опубликовало эту надпись здесь
      • +1
        Что, думаете, поэму написать — просто зарифмовать ритмичные строки? Как бы не так.

        В том-то и дело, что вот это «выстраивание» само по себе несёт вовсе не шум, а как раз дополнительную информацию (невербальную). Это как сравнивать речь по телефону или даже общение в чате и общение вживую, когда собеседник перед тобой: кроме собственно слов, ты получаешь ещё и визуальную информацию (жесты), и акустическую (интонации), и это не шум, а дополнительная информация.

        Так устроены намёки, например. Это всё понимать как «метаданные», собственную оценку слов тем, кто их произносит.

        В поэзии: например, неидеальная рифма может создать ощущение неуверенности, «что-то тут не так». Рифма ААББ устойчива и приведёт к стабильному состоянию «счастливого конца». Рифма АББА наоборот, подразумевает продолжение. Свои ощущения возникают от АААА, ААБА, АБАБ, хАхА, АБАБА, АБАБх и так далее.
        Лишний слог или строка привлечёт внимание (к самому себе), это не используется именно в стихах, но сплошь и рядом — в песнях. То же самое, отсутствующие слоги и строки вызовут потребность к «движению», к перемене.
        Структура стиха (ритмический рисунок) тоже имеет значение.

        Причём всё это воспринимается подсознательно. И при правильном использовании это не шум, а дополнительная информация.

        Так что не надо про «шум». Шум получается у тех, кто не умеет писать стихи. Ну так у них, зачастую, и «проза» так себе.

        • НЛО прилетело и опубликовало эту надпись здесь
          • 0
            Воспринимаются примерно одинаково. Во всяком случае, в этой области восприятие разных людей отличается не больше, чем понимание слов «правда», «мир», «дружба», «любовь», «сострадание» и тому подобного. Рифмы не менее конкретны, чем эти слова.

            P.S. В общем-то неудивительно, что вы не понимаете тонких структурных особенностей натуральных языков. Например, запятая у вас лишняя в последнем предложении — это куда более грубая структура, чем свойства рифм.

            P.P.S. Так нечестно.
            • НЛО прилетело и опубликовало эту надпись здесь
              • 0
                Вы вообще не понимаете, что текст может нести информацию невербальную, «между строк»? Во всяком случае, упорно отказываетесь от этого.

                Первые буквы строк заметит и воспримет далеко не каждый. А уж на слух — так и никто не заметит. В отличие от рифм и ритмов. А также фоносемантичеких ореолов (чуть выше написал про них).

                Так что уж извините, первые буквы строк вообще информацию практически не несут.

                В карму я ни к кому не заходил, это видно кто-то другой постарался. И к комментам минусы не мои…
                • НЛО прилетело и опубликовало эту надпись здесь
  • –11
  • +14
    byte result; // сменить на int!

    //Не меняй result на int — огребёшь Exception в print!"

    Чувствую, что сегодня, после этого поста, если уж не код, то как минимум комментарии буду писать в виде
    //Тут добавим интринсики — мы не прогеры, мы — гики!

    И почему-то теперь крутится в голове в духе Маяковского:
    //Забыл про инициализацию? — Подорвал Компании капитализацию!
  • +6
    А мне примерно такие моменты нравятся в коде :)

    • 0
      Вот ещё примерно в ту же степь.
  • +3
    Прочитав заголовок, подумалось, что это айтишный жаргон или еще что, но на картинке на самом деле оказались стихи. Забавно.
    И да, использование комментариев для создания стиха — чит!
  • +5
    Забавный код) Круто!

    [humor]
    скоро на всех собеседованиях страны:
    — А Вы писали код по Шекспиру?
    — Увы, нет. Только по Маяковскому. Знаете, мне кажется, Шекспир не отвечает сегодняшним трендам. Я считаю, что нужно писать кратко, быстро и в четкую рифму…
    [/humor]
  • –5
    Несмотря на стихи, за такой код надо руки отрывать.
    • –3
      А за код на brainfuck — голову?
  • +1
    Вот бы это под музыку все.
    • +1
      Ага, восьмибитную
    • 0
      Лучше стихотворный код, генерирующий музыку.
      • +3
        Пойдем дальше — стихотворный код, генерирующий собственное прочтение вслух.
  • 0
    Судя по количеству проголосовавших около 10% поэзию не любят:)
    PS: стихотворение отличное.
  • 0
    Идея не нова. Нате вам еще стихи:

    2, 15, 36,
    10, 18.
    47 / 5,
    20, 20, 20…

    48, 0, 1,
    5 / 9…
    18! 37!
    89!

    2 + 2, 15, 6,
    1012…
    28 — 5
    20, 20, 20!

    • +2
      Абсолютно другая тематика же. Топик о стихах, написанных с использованием языков программирования, а не любого необычного алфавита.
    • +3
      Вот если бы вы привели пример с решением уравнения (системы уравнений или еще чего-то работающего) в стихах, то еще можно было бы сравнить. А так ведь это просто набор чисел.
  • 0
    Идея мне в общем-то понравилась. Но есть один нюанс!

    Скажем так, в вышеприведенных фрагментах кода есть к чему придраться — хотя бы к отсутствию отступов и способу расстановки скобок. Это все сливается во едино. Мне уже пришлось напрягать извилины для того, что бы понять, к какому ветвлению что относится. А это плохо.
    • 0
      P.S. Надеюсь такое никто в продакшн коде писать не будет?
  • +1
    пушкинокодеры, блин
  • +3
    www.ioccc.org/1990/westley.c:
    ...
    
    dear; (char)lotte--;
    	for(get= !me;; not){
    	1 -  out & out ;lie;{
    	char lotte, my= dear,
    	**let= !!me *!not+ ++die;
    	    (char*)(lie=
    
    ...
    

    Selected notes from the author:
    This is a «Picking the Daisy» simulation. Now, instead of mangling a
    daisy, simply run this program with the number of petals desired as
    the argument.

    This is a good counter-example to peoples' complaints that C doesn't
    have an «English-like» syntax.

    Lint complains about everything — null effect, xxx may be used before
    set, statement not reached, return(e) and return.
    Also obviously, (char)lotte and (char*)lie are incompatible types…
    • +2
      charlie.c:31:7: error: invalid suffix «s» on integer constant
      charlie.c:93:17: error: invalid suffix «s» on integer constant
      charlie.c:99:8: error: invalid suffix «s» on integer constant


      Просвятите, что за синтаксис такой: 1s? Неужели short какой-нибудь?
      • +3
        Да, short. Из примечаний к коду ( www.de.ioccc.org/1990/westley.hint ):
        Some ANSI compilers will not accept '1s' as a short integer — for
        these compilers replace the '1s' with '1'.
        • 0
          My personal favorite lint complaint is

          «warning: eroticism unused in function main».

          Отлично!
  • +9
    today include iostream.h
    а завтра родину продашь
  • +1
    Стих
    [Love.cpp], Автор: Лев Артурович Ткаченко
    #include <God.h>
    #include <Time.h>
    #include <Love.h>
    #include <persones\LonelyLion.obj>
    #include <persones\She.obj>
    // —-------------------------—
    #define is ==
    // —-------------------------—
    begin:
    // —---------------------------

    if( Time() is EVENING ) {close(ALL_THE_STREAMING);
    ( shutdown(NULL) AND finished(ALL_PROCESS)) }
    else {(close(EYES); start((float *)function Dreaming())
    AND (see(Her->Body->Lips->Legs[i + next])); }

    God->allocated(many_happy_seconds);
    for(Me + You) {FOREVER_BE_INLOVE};
    stop(RAIN); repeat { play(sound());} until(dancing());
    #ifNotDefined EventExit (int) 1;

    while (NOT say(«YES»)) repeat{1} until(waiting());
    if(_say_ is TRUE) {( MyHeart(ONLINE); Volume();
    Sky(ON_SUNSET); increasing(Brightness_Rating); )
    AND (Date is new(*struct ParadiseForYou)) }

    putstring(1,1, «Hello,world! I LOVE YOU!!!»);
    getch(); DRAW_SMILE(MAGENTA_COLOR, screen);
    compile(My_And_Her_Life, InGodsDebugger)
    AND {close(file); save(); goto begin;}

    (с) Лев Артурович Ткаченко
  • +2
    image
    • 0
      50% die это клево
  • +24
    Хм, мне сразу вспомнилось:

    image
    • +2
      Офигенно)
    • 0
      Это прекрасно
    • –1
      Дайтье ссылку на инстакод — поплюсую! )
  • 0
    Классные бы получились произведения — взять песенки из кода и наложить музыку из звуков флопиков, старых винтов и прочего железа)))

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.