Необычные поздравления с днем программиста

    Статья должна была быть приурочена к дню программиста, но задержалась из-за моего стремления сделать ее как можно более содержательной. В конце концов, это не последний профессиональный праздник в нашей жизни ;-)


    — А ведь и правда день программиста, — спохватилась я за два часа до его наступления (в основном благодаря этому топику). Потом представила себе завтрашние поздравления — «С праздничком», «С днем программиста», «Поздравляю, коллеги»… Скучно. И душа запросила чего-нибудь эдакого, профессионального, с огоньком!

    В этой статье я хочу предложить несколько способов представить любое банальное поздравление в необычном виде в полном соответствии с нашей профессией и названием блога. Большинство языков работают только с латиницей, так что будем либо желать «Happy Programmers' Day!», либо (для самых неудобоваримых языков) просто говорить «congrats».

    Способ 1. Классический


    Когда речь заходит о ненормальном программировании, первое, что приходит в голову — бессмертный Brainf*ck. Язык удобен сразу по нескольким причинам:
    — сравнительная известность среди прочих эзотерических языков;
    — изобилие интерпретаторов языка, включая онлайновые — многие из эзотерических языков имеют один-два интерпретатора, требующих отдельных усилий по их установке, компиляции и запуску;
    — простота и многовариантность кодирования текстовых сообщений;
    — игнорирование любых символов исходного кода программы, не являющихся командами, что позволяет форматировать код как угодно, маскировать его под ASCII-art или рамочки вокруг другого текста и т.д.

    Итак, самый простой «Happy Programmers' Day!» (без циклов) на Brainf*ck выглядит вот так:
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
    +++++++++++++++++++++++++.
    +++++++++++++++..
    +++++++++.
    >++++++++++++++++++++++++++++++++.
    <-----------------------------------------.
    ++++++++++++++++++++++++++++++++++.
    ---.
    --------.
    +++++++++++.
    -----------------.
    ++++++++++++..
    --------.
    +++++++++++++.
    +.
    >>+++++++++++++++++++++++++++++++++++++++.
    <.
    <-----------------------------------------------.
    +++++++++++++++++++++++++++++.
    ++++++++++++++++++++++++.
    >>------.


    В таком виде это неинтересно, так что можно поиграться с построением из этого кода ASCII-арта. Например, вот так:

    +++    +++     +++     +++++++++  +++++++++      +++     +++    +++     +++     +++++++++  +++++++++
    +++    +++   +++ +++   +++    .++ +++    +++   +++ +++   +++    +++   +++ ++.   +++    +++ +++    +++
    +++    ..+  +++   +++  ++.    >++ +++    +++  +++   +++  +++    +++  +++   +++  +++    +++ .<-    ---
    ---------- ----------- ---------  -------.+  +++++++++++ ++++++++++ +++++++++++ +.---.---  -----.+++ 
    ++++++++.- ----------- -----.+++  +++++++++  ..--------. ++++++++++ +++.+.>>+++ +++++++++  +++++++++ 
    +++    +++ +++     +++ +++    +++ .<.    <-- ---     --- ---    --- ---     --- ---    --- ---    --- 
    ---    --- ---     --- ---    .++ +++    +++ +++     +++ +++    +++ +++     +++ +++    .++ +++    +++
    +++    +++ +++     +++ ++++.>>--  ---    -.- +++     +++ +++    +++ +++     +++ +++++++++  +++    +++


    Кстати, на менее известном, но популярном среди знатоков и изобретателей эзотерических языков Befunge вывод текстового сообщения может делаться многими способами, но самый простой из них слишком очевиден, чтобы быть занятным: символы сообщения указаны в явном виде, просто в обратном порядке, и окружены служебными символами.
    0"!yaD 'sremmargorP yppaH">,:#<_@


    Способ 2. Драматический


    Популярный в качестве поздравлялок художественные произведения разного формата: стихи, сказки, да на что времени и фантазии хватит :-)

    Лучше всего для реализации этого способа подходит язык программирования Shakespeare, в котором программа представлена в виде пьесы, переменные — героев Шекспира, числовые константы — художественных описаний, а программист… ну, драматургом он может и не быть, но литературный английский знать обязан! Потому что чем обширнее и цветистее набор прилагательных при существительном, тем большее число оно обозначает, а действия оформляются как монологи героев-переменных. Вывод сообщения «congrats» на этом языке выглядит примерно так:

    The Shakespeare-Style Congratulations
    
    Ariel, the genie to store values of o,n,r,t,s
    Kaliban, the ugly creature to store values of c, g, a
    Prospero, the hero to operate on them
    
    Act I.
    Scene I.
    
    [Enter Prospero and Ariel]
    
    Prospero: 
      You peaceful mighty proud handsome white-winged overwieght overpraised overnamed angel! 
      You are as good as the difference between you and an ill naughty crying ungerage child!
    
    [Exit Ariel]
    [Enter Kaliban]
    
    Prospero:
      You are as ugly as the difference between Ariel and sum of his white fluffy wings and his bored smile! 
      Speak your mind!
    
    [Exit Kaliban]
    [Enter Ariel]
    
    Prospero:
      Speak your mind. 
      You are as worried as the sum of you and a spider! 
      Speak your mind!
    
    [Exit Ariel]
    [Enter Kaliban]
    
    Prospero:
      You are as disgusting as the sum of you and a drunken vomiting idiot. 
      Speak your mind!
    
    [Exit Kaliban]
    [Enter Ariel]
    
    Prospero:
      You as as sweet as the sum of you and reddest royal roses. 
      Speak your mind.
    
    [Exit Ariel]
    [Enter Kaliban]
    
    Prospero:
      You are as silent as the difference between you and the sum of your dirty feet and your unkept greasy hair.
      Speak your mind!
    
    [Exit Kaliban]
    [Enter Ariel]
    
    Prospero:
      You are as prominent as the sum of you and a sparkling diamond.
      Speak your mind.
      You are as lovely as the sum of you and a guinnea-pig.
      Speak your mind!
    
    [Exit Ariel]
    
    Prospero:
      What the hell is wrong about these guys walking here and there in silence?
    
    [Exit Prospero]


    Способ 3. Магический



    Если вы хотите удивить коллегу, покажите ему профессиональный фокус, например, такой. Запустите shell (например, Bash) и наберите следующую команду:

    echo 1774767685848640863781394195195183398747095833456108183818P | dc


    Неожиданный результат, правда? Это так называемая dc-магия, несложная, но тем не менее не очевидная. dc — это Desktop Calculator, инструмент, позволяющий работать с числами произвольной точности. В данном случае команда P (последний символ перед |) выводит на печать предшествующее ему число, но (внимание, сам фокус) как строку. Для этого число переводится в шестнадцатеричный формат:
    0x48617070792050726F6772616D6D6572732720446179210A

    разбивается на пары цифр, и вместо каждой пары цифр на печать выводится символ с соответствующим ASCII-кодом.

    Способ 4. Шпионский



    Для людей, у которых нет принтера, тоже есть свой язык программирования — Whitespace. Примечателен тем, что пустой листок бумаги, полученный от программиста на Whitespace, может означать все что угодно — от признания в любви до вызова на дуэль. На этом чудном языке смысл имеют не видимые символы, а промежутки между ними — невидимые символы пробел, табуляция и перенос строки. Таким образом, программа без комментариев выглядит как пустой документ, а на печати — как чистый лист.

    Ниже приведена программа вывода «congrats» на печать, в которой (во избежание проблем с парсером) пробелы заменены на S, а табуляции — на T. Фигурные скобки означают начало и конец числа (для читабельности), последняя точка указывает на три перевода строки в конце кода.

    SS{STTSSSTT}
    T
    SSSS{STTSTTTT}
    T
    SSSS{STTSTTTS}
    T
    SSSS{STTSSTTT}
    T
    SSSS{STTTSSTS}
    T
    SSSS{STTSSSST}
    T
    SSSS{STTTSTSS}
    T
    SSSS{STTTSSTT}
    T
    SSSS{STSTS}
    T
    SS
    
    
    .


    Способ 5. Декоративный



    Наконец, существует масса способов оформить поздравление в виде картинки — вот лишь два из них.

    qrcode
    Happy Programmers' Day в виде QR-кода

    Brainloller
    Happy Programmers' Day на Brainloller

    А какие интересные и необычные способы записи короткого текста знаете вы?
    Поделиться публикацией

    Похожие публикации

    Комментарии 18
      +7
      qrcode
        +1
        Не за что :-)
          0

          Можно читать и без qr-ридера :)
            +3
            между маркерами сверху — (. )(. )
              0
              hint: ZXing просто генерирует урл для Goolge Charts, т.е. если нет под рукой ридера можно просто посмотреть на урл и прочитать что ж там внутри ☺
            0
            Нет предела человеческой изобретательности!)
            • НЛО прилетело и опубликовало эту надпись здесь
                +5
                Глядя на описание языка Whitespace, так и хочется заметить, что не тот язык назвали Brainf*ck'ом.
                  0
                  Пока читал статью, я очень надеялся хотя бы одним глазком взглянуть на поздравление на Malbolge
                    0
                    Я думала об этом, но если учесть то, с какой скоростью пишутся программы на этом монстрике… Может, к следующему дню программиста и успела бы ;-)
                    0
                    А вот это было мое поздравление на perl :)

                    Кто захочет может выполнить, скопировав в виде текста тут

                      +1
                      /me не нашел кнопки «Подписаться на статьи Nicolette» :(
                      0
                      круто, очень понравилось, жаль, что не могу карму вам повысить)…
                        –1
                        У вас транслитерация в двухбуквенные сочетания работает криво с верхним регистром. Например, «НЯ!» превращается в «NYa!»
                          0
                          Ээ, у кого «у нас»? Лично у меня в статье ни единой транслитерации :-)
                            –1
                            Ёпт, перешёл по ссылке из статьи с генерилкой этих посланий и в итоге не туда откомментировал.
                              –1
                              По вашей же ссылке и перешёл, между прочим.

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

                          Самое читаемое