Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Ezoteryczne języki programowania, część 2

Zachęcony pozytywnymi komentarzami do poprzedniego wpisu przedstawiam drugą dawkę niecodziennych języków programowania ;)

HQ9+

Uważacie, że 8 instrukcji dostępnych Brainfuck'u to mało? Przedstawiam Wam język, który zawiera jedynie 4 instrukcje. Jakie? Do tego zaraz. Zapewne większość z programistów naukę języka zaczyna od sławetnego "Hello World". Nieważne ile języków umiecie i w ilu mieliście okazje wyświetlić Hello World, chyba w żadnym nie jest to tak proste jak w HQ9+. Oto cały kod programu:

H

Tak, to już wszystko ;) Język ten składa się z instrukcji:
H - wyświetla "Hello World" ;) Twórca tego języka idzie na rękę uczącym się ;)
Q - wyświetla cały kod źródłowy programu
9 - wyświetla tekst piosenki "99 Bottles of Beer on the Wall"
+ - zwiększa o 1 akumulator.

r   e   k   l   a   m   a

Wystarczy nauczyć się nazwy, by znać cały język ;) Teraz porównajcie sobie program "99 Bottles of Beer on the Wall" w HQ9+ z tym samym programem z Malbolge (w poprzednim wpisie). Co ciekawe, jest też obiektowa wersja HQ9+, pod nazwą HQ9++. Instrukcją ++ tworzymy nowy obiekt podklasy :)
Dla chętnych, pod adresem http://www.almnet.de/esolang/hq9plus.php dostępny jest interpreter HQ0+ online :)

Chef

Zdarza się Wam siedzieć po nocach nad skomplikowanym kodem programu wysłuchując protestów swojego żołądka? I ten odwieczny dylemat-odejść od komputera i coś zjeść? Jeśli tak to co? Oto język który być może rozwiąże wasze problemy i zainspiruje do gotowania :)
W tym języku bardziej gotujemy, niż programujemy. Całość programu tworzona jest niczym przepis kulinarny. Podajemy nazwę dania (programu), spisu składników (zmiennych) potrzebnych do naszej potrawy, oraz sposobu przyrządzenia (instrukcje kodu). I tak oto kod

33 potatoes

deklaruje nam zmienną ziemniakową o wartości 33 :) A oto cały kod na Hello World:

 Hello World Souffle.
 
 Ingredients.
 72 g haricot beans
 101 eggs
 108 g lard
 111 cups oil
 32 zucchinis
 119 ml water
 114 g red salmon
 100 g dijon mustard
 33 potatoes
 
 Method.
 Put potatoes into the mixing bowl.
 Put dijon mustard into the mixing bowl.
 Put lard into the mixing bowl.
 Put red salmon into the mixing bowl.
 Put oil into the mixing bowl.
 Put water into the mixing bowl.
 Put zucchinis into the mixing bowl.
 Put oil into the mixing bowl.
 Put lard into the mixing bowl.
 Put lard into the mixing bowl.
 Put eggs into the mixing bowl.
 Put haricot beans into the mixing bowl.
 Liquefy contents of the mixing bowl.
 Pour contents of the mixing bowl into the baking dish.
 
 Serves 1.

Smakowite, prawda? A wyobraźcie soie przykładowo program "Liczby Fibonacciego z sosem karmelowym" ;)
Dla głodnych tematu polecam poczytać pełny opis języka http://www.dangermouse.net/esoteric/chef.html :)

Ook

Czy jest z nami jakiś orangutan? Jeśli tak, to zaraz poczuje się jak w domu. Często zdarza się, że kod większych projektów przypomina dżunglę znaków, ale dzięki temu językowi przypominać będzie jeszcze bardziej :) Ale zanim przejdę do opisu, przybliżę Wam komu jest on poświęcony. Być może ktoś z Was zna autora książek z cyklu Świata Dysku, Terry'ego Pratchetta. Dla niewtajemniczonych, jest to cykl książek fantasy, ale nastawionych na humor i satyrę naszego (realnego) świata i jego elementów (religii, polityki itp.). Jest w nim magiczna biblioteka, której bibliotearz w skutek wyładowań elektrycznych zamienił się w orangutana :) Jego słownik składa się jedynie z 'Ook' mówionym w różny sposób :)
Dlatego też w tym języku, są jedynie 3 elementy składni:
Ook.
Ook?
Ook!
Które łączy się w pary, dzięki czemu uzyskuje się instrukcje. Sama logika języka jest podobna do BrainFucka:

Ook. Ook? - zwiększa wskaźnik o 1
Ook? Ook. - zmniejsza go o 1
Ook. Ook. - zwiększa o 1 bajt w bieżącej pozycji
Ook! Ook! - zmniejsza o 1 bajt w bieżącej pozycji
Ook. Ook! - pobiera znak i wstawia go w bieżącej pozycji
Ook! Ook. - wyświetla znak
Ook! Ook? - rozpoczęcie pętli while
Ook? Ook! - zamknięcie instrukcji które są w pętli 

Zgodnie z tradycją, podaję także kod hello world:

Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook.
Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. 

LOLCODE

Na koniec język iście dla nastolatków. Przed programowaniem powinniśmy założyć luźne spodnie i wywalić nogi na stół. Całość programu piszemy w...slangu. Dlatego też każdy program zaczynamy przywitaniem HAI. Po tym ładujemy biblioteki przez CAN HAS [biblioteka]?. Dzięki VISIBLE [TEKST] możemy wypisać jakiś tekst a program kończymy pożegnaniem KTHXBYE. Oczywiście mamy do dyspozycji także inne instrukcje takie jak:

I HAS A zmienna - deklaracja zmiennej
    LOL zmienna R wartość – przypisanie wartości do zmiennej
    BTW komentarz – komentarz
    INVISIBLE – zwracanie błędu
    IM IN YR nazwa – rozpoczynanie pętli
    KTHX – zakończenie pętli
    GTFO lub ENUF – przerwanie pętli
    IZ – instrukcja warunkowa

Czujecie się dzięki takiemu programowaniu bardziej "na fali"? :)
Jeszcze tylko wzór programu na hello world:


HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE

Co ciekawe, powstało też połączenie tego języka z...pythonem. Zainteresowanych zapraszam na http://www.dalkescientific.com/writings/diary/archive/2007/06/01/lolpy...  

Komentarze