Привет, Хабр! Представляю вашему вниманию перевод статьи «5 Most Difficult Programming Languages of the World» автора Anuupadhyay.

Возможно, вы написали свой первый код на языках программирования, таких как C/C++ или Java, и, возможно, столкнулись с трудностями в изучении этих языков. Эти языки по крайней мере читабельны или понятны, но что, если мы скажем написать программу, печатающую 'Hello World!', используя только пробелы, табуляции и переводы строк. Это не шутки, ведь на самом деле в мире имеется несколько языков программирования, в которых код пишется с использованием только нескольких команд или синтаксиса, из-за чего этот код будет нельзя ни прочитать, ни понять. Они также считаются самыми сложными языками программирования в мире, и, возможно, вы впервые узнаете об этих языках (ну это так у автора написано, я-то знаю, что на Хабре эти языки явно встречались), поэтому давайте обсудим эти языки.

1. Brainfuck


Как следует из названия, этот язык на самом деле сложен, и писать программы на нем действительно тяжело. Он создан в 1993 году Урбаном Мюллером. Целью создания было написание языка с компилятором минимального размера. Этот язык использует модель машины, напоминающую машину Тьюринга, и для написания программы язык имеет только 8 команд.

Пример: программы Hello World!

image

2. Cow


Мы знаем, что название этого языка звучит забавно, но это на самом деле язык программирования, который создан Шоном Хибером в 2003 году. Этот язык состоит из 12 команд, и самое смешное в этом языке — команда ‘moo’ (мычание коровы) или же ее вариации, используемые в этом языке. Написание любого другого символа или слова рассматривается как комментарий. Cow основан на языке, используемом в машине Тьюринга.

Пример: программы Hello World!

image

3. Intercal


Этот язык создан в 1972 году Доном Вудсом и Джеймсом М. Лионом, студентами Принстонского университета. В этом языке нет ни одной произносимой аббревиатуры. Создатели этого языка программирования включили парадоксальные операторы, такие как Read out, Ignore, Please, Forget и другие, чтобы сделать этот язык удобным для пользователя. Самое смешное в этом языке то, что в коде оператор Please должен быть использован 4 раза для проверки вежливости программистов. Если их будет меньше, то код не будет выполняться, потому что компилятор сочтет, что программист излишне груб. А если будет 5 или больше, то также не будет выполняться, потому что компилятор посчитает программиста слишком вежливым.

Пример: программы Hello World!

image

4. Malbolge


Этот язык придуман Беном Олмстедом в 1998 году, и удивительный факт заключается в том, что для написания первой программы потребовалось почти два года. Так что вы можете себе представить сложность этого языка. Программирование на этом языке выглядит как чушь или сбой кодировки, и, говорят, что Бен Олмстед не писал ни одной программы на этом языке. Malbolge является общедоступным эзотерическим языком программирования и считается одним из самых сложных языков программирования в мире.

Пример: программы Hello World!

('&%:9]!~}|z2Vxwv-,POqponl$Hjihf|B@@>,=<M:9&7Y#VV2TSn.Oe*c;(I&%$#"mCBA?zxxv*Pb8`qo42mZF.{Iy*@dD'<;_?!\}}|z2VxSSQ

5. Whitespace


Этот язык создан Эдвином Брэди и Крисом Моррисом 1 апреля 2003 года (День дураков). В тот день, когда его представили, люди думали, что это шутка, но на самом деле это не так. Для написания кода на этом языке можно использовать только пробелы, табуляции и перевод строки. Любой другой символ будет игнорироваться интерпретатором.

Пример: программы Hello World!

Исходный код содержит только пробелы и табуляции, так что не удивляйтесь, что вы его не видите :-)

Другие сложные языки программирования:

Комментарии (13)


  1. DrPass
    12.12.2019 10:42
    +5

    В тот день, когда его представили, люди думали, что это шутка, но на самом деле это не так.

    Вообще-то все эти языки программирования являются своего рода шутками и развлечением, just for fun.


  1. alexxisr
    12.12.2019 10:59

    Как в Cow кодируются 12 команд, если можно только задавать регистр в moo? — это 3 бита или 8 комбинаций, откуда еще 4?


    1. remzalp
      12.12.2019 11:07

      OOO, MMM, OOM, oom


    1. Alexus819
      12.12.2019 11:10

      del


  1. mistergrim
    12.12.2019 11:10
    +5

    Так и ожидал, что будут описаны пять самых сложных и _бесполезных_ языков.


  1. ua30
    12.12.2019 11:18
    +4

    5 бесполезных языков программирования


    1. ice2heart
      12.12.2019 12:57

      Да ладно, бф неплох что бы сделать игрушечный компилятор/транспилер.


  1. nerudo
    12.12.2019 11:22
    +1

    Чтобы оценить сложность языка можно посмотреть количество страниц в его стандарте.


  1. LibrarianOok
    12.12.2019 11:25

    Вот, для разнообразия,

    язык программирования космических кораблей
    из игры «Штурман».
    image
    Только он несложный.


  1. site6893
    12.12.2019 12:06

    да блин, зашел глянуть список из реально используемых языков… а тут очередная хохма про брейнфак, зачем так делать?


  1. danilstepa
    12.12.2019 12:19
    +1

    Грустная статья, конечно( Надеялся увидеть что-нибудь о сложности условных Idris или OCaml, а в итоге опять сме… ечки о стрелочках


  1. justjeckill1993
    12.12.2019 12:21
    +2

    Представляю, как выглядит портфолию senior Whitespace-программиста


  1. Zenitchik
    12.12.2019 12:27

    Три разных версии Брейнфака — можно было и за один язык посчитать.