Компютърен код, който прилича на готварска рецепта? Създаване на програми с помощта на… цветове или звуци? Езици за програмиране, вдъхновени от Шекспир, от Тери Пратчет и дори Доналд Тръмп? Ако човек излезе от утъпкания път, може да намери доста забавни и неочаквани щрихи в света на информационните технологии.
Езиците за програмиране са дори по-пъстри и интересни от човешките, те не се раждат „по естествен път“ в резултат от еволюция, а са резултат от желанието на създателите си да дадат ново средство на останалите. Достатъчно добро, за да превръща идеите им в компютърните програми, които днес движат света напред. Да, винаги ще ги има сериозните и полезните езици (например JavaScript, този, с който и аз си изкарвам хляба), онези, които се използват всеки ден и навсякъде около нас.
Но я има и другата страна – забавна, шантава, нестандартна.
„Езотерични“ се наричат програмните езици, които по една или друга причина са обречени да не станат популярни. Понякога те са създадени за това целенасочено, в други случаи просто разработчиците им не са се постарали достатъчно и са направили продукт, който няма как да стане масов. Така или иначе, винаги могат да ни изненадат. 10 примера за някои от най-шантавите езици за програмиране ще посрещнем на следващите редове.
1. Нека да побъбрим
Всеки може да си измисли поредица от команди, които компютърът да изпълни и нещо да се случи в резултат… За да говорим обаче за език за програмиране, най-честият критерий се нарича „цялостност по Тюринг“. Изпълняват го, макар и като съпътстващо явление, дори някои компютърни игри. И все пак това е универсалният критерий дали говорим за пълноценен език за програмиране. Този, който, съвсем накратко, може да изпълни списък с операции, които са в способностите на теоретичната машина на Тюринг (подробно обяснение ще намерите тук).
Именно такива езотерични езици ще търсим (с едно изключение). Не просто поредици от команди, а цялостни по Тюринг системи, които биха могли да създадат компютърно приложение…
Това съвсем не значи, че трябва да са сложни или с много възможности, както важи за „истинските“ им събратя в ежедневието. Това показва първият ни пример.
SmallTalk (от английски – „неангажиращ разговор“, но буквално „кратки приказки“) – така се казва един малък език с голяма история. Как може един език да е малък ли? Ето така, тук се е събрал на гърба на пощенска картичка:
През 70-те години трима инженери – Алън Кий, Дан Ингълс и Адел Голдбърг работят в лабораторията “Xerox PARC”. Смятат съществуващите по онова време програмни езици за ненужно усложнени, овъртолени, неудобни за учене. Така решават да създадат език, чийто пълен синтаксис се побира на салфетка.
Първоначалната идея е SmallTalk да се ползва от децата, които учат програмиране. Обаче се оказва толкова успешен, че през 1995 г. е вторият най-популярен обектно-ориентиран език след C++.
В началото на новото хилядолетие американските военни го използват за създаването на софтуер за военни симулации с повече от милион реда код. “JP Morgan” пишат на Smalltalk мащабната си система за анализиране на финансовия риск “Kapital”. Езикът се превръща в любим и за много други компании от финансовата сфера.
Smalltalk е все още тук и се смята, че има солидно бъдеще. Популярен е като подходящ избор за анализ на големи данни, за интернет на нещата и машинно самообучение. Просто най-неочаквано се е оказало, че понякога е достатъчно всичко да е… просто.
2. Патриотът програмист
Всички езици са на латиница, без английски е невъзможно да се учи програмиране… Ами, не е точно така (и не само защото днес можеш на български да помолиш ChatGPT да напише код). Езотеричните езици са доста разнообразни, макар, разбира се, в професионалната сфера, през последните няколко десетилетия английският да се наложи като лингва франка.
Има ли програмни езици на български? Ако на власт и у нас дойде патриотично управление, като нищо може да наложи решението държавният софтуер да се пише на български. За щастие, имаме решения. Ето един вариант: езикът „Лого“.
Да, името му го издава, той се използва основно за рисуване на изображения и е създаден през 80-те.
Можете да си го пишете в сивито, синтаксисът му е бърз за научаване. Основното му предназначение отново е да привлича към програмирането децата, които да рисуват по екрана, без да им се налага да знаят чужди езици. У нас през втората половина на 80-те се провеждат национални олимпиади по „Лого“, за да отсяват най-перспективните хлапета в информационните технологии.
Как изглежда кодът? Ще ви хареса. За да начертаете окръжност, трябва да напишете само:
повтори 360 (нп 1, нд 1)
край
В превод „нп“ ще рече „напред“, а „нд“ – „надясно“. По същия начин квадрат се чертае с:
повтори 4 (нп 10, нд 90)
край
3. Въздух… без налягане
В някои езици се спори колко да са отстъпите преди командата – два или четири, дали да се използва табулация или единично поле. В други, сред който най-популярен е Python, отстъпът по-скоро замества някои от скобите, за да подрежда йерархията от команди.
Има обаче и език…, който е просто и само празни пространства. Нищо повече. Очевидно защо, нарича се Whitespace и всичко в него се изчерпва с интервали и отстъпи.
Поради основната му характеристика… ще ни е малко трудно да ви го представим. И все пак не е невъзможно. Приемете, че S e единично поле, T – табулация:
S S S T S S T S S S
T
S S S S S T T S S T S T
T
Командите се отделят с нов ред с табулация, а това какво се изпълнява зависи от комбинацията на интервали и табулации.
4. Казано честно, всичко ми е ооокей
Технологиите и литературата не вървят ръка за ръка? Нищо подобно! Този език ще допадне на ценителите на фентъзито и Тери Пратчет. В Света на диска, те много добре знаят, всичко се случва върху гърбовете на четири слона, които пък се разхождат върху една огрооомна костенурка, Великата А’Туин.
В този свят има един магически университет, библиотекарят му е орангутан, който комуникира, като казва само „Окей“ с различна интонация.
Е, в нашия свят същият орангутан можеше да стане програмист благодарение на езика, вдъхновен от него и създаден от програмиста Дейвид Моран-Мар. Да, той уточнява: езикът е предвиден за употреба само от орангутани.
Оок – така се казва и има три команди:
Ook.
Ook!
Ook?
И… също е завършен език по Тюринг! Тоест, можете да правите с него почти всичко, което е позволено на всички днешни модерни езици за програмиране, а никой няма да ви пита дали наистина сте орангутан.
Оставяме ви за размисъл (и упражнение) програмата, която казва прословутото първоначално послание: Hello, world!
И докато сме в литературния свят, понякога нещата могат да са много по-драматични. Буквално – ако изберете да програмирате на Shakespeare. В него направо може да се каже, че светът е сцена и всички сме актьори.
Имената на шекспировите герои са променливи, а дали числените стойности са положителни или отрицателни зависи от комбинацията на двама от героите в дадена сцена.
Ако например Хамлет е с отрицателна стойност, можете да включите и друг герой, който да го обиди и по този начин да промени знака пред числото. Можете да добавите входни и изходни данни, като в първия случай накарате някого да слуша сърцето си, а в другия – да изкаже мнението си. Шантаво, колкото си искате! Ето толкова:
Ето, дори да не знаете английски, вече можете да се похвалите, че разбирате основното за езика на Shakespeare…
5. Шеф програмист
Както пише Дъглас Адамс, в третия етап от развитието си всяка висша цивилизация стига до въпроса „Къде ще вечеряме?“. Е, програмистите отдавна са на това ниво, както личи от следващия ни гост. Chef е създаден още преди модата на телевизионните готварски риалитита и работата му е да помага в готвенето. Ето най-стандартната команда „Здравей, свят!“, на този език:
Доста многословно, нали?
Но пък забавно, съставките са променливите, които се дефинират, а самата рецепта е функцията по отпечатване. Различните групи продукти са и типове променливи, които си взаимодействат при изпълнението/готвенето.
Идеята на езика? Да покаже на хората, които нямат техническо мислене, а са свикнали повече с рецептите на Гордън Рамзи или Пенка Чолчева, че програмирането е забавно.
Командата „Готово е за сервиране!“ изпълнява функцията.
6. #Нямампроизнасяне
Не ви съветвам да опитвате да произнесете името на езика CLWNPA. На български? Дадено! „Сиелдабълюенпией“.
Какво обаче има да ни каже този акроним? Compiler Language With No Pronounceable Acronym, „компилиран език с непроизносим акроним“. Създаден е през далечната 1972-а и въпреки че името му е толкова колоритно, става популярен с доста по-скучното название INTERCAL.
Още нещо, с което ще го запомните. Това е доста учтив език. Вместо да се занимава с това да казва, че нещо е функция, той учтиво моли компютъра да създаде такава:
PLEASE DO ,10 <- #1
PLEASE DO ,10SUB#1 <- #176
PLEASE DO ,11 <- #30
PLEASE DO ,11SUB#1 <- #76
DO ,11SUB#2 <- #190
(По-дълъг пример ще намерите тук.)
„Моля те, компютре“ и после следва побитова информация за това, което трябва да се направи. Сякаш още в добрата стара 72-а някой е подозирал, че днес ще сме толкова зависими от компютрите и ще трябва да сме учтиви с тях (за да не дойде василискът на Роко).
Разбира се, „непроизносимият“ идва от съвсем различни времена, когато масово използваните езици далеч не са като днешните. Кодът, предназначен за компютри, изглежда доста повече като такъв. Съответно не е особено четим и разбираем, така че да улеснява разработчиците.
За какво ли служи командата “PLEASE“? Ако не сте достатъчно вежливи да я използвате, компилаторът работи под особен, значително по-бавен и прецизен режим. Ако пък я слагате на всеки ред, отново налага ограничения.
Този език понякога просто „гърми“ с грешка E774 или… „СЛУЧАЕН_БЪГ_НА_КОМПИЛАТОРА“. Дори според официалната документация това се случва напълно случайно. Мислите, че този език е шега? Може, но пък отговаря на всички класификации за цялостност по Тюринг. Трябва само да сте достатъчно смели (и учтиви), за да изберете точно него.
7. Ток и жица
След литературата е време да надникнем в останалите изкуства. Музиката например често влиза в арсенала на програмистите – достатъчно е да споменем примера за джаза и различните версии на платформата WordPress.
Така стигаме до езика за програмиране Rockstar.
Искате да сте рокзвезда, но сте обикновен програмист? Няма проблем! Този език служи едновременно и за писане на текстове на песни. Да, тук няма толкова вежливост като при предишния ни герой или драматизъм, като при Шекспир, просто ток и жица:
Създателите изрично обясняват, че оставянето на коментари в кода е силно нежелателно, всеки трябва да намери своя смисъл в рок поезията. Вие ще намерите ли смисъл в написаното по-горе?
8. Като на картинка
Стигаме до универсалния свят на изображенията. Тук обръщаме традиционната схема, която през последните години ни наложиха Midjourney и събратята му – човекът рисува, а компютърът се опитва да разбере какво трябва да направи. Този език се нарича Piet.
Създателят му Дейвид Морган-Мар използва като входни данни битови картини, които на пръв поглед приличат на случайни мацаници… или на модерно изкуство, преценете сами:
Изпълнението на кода се прави точка по точка, все едно показалецът се движи по самата картина. Използват се 20 различни цвята, всеки от които е конкретна команда. Добавя се и различна яркост за съответните операции. Белите позиции не извършват операции, а черните за знак изпълнението на кода да спре. Езикът е кръстен на холандския модернист Питер (на английски Piet) Мондриан, а ако се чудите защо… ето една от най-известните картини на майстора:
9. Мейк програминг грейт агейн
След като разбрахме на какви езици програмират музикантите, художниците и орангутаните, навлизаме в политиката, особено актуална в сегашната година на избори и политически вълнения.
След като се поуспокоихме, че алгоритмите няма да ни вземат (изцяло и поне засега) програмирането като човешка дейност е време… да направим програмирането велико отново!
TrumpScript (ако се абстрахираме от политическите му послания) не претендира да има общо дори с изискванията на Тюринг, но пък е забавен.
При него няма числа с плаваща запетая, а само цели, защото „Америка никога не прави нищо наполовина“. Всички числа трябва да са по-големи от 1 млн., защото малките са несъществени. Не са разрешени външни библиотеки, защото целият код трябва да е домашно американски. Вместо обичайните термини True (вярно) и False (невярно) се използват любимите на кандидат-президента fact (факт) и lie (лъжа).
Ще го пребъде ли езикът… предстои да разберем след 5 ноември
10. Ум патки пасе
Пропуснахме любопитни кандидати за този списък като ReMorse, използващ точки и тирета в духа на добре познатия от миналото морзов код; Taxi, при който кодът прилича на пътна карта (без непременно да е пълен с житейските напътствия, с които у нас свързваме тази професия) или ArnoldC, използващ само едносрични реплики от филми с Арнолд Шварценегер.
Целенасочено за накрая (с идеята, че вече сме изгубили детската аудитория) остана езикът със звучното название Brainf*ck, което няма да превеждам, но метафорично се отнася за умствена гимнастика.
Той е целенасочено труден, създаден така, че всяка елементарна задача да се превърне в предизвикателство за програмиста. Ежегодно се организират състезания, според почитателите му научиш ли се да пишеш код на него, след това ще си факир във всеки друг познат програмен език.
И всичко това… със само 8 команди, които отново са достатъчни, за да го направят цялостен по Тюринг. През 1993 г. Урбан Мюлер го разработва, докато следва физика, постепенно създанието заживява свой живот и си извоюва култов статус. За прословутото „Здравей, свят!“ е достатъчно да напишете:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.
<<+++++++++++++++.>.+++.——.——–.>+.>.
И така, какъв език за програмиране ще изберем днес, може би дори не е толкова важно. Колкото това имаме ли да кажем нещо смислено онлайн…