Когда времени слишком много.
Рубрика: Development, Юмор | 25 December 2007, 11:44 | juriy

Меня всегда интересовало, что подталкивает людей делать забавные но абсолютно бесполезные вещи? Может огромное количество свободного времени, или желание выделиться из массы?
Как бы то ни было, в наше компьютеризированное время, у каждого есть возможность сделать абсолютно бесполезную вещь себе и другим на радость.
Вот что можно сделать имея под рукой пару дней свободного времени и .
Итак, обзор замечательных, но абсолютно бесполезных языков.
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]
Более полный список можно поискать .
Tweet
Меня больше всего впирает язык Petrovich :)
http://www.dangermouse.net/esoteric/petrovich.html
Там всего 4 команды, одна из них “Петрович, сделай что-нибудь”
Вот воистину кому-то делать было нечего!
Petrovich> do something
11:15:23 11 June 2005
Petrovich> reward
Petrovich>
:)
Ну не такие и бесполезные эти языки. Просто непревычная парадигма но инетерсна к использованию.
Станислав, приведите примерчик использования такого языка?
Мне что-то в голову ничего не лезет.
Вот ещё ссылочка на всякие “стремные” языки и алгоритмы.
http://www.dangermouse.net/esoteric/
А еще есть язык 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
Судя по всему сайт 99-bottles-of-beer.net тоже можно смело причислять к категории “когда времени слишком много” :)
Shocked… deeply shocked. Программка в виде четырех пивных бутылок и в виде верблюда это нечто (интересно, её долго отлаживали?).
А насчет сайтов “когда слишком много времени”, так их наверное на пару порядков больше чем языков.
Коллеги, вы видели песенку про пиво на Java??? В который раз удивляюсь…
http://99-bottles-of-beer.net/language-java-1162.html
Простите но БАЯН. Да еще и не полный :)
Это то, что называется POC (Proof of Concept).
Так, Brainfuck был придуман как _язык с минимальным компилятором_. У этого языка компилятор занимает меньше 200 байт (на текущий момент).
Кроме того, Brainfuck является тьюринг-полным.
Примеры про 99 бутылок пива — это классическое программистское развлечение.
Вас же не удивляет, что на автомобилях устраивают ралли, а смортсмены прыгают в длину
– так почему использование brainfuck вгоняет вас в ступор?
Все это характеризуется одной фразой — “Just for fun” (кстати, линукс, например, так и был придуман…)
Нет, на самом деле такие развлечения не удивляют. Я вот и сам все хочу принять участие в конкурсе на лучшую 4-х килобайтовую игру на Java (жаль руки не доходят).
Насчет POC – и BrainFuck это очень спорно. Почему не взять язык, где надо писать сразу машинным кодом – нулями и единицами, но только не в бинарном формате, а в текстовом. А потом написать “компилятор”, который будет собирать из него exe, заменяя соответствующие значения двоичными эквивалентами. И докажите, что этот язык не тьюринг-полный, а программа – не компилятор.
А Линукс, если уж на то пошло, был создан из вполне полезной программы, которая работала с модемом, если я не ошибаюсь.
Почему не взять язык, где надо писать сразу машинным кодом – нулями и единицами
Можно. У нас язык содержит 8 команд.
Так что или писать ’001′, или — ‘+’. Только плюсик в данном случае является мнемоникой.
Если писать в двоичном, на ассемблере под соответствующую машину — так какой же это POC? Это обычная бинарная запись. И она _избыточна_ (посчитайте, сколько на данный момент существует команд даже для RISC?).
А BF — это один из _минимальных_ тьюринг-полных языков, содержащий всего 8 команд (собственно, он и эмулирует машину Тьюринга).
Есть и системы, эмулирующие, например, лямбду — тот же Lambda :)
Есть совсем уж экзотические языки, например, Piet (его программы — это раскрашенные прямоугольники, похожие на картины Пита Мондриана (которые были написаны в стиле неопластицизма) :)
А есть еще один “программистский прикол” — это самокомпилируемые компиляторы :)
Например, GCC или FASM — самокомпилируемые (то есть они могут компилировать собственный исходный код и получать на выходе самих себя).