Szukaj Pokaż menu
Witaj nieznajomy(a) zaloguj się lub dołącz do nas
…NIECODZIENNIK SATYRYCZNO-PROWOKUJĄCY

Ezoteryczne języki programowania, których nie nauczą cię na polibudzie

84 666  
641   99  
Ezoteryczne języki programowania, jak sama nazwa wskazuje, znane są jedynie nielicznym, najbardziej świrniętym programistom, którzy zamiast normalnie pracować w IT albo innym korpo, poświęcili swoje życie w imię zer i jedynek. I jak się okaże za chwilę, również dwójek (sic!)

#0. Wstęp dla niezorientowanych

(Jeśli nosisz okulary albo kiedykolwiek miałaś chłopaka informatyka możesz spokojnie przejść dalej)

Szybki skrót najważniejszych pojęć dla ludzi z dobrym wzrokiem.
Język programowania: zbiór komend i poleceń służących do mówienia komputerowi co ma robić.
Zmienna: struktura pozwalająca nam na przechowywanie jakiejś wartości
Funkcja: polecenie bądź zbiór poleceń robiące co sobie nasza dusza zapragnie ze zmiennymi.
Pętla: Funkcja, która wykonywać będzie się określoną ilość razy lub do momentu aż nie nastąpi jakiś warunek zadany przez nas na początku.
Biblioteka: Zbiór funkcji, dołączana w razie potrzeby do programu.
Program "Hello World!": Pierwszy program, jaki trzeba napisać w trakcie nauki nowego języka. Służy on również do pokazania podstawowej składni danego języka. Robi on ni mniej, ni więcej, tylko wypisuje na ekranie (w konsoli) napis "Hello World!". W C, jednym z najbardziej popularnych języków wygląda on tak:



Było nudno, teraz będzie ciekawiej.

#1. Brainfuck...



...czyli pokazanie środkowego palca zdrowemu rozsądkowi każdego programisty. Ale o co chodzi? Otóż okazuje się, że w 1993 roku pewien Niemiec znudzony już denerwowaniem ludzkości "logicznym i prostym" językiem niemieckim postanowił wkurzyć ich tworząc najbardziej popaprany język jaki widział świat. Mając na uwadze swoją ideę, spojrzał na klawiaturę komputera i jak najszybciej wyrzucił wszystkie litery i cyfry. Pozbył się spacji i entera jako bardzo popularnych, użytkowych klawiszy. To co zostało, wywołało uśmiech na jego twarzy. "Wunderbar!" zakrzyknął i wstukał kolejno 8 znaków z klawiatury:
> < - . , [ ]
I tak powstał Brainfuck. Dozwolone jest używanie jedynie tych ośmiu znaków, każdy inny będzie traktowany jak komentarz. Każdy znak ma przypisaną, niezmienną instrukcję, np. > i < to odpowiednio zwiększanie i zmniejszanie wskaźnika. Brzmi hardo? Sprawdźmy, jak wygląda "prosty" program napisany w Brainfucku, czyli Hello World:

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

Po uruchomieniu tego programu dostaniemy oczywiście konsolę z napisem "Hello World!"
Popisać w Brainfucku można spróbować tutaj.

#2. Shakespeare



Nie, nie powstał w XVI wieku gdzieś w Anglii, choć jako jedyny przedstawiciel języków programowania byłby wtedy rozumiany. Może nawet ktoś wystawiłby na scenie napisany w nim program. Bo w sumie czemu nie, jeśli kod programu wygląda jak strony z dramatu Szekspira? Bo taka właśnie idea przyświecała autorom tego projektu. Najpierw rzućmy okiem na fragment programu Hello World:

Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
Ophelia, a remarkable woman much in dispute with Hamlet.
Hamlet, the flatterer of Andersen Insulting A/S.

Act I: Hamlet's insults and flattery.
Scene I: The insulting of Romeo.
[Enter Hamlet and Romeo]
Hamlet:You lying stupid fatherless big smelly half-witted coward! You are as stupid as the difference between a handsome rich brave hero and thyself! Speak your mind!
You are as brave as the sum of your fat little stuffed misused dusty
old rotten codpiece and a beautiful fair warm peaceful sunny summer'sday. You are as healthy as the difference between the sum of the
sweetest reddest rose and my father and yourself! Speak your mind!
You are as cowardly as the sum of yourself and the difference
between a big mighty proud kingdom and a horse. Speak your mind.Speak your mind!
[Exit Romeo]

Pomysł tak prosty, jak głupi. Zmienne nazywamy jak chcemy (choć w tym przykładzie nazwano je imionami bohaterów dramatów Szekspira) i nadajemy im wartości za pomocą rzeczowników. Ładne rzeczowniki, takie jak kot albo słonko, mają wartość 1, natomiast rzeczowniki brzydkie, jak błoto, smród, mają wartość -1. Wszystkie rzeczowniki neutralne również przyjmują wartość 1. Każdy przymiotnik podwaja wartość rzeczownika. A więc np. JoeMonster, a funny handsome man spowoduje, że JoeMonster przyjmie wartość 4.

#3. Malbolge



Swoją nazwę wziął od 8. kręgu piekła z "Boskiej Komedii" Dantego. Wnioski są dwa. Programiści świry lubią czytać klasyczne utwory, to raz. Dwa, że Malbolge do najłatwiejszych raczej nie należy. O ile w Brainfucku mieliśmy jasno określone instrukcje dla każdego znaku, tak Malbolge sam sobie wybiera co poszczególne znaki będą robić w zależności od wyglądu reszty programu. Mówiąc prościej, po napisaniu programu będzie on modyfikowany, a to w jaki sposób będzie modyfikowany i co się w nim zmieni zależy od tego, jak wyglądał na początku. Wcale nie brzmi prościej, ale o to dokładnie chodziło autorowi pomysłu. Ma być trudno. Sprawy nie ułatwia fakt, że w Malbolge operujemy nie na liczbach w systemie dwójkowym, a w systemie trójkowym (korzystając oczywiście z wirtualnej maszyny). A więc nie ma już tradycyjnych zer i jedynek, bo do szeregu dołączyły dwójki. Oczywiście to nie jedyne utrudnienia i przeszkody, jednak są one bardzo trudne do zrozumienia, a co dopiero do rozwiązania. W związku z tym do pracy zaprzęgnięto komputery. Programy piszące programy - trochę niepokojąco to brzmi. A teraz kilka wersji programu Hello World w języku Malbolge. Czemu kilka? Bo brak w tym języku jednoznaczności. Różne z pozoru programy mogą zostać zmodyfikowane do tej samej postaci:

lub równoznaczna wersja:

#4. Whitespace

Czasem każdego z nas nachodzi ochota na zrobienie czegoś głupiego. Tylko po to, żeby zobaczyć co się stanie. Tak najprawdopodobniej powstał język Whitespace. Znaków do wykorzystania mamy jeszcze mniej niż w Brainfucku, bo aż 3. Czyli wszystkie tzw. "białe znaki", czyli spacja, tabulacja, znak nowej linii. Czyli po ludzku: spacja, tab, enter. Każdy znak albo konkretne zestawienie znaków po kolei ma przypisaną konkretną instrukcję. Jak niektórzy z Was się domyślają, kod programu Hello World (jak i każdego innego) nie będzie powalał:

A tak serio, da się to zobrazować (niebieskie - tab, czerwone - spacja):

#5. LOLCODE


Mój absolutny faworyt w tym zestawieniu. Pomysłowy, zabawny, w pełni funkcjonalny. Czego chcieć więcej od faceta? Czasem trochę powagi, a tego LOLCODE nie ma.
Zacznijmy tym razem od tego, jak wygląda kod programu Hello World:

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"\r\n
KTHXBYE

Każdy program rozpoczyna instrukcja HAI, a kończy KTHXBYE. Znaczenie dla każdego, kto w internecie jest dłużej niż od wczoraj myślę, że jest jasne.
Następny program pozwala nam na otwarcie pliku i wypisanie go:

HAI
CAN HAS STDIO?
PLZ OPEN FILE "LOLCATS.TXT"?
AWSUM THX
VISIBLE FILE
O NOES\r\n
INVISIBLE "ERROR!"
KTHXBYE

Na uwagę zasługują instrukcje AWSUM oraz O NOES, które zostaną wykonane w przypadku powodzenia lub niepowodzenia, w tym wypadku otwierania pliku.
Prosta instrukcja warunkowa: jeśli coś, to zrób to, jeśli nie, to zrób coś innego:

O RLY?
YA RLY
BTW tutaj coś
NO WAI
BTW tutaj coś innego
OIC

Warto zwrócić uwagę również na BTW. Oznacza on po prostu komentarz.

#6. Podziękowania!

Dziękuję wszystkim, którzy wytrwali do końca i zaznaczam jednocześnie, że jest to mój pierwszy artykuł. Wyrozumiałość i konstruktywna (lub nie) krytyka mile widziane. Obiecałem go jakiś czas temu:


i obietnicę spełniam.
13

Oglądany: 84666x | Komentarzy: 99 | Okejek: 641 osób

Dobra, dobra. Chwila. Chcesz sobie skomentować lub ocenić komentujących?

Zaloguj się lub zarejestruj jako nieustraszony bojownik walczący z powagą
Najpotworniejsze ostatnio
Najnowsze artykuły

25.04

24.04

Starsze historie

Sprawdź swoją wiedzę!
Jak to drzewiej bywało