Diversity w polskim IT
Lokajit Tikayatray
Lokajit TikayatrayConsultant, IT Architecture @ Dell

5 najtrudniejszych języków programowania w historii

Poznaj 5 najtrudniejszych języków programowania w historii i sprawdź, jak w każdym z nich napisać "Hello World".
22.05.20224 min
5 najtrudniejszych języków programowania w historii

Wszyscy znamy C, C++, Javę i Pythona, ale istnieją języki, które są nie tylko trudne, ale wręcz niezrozumiałe dla większości developerów. Mówi się o nich „ezoteryczne języki programowania” (albo esolang). Takiego języka nie projektuje się w celu rozwoju oprogramowania — jest to zazwyczaj proof of concept, albo po prostu żart. 

Oto lista pięciu najtrudniejszych języków ezoterycznych. Napisałem w każdym z nich Hello World i muszę powiedzieć, że sprawiło mi to sporą frajdę. 

Malbolge

Język ten został stworzony w 1998 roku przez Bena Olmsteada. Uważa się go za najbardziej skomplikowany język programowania, jaki kiedykolwiek powstał. 

Podobno autor tego języka nigdy nie napisał przy jego użyciu żadnego programu. Kod Hello World! w Malbolge pojawił się dwa lata po tym, jak język oficjalnie powstał. 

Oto fragment kodu drukujący Hello World! w Malbolge. 

(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc


A oto output: 

Kod uruchomiono przy użyciu tio.run

INTERCAL

Jim Lyon i Don Woods rozwinęli INTERCAL w 1972 roku jako parodię innych języków programowania. 

Jego początkowa nazwa brzmiała ‘Compiler Language With No Pronounceable Acronym’, czyli Język kompilujący bez możliwego do wymówienia akronimu. INTERCAL sam w sobie ma wiele funkcji, które sprawiają, że programowanie jest frustrujące. 

Przykład: korzysta on z takich modyfikatorów, jak PLEASE. Kompilator może odrzucić kod, jeśli PLEASE nie jest używane wystarczająco często — program zostanie wtedy uznany za niewystarczająco grzeczny. Z drugiej strony jeśli PLEASE będzie używane zbyt często, to kompilator odrzuci jednak program, twierdząc, że jest on “zbyt grzeczny”. 

Oto Hello World! w INTERCAL. 

DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #108
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
DO ,1 SUB #7 <- #48
PLEASE DO ,1 SUB #8 <- #22
DO ,1 SUB #9 <- #248
DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #162
PLEASE READ OUT ,1
PLEASE GIVE UP


A oto output: 

Kod uruchomiono przy użyciu tio.run

Brainfuck

Brainfuck został stworzony przez Urbana Mullera w 1993 roku. Język ten miał służyć jako źródło rozrywki dla programistów. 

Nazwa sugeruje natomiast, że ma on być prawie niemożliwy do zrozumienia dla jakiegokolwiek developera. 

Język ten składa się z zaledwie 8 unikalnych znaków, za pomocą których implementuje się jakikolwiek kod. Oryginalny kompilator stworzony przez Mullera korzystał z zaledwie 296 bajtów. 

Oto Hello World! w Brainfuck: 

++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.


A oto output: 

Kod uruchomiono przy użyciu tio.run

COW

COW został rozwinięty w 2003 roku przez Seana Herbera. Myślę, że gdy zobaczysz „Hello World!” w tym języku, to zrozumiesz, dlaczego tak go nazwano. 

Jeśli chodzi o poziom trudności, to COW jest całkiem podobny do Brainfuck. Ma jednak o 4 więcej unikalnych komend, niż poprzedni język. 

Oto Hello World! w COW. 

MoO MoO MoO MoO MoO MoO MoO MoO MOO moO MoO MoO MoO MoO MoO moO MoO 
MoO MoO MoO moO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO
  MoO MoO moO MoO MoO MoO MoO mOo mOo mOo mOo mOo MOo moo moO moO moO
moO Moo moO MOO mOo MoO moO MOo moo mOo MOo MOo MOo Moo MoO MoO
   MoO MoO MoO MoO MoO Moo Moo MoO MoO MoO Moo MMM mOo mOo mOo MoO MoO
MoO MoO Moo moO Moo MOO moO moO MOo mOo mOo MOo moo moO moO MoO
   MoO MoO MoO MoO MoO MoO MoO Moo MMM MMM Moo MoO MoO MoO Moo MMM
MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo mOo MoO Moo


A oto output: 

Kod uruchomiono przy użyciu tio.run

Whitespace

Whitespace został rozwinięty na University of Durham przez Chrisa Morrisa i Edwina Brady. Język ten wypuszczono na Prima Aprilis w 2003. 

Cały Whitespace polega na spacjach, tabulatorze i znaku końca linii, jeśli chodzi o pisanie jakiegokolwiek programu. Interpreter Whitespace’a ignoruje znaki, które nie są dla niego charakterystyczne i uznaje je za komentarze do kodu. 

Oto Hello World! w Whitespace: 

W poniższym kodzie każda Spacja, Tab, czy znak końca linii jest poprzedzony komentarzem ‘S’, ‘T’ oraz ‘L’. 


A oto wynik: 

Kod uruchomiono przy użyciu tio.run

Zabaw się

Jest jeszcze kilka takich języków. Zajrzyj do źródeł i poznaj je lepiej. 

Odwiedź tę stronę — zawiera ona kompilatory i tłumacze dla prawie wszystkich języków programowania. Skopiuj kod z danej strony i zacznij zabawę. 


Oryginał tekstu w języku angielskim przeczytasz tutaj

<p>Loading...</p>