Почти экстремальное программирование: мозголомы 21 века
К необычным языкам программирования все давно привыкли. Чуть ли не
каждый новый язык принято обзывать «странным» и «в корне отличным от
всех предыдущих». И создатели С и творцы Перла с Фортом с рвением
призывали «забыть весь предыдущий опыт – этот язык в корне отличается
от языков, обычно используемых в практическом программированием». За
этой мишурой как-то и забываешь, что помимо практического
программирования, есть ещё и теоретическое, экспериментальное. Языки
столь странные, что кажутся абсурдными. Но не спешите скоропостижно
щёлкать по крестику браузера (или мочалить Ctrl+F4), речь не пойдёт о
детских забавах и странных шутках андеграунда. Неужели вы думаете, что
в спрятанных за толстыми пуленепробиваемыми стёклами глазах бородатых
мужиков, не один десяток лет отдавших железным монстрам, кроется
искорка веселья? Отнюдь. Любая наработка в экспериментальном
программирование таит в себе цель. Пусть не всегда доступную пониманию
простых смертных.
CLWNPA
Большинство людей, познакомившихся с Compiler Language With No Pronounceable Acronym
(так называется язык), помимо того, что сошли с ума и стройными рядами
отправились работать в компьютерные журналы, вынесли интересное мнение:
и в программирование есть место жёсткому стёбу. Стоит ли говорить, что
авторы языка – Дон Вудс и Джеймс Лион – перед собой такую задачу не
ставили. О, воскликнут заросшие профессионалы с воспалённым блеском в
глазах, как так, язык полностью абсурдный с идиотской документацией и
нулевой практической реализуемостью. Не спешите ломать автору руки и
ноги (кто-то вас опередил, хо-хо-хо!).
Обратите внимание, суть языка заключалась в том, чтобы ни одна
команда не была похожа на что либо уже созданное. Это ли не чудо! Вы
только представьте, большинство языков рождаются друг из друга как
генетические мутанты – посредством инцеста. А тут разом появляется
питомец с чистой кровью, разобраться в котором не так просто, как с его
более популярными собратьями. Не эту ли технологию используют военные в
своих разработках? Забудьте про С, AJAX и Linux
– ядерными закромами родины и атомными электростанциями управляет такая
высокоинтеллектуальная хренотень, что высоколобый разработчик
свободного софта обязан совершить харакири собственными заскорузлыми
ногтями, лишь бросив взгляд на детище яйцеголовых. Пусть в CLWNPA к инструкциям добавлялись команды please и
with the divine help, а другие команды явно выдавали в пользователи
поклонника теории Электронных Богов (компьютеры, вирусы, интернет –
следующая после человека ступень эволюции), т.е. сложностью язык не
отличался (разве что набожностью). Но он был первым (или не совсем
первым, но это несколько другая история), в котором человек вышел за
жёсткие рамки самопрограммирования. Вышел, чтобы объятый ужасом вбежать
обратно.
BrainFuck
МозгоТрах стал логическим продолжением
CLWNPA (кстати говоря, на Хакере был цикл
статей по основам языка
- все там на самом
деле довольно просто :)). Если можно не так как все, то почему нельзя
не так как всегда? Идея, лёгшая в основу языка, проста как минет
асфальтоукладчицы – доказать возможность существование рабочего языка,
коренным образом отличавшегося от всех. Главное слово тут – рабочий.
Просто создать новый язык программирования сложно, но возможно
(примерно как смастерить собственный компьютеры и поставить на него
свою же ось), а вот сделать так, чтобы на нём решались многие
(желательно – все!) современные вычислительные задачи – работа не для
талантливых студентов. И ведь удалось же! Решение было найдено, но о
нём не вострубили СМИ, а авторам не дали Нобелевской премии – поскольку
BrainFuck как ковбой Джо из анекдота никому не было нужен. Никто не мог понять, зачем нужен язык,
на котором сакраментальная фраза «Hello world!» выглядела вот так:
Жалкие овцы, что тут можно сказать, жалкие и недалёкие люди. Не
берусь судить, что в ЦРУ использовали этот язык, но то, что им
заинтересовались – точно! И не только ЦРУ. Забудьте про все стандарты
шифрования – достаточно на БрейнФаке написать аналог WinGuard Pro,
чтобы обломать зубы многим дешифровальщикам. Это – чудо. Это –
грандиозный шедевр программирования. Это – техногенный прорыв,
усиленный оргиазмическим эффектом. Язык можно превратить в нечто
неописуемое, сложно поддающееся пониманию, а значит практически
безопасное. Кулхакеры, ловите на заметку, пишите письма на МозгоТрахе и
его старших детях и не беспокойтесь о спутниках-шпионах.
strong></p получил множество продолжений и остался популярным до сих пор: Brainfork (многозадачный), FuckFuck
(говорят, что некие саратовские программисты разработали и русский
аналог, сплошь состоящий из нецензурных слов, но увидеть его воочию, к
счастью, не довелось.), DoubleFuck; дело дошло до
того, что пять лет назад возник язык сплошь состоящий из одних
пробелов. Русские программисты долго не мирились с положением «взять
идею – сделать по-своему» и разработали язык, сплошь состоящий из
самйликов – smilescript. Пожалуй, ни один другой язык
не содержит в себе столько эмоций и переживаний! Да вы только
представьте лица сотрудников ФАПСИ, занимающихся расшифровкой послания
на таком языке. Хо-хо-хо!
Malbolge
Ничем иным как стремлением к тотальной безопасности объяснить
появление этого языка нельзя. И действительно, вот где ад для
программиста и непаханое поле для контрразведчика. Текст, написанный на
этом языке (пусть мы говорим о программирование, но ничто не мешает нам
программировать английский и – давайте пофантазируем – родной русский
язык) скорее всего никто не признает разумным. В том то вся и фишка!
Вот увидите, не пройдёт и десятка лет, как школьнику начнут в курилках
разговаривать на Malbolge. Если есть более безопасный
язык, то я его знать не хочу – потому что иначе мозг перегрузится и
сгорит. Итак, слово «мама» для компьютерного языка или «hello world»:
Честно говоря, мне кажется, что автор Malbolge
страдал редкой формой психического расстройства, а то и не одним, и в
детстве его явно перепоили пепси-колой. Написать рабочую программу на Malbolge
могли и могут только хакеры, внесённые в золотые летописи
компьютеростроения. Стоит заметить, что хакеры, осиливших эту задачу,
до сих пор не рассказали как они смогли это сделать – неудивительно.
Знал бы я как писать программы на этой тарабарщине, давно бы работал на
Японскую мафию и шифровал бы переписку якудзы 28 часов в сутки. Кое-кто
думает, что Malbolge и ему подобные языки, достойны
только изучения (причём, психиатрического) и реально программировать на
них не возможно. Это не так! Пожалуй, поделюсь с вами секретом
космической важности – формула, с помощью которой можно программировать
на любом языке класса «психоз»...
впрочем об этом на страницах популярного
журнала лучше не распространятся (рецепт
вымаран блюдущим программистский пост
редактором).
Paranoid
В дальнейшем стремление к абстрактной безопасности, фарсу и
расширению границ объективной реальности только углублялись. Так возник
язык Whenever, выполнявший инструкции в случайном порядке и полностью соответствовавший Infinite-Monkey Theorem
(Если вы посадите бесконечное количество обезьян за пишущие
машинки, то одна из них обязательно напечатает текст «Гамлета».) Вот
мне иногда кажется, что операционная система Windows написана на Whenever.
Вообще стоит отдельно рассмотреть тенденцию в разработке программ,
работавших «не как все». С лексикой у них всё было в порядке, а вот
инструкции выполнялись по совершенно удивительным правилам. Например,
наискосок. Или язык программирования, которой пишет программу, формируя
код из других языков (о, это просто космо!) Или вот в пику созданным
министерством обороны США максимально безопасному языку Ada родили антипода в лице языка Paranoid,
который по безопасности превзойдёт софт ядерных подводных лодок. Вам
придётся подтверждать и переподтверждать свои команды десятки раз и всё
равно программа не будет уверенна в правильности переменных и данных.
Обмануть эту хитрюгу не удастся, она не позволит вам допустить ошибку.
Впрочем, допустить выполнение программы она вам тоже не позволит –
слишком опасно. А вдруг вы пособник террористов? Не удивлюсь, если
прога, которую вы наконец вымучаете, на поверку окажется трояном или
BackDoor’ом, тайно высылающем сведения о вас разработчику. Удачи в
компиляции!
Haif
Что ж, если вы действительно опасаетесь взлома вашей программы, то
замаскируйте её. Например, рецепт приготовления лобстеров (или
эфедрина, хо-хо-хо!), сохранённый в простом текстовом файле ни у кого
не вызовет подозрения. А если и вызовет, вам не грозят годы тюрьмы и
каторга на урановых рудниках – расшифровки текст не поддастся.
Вооружитесь гуглом и вперёд, на поиски языка Chef,
каждая программа на котором выглядит как рецепт элегантного блюда. Ха,
переменные здесь названы в честь овощей и фруктов, а значения
представлены количеством ингредиентов. Тело программы, состоит из
несложных операций, знакомых каждому не-программисту: «положить в
кастрюлю», «перемешать», «подогреть», «подавать на стол». Конечно,
ограничения в работе программе существенны, но никто не мешает вам
поэкспериментировать на досуге. Быть может, приготовите что-нибудь
сносное.
Рецепт – это только начало акта. Следом идут пьесы, рассказы и даже
целые книжные отрывки. Как вам программа, выводящая на экран «Bill
Gates is dead!», написанная в виде детективного повествования? Тут уже
речь идёт о двойном программировании: пишите ли вы текст программы как
осмысленный текст или добиваетесь результата осмысленными (или
бессмысленными) переменными и процедурами. Дальше всех в этом
направлении шагнул язык Haif, который представляет
собой пятистишье-хайку. В нём существуют пять типов переменных,
соотнесённых с первичными элементами материи, согласно восточным
верованиям: дерево, вода, огонь, земля, металл со сложными отношениями
между ними (дерево дарит жизнь огню, огонь пожирает металл, металл
превращается в землю, земля разрушает дерево). Haif уникален и как язык на котором ещё не удалось
создать работающую программу. Непаханое поле для экспериментов,
уважаемые хакеры.
Moo? Ook!
Вам кажется это слишком просто? Не удивительное, все
вышеперечисленные языки созданы людьми, а не разумными крабами из
крабовидной туманности. Но если вы хотите шагнуть за пределы разума,
освойте языки с нечеловеческой логикой. Их есть у меня! Нет, их создали
не машины, а такие же люди как мы с вами, но рассудок этих людей
повредился ещё во времена расцвета шифровальной машины Enigma.
Расшифровать тело программы на Iot посильно только параноику.
Вам кажется, что изучать Java (Perl,C++, PL/I) сложно и тягостно? Вы правы! Поэтому вам понравится знакомство с Ook! – языком орангутангов и COW – соответственно языком коров. Ook! состоит из комбинаций аж трёх высказываний: «Ook?», «Ook!» и «Ook.». COW
соответственно строится на «Moo», «MOO» и «moO». Теперь вы можете
насладиться общением с любым представителем нашей вселенной. Хотите с
роботом – пишите программы только нулями и единицами (предельное
единение с компьютером), хотите с далёкой инопланетной расой –
кодируйте цвета (!) и рисуйте радугой. Будут вам и графические языки
программирования, 2-х, 3-х и даже 4-х мерные (в плане авторов создать
24-х мерный графический язык программирования, вообразить который могут
лишь суперкомпьютеры) – описать их не возможно. Впрочем, даже увидев
это, вы вряд ли поймёте суть их работы. Есть всё-таки пределы для
человеческого разума.
И опыт сын ошибок трудных
Написать собственную операционную систему – это нечто из области
научной фантастики. Так каково же создателю собственного языка?
Пожалуй, мне это представить не возможно. Одержимые хакеры
интеллектуалы могут создать свой язык, а затем написать на нём
операционную систему и, тем самым, обезопасить конфиденциальную
информацию, даже не упоминая вирусы и прочую новомодную фишку. Простым
работникам WWWHack’a и Mydoomостроителям рекомендую помимо
общедоступных языков освоить нечто из продуктов, собранных с огорода
экспериментально-экстремального. Это не только повысит ваш статус и
раскроет разум, но выльется в весьма прибыльное дельце. Насколько мне
известно, ещё никто не создавал вирус на экспериментальном языке.
Возможно, это удастся именно вам. Элитное знание для посвящённых сродни
древу познания, на котором растёт сотня-другая яблоков первородного
греха. Как распорядится ими решать только вам. А мы предупреждаем, что
деструктивные действия компьютерного характера караются по всей
строгости закона. И не употребляйте наркотики!
P.S. Вы, кстати, заметили как странно написана эта статья? Не
удивляйтесь, это бета-тестирование нового вируса, зашитого в html.
Компилируется посредством считывания с экрана и записью в нейроны
головного мозга. Imminent Death Of The People
Predicted!