Основы програмирования

Обзор странных языков программирования

Существует множество языков программирования и каждый язык специально создан для разработки на конкретной платформе.
Языки программирования чаще всего структурированы и позволяют решать реальные проблемы, синтаксис ясен и понятен, а реализация программ работает быстро и без ошибок.
Существуют языки программирования, которые не соответствуют этим принципам. Они создаются для научных исследований или просто для удовольствия и их называют эзотерическими.
Эзотерические языки часто пародируют «серьезные», а тексты программ на них понятны лишь посвященным. В то время как разработчики реально используемых языков стараются сделать синтаксис максимально понятным, а сам процесс написания кода – удобным, создатели эзотерических языков обычно ставят перед собой противоположные задачи.

1. Glass

Является эзотерическим языком программирования, разработанным компанией Gregor Richards в 2005 году. Он сочетает в себе не интуитивные постфиксные обозначения и сложную реализацию объектно-ориентированной модели программирования.
По мнению автора ни один другой язык не реализован так, как этот, потому что это идиотизм.
Пример кода программы «Hello, World!»:
{M[m(_o)O!«Hello World!»(_o)o.?]}

2. Brainfuck

Язык программирования для любителей крайне радикального минимализма. Был создан в 1993 году Урбаном Мюллером. Отличительной чертой данного языка является наличие лишь 8 команд, которые записываются как один символ. Мюллер хотел создать язык с самым малым компилятором.
Компилятор для Brainfuck весит меньше 200 байт. Данный язык является тьюринг-полным, потому может использоваться наравне с Java или Pascal. Пример кода «Hello, World!»:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
------.--------.>+.>.
Команды и их значения
  1. > — перейти к следующей ячейке;
  2. < — перейти к предыдущей ячейке;
  3. + — увеличить значение в текущей ячейке на 1;
  4. — уменьшить значение в текущей ячейке на 1;
  5. . — напечатать значение из текущей ячейки;
  6. , — ввести извне значение и сохранить в текущей ячейке;
  7. [ — если значение текущей ячейки 0, перейти вперёд по тексту программы на ячейку, следующую за соответствующей ] (с учётом вложенности);
  8. ] — если значение текущей ячейки не ноль, перейти назад по тексту программы на символ [ (с учётом вложенности).

3. LOLCODE

Язык был создан в 2007 году Адамом Линдсей, научным сотрудником Ланкастерского университета. Язык использует сокращенный словарь интернет-мема ЛОЛКОТ и будет прост в освоении для тех, кто знаком с английским интернет сленгом.
Разберем пример кода для вывода сообщения «Hello World!»:
HAI — начало программы
CAN HAS STDIO? — включает в текст программы содержимое указанного файла
VISIBLE «HAI WORLD!» — вывод на экран
KTHXBYE — конец программы
Данный язык можно использовать только как чтение файла или запись текста на консоль. Еще можно использовать LOLPython, который, использует синтаксис LOLCODE и дает доступ ко всем библиотекам языка Python.

4. Chicken

Chicken не только название языка, но и единственное ключевое слово, которое используется в нем. Количество повторений и новых линий определяет код операции, которая выполняется. Автором языка программирования Chicken стал Торбьёрн Сёдерштедт. Пример кода «Hello, world!» на языке Chicken:
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

5. Whitespace

Необычный язык, выпущеный в 2003 году в честь Дня Смеха (1 апреля) Эдвином Брэди и Крисом Моррисом. Основной чертой этого языка является его «скрытность». Дело в том, что команды и строки кода формируются путем использования исключительно пробелов, табуляции и переходом на новую строку.
Вот как выглядит «Hello, World!» (синий — табуляция, красный — пробелы):

6. Befunge

Befunge это двумерный язык программирования. Ваш код находится на игровой области с фиксированным размером. Каждая клетка игрового поля может удерживать код или данные, ваша программа может заменить любую ячейку с ними. Вызов программы начинается в верхней левой ячейке и продолжает вправо. Пример кода “Hello, world!”:
0"!dlroW ,olleH">:#,_@

7. Piet

Пит это язык программирования, в котором программы — это растровые изображения, которые выглядят как абстрактные картины. Основным строительным блоком для программ является цвет блока. Он поддерживает 20 различных цветов, в некоторых реализациях языка используется большее количество цветов.
Компилятор руководствуется указателем, который движется вокруг изображения, с одного цветного региона к другому. Вот “Hello, world!”:

8. ~English

Это язык программирования, который пытается подражать естественно звучащему языку. Ни одна функция не может быть определена программистом — есть возможность использовать только встроенные в язык функции. Пример программы:
Display "Hello world!" and a newline.
Stop the program.

9. ArnoldC

Любителей кино порадует язык программирования ArnoldC, составленный из цитат героев Арнольда Шварцнеггера.
«Hello World!» на языке ArnoldC:
IT'S SHOWTIME
TALK TO THE HAND «Hello World!»
YOU HAVE BEEN TERMINATED

10. Malbolge (язык-«черный ящик»)

Malbolge – эзотерический язык программирования, придуманный Беном Олмстедом в 1998 году. Язык разработан с целью быть максимально сложным для написания программ. Получил свое название от Malebolge, восьмого круга ада Данте.
Чтобы написать небольшую программу на этом языке необходимо обладать навыками криптографии. Вот так “Hello, world!” выглядит в Malbolge:
('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"
`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>

11. Omgrofl

Юморной язык, созданный Юрай Борза. Основой этого языка стали интернет акронимы (первые буквы каждого из слов в определенной фразе), такие как lol, wtf, brb, stfu и т.д. Даже название языка программирования это акроним — Omgrofl — oh my god rolling on the floor.
Исходный код программы «Hello, World!»:
w00t a Hello, World! program by poiuy_qwert
lol iz 72
rofl lol
lol iz 101
rofl lol
lol iz 108
rofl lol
rofl lol
lool iz 111
rofl lool
loool iz 44
rofl loool
loool iz 32
rofl loool
loool iz 87
rofl loool
rofl lool
lool iz 114
rofl lool
rofl lol
lol iz 100
rofl lol
lol iz 33
rofl lol
stfu

12. ZOMBIE

Создатель языка Давид Морган-Мар. По его словам этот язык Zombie-Oriented Machine-Being Interface Engine был создан специально для некромантов, особенно для злых. Основой кода являются различные существа (зомби, вампиры, духи, демоны или джины), которые выполняют соответствующие им заданные команды. «Hello, World!» по-некромантски:
HelloWorld is a zombie
summon
task SayHello
say «Hello World!»
animate
animate
Это далеко не все языки программирования, который могут вызвать у Вас улыбку, удивление или даже озадаченность своей необыкновенной сложностью или простотой.
Основы программирования