[Перевод] 5 самых сложных языков программирования в мире
Все слышали про C, C++, Java, Python и многие другие, но есть несколько языков малоизвестных программирования, которые не только сложные, но и непонятные для многих разработчиков.
Они называются эзотерическими языками программирования и существуют как доказательство какой-либо концепции или просто как шутка. Под катом — пять самых сложных эзотерических языков и как на них выглядит «Hello World!».
Malbolge
Он был придуман в 1998 году Беном Олмстедом, и считается самым сложным языком программирования.
Говорят, создатель не написал ни одной программы на этом языке. Классическая «Hello World!» появилась на Malbolge спустя почти 2 года после создания самого языка. Так выглядит фрагмент для печати:
(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc=
А так вывод:
INTERCAL
Джим Лайон и Дон Вудс разработали INTERCAL в 1972 году в качестве пародии на различные языки программирования. Изначально он назывался: «Язык компилятора без произносимой аббревиатуры» (Compiler Language With No Pronounceable Acronym).
В INTERCAL куча функций, которые созданы, чтобы доставить программистам как можно больше неудобств.
Пример. Язык использует модификаторы, такие как «PLEASE». Если в коде редко используется «PLEASE», то компилятор посчитает программу «недостаточно вежливой», а если часто — «слишком вежливой». В обоих случаях код будет отклонен.
Фрагмент кода для печати «Hello World!» в INTERCAL выглядит так:
DO ,1 <- #13 PLEASE DO ,1 SUB #1 <- #238 DO ,1 SUB #2 <- #108 DO ,1 SUB #3 <- #112 DO ,1 SUB #4 <- #0 DO ,1 SUB #5 <- #64 DO ,1 SUB #6 <- #194 DO ,1 SUB #7 <- #48 PLEASE DO ,1 SUB #8 <- #22 DO ,1 SUB #9 <- #248 DO ,1 SUB #10 <- #168 DO ,1 SUB #11 <- #24 DO ,1 SUB #12 <- #16 DO ,1 SUB #13 <- #162 PLEASE READ OUT ,1 PLEASE GIVE UP
Вывод:
Brainfuck
Этот язык разработал Урбан Мюллер в 1993 году в качестве развлечения для девелоперов. Название говорит само за себя — он чрезвычайно сложный для понимания.
Весь язык состоит только из восьми различных символов для реализации любого кода. Оригинальный компилятор, разработанный Мюллером, использовал только 296 байт.
Вот фрагмент кода для печати «Hello World!» в Brainfuck.
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++ ..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
Вот вывод:
COW
«Корова» была создана в 2003 году Шоном Хебером. Почему такое название? Поймете, когда дойдете до кода ниже.
«Корова» по уровню сложности похожа на Brainfuck, но имеет еще четыре команды — то есть 12 команд во всем языке.
Фрагмент кода для печати «Hello World!» в COW:
MoO MoO MoO MoO MoO MoO MoO MoO MOO moO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO moO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO mOo mOo mOo mOo mOo MOo moo moO moO moO moO Moo moO MOO mOo MoO moO MOo moo mOo MOo MOo MOo Moo MoO MoO MoO MoO MoO MoO MoO Moo Moo MoO MoO MoO Moo MMM mOo mOo mOo MoO MoO MoO MoO Moo moO Moo MOO moO moO MOo mOo mOo MOo moo moO moO MoO MoO MoO MoO MoO MoO MoO MoO Moo MMM MMM Moo MoO MoO MoO Moo MMM MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo mOo MoO Moo
Вывод:
Whitespace
Разработан в Даремском университете Крисом Моррисом и Эдвином Брейди. И выпущен 1 апреля 2003 года в День дурака.
Для написания любой программы язык использует пробелы, табуляцию и перевод строк. Whitespace игнорирует другие символы и рассматривает их как комментарии к коду.
Фрагмент кода для печати «Hello World!» в Whitespace (каждому пробелe, табуляции или перевода строки предшествует комментарий «S» (space), «T» (tab) и «L» (linefeed) соответственно):
S S S T S S T S S S L T L S S S S S T T S S T S T L T L S S S S S T T S T T S S L T L S S S S S T T S T T S S L T L S S S S S T T S T T T T L T L S S S S S T S T T S S L T L S S S S S T S S S S S L T L S S S S S T T T S T T T L T L S S S S S T T S T T T T L T L S S S S S T T T S S T S L T L S S S S S T T S T T S S L T L S S S S S T T S S T S S L T L S S S S S T S S S S T L T L S S L L L
Вывод:
Их намного больше
Есть еще много подобных эзотерических языков, если интересно — погуглите или изучите раздел с референсами. А для компиляции кода используйте этот сайт.
Референсы
Esolang wiki
Malbolge
INTERCAL
Brainfuck
COW
Whitespace