Стихи в коде



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


    Беглые поиски вырисовали не очень приятную ситуацию — в то время как за границей искусство стихов в коде более-менее развито, есть даже сборник 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;}
    

    (с) Лев Артурович Ткаченко
    Метки:
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

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

            должна читаться суржиком, чтобы звучать, а такое часто ранит чувствительную душу поэта…
            • +3
              Почему? «s equals filename plus three»
              или вместо equals — assign. тоже будет звучать
              • +7
                «s assign»
                • +3
                  А да — почему-то я тоже 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
                                В пост призывается литературовед, дабы определить размер стиха.
                              • +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
                                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                                          • +24
                                                                            Хм, мне сразу вспомнилось:

                                                                            image
                                                                          • 0
                                                                            Классные бы получились произведения — взять песенки из кода и наложить музыку из звуков флопиков, старых винтов и прочего железа)))

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