Езотеричні мови програмування

Для тих, хто не стикався з таким поняттям, вже з назви стає очевидно, що мова йде про щось парадоксальне. Магія і кібернетика — речі взаємовиключні. Проте, в IT світі багато цікавого і незвичайного. Езотеричні мови програмування з одного боку — пародія на загальновизнані програмні коди, з іншого — непогана розминка для розуму і спосіб перевірити власні здібності. Розберемося, що це таке, які цілі езотеричних мов програмування, і де вони застосовуються.

Історія и загальний опис

Перша офіційна мова програмування називається FORTRAN. Була створена в 1957 році. Буквально за пару років програмісти того часу виявили безліч слабких місць і приступили до створення більш досконалих інструментів. В кінці 60-х це призвело до того, що в наукових колах виникла суперечка на рахунок меж і можливостей, які є у мов програмування.

Одна частина схилялася до того, що код повинен вирішувати чіткі, конкретні завдання, і його межі обмежені поточними потребами науки. Інші стверджували, що немає ніяких меж, як і у всесвіті, мови програмування не мають доступних для огляду меж. У числі останніх були Дон Вудс і Джеймс М. Лайон, які представили світу в 1972 році перший езотеричний код під назвою INTERCAL.

Особливість мови полягала в тому, що замість стандартних операторів використовувалися унікальні конструкції, а сам код мав настроюється рандомізацію, яка впливала на можливість виконання команди. Часто одні оператори прямо суперечили іншим. Екстравагантний зовнішній вигляд не заважає INTERCAL виробляти складні математичні операції. При всій екзотичності — це робоча мова програмування.

Етапи розвитку

За першим «фріком» пішли нові пародії на популярні мови програмування. Їх писали студенти, хакери, програмісти. Хтось знічев'я, інші для прихованої передачі інформації, треті, щоб зробити продукт, який дозволить оцінити рівень майстерності фахівця і зрозуміти, наскільки абстрактним може бути його мислення. Але в переважній більшості езотеричні коди залишалися формою IT гумору.

У 70-х напрямок активно розвивавався в США і Британії, саме ці країни були лідерами кібернетики того часу. Але вже до середини 80-х «езотерична істерія» охопила весь світ. До початку 90-х розплодилося стільки форм «авторських» кодів, що комп'ютерній спільноті довелося ввести термін езотеричний мову програмування і провести систематизацію існуючих варіацій.

Типологізація

Класифікація езотеричних мов програмування здійснюється за двома методами:

Машина Алана Тюрінга для розшифровки кріптокода «Енігми» зробила фурор у 40-50-х роках минулого століття і стала одним з китів, на яких розвивалася кібернетика. На згадку про вченого метод аналізу ефективності програмного коду був названий «Тюрінг повнотою». Цей показник визначає, наскільки мова підходить для вирішення реальних завдань. Для езотеричних мов програмування існують такі типи:
Тюрінг повні — як і стандартні коди, підходять для розробки будь-яких обчислювальних процесів. Хороший приклад — Brainfuck. Синтаксис складається з знаків «+» і «-». З їх допомогою можна як зробити прості математичні обчислення, так і написати повноцінну програму з висновком текстових повідомлень.

Варто зазначити, що станом на кінець 2018 року в інтернеті налічувалося 150 загальновизнаних езотеричних мов програмування. За даними іншого дослідження їх існує близько 1000. Але більшість не локалізовано і залишаються маловідомим.

Як створюються

Говорячи дуже простою мовою, програмний код — це набір символів або їх комбінацій, при використанні яких відбуваються ті чи інші дії. За допомогою езотеричних мов програмування автори коду прагнуть дізнатися межі можливого застосування кібернетики.

Ідеї черпаються з кіно, літератури, живопису та навіть музики. Наприклад Velato — мова, яка набирається нотами. При всій чудаковатості, це Тюрінг повний код. Автор вкладає таку ідею, що музика і обчислювальні процеси мають загальне.

Інший приклад явно був навіяний «бондіадою». Whitespace унікальну мову, яка складається виключно з недрукованих символів. Для непідготовленого користувача буде видно тільки чистий білий аркуш. Але при натисканні на «ентер» або іншу кнопку, комп'ютер раптом почне жити своїм життям. Для більшості жителів СНД такий сценарій буде таким, що лякає. Код можна використовувати, наприклад, з метою пранка.

Хоча езотеричні мови програмування не знайшли широкого застосування при розробці програмних продуктів, їх можна використовувати для вирішення реальних завдань. Досвідчені програмісти повинні знати хоча б найпоширеніші варіанти, оскільки хакери нерідко використовують «магію» для написання шкідливого коду.

Драгуцан Андрій, студент кафедри АПЕПС, ТЕФ