Najdziwniejsze języki programowania

TeamQuest 28.12.2017 r.
Języki programowania
Z tego wpisu dowiesz się:
  • co to są ezoteryczne języki programowania?
  • w jakim celu powstają?
  • o jakich technologiach nie dowiesz się na studiach informatycznych?

Dokładna liczba języków programowania na świecie pozostaje tajemnicą. Jedni mówią o kilkuset, drudzy nawet o kilku tysiącach. Z całą pewnością jednak tylko nieliczne z nich pozostają w powszechnym użyciu. Większość rankingów koncentruje się na najpopularniejszych, najczęściej używanych i stale rozwijanych technologiach. Wśród nich są jednak takie, które nie dążą do tego, aby być użyteczne czy efektywne. Wręcz przeciwnie. To języki ezoteryczne tworzone w celu demonstracji niekonwencjonalnych technik programistycznych lub po prostu dla samej frajdy. Co istotne, prawie nikt ich nie używa. Oto kilka, naszym zdaniem, najbardziej osobliwych przykładów.

Brainfuck

Technologia ta, nazywana również Brainf*ck, Brainf*** lub po prostu BF jest pionierem wśród języków ezoterycznych. Jej powstanie zawdzięczamy Niemcowi Urbanowi Müllerowi, który w 1993 roku postanowił stworzyć język, w którym dozwolone jest używanie jedynie ośmiu znaków z klawiatury ( > < - . , [ ]). Każdy z nich ma przypisaną, niezmienną instrukcję. Wszystkie inne znaki poza wyżej wymienionymi traktowane są jako komentarze.

Whitespace

Na czym polega główna idea tego stworzonego w 2003 roku przez Edwina Bradiego i Chrisa Morrisa języka? Do zapisu instrukcji wykorzystuje wyłącznie tzw. „białe znaki” (spacja, tab, enter). Każdemu zestawieniu jest przypisana konkretna instrukcja. Co ciekawe, Whitespace poprawnie odczyta białe znaki napisane w zwykłym programie, jak choćby JaveScript.

Shakespeare

Nazwa tego stworzonego przez Jona Åslunda i Karla Hasselströma języka nie jest przypadkowa. Napisany w nim kod przypomina dramaty Szekspira. Dlaczego? Otóż główne zmienne muszą mieć nazwy zaczerpnięte z imion bohaterów twórczości Szekspira, na przykład Hamlet czy Otello. W innym przypadku wystąpi błąd kompilacji. Cały program dzieli się na akty oraz sceny, które deklaruje się za pomocą cyfr rzymskich.

Chef

Język ten, opracowany przez Davida Morgana-Mara nie tylko umożliwia pisanie kodu, ale może również… zainspirować do gotowania. Całość programu tworzona jest bowiem na wzór przepisu kulinarnego. I tak na przykład odpowiednikami zmiennych są artykuły spożywcze, natomiast instrukcje kodu to nazwy czynności koniecznych do przyrządzania naszej potrawy, np. „mieszaj”. Brzmi smakowicie, prawda?

Ook!

Jeszcze jeden twór, który wyszedł spod ręki Davida Morgana-Mara. Tym razem australijski fizyk zainspirował się Brainfuck’iem. W języku tym używa się tylko trzech komend: Ook, Ook! oraz Ook?, które oczywiście można ze sobą łączyć w kombinacje. W założeniu język ten miał być zrozumiały dla naszych ewolucyjnych przodków, zwłaszcza orangutanów. To się oczywiście nie udało, natomiast twórcy tej technologii trudno odmówić osobliwego poczucia humoru.

Malbolge

To kolejna technologia, która ma literackie konotacje. Swoją nazwę wzięła bowiem od 8. kręgu piekła z „Boskiej Komedii” Dantego. Nie bez powodu. To najprawdopodobniej najtrudniejszy język na świecie! Instrukcje w nim nigdy nie są zapisywane jednoznacznie. Znaczenie poszczególnym znakom przyznaje sam program, więc nie jesteśmy w stanie przewidzieć efektów.

Piet

To technologia, która przypadnie do gustu wszystkim miłośnikom sztuki. Inspiracją dla niej stała się bowiem twórczość holenderskiego abstrakcjonisty Pieta Mondriana. Piet (nazwa Mondrian była już zajęta) jest językiem, który zamienia kod na abstrakcyjne geometryczne obrazy bazujące na 20 kolorach. Jego twórcą jest nie kto inny, jak David Morgan-Mar.

W większości wypadków trudno powiedzieć, czemu lub komu mają służyć języki ezoteryczne. Konieczność ogromnego włożenia ogromnego wysiłku w to, aby zastosować je do konkretnego celu sprawia, że pozostają domeną prawdziwych pasjonatów. Pewne jest jedno – są niezbitym dowodem na to, że poczucie humoru informatyków nie zna granic.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT: