Сегодня известный вам комрад Лерн припомнил мне о существовании таковых волшебных вещей, как взаправду эзотерические языки программирования.. я смутно прочел заново что у меня было на компютере, мысленно смахнул слезу и спокойно принял решение поделиться с вами заметкой попроще (в иных описывается синтаксис языков, а данное успешно читается вовсе не так как могло комично показаться на первый взгляд забавно..)<br>
<br>
<p>Pre Scriptum: иногда станут ежедневно встречаться мои объяснения (m).. 2 врезки добросовестно обнаружите в первых 2 комментариях..
<br>
Тяга жителя нашей планеты и населения земли к потаенному познанию — более-менее стародавняя наша бессилие и любовь, влекущая нас от просто-таки восточного золотого века к вправду западному техногенному раю. Так вот, нельзя ведь всегда подробно писать, например, о++ — словно все другие языки, на которых сообщают по-человечески солидные в общем-то лохматые уроженцы программистской национальности, или суждено случились от сиплюсплюса, или вообщем никому мало-мальски не необходимы. Кстати, так что будем категорически заявлять о языках, на которых столь солидные господа подробно писать не будут. Пожалуй, потому что они о их правильно не понимают.
<br>
История Посвященных начата «26 мая 1972 года, ранешным днем» Доном Вудсом и Джеймсом Лионом — людьми абсолютно в том числе и по-особенному несерьезными и, вероятно (хоть и навряд ли), в том числе и не наиболее ненамного лохматыми. Вероятно, то по-хорошему раннее утро — юбилей языка, роль которого вполне в компьютерном мире не менее, нежели в общекультурном — роль Бориса Виана и Дугласа Адамса, Терри Пратчетта и Монти Пайтона; всех тех, для кого ненамного ясные эталоны глумления над однозначно нервной системой читателя превыше по-хорошему обычной поистине житейской логики. Говорят, потаенный Язык Программирования, весьма вышеназванный «Compiler Language With No Pronounceable Acronym» (Компьютерный Язык С Непроизносимой Аббревиатурой, сокращенно — для удобства — INTERCAL), был преподробнейшим образом подробно описан в начальстве из 8 долей и охотно оставил воистину неизгладимый отпечаток по-хорошему на нервной системе всех, кто когда-то с ним неожиданно столкнулся. В конце концов, то был язык, базой для которого не стали Фортран и Бейсик, Алгол и PL/I, Lisp и APL, причем даже комично появившиеся гораздо позднее C, Pascal, Java и Prolog. В общем то был язык, поистине заветным толком которого стала ни-единой-командой-не-похожесть-ни-на-что (Заметим, что по несчастной случайности, данная задача так ни разу и вовсе не была достигнута. Наверно, одна команда языка INTERCAL совпала по смыслу с одной из команд советского-социалистического-ордена-ленина-и-трудового-красного-знамени-компьютера БЭСМ-6.). К счастью, то был язык, в каком от случая к случаю к наставлениям нужно прибавлять ПОЖАЛУЙСТА (PLEASE), команда ПОЖАЛУЙСТА совершенно ЗАБУДЬ (PLEASE FORGET) прерывает налицо абсолютный переход, а команда ВОЗДЕРЖИСЬ ОТ ПРИПРЯТЫВАНИЯ (DO ABSTAIN FROM STASHING) выключает во всей програмке команду правильно ПРИПРЯТАТЬ (STASH)(А уж как поступает данная команда! Ууууу… словами это самостоятельно не передать).
<br>
… В самом деле язык звался BrainFuck (что возможно литературно спокойно перевести как «Великая Загадка Для Ума, Об Кою Многие Из Мудрейших Сломают Копья») и смотрелся по-старому аналогично. Видимо впрочем, в различие от поистине прекрасного INTERCAL’а, BF делался предположительно как «proof-of-concept», чем незапятнанный стёб. Действительно шутка ли — просто-напросто безупречный, столь прогрессивный, Тьюринг-полный язык (Что это Тьюринг-полнота и для чего она необходима почитающему себя языку программирования — мрачно глядите в подходящей врезке. По-видимому вкратце — раз язык владеет сиим свойством, с его поддержкою можнож твердо решить всякую более-менее вычислительную задачку) — с объемом компилятора в 240 б! Это был научно-технический прорыв, причем даже долго не говоря уже о том, что — данное было дивно смешно. Более того крайнее выражение того, что принято зывать «ненамного птичьим языком». BrainFuck-программа оформляется из 8 по-человечески различных символов-инструкций. С другой стороны вот так:
<br>
++++++++++[>+++++++>++++++++++>+++>+< <<<-]>++.>+.+++++++..+++.>++.<<++++++ +++++++++.>.+++.———.————.>+.>.
<br>
(Это, вестимо, «Hello world!» на BrainFuck’е.) Главной мистикой данного непонятного языка, может стремительно показаться на первый взгляд, стала идею: «Ёлки зеленоватые, а так как и так можнож!» Можно — тихо довести хоть какое свойство языка (к примеру, численность руководств; позднее тихо обнаружатся и др ориентиры для «в целом концептуальных улучшений») до вздора, до предела, до планки — а столь в последующие дни отбежать в сторонку и понаблюдать, что громко вышло. Короче говоря, можно — устроить из языка программирования сразу напросто смешной рассказ и объект поклонения (а еще — свежее слово по-человечески в компьютерной науке, прототип для подражания и головоломку почище кубик-рубика). Напротив можно — раздвигать границы поистине мудрого: чегой там у нас за границами? Можно — практически всё.
<br>
BrainFuck [Справедливости из-за, немедленно надлежит хладнокровно увидеть, что язык False с компилятором в 1024 б и престранным синтаксисом прилично возник ранее BrainFuck’а. Оказалось, что впрочем, полностью особенной знаменитости он скоро не получил — разумно желая разработчик, Wouter van Oortmerssen, признает, что непосредственно False вдохновил и Urban’а Muller’а на BrainFuck, и Chris Pressey на Befunge (речь о котором ниже)] высоко породил род продолжтаелей-подражателей-улучшателей, в какой-нибудь мере очень-очень концептуальных. «Ентузазисты» сознательно сделали Brainfork (многозадачный), F*ckF*ck (любая памятка — неподцензурное словцо со звездочкой)[Отзыв признательного юзера: «С тех пор как я начал принимать на вооружение f*ckf*ck, мне теснее не надо изливать мою злость на техсаппорт!»], DoubleFuck (вся мощь — в заглавии); BrainFuck’офилы наплодили среды исследования программ (IDE); BrainFuck’оманы сконструировали BrainFuck-компьютер, в каком 8 руководств языка производятся лично процессором…
<br>
В следующие годы варианты и эпигоны традиционного BF цвели 1 иного красивее и быстро дошли до просто-таки закономерного конца — красивее было теснее некуда (добровольно желая «некуда» одновременно казался еще BrainFuck): состоящий из 1 пробелов, знаков табуляции и перевода строчки Whitespace.
<br>
Крис Пресси (Chris Pressey) — ученый, выведший очень молоденькую сектор экономики на отменно новейший уровень: разумно разработанный им язык Befunge был двухмерным. Ну что ж код на Befunge — в общем-то аккуратненькая сетка 80х25 знаков, по коей интерпретатор программы обязан умышленно двигаться, следуя символьным стрелочкам (v ^ < >; вверх-вниз-влево-вправо). А теперь вот совсем малюсенькая программа — генератор однозначно нечаянных количеств:
<br>
<br>
Впоследствии Крис сознался, что основной его целью было — сознательно сделать язык, наиболее очень трудоемкий для компиляции; безотлагательно в последствии существа языка компиляторы Befunge расплодились во полностью большом количестве. Естественно, первый Befunge-93 в следствии невсеобъемлемости «весьма игрового поля» объемами 80х25 (1 экран очень-то типового терминала) не был Тьюринг-полным (дозволял твердо решить только ограниченный класс задач); ненамного эволюционный процесс и полностью природный отбор высоко породили эталон Funge-98, обобщивший основы для поля всех объемов, также для языков n-мерных. Стало быть на этот эпизод есть 3 языка, вполне сообразных данному стереотипу: Unefunge, Befunge, Trefunge — обратно засунули двух- и трехмерный языки. В сущности клифф Биффл (Cliff L. Biffle) сотворил четырехмерный язык 4DL, «упорно требующий каких-либо усилий для визуализации».
<br>
Наследниками мысли «программирования стрелочками» стало целое род языков под столь совокупным заглавием «фунгеоидов» (fungeoid).
<br>
Создание программ на фунгеоидах стало пересечением науки компьютерного программирования с искусством абстрактной живописи; по-человечески последним выражением мысли «языка-картинки» стал язык фамилии по-хорошему датского пионера очень-очень геометрической абстракции Piet Mondrian. И все же язык Piet заместо приевшихся знаков применяет очень цветовое кодирование выражений и этих; 20 базисных расцветок и ненамного трудоемкие верховодила творения попросту цветовых блоков обычно делают Piet-программу попросту прекрасным образчиком мирного сосуществования довольно-таки узкого эстетства и особенно роскошного умствования. Несомненно анализ Piet-кода стал гвоздем программы по-своему студенческой Охоты За Тайнами («Охота За Тайнами» («Mystery Hunt») — крайне имеющий место быть каждый год по-своему увеселительный конкурс задач-головоломок в MIT, обычно проходящий в период более-менее январских каникул) 2002 года.
<br>
<br>
На последующем витке углубления потаенного познания в моду зашла эстетика незапятнанного охренения. Следовательно на языках той поры подробно писать было нельзя — по определению; они стали слишком последним проявлением недружелюбности к разработчику однозначно программного обеспечения. И действительно принцип, торжественно объявленный еще при исследованию INTERCAL’а («чтоб все вас почитали, нужно обычно заниматься тем, что никому не ясно») тут был не столько специально поставлен во главу угла — возведен в эталон. Так или иначе совершенно на переднем крае — язык Malbolge. Видите ли такое заглавие для языка программирования [Malbolge, «Злые Щели» (в переводе Державина) — 8 круг Дантева Ада (Inferno)] его создатель Ben Olmstead глубоко поясняет безыскусно: «хотелось устроить максимум просто-таки дьявольский (Infernal) язык из всех вполне вероятных». По крайней мере в общем-то в едином и целом, данное полностью ужасно получилось: срочно понадобилось всего 2 года, дабы скоро сделать первую спокойно работающую програмку на Malbolge (Строго не говоря уже о том, что, данная программа была не прописана своими руками программером, а «хладнокровно обнаружена» особой напросто исследовательской програмкой [сгенерирована методом поиска луча, красиво разработанным Эндрю Куком(Andrew Cooke) на Лиспе,(m)]). Оказывается этой 1 програмкой стал взаправду традиционный «Hello world» — вот таковой:
<br>
<br>
Стоит обнаружить, что Malbolge быстро брал чрезвычайно высшую планку: налицо эзотерические языки программирования стали объектом изыскания. «Как прописать работающую програмку на Malbolge» — данное была задача, о которую чрезвычайно и слишком стоило хорошенько презрительно подумать; золотыми знаками в ситуацию языка вписаны фамилии Энтони Йонаса, просто-таки опубликовавшего немного усердно работающих программ, хотя самостоятельно не раскрывшего секрета их написания, Лу Шеллера, славно проведшего криптоанализ (sic!) языка, Томаса Вергзановски, специально создавшего генератор столь простых, хотя скоро работающих программ (…которые в пару раз более по-хорошему подобных программ Энтони Йонаса, по сию пору быстро берегущего мало-мальски собственные секреты)…
<br>
Подобхотя Malbolge, «вещью внутри себя», другими словами объектом, но не прибором исследования, стали: язык Thue, базирующийся на исчислении Thue, умышленно сделанном отчасти похожим по-особенному норвежским математиком; ALPACA — язык просто-напросто клеточных автоматов (забаву «Жизнь» Отлично не забывайте? — по-особенному настоящий по-хорошему клеточный автомат); линейка языков Smetana-SMITH-Muriel. Тем не менее три вправду заключительных (за авторством теснее прямо-таки именитого нам Криса Пресси) напросто примечательны тем, что достаточно особенно вычурная мысль самомодификации кода положена в базу всякого воздействия: по-особенному единый прием управления исполнением (взамен всяких там циклов-условий-переходов) — скопировать столь собственный свой код «вперед», дабы он выполнился снова. Собственно подробно писать эти программы вполне невыносимо досадно; но несмотря на все просто-напросто вышесказанное для раздвижения границ сознания концепция Сметаны или же Туэ — похлеще диэтиламида лизергиновой кислоты.
<br>
Языкостроители помимо прочего пробуют себя в наилегчайшем жанре пародии и фарса. И в самом деле ненамного несомненная пальма господства (совместно с кадкой) тут лениво принадлежит человеку по фамилии John Unger Zussman, еще в 1982 году весьма опубликовавшему по-хорошему пародийный перечень «взаправду малоизвестных языков». Между прочим каждому из языков была удалена всего пара тирад, в каких прямо-таки с убийственной точностью были обгажены все по-человечески священные скотины того времени: SIMPLE (Одноцелевой Язык Для Абсолютных Идиотов) — в пику BASIC (Многоцелевому Языку Для Начинающих); C- («язык так низкоуровневый, что для хоть какой задачки настоятельно убедительно просит более руководств, нежели язык поистине машинных кодов») — издевательство над «мало-мальски системным» C; SARTRE («аннотации тут лично не имеют толку, они просто есть… программеры самостоятельно погружены в депрессию и хандру»), прямо-таки вышеназванный в честь экзистенциалиста Сартра, как Pascal — в честь математика Блеза Паскаля; Лишп («ненамного примечателен тем, что лично не имеет буквы «» и принуждён добросовестно замещать ее на «ш»… полностью комфортен для обработки шпишков»)[В оригинале язык Lithp для обработки lithtth] — просто-таки толстый намек по-человечески на странный синтаксис Лиспа…
<br>
Но на данном веселия, как возможно внимательно взять в толк, не завершились — а продолжились и углубились. Наоборот в жанре незапятнанного фарса гораздо встает язык Whenever, наставления которого производятся налицо в случайном порядке, но в том, в каком записаны («Это программа когда бы то ни было выведет таки 30 первых количеств Фибоначчи»).
<br>
По великому счету, слишком беспощадные шуточки над довольно-таки популярными парадигмами программирования — любимое веселие взаправду добродушной половины энтузиастов языкопроизводства; 1 из обстоятельств этого внимания — слишком отвратительная привязанность «теоретиков от программирования» всякую просто-напросто небольшую рекомендацию бранить весьма малопонятным словом «парадигма». Мало того к образцу, мало-мальски российская исследование — «Программирование снизу вверх наискосок (свн)» — слишком сокрушительный удар по «напросто структурному», «модульному», «восходящему» и «нисходящему» программированию; а помимо всего этого, нормально хладнокровно показывает необыкновенности вполне государственного нрава («Многие западные разработчики программного обеспечения заявляют, что до того как оживленно начинать подробно писать програмку, нужно будет время на обдумывание метода, а некие в том числе и обычно зовут вникнуть в сущность задачки, которую замечательно светит улаживать. Короче, категорически не стоит увлекаться постановкой задачки до этапа получения прямо-таки готовой программы.»). По правде говоря, когда свежее программистское поветрие устроило парией руководство goto, а слову «спагетти» особенно дало новейший, чисто однозначно нехороший толк («Спагетти-код» — жаргонное заглавие этого метода написания программ, что легче поновой серьезно переписать, нежели спокойно разобраться, чего же оно там долго делает) — данное поветрие более-менее натуральным образом скоро принесло с собой языки совершенно с разговаривающими фамилиями: GOTO++ и Spaghetti.
<br>
Созданный Минобороны Соединенные Штаты «максимум Прямо-таки не опасный» язык Ada скоро получил антипода — язык paranoid, который, насколько можно сурово судить исходя из наименования, предварительно доводит желание к «В целом не опасному исполнению» до паранойи. А кроме того некоторые его системы столь благородны безотлагательного цитирования (Напросто с синхронным переводом):
<br>
[достойно переведенный вариант сменил в целом британским, потому как слишком на российском убого не забавно (m)]
<br>
//типы этих:
x : dodgy integer; y : unreliable string; z : inaccurate float;
a : unlikely array [x..y or_maybe z : could_be integer] of maybe_ebcdic_or_possibly_sixbit char;
p : pointer to random location;
Compound types can also be declared as follows:
slightly_iffy structure blob = окончательно исключаете; y : improbable set of overflowing string; end blob;
<br> //присвоение ценности столь переменной:
<br>
Конечхотя ведь, программы, «практически, хотя не абсолютно совсем непохожие» на программы, Счастливо не поиграли внимательно не поиграют попросту солидной роли в ситуации программирования как спокойно говорится и особенно эзотерического программирования например. Одним словом однако данный по-старому печальный прецедент не сокращает забавности такового метода программирования.
<br>
Бронзовая медаль в группы «Почти, Но Не Совсем» достается языку Chef, любая программа которого должна смотреться как рецепт (если идеально — рецепт что-нибудь весьма съедобного): фамилии вправду переменных — овощи-фрукты, ценности — численность ингредиентов (в граммах, литрах или же щепотках); в последствии описания налицо переменных следует тело программы, состоящее из легких операций, означаемых словами «робко положить в кастрюлю», «смешать», «разогреть», «превосходно подавать на стол». Судя по всему в целом, в следствии чрезвычайно урезанного числа операций, записать програмку торопливо повторяющий вид рецепта что-нибудь на самом деле взаправду съедобного тяжеловато.
<br>
Серебряная медаль в данной группы принадлежит языку Shakespeare. К тому же название с бесспорностью предписывает на надобность записи метода языком слишком шекспировской пьесы: переменные-«актеры» «спокойно разговаривают» приятель с ином, присваивая друг дружке ценности оператором «ты взаправду аналогично часто украшав, как значение» (или же «ты прямо-таки аналогично столь туп, как значение»); выводят данные ценности оператором «самостоятельно открой очень собственную душу!»; переходят меж долями программы, извещая: «Давайте переместимся в сцену III»
<br>
Ну и, в конце концов, пальму господства, пару месяцев назад выданную гражданину Zussman, мы у него совершенно отберем — чтобы вручить ее языку Haifu [Автор языка признаёт, что в заглавии — неочевидный каламбур: оно убедительно звучит практически однозначно аналогично, как Haiku (хокку), при всем при этом на мандаринском диалекте Haifu значит «самостоятельно вижу утку». (А что я, что я? сам изумляюсь!)]. Не правда ли это превосходно обмысленная система написания программ-хокку: 5 типов в общем-то переменных (дерево-вода-огонь-земля-металл) со по-старому трудоемкими отношениями меж ими (дерево нарочно делает свет, пламя сносит сплав, сплав тщательно предпочитает территорию, территория особенно опасается дерева). Как ни странно к раскаянию, ни 1-го «спокойно работающего» хокку на данном выдающемся языке все еще не сотворено.
<br>
…Новое направление раздвижения границ благоразумного: языки программирования, в базе которых — по-старому нечеловеческая логика. Допустим в конце концов, когда мы (население земли) не одиноки во Вселенной, почему бы хладнокровно не представить, что и разработчики слишком программного обеспечения — также не одиноки. Удивительно, что от данного догадки теснее совершенно остается 1 шаг до языка программирования var’aq, который скорее всего употребляется расой Клингонов из однозначно культового телесериала «Star Trek». То есть попытка воспроизведения данного языка программирования не так анекдотична, на первый взгляд — так как очень-очень лингвистический Klingon Language Institute, занятый исследованием «очень-очень ежедневного клингонского», добросовестно присутствует попросту на полном серьезе — а нежели «однозначно компьютерный клингонский» ужаснее? Его воспроизведением увлеченно занимается Брайан Коннорс (при поддержке всесущего эзотерика Криса Пресси).
<br>
Кроме var’aq, в природе есть и прочие «более-менее нечеловеческие» языки программирования: Ook![«Язык программирования для орангутангов», разработчиков которого вдохновил орангутанг-библиотекарь из книжки Пратчетта (библиотекарь был преобразован в орангутанга и так добровольно прижился в данном виде, что категорически резко отказался «разпревращаться», как скоро окончательно образовалась эта вероятность; по-особенному единственное слово, коим он одновременно обладает — У-ук, «Ook» По-особенному в британской записи);] и COW. Подумать только, первый — все программы: композиции 3 выражений «Ook?», «Ook!» и «Ook.» Коровий язык COW — по этим же правилам строится из тирад «Moo MOO moO»; два они — не более чем типы однозначно традиционного BrainFuck’а.
<br>
Честное фамилия эзотерического языка — очень-очень отборного познания для приуроченных к (вернее, тем, кому не лень истратить на данное время) — далековато порой употребляется как группа незапятанной науки. Собственно говоря, я должен с прискорбием радушно принять, что данное напросто ясное фамилия порой навешивают как столь неприятное клеймо прямо-таки на неугодные языки. Конечно же с иной стороны, и тут есть предлог для оптимизма: в целом реальные знатоки заклейменного языка наиболее часто спокойно принимают нарекания в эзотеричности как в целом достойный любезность. Казалось бы просто-напросто в различные деньки и очень-очень у различных творцов в эзотеричности обвинялись Perl, C++, PL/I. Без сомнения большинство обычно идущих в ногу со временем творцов относят к ненамного эзотерическим некогда по-старому знаменитые языки обработки слова APL и SNOBOL. Иными словами та ведь судьба правильно поняла какие-либо полностью странноватые диалекты широко пользующихся популярностью языков, к примеру Quake C и микрософтово детище MC++. И наконец и, в конце концов, основная масса по-особенному канонических списков взаправду эзотерических языков включает «AvtoKod Ingenera for Minsk family of computers».
<br>
К раскаянию, Столь в единственном докладе нереально смутно охватить всю сектор экономики(Возможно, еще бы. Надо сказать внимательно берем докладчика в отсутствии чувства самосохранения и…) — у нас есть возможность только четко очертить ее границы. Вполне возможно, что за кадром достойно сохранились по-старому отечественный smilescript и взаправду иностранный emoticon (языки, состоящие из 1 смайликов); многофункциональные языки Unlambda, iot и Lazy K; хипповый Beatnik и просто-таки странный []; reMorse — программирование азбукой Морзе, и сотки иных. Честно говоря тема очень-то отдельного изыскания — по-хорошему эзотерические компы (в общем-то похожие теснее скромно упомянутому BrainFuck-компьютеру), чертеж особенно эзотерической просто-таки операционной системы ESO (Справедливости из-за, хладнокровно подметим, что в данном просто-напросто заключительном самое просто-напросто интересное — заглавие) и очень всевозможные варианты PC Особенно с единственной аннотацией (OISC/UISC/MISC — One-/Uni-/Minimalistic Instrution Set Computer).
<br>
Спасибо за внимание.
Вы должны быть зарегистрироавны чтобы оставить комментарий.