Когда времени слишком много.

Рубрика: Development, Юмор | 25 December 2007, 11:44 | juriy

Drink Coffee

Меня всегда интересовало, что подталкивает людей делать забавные но абсолютно бесполезные вещи? Может огромное количество свободного времени, или желание выделиться из массы?

Как бы то ни было, в наше компьютеризированное время, у каждого есть возможность сделать абсолютно бесполезную вещь себе и другим на радость.
Вот что можно сделать имея под рукой пару дней свободного времени и Книгу Дракона.

Итак, обзор замечательных, но абсолютно бесполезных языков.

1. Brainfuck.
Этот язык – притча во языцах: он имеет всего несколько операторов, которые позволяют перемещаться по ячейкам памяти и проводить операции инкремента, декремента, считывания и записи.
Примечательно, что компилятор для этого языка занимает… 240-байт.

А вот и пример программы Hello, world!

[code]
>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]
<.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+.
[/code]

(а вы говорите, замыкания тяжело читаются :-)

AAAAAAAAAAAAAA!!!!
Синтаксис этого замечательного языка состоит только из букв А, пробелов, запятых и восклицательных знаков. Сложно представить эмоциональное состояние автора этого языка. А вот и пример программы:

[code]
AA AAA AA AA, AAA, AAA, AA A AAA, AA A AA A AA A AAA, AA A AA A!
AA AAA AA A, AAA AAAAA A AAAA, AAA!
AA AAAA AA! AAA A AAA AAAA! AAA A AA AAAA AAA, AA A, AAA AAA, AA A AA A AA A,
AAA AAA, AA A AA A! AAAA A AAA!
[/code]

Не читайте листинг вслух.

Emoticon.
Не менее экзотичен. Использует в качестве инструкций… смайлики.

Пример программы:

[code]
:-(
:-P
8-O
:=\
:-E
:-)
[/code]

Более полный список можно поискать тут.

Комментариев: 13

13 Responses to “Когда времени слишком много.”

Комментарии:

  1. Vovan

    Меня больше всего впирает язык Petrovich :)
    http://www.dangermouse.net/esoteric/petrovich.html

    Там всего 4 команды, одна из них “Петрович, сделай что-нибудь”

    Вот воистину кому-то делать было нечего!

    Petrovich> do something
    11:15:23 11 June 2005
    Petrovich> reward
    Petrovich>

    :)

  2. Stanislav O. Pogrebnyak

    Ну не такие и бесполезные эти языки. Просто непревычная парадигма но инетерсна к использованию.

  3. Vadim Voituk

    Станислав, приведите примерчик использования такого языка?
    Мне что-то в голову ничего не лезет.

  4. Vadim Voituk

    Вот ещё ссылочка на всякие “стремные” языки и алгоритмы.

    http://www.dangermouse.net/esoteric/

  5. DeViL

    А еще есть язык HQ9+ – эт мой самый любимый. Писать на нем просто, вот например чтобы вывести «Hello World» достаточно написать:
    “H”
    А для вывода исходного кода программы: “Q” А вот оператор «9» -самый мощный в этом языке – он выполняет алгоритм 99 бутылок пива, которые стояли на стене :)
    Оператор «+» – самый магический – это инкремент регистра на 1. К сожалению, регистр пока можно только инкрементировать, но получить доступ на чтение к нему нельзя, так в языке нет нужного оператора :)
    Зато, оператор «9» – это самая изящная реализация вывода песенки про 99 бутылок на экран :)
    Кстати, на моем любимом Перле ( после HQ9+ ) это выглядит так:
    http://99-bottles-of-beer.net/language-perl-737.html?PHPSESSID=a60a90efd1f6fc31adac5711db3193f2

    См также:
    http://de.wikipedia.org/wiki/HQ9%2B
    http://www.cliff.biffle.org/esoterica/hq9plus.html

  6. Vadim Voituk

    Судя по всему сайт 99-bottles-of-beer.net тоже можно смело причислять к категории “когда времени слишком много” :)

  7. Juriy

    Shocked… deeply shocked. Программка в виде четырех пивных бутылок и в виде верблюда это нечто (интересно, её долго отлаживали?).

    А насчет сайтов “когда слишком много времени”, так их наверное на пару порядков больше чем языков.

  8. Juriy

    Коллеги, вы видели песенку про пиво на Java??? В который раз удивляюсь…

    http://99-bottles-of-beer.net/language-java-1162.html

  9. Artyom4D

    Простите но БАЯН. Да еще и не полный :)

  10. Scratch

    Это то, что называется POC (Proof of Concept).
    Так, Brainfuck был придуман как _язык с минимальным компилятором_. У этого языка компилятор занимает меньше 200 байт (на текущий момент).
    Кроме того, Brainfuck является тьюринг-полным.

    Примеры про 99 бутылок пива — это классическое программистское развлечение.
    Вас же не удивляет, что на автомобилях устраивают ралли, а смортсмены прыгают в длину
    – так почему использование brainfuck вгоняет вас в ступор?

    Все это характеризуется одной фразой — “Just for fun” (кстати, линукс, например, так и был придуман…)

  11. juriy

    Нет, на самом деле такие развлечения не удивляют. Я вот и сам все хочу принять участие в конкурсе на лучшую 4-х килобайтовую игру на Java (жаль руки не доходят).

    Насчет POC – и BrainFuck это очень спорно. Почему не взять язык, где надо писать сразу машинным кодом – нулями и единицами, но только не в бинарном формате, а в текстовом. А потом написать “компилятор”, который будет собирать из него exe, заменяя соответствующие значения двоичными эквивалентами. И докажите, что этот язык не тьюринг-полный, а программа – не компилятор.

    А Линукс, если уж на то пошло, был создан из вполне полезной программы, которая работала с модемом, если я не ошибаюсь.

  12. Scratch

    Почему не взять язык, где надо писать сразу машинным кодом – нулями и единицами
    Можно. У нас язык содержит 8 команд.
    Так что или писать ’001′, или — ‘+’. Только плюсик в данном случае является мнемоникой.
    Если писать в двоичном, на ассемблере под соответствующую машину — так какой же это POC? Это обычная бинарная запись. И она _избыточна_ (посчитайте, сколько на данный момент существует команд даже для RISC?).
    А BF — это один из _минимальных_ тьюринг-полных языков, содержащий всего 8 команд (собственно, он и эмулирует машину Тьюринга).
    Есть и системы, эмулирующие, например, лямбду — тот же Lambda :)
    Есть совсем уж экзотические языки, например, Piet (его программы — это раскрашенные прямоугольники, похожие на картины Пита Мондриана (которые были написаны в стиле неопластицизма) :)

  13. Scratch

    А есть еще один “программистский прикол” — это самокомпилируемые компиляторы :)
    Например, GCC или FASM — самокомпилируемые (то есть они могут компилировать собственный исходный код и получать на выходе самих себя).

Leave a Reply