Стихи в коде



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


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

    (с) Лев Артурович Ткаченко
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 89

      +19
      Это сразу на инстакод надо постить.
      image
        +3
        спасибо за идею, сменил начальную картинку :)
      +7
      Ну как сделал это Лев Артурович Ткаченко — никого не удивляет.
      Самое интересное — это стихи, которые работают в реальном проекте, работающий алкоритм в стихах — вот это прикольно.
      Т.е. специально созданный проект для стиха — это как-то слишком легко.
        0
        поэтому я и сделал пометку, что код должен быть компилируемым. А Лев Артурович — за недостатком других примеров.
      • UFO just landed and posted this here
          +7
          В поэзии только хокку признаете?
          • UFO just landed and posted this here
              +2
              Стихи в коде — это прикол, если что.
                +1
                Приколы в коде далеко не всегда хорошо сопровождаются, к сожалению, поэтому не могу возразить предыдущему оратору.
                  0
                  На продакшене приколы не нужны. Такие приколы просто участвуют в каких-нибудь конкурсах, и не более того.
            –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
                                                        Была даже программа, предназначенная для фоносемантического анализа текста — «ВААЛ-мини».
                                                        Уж не знаю, насколько ей можно доверять, но поиграться с ней когда-то было забавно.
                                              • UFO just landed and posted this here
                                                  +1
                                                  Что, думаете, поэму написать — просто зарифмовать ритмичные строки? Как бы не так.

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

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

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

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

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

                                                  • UFO just landed and posted this here
                                                      0
                                                      Воспринимаются примерно одинаково. Во всяком случае, в этой области восприятие разных людей отличается не больше, чем понимание слов «правда», «мир», «дружба», «любовь», «сострадание» и тому подобного. Рифмы не менее конкретны, чем эти слова.

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

                                                      P.P.S. Так нечестно.
                                                      • UFO just landed and posted this here
                                                          0
                                                          Вы вообще не понимаете, что текст может нести информацию невербальную, «между строк»? Во всяком случае, упорно отказываетесь от этого.

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

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

                                                          В карму я ни к кому не заходил, это видно кто-то другой постарался. И к комментам минусы не мои…
                                                          • UFO just landed and posted this here
                                                –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
                                                                                • UFO just landed and posted this here
                                                                                  +24
                                                                                  Хм, мне сразу вспомнилось:

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

                                                                                      Only users with full accounts can post comments. Log in, please.