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.
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...