Happy Nerd New Year!

    Сегодня 11 ноября 2011 года; в формате DD.MM.YY получается исключительно красивая бинарная запись (последняя, кстати, за следующие 88 лет — до 1 января 2100). Это замечательный повод объявить этот день Nerd New Year, с каковым я вас и поздравляю.


    Хотя стоп, поздравление с таким днем в plaintext — это нонсенс. Я уже писала о необычных поздравлениях с днем программиста (2010, 2011), но здесь нужно что-то особенное… Лично у меня термин nerd ассоциируется с чем-нибудь бинарным; как насчет поздравлений, основанных на 0 и 1?

    Spoon


    Начнем с классики. Brainfuck — язык на все случаи жизни; и бинарный диалект у него тоже есть. В Spoon команды BF заменяются на последовательности нулей и единиц, составляющие префиксно-свободный код, так что их даже не нужно разделять пробелами. Следующий код на BF, выводящий «Happy Nerd New Year!»,

    ++++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>+++++++++++
    +>+++++++++++++<<<<<<<<<<<<<-]>>>>>>>>--------.>>---.>>--------..>---------.<<<<<<<<<--------.>>>>++
    ++++.>>>---------.>++.<-.<<<<<<<.>>>>.>>>+.>+++++.<<<<<<<<.>>>>>-.>>.<.>>-----.<<<<<<<<+.


    эквивалентен коду на Spoon

    1111111111001000101010110101110101111010111110101111110101111111010111111110101111111110101111111111
    0101111111111101011111111111101011111111111110110110110110110110110110110110110110110000011010010010
    0100100100100100000000000000000000000000010100100100000000000010100100100000000000000000000000000010
    1000101001000000000000000000000000000000101001101101101101101101101101100000000000000000000000000101
    0010010010010111111001010010010010000000000000000000000000000001010010110010100110000010100110110110
    1101101101100101001001001001000101001001001010010100101111100101001101101101101101101101100101001001
    00100100100000010100100100010100110010100100100000000000000000010100110110110110110110110111001010


    но, согласитесь, последний выглядит гораздо бинарнее.


    Whirl


    Автор языка описывает его как «головокружительный», и я не могу не согласиться с этой характеристикой. Программы на этом языке строго бинарны, но, в отличие от Spoon, нулями и единицами кодируются не сами команды, а система переключения между ними. В Whirl 24 команды, которые расположены на двух кольцах — математическом и операционном. Нули и единицы управляют вращением колец (т.е. сменой текущей команды на кольце), переключением между кольцами и активацией выполнения текущей команды. Механическая реализация интерпретатора выглядела бы примерно так:



    Все это довольно запутанно (так, например, ноль либо переключает текущее кольцо, либо меняет его направление вращения в зависимости от предыдущего символа), но, как ни странно, язык сравнительно популярен и развивается не только его автором. Так, некий Aviad Ben Dov написал генератор кода на Whirl, которым я и воспользовалась для создания программы, выводящей «congrats»:

    0011111100110011110011111001111000001110011111000111001111000110011100111111000111110001111000111110
    0111100000111001111100011100111100011001110001001111100110000000000000000000000000000000111110001001
    1111001100011111000110011111001111001100111100111110011110000011100111110001110011110001100111000100
    1111100110001111100000010001111100011000001111001100111100111110011110000011100111110001110011110001
    1001110001001111100110000000000000000000000000000000111110000000111001111100011000111110000000000000
    0000000000000000011110011111001111000010001111100111001110001100011100011000111000110001110011111100
    0111110001111000111110011110000011000111000001110001110011111000000000000000000000000000001111100011
    1100011111000111100000100010011001111001111110011111000111100011111001111000001110011111000111001111
    0001100111000100111110011000000011111000001111100010001001100111100111111001111100011110001111100111
    1000001110011111000111001111000110011100010011111001100011111000001111100010001001100111100111111001
    1111000111100011111001111000001110011111000111001111000110011100010011111001100000000000000011111000
    1111000111110001111000001000100110011110011111100111110001111000111110011110000011100111110001110011
    1100011001110001001111100110000000000000000000111110000011111000100010011001111001111110011111000111
    1000111110011110000011100111110001110011110001100111000100111110011000000000000000000000000000000000
    0000001111100011110001111100011110000010001001100111100111111001111100011110001111100111100000111001
    1111000111001111000110011100010011111001100000000000000000000000000011111000001111100010001001100111
    1001111110011111000111100011111001111000001110011111000111001111000110011100010011111001100000000000
    0000000000001111100000111110001000100


    01_


    Этот язык не вполне бинарный, он требует использования и других символов, но нули и единицы все еще несут основную смысловую нагрузку, а для вывода текстового сообщения их более чем достаточно.

    h=01001000011000010111000001110000011110010010000001001110011001010111001001100100001000000100111001
    10010101110111001000000101100101100101011000010111001000001010.


    Правда, текстовое сообщение на этом языке довольно просто раскодировать: последовательность 0 и 1 после знака равенства — это всего лишь бинарные коды символов сообщения, записанные подряд в том же порядке, что в сообщении: 01001000 — 'H', 01100001 — 'a' и т.д. Никаких инверсий битов, никаких обратных порядков символов — даже скучно, но для коллекции пусть будет.

    В этот список можно включить и BIT, еще один шедевр от Дэвида Морган-Мара. Этот язык тоже основан на бинарной записи программ, хотя вместо 0 и 1 используются более читабельные ZERO и ONE. Запись и чтение тоже оперируют отдельными битами, поэтому программа, выводящая текстовое сообщение, выглядит как последовательность значительного количества строк вида

    LINE NUMBER ONE ONE CODE PRINT ZERO GOTO ONE ZERO ZERO ONE ZERO


    В каждой строке указан ее номер (LINE NUMBER ...), выполняемая команда (PRINT ...) и безусловный переход на другую строку (GOTO ...). Но такая программа 1) неинтересна и 2) сложно проверяется ввиду отсутствия авторского интерпретатора. Так что ее я оставляю на откуп богатому воображению читателя.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 18
    • +8
      Whirl шикарен. Как только такое людям в голову прихолдит.
      • +3
        Мы наблюдаем возрождение азбуки Морзе!
        • –2
          Сегодня специально поймал:
          minus.com/lrJbK4gF1x9Up
          • +1
            Зачем вам Windows Xp и Flashget в 2011-ом году? :D
            • +1
              Не знаю, у меня нет XP. А flashget, чтобы скачивать сразу пачкой.
            • +2
              Скриншот навеевает ностальгию… GUI в стиле Win2000 (на самом деле XP без украшательств); Total Commander; FlashGet…

              Станно у Вас ProcessExplorer выведен — его легче, ИМХО, повесить на Ctrl+Shift+Esc.
              • 0
                FlashGet действительно старый. Одна из последних приличных версий — 1.73
                А Process Explorer у меня немного для других нужд, и используется реже, чем taskmgr
            • +1
              Пусть заплюют меня за коммент этот… но я восхищаюсь вами ) Сам пропустил этот момент… и даже не подумал… спасибо ) Буду отмечать.
              • 0
                Спасибо за поздравление. Через полтора часа открою бутылку шампанского.
                • +3
                  Ага, еще загадать желание в 11:11, обнять свою чихую, накрыться пледом и пить кофе, поглядывая как в окне отображается дисплей ноутбука.

                  • 0
                    Почему чихую?
                    • +2
                      так без чихуи под пледом не по-пацански.
                      • 0
                        Странно, я всегда считал это атрибутом чуть повзрослевших бывших 14-летних лирушниц.
                        • +2
                          *та_самая_табличка*
                          • –2
                            Я чего-то недопонимаю, что ли? Вроде бы регулярно читаю лурк, в курсе актуального сленга. Какая табличка? Какая чихуя? Откуда эти мемы?

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