zabawa (i szaleństwo) ezoterycznych języków programowania

ezoteryczny język programowania jest językiem programowania zaprojektowanym w celu zakwestionowania norm projektowania języka. Jest to język zaprojektowany, aby pokazać punkt. Chodzi o wszystko: samo wyzwanie stworzenia czegoś niezwykłego, wymyślenia żartu, stworzenia języka jako ekspresji artystycznej, przetestowania obiecujących pomysłów na programowanie itp.

powinno to jasno pokazać, że nie ma łatwego sposobu na właściwą kategoryzację lub uporządkowanie wszystkich różnych ezoterycznych języków programowania, ponieważ z definicji sprzeciwiają się one zasadom. Ale moglibyśmy użyć kilku koncepcji i zasad organizacji, aby lepiej zrozumieć społeczność wokół nich. Abyśmy mogli zrozumieć, do czego ludzie ich używają, lub wykorzystać te informacje jako inspirację do stworzenia własnego ezoterycznego języka.

kilka użytecznych pojęć

Turing Tarpit

Turing tarpit jest językiem programowania, który jest kompletny, ale praktycznie bezużyteczny. Kompletny język Turinga może symulować każdą maszynę Turinga. W praktyce, można napisać dowolny program z nim. Teoretycznie więc wszystkie takie języki są równie potężne, ale te, które są również Tarpitem Turinga, ogromnie utrudniają napisanie jakiegokolwiek programu. Powszechnym sposobem na to jest zmniejszenie liczby dostępnych symboli: spróbuj napisać nawet program Hello World z tylko 8 znakami.

Quine

quine jest programem, który produkuje jako wyjście kopię swojego kodu źródłowego. Program nie może być pustym programem, nawet jeśli pusty program jest poprawnym programem w określonym języku. Odczyt kodu źródłowego z dysku lub pamięci jest również uważany za oszustwo. Nazwa” quine „została ukuta przez Douglasa Hofstadtera w jego książce Gödel, Escher, Bach: wieczny złoty warkocz, na cześć filozofa Willarda Van Ormana Quine’ a. Tak więc koncepcja quine ’ a nie jest unikalna dla ezoterycznych języków programowania, ale mimo to jest typowym pierwszym wyzwaniem do pokonania podczas pisania.

Code Golf

code golf to rodzaj zawodów, w których celem jest napisanie możliwie najkrótszego programu, który implementuje określony algorytm. W tym kontekście najkrótszy oznacza posiadanie najkrótszego kodu źródłowego. Nie oznacza to posiadania mniejszego rozmiaru binarnego kodu wykonywalnego. Gra w golfa nazywa się „Golf scripting”. Istnieją również wszelkiego rodzaju konkursy związane z programowaniem, które, biorąc pod uwagę publiczność, często zachęcają do kreatywnego oszukiwania. Ogólnie rzecz biorąc wyzwanie jest czynnikiem motywującym dla wielu ezoterycznych języków programowania.

zaciemnienie

pojęcie zaciemnienia, to znaczy ukrycia prawdziwego znaczenia wiadomości, nie jest oczywiście wyłączne dla ezoterycznych języków programowania, a nawet programowania w ogóle. Ma jednak duże znaczenie w wielu ezoterycznych językach programowania. Zwłaszcza, jeśli zamierzasz to w szerszym ogólnym sensie wprowadzać w błąd lub dezorientować odbiorcę. Nie ukrywasz wiadomości, ponieważ sama wiadomość jest ważna, ale dlatego, że ukryta forma jest sama w sobie celem. Typowym sposobem osiągnięcia tego celu jest zminimalizowanie liczby symboli języka, ale można również zamaskować język programowania w tym, co wygląda jak normalny tekst lub obraz.

Niedeterminizm

w tym szerszym znaczeniu mylenia lub mylenia odbiorców, niedeterminizm może być również użyty do osiągnięcia tego samego celu. Język niedeterministyczny to taki, dla którego, biorąc pod uwagę aktualny stan programu, nie zawsze można przewidzieć następny stan. Koncepcja ta ma pewne zastosowanie w normalnych językach programowania, głównie ze względu na nieprzewidywalne warunki w czasie wykonywania. Jednak w niektórych ezoterycznych językach programowania dochodzi do skrajności, poprzez losowanie zmiennych lub nawet losowanie samych instrukcji.

grupy ezoterycznych języków programowania

jak już powiedzieliśmy, nie możemy zapewnić wyczerpującego sposobu organizowania wszystkich ezoterycznych języków programowania. I nawet jeśli ktoś mógłby go znaleźć, wkrótce ktoś inny wynaleźłby nowe Ezoteryczne języki programowania tylko po to, aby uczynić go nieważnym. Staramy się więc po prostu zaoferować pewne grupy lub kategorie, aby lepiej zrozumieć i zgłębić świat ezoterycznych języków programowania.

  • języki o wartości obiektywnej, chociaż ta wartość niekoniecznie jest zewnętrza lub typowa. Podstawowym przykładem jest język przeznaczony do wygrania zawodów w golfa kodowego: jego wartość może być mierzona, ale nie ma znaczenia poza społecznością ezoterycznych języków programowania. Jednak bardziej użyteczne są te, które mają na celu osiągnięcie nietypowego celu, takiego jak ominięcie środków bezpieczeństwa (patrz JSFuck) lub zdefiniowanie języków typu 0 hierarchii Chomsky ’ ego (patrz Thue).
  • Są to języki, które są bardzo trudne w użyciu. Może to być wyraźny cel projektanta lub po prostu przypadek samego projektu. Użytkownik może nawet znaleźć zabawy do korzystania z nich przez jakiś czas. Typowym sposobem osiągnięcia języka, zarówno projektowo, jak i przypadkowo, jest minimalizm (Patrz Brainfuck). Ale jeśli chcesz czegoś prawie niemożliwego do użycia, potrzebujesz czegoś w rodzaju języka, który używa systemu trójdzielnego i celowo sam się zmienia, między innymi (patrz Malbolge).
  • języki do testowania pomysłu lub udowodnienia czegoś. Są to języki, które mogą nie być bezpośrednio użyteczne, ale są dobrym poligonem testowym dla nowej koncepcji lub do udowodnienia czegoś. Na przykład język, w którym programy są ułożone w dwuwymiarową siatkę (patrz Befunge) lub prawie czysty język funkcjonalny (patrz Unlambda)
  • . Są to języki, które zostały zaprojektowane z myślą o pewnej wartości artystycznej. Można argumentować, że są one faktycznie częścią grupy języków testowych lub tych, które mają obiektywną wartość. Umieściliśmy je w innej kategorii, ponieważ nie wyglądają jak programowanie, ale wyglądają ciekawie, nawet jeśli nie chcesz ich używać. Na przykład wyglądają jak Sztuka abstrakcyjna (patrz Piet) lub jak sztuka Shakespeare ’ a (Patrz Szekspir).
  • dowcipy. Są to języki wymyślone przez ludzi z dziwnym poczuciem humoru. Jak osoba, która mówi: „chcesz usłyszeć dowcip? – potem czyta wojnę i pokój, a potem kończy-całe nasze życie to żart!”. Przykładem jest język satyryczny, w którym nawet podręcznik odniesienia jest żartem (patrz INTERKAL)

niektóre godne uwagi języki Ezoteryczne

oczywiście nie jest to wyczerpująca lista godnych uwagi ezoterycznych języków programowania, ale skromniej lista kilku godnych uwagi ze względu na ich sukces lub specyfikę.

Befunge

główną ezoteryczną cechą Befunge jest to, że programy są rozmieszczone w dwuwymiarowej siatce. Jest to również język oparty na stosie i refleksyjny, więc pozwala programowi na zmianę samego siebie. Głównym celem było zaprojektowanie języka, dla którego stworzenie kompilatora było jak najbardziej trudne.

Oryginalna wersja, teraz nazywana Befunge-93, nie jest kompletna, ponieważ stawia limit 80×25 do rozmiaru siatki. Ale nowa wersja, o nazwie Befunge-98, usuwa ten limit i powinien być kompletny Turing. Befunge stworzył całą klasę wielowymiarowych języków, zwanych Fungeoid.

Befunge ma polecenia, które kontrolują kierunek w górę, w dół, w lewo, w prawo, a tym samym mogą również tworzyć cykl, wraz z bardziej tradycyjnymi poleceniami dla operacji wyjściowych, binarnych itp.

tak wygląda program Hello Word.

> vv ,,,,,"Hello"<>48*, vv,,,,,,"World!"<>25*,@

Brainfuck

prawdopodobnie najbardziej znany ze wszystkich ezoterycznych języków programowania, wyróżnia się ekstremalnym minimalizmem. Zarówno w ilości dostępnych poleceń, jak i w posiadaniu bardzo małego kompilatora. W rzeczywistości drugi warunek jest powodem pierwszego, ponieważ autor chciał stworzyć język z jak najmniejszym kompilatorem. Autor stworzył kompilator, który zużywał tylko 240 bajtów. Czasami później ktoś inny stworzył jeden z zaledwie 100 bajtów. Naturalną konsekwencją tego celu jest to, że język jest trudny w użyciu, choć jest kompletny. Krótko mówiąc, jest to tarpit Turinga.

czasami jest określany z cenzurowaną pisownią, taką jak Brainf*ck lub wiele innych odmian.

język składa się z ośmiu różnych poleceń, które manipulują wskaźnikiem danych i dwóch strumieni bajtów dla wejścia i wyjścia. Obsługuje również pętle. Inne znaki, oprócz tych reprezentujących polecenia, są uważane za komentarze i ignorowane przez kompilator.

oto przykład działania języka (zaczerpnięty z esolangs wiki).

Code: Pseudo code:>> Move the pointer to cell2 Set cell2 to 0 << Move the pointer back to cell0 End while

program Hello World wygląda tak.

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

jeśli chcesz dowiedzieć się więcej, możesz zobaczyć na odpowiedniej stronie Wikipedii lub stronie Esolangs.

INTERCAL

INTERCAL może nie był pierwszym ezoterycznym językiem programowania, ale z pewnością jest pierwszym znanym. Ile ma lat? Powstała w 1972 roku, a pierwsza implementacja została wykonana z kart perforowanych. Język ten miał być parodią, ale też stworzeniem czegoś zupełnie nowego, obcego dla świata programowania. Nazwa nie jest akronimem, według autorów:

pełna nazwa kompilatora to „język kompilatora bez Zaimkowego akronimu”, który z oczywistych powodów jest skrótem ” INTERCAL.”

reszta podręcznika Intercal Reference Manual (format PS) jest również pełna bezsensownych lub humorystycznych stwierdzeń. Dotyczy to zarówno języka, który opisują, jak i sposobu, w jaki to robią. Na przykład jest to sekcja o zmiennych

INTERCAL zezwala tylko na 2 różne typy zmiennych, 16-bitową liczbę całkowitą i 32-bitową liczbę całkowitą. Te
reprezentowane są przez spot ( . ) lub dwumiesięcznik (:), po którym następuje dowolna liczba od 1 do 65535,
włącznie. Zmienne te mogą zawierać tylko liczby nieujemne, dlatego mają odpowiednie zakresy wartości
: 0 do 65535 i 0 do 4294967295. Uwaga: .123 i 123 to dwie różne zmienne. Z drugiej strony,
.1 i .0001 są identyczne. Co więcej, ten ostatni nie może być zapisany jako 1E-3 .

język pozwala również na użycie modyfikatora PLEASE. Wymaga to jednak również użycia odpowiedniej ilości tego słowa kluczowego. Nie można go używać za mało lub za dużo, to znaczy trzeba pokazać odpowiednią ilość uprzejmości. Naprawdę niefunny jest to, że była to nieudokumentowana funkcja w oryginalnym podręczniku. Podręcznik żartu dla podręcznika żartu może być w porządku, ale to, że jest niekompletny, jest niedopuszczalne.

jest to Hello World w wersji INTERCAL zaimplementowanej w C: C-INTERCAL.

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

krótko mówiąc, INTERCAL to bardzo rozbudowany żart. Taki żart, który może prowadzić do podziwiania jego twórcy za jego wytrwałość lub do zwątpienia w jego zdrowie psychiczne, a może i jedno i drugie.

JSFuck

sukces Brainfuck pobudził tworzenie wielu języków pochodnych, zbyt wielu, by wymienić je wszystkie. Ale najbardziej godnym uwagi jest JSFuck.

JSFuck nie jest właściwym językiem, ale jest bardziej ezoterycznym stylem programowania Javascript, który wymaga użycia tylko 6 znaków. Powstałe programy są poprawnymi programami JavaScript i w rzeczywistości zostały wymyślone w celu ominięcia technik bezpieczeństwa, takich jak wykrywanie złośliwego oprogramowania. Jego właściwości sprawiły, że jest on również przydatny do zaciemniania kodu.

działa, ponieważ możesz obliczyć Dowolne wyrażenie w Javascript jako dowolny typ. Tak więc reprezentuje i pustą tablicę, ale poprzedzając ją +, możesz wymusić jej obliczenie jako liczby 0. Aby uzyskać literę typu a, możesz manipulować wartością false itd. Efektem końcowym jest niezwykle gadatliwy język: odpowiednik alert("Hello World!") ma długość 22948 znaków.

Malbolge

Malbolge to język zaprojektowany tak, aby był prawie niemożliwy do użycia:

poprzez kontrintuicyjną „szaloną operację”, bazową arytmetykę i samoczynny kod

w słowach własnego twórcy.

w rzeczywistości nawet autor nigdy nie napisał z nim programu roboczego. Pierwszy program został wygenerowany przez inny program, który zaimplementował heurystyczny algorytm wyszukiwania. Język Turinga nie jest kompletny i opiera się również na błędnym zapisie Malebolge, ośmiu kręgów piekła w Inferno Dantego Alighieri. Tak więc naprawdę nie ma żadnej odkupieńczej jakości.

Nie będę próbował tego opisywać, ponieważ całość jest wyraźnie ćwiczeniem frustracji. Jest jednak godna uwagi „szalona operacja”, o której warto wspomnieć: szyfrowanie. Język ma działać na trójwymiarowej maszynie wirtualnej i ma trzy rejestry, z których jeden zawiera wskaźnik do bieżącej instrukcji i nazywa się . Po wykonaniu instrukcji modulo 94 wartości w zastępuje to, co jest w , wynik jest szyfrowany zgodnie z tabelą szyfrowania. Witaj w piekle.

jakaś dzielna dusza stworzyła program Hello World.

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

Piet

Piet jest językiem, w którym programy są reprezentowane jako abstrakcyjne obrazy artystyczne, w stylu Pieta Mondriana. Jest oparty na stosie i Turing kompletny.

istnieje 18 kolorów uporządkowanych według odcienia i jasności, a także czerni i bieli. Te dwa ostatnie mają specjalne znaczenie i są używane do sterowania przepływem. Wykonanie programu opiera się na dwóch „wskaźnikach”: wskaźniku kierunku i wybraniu bloku kolorów. DP może wskazywać w górę, w dół, w lewo i w prawo, podczas gdy CC może wskazywać tylko w lewo i w prawo. Kombinacja tych dwóch wskaźników reguluje wykonanie programu: w zasadzie, który Blok koloru jest wykonywany dalej. Rozmiar bloku koloru reprezentuje liczbę całkowitą. Kiedy program przechodzi między różnymi blokami kolorów, ich różnica w odcieniu i jasności określa rodzaj wykonywanego polecenia. Polecenia są zwyczajowe, takie jak wyjście wartości, mnożenie, itd.

program Hello World ma pewne piękno.

Hello World in Piet Thomas Schoch

Szekspir

Szekspir jest językiem zaprojektowanym tak, aby mieć: „piękny kod źródłowy, który przypominał sztuki Szekspira”. Język ten ma niewiele poleceń i jest funkcjonalnie podobny do języka assembly, ale jest dość gadatliwy.

zmienne muszą być zadeklarowane w początkowej części, a ich nazwy muszą być poprawne. Zmienne te są stosami, na których później będą wykonywane operacje takie jak pop, push i input/output. Nazwy aktów i scen działają jako etykiety goto i przeznaczenie niektórych wyrażeń warunkowych. Znaki, czyli zmienne, muszą być wywoływane na scenie do manipulacji, a na scenie mogą być tylko dwie na raz.

linie Zwykle reprezentują stałe liczbowe: niektóre rzeczowniki i przymiotniki są konwertowane na wartości liczbowe.

Hamlet: You lying stupid fatherless big smelly half-witted coward!Juliet: You are as villainous as the square root of Romeo!

specjalne słowa, takie jak „Remember” lub ich kombinacje, takie jak „Speak your mind”, wykonują polecenia. Są to normalne polecenia, takie jak wypychanie wartości na znak stosu, wyprowadzanie wartości bieżącej zmiennej lub odpowiadającego jej znaku ASCII.

Instrukcja warunkowa jest reprezentowana przez pytanie z jednego znaku i odpowiedź z drugiego znaku, która określa, gdzie się udać, jeśli warunek pytania jest równy true.

Juliet: Am I better than you?Hamlet: If so, let us proceed to scene III.

Hello World jest tak długi i produktywny jak sztuka Szekspira.

The Infamous Hello World Program.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.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's day. 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! Scene II: The praising of Juliet.Hamlet: Thou art as sweet as the sum of the sum of Romeo and his horse and his black cat! Speak thy mind! Scene III: The praising of Ophelia.Hamlet: Thou art as lovely as the product of a large rural town and my amazing bottomless embroidered purse. Speak thy mind! Thou art as loving as the product of the bluest clearest sweetest sky and the sum of a squirrel and a white horse. Thou art as beautiful as the difference between Juliet and thyself. Speak thy mind! Act II: Behind Hamlet's back. Scene I: Romeo and Juliet's conversation.Romeo: Speak your mind. You are as worried as the sum of yourself and the difference between my small smooth hamster and my nose. Speak your mind!Juliet: Speak YOUR mind! You are as bad as Hamlet! You are as small as the difference between the square of the difference between my little pony and your big hairy hound and the cube of your sorry little codpiece. Speak your mind! Scene II: Juliet and Ophelia's conversation.Juliet: Thou art as good as the quotient between Romeo and the sum of a small furry animal and a leech. Speak your mind!Ophelia: Thou art as disgusting as the quotient between Romeo and twice the difference between a mistletoe and an oozing infected blister! Speak your mind!

Thue

Thue jest językiem programowania opartym na systemie przepisywania ciągów, zwanym systemem semi-Thue. Jest niedeterministyczny i podąża za paradygmatem programowania ograniczeń. Co oznacza, że zmienne są zdefiniowane w kategoriach constraint(np. coś jest prawdziwe lub fałszywe). To tarpit Turinga.

w przypadku Czw koszty są reprezentowane przez listę zasad zastępstwa w postaci:

<string>::=<replacement>

specjalne formaty tej formy reprezentują wejście, wyjście lub zakończenie listy reguł.

niedeterministyczny charakter języka można pokazać, wskazując dwa możliwe zamienniki tego samego ciągu. Na przykład:

  • piszesz regułę, która mówi, że ciąg a może być zastąpiony przez stupid
  • piszesz również regułę, która mówi, że ciąg a może być zastąpiony przez stupid
  • piszesz również regułę, która mówi, że ciąg a może być zastąpiony przez you are

gdy program jest uruchamiany, łańcuch a może zostać zastąpiony przez jedną z dwóch opcji.

po liście reguł następuje łańcuch, który reprezentuje stan początkowy.

o ile pisanie użytecznego programu może być trudne, typowy Hello World jest dość łatwy i zrozumiały, przynajmniej według standardów ezoterycznych języków programowania.

a::=~Hello World!::=a

Unlambda

Unlambda jest (prawie) czystym językiem funkcjonalnym zaprojektowanym, aby pokazać język czysto funkcjonalny (i prawdopodobnie jak niepraktyczny byłby to język). Opiera się na logice kombinacyjnej. Jest to kompletny Turing i pierwszy funkcjonalny tarpit Turinga. Opiera się na kilku funkcjach, Operator zastosuj ` (znak backquote) i obsługuje również wejście/wyjście. Technicznie działa tylko na funkcjach z jednym argumentem, ale funkcje wielowątkowe można przetłumaczyć na ciąg funkcji.

program Hello World wygląda prawie czytelnie.

`r```````````.H.e.l.l.o. .w.o.r.l.di

inne ciekawe języki Ezoteryczne

Fugue to język, który używa plików MIDI jako kodu źródłowego. Odstępy między każdą nutą są tłumaczone na określone tradycyjne polecenia, takie jak wejście/wyjście lub dodanie.

Beatnik to język oparty na stosie, który składa się z serii angielskich słów; białe spacje i interpunkcja są ignorowane. Słowa są konwertowane w tradycyjnych poleceniach zgodnie z ich wartością w grze Scrabble.

białe spacje to język żartów, w którym ważne są tylko białe znaki, takie jak tabulatory i spacje, a każdy inny znak jest ignorowany. Jest to oczywiście odwrotność zwykłego zachowania kompilatorów, które ignorują białe spacje. Biorąc pod uwagę te cechy, może być używany w programie poligloty, czyli programie, który jest ważny dla więcej niż jednego języka. O ile innym językiem nie jest Python, ani żaden język, w którym spacje mają znaczenie.

GolfScript to konkatenatywny język programowania przeznaczony do wygrywania zawodów kodowo-golfowych, który jest również kompletny.

Snowflake jest odwracalnym, samo-modyfikującym się językiem, w którym zarówno interpreter, jak i program są modyfikowane przy każdym uruchomieniu.

FRACTRAN to język, w którym programy są listą ułamków i liczbą początkową. Nie jestem pewien, co to robi, ale coś robi, ponieważ ma Stronę Wikipedii.

Iota i Jot to dwa języki formalne, każdy zaprojektowany jako najprostszy system formalny. Ze swej natury można je również uznać za równie minimalistyczne, Turinga, języki programowania. Oba używają tylko dwóch symboli i wykonują dwie operacje. Następca, o nazwie Zot, obsługuje również wejście / wyjście.

Entropia to bardzo trafnie nazwany język programowania zaprojektowany, aby zaakceptować pomysł rezygnacji z kontroli. Każde wyjście programu zostanie przybliżone i za każdym razem, gdy dane są dostępne, jest losowo modyfikowane. Język nie modyfikuje oryginalnego programu, więc przy każdym uruchomieniu wyjście będzie inne, ale stan początkowy zostanie zachowany. Ciekawym efektem ubocznym randomizacji danych jest Drunk Eliza, internetowa wersja klasycznego programu Eliza, w którym terapeuta wydaje się być pijany.

Monicelli to żart oparty na filmie komediowym moi przyjaciele. Typowy program wygląda jak seria bezsensownych włoskich zwrotów. Co zaskakujące, ma to sens, ponieważ film użyty jako inspiracja zawiera również bezsensowne zwroty. To krąg szaleństwa.

podsumowanie

świat ezoterycznego języka programowania jest równie ekscytujący, co szaleńczy: nie ma reguł, ale wiele ciekawych rzeczy. Mam nadzieję, że dałem ci trochę rozsądnego okna na to, czego możesz się spodziewać.

jeśli chcesz wiedzieć więcej lub uczestniczyć w tej społeczności, proponuję zajrzeć do Esolangs. Ta strona, wraz z Wikipedią, jest źródłem większości przykładów pokazanych w tym artykule. Można tam również znaleźć inspirację w liście pomysłów na ezoteryczny język programowania.

ciekawy może być również blog marca C. Chu-Carrolla w jego wielu wcieleniach na przestrzeni lat. Jak sugeruje nazwa Good Math, Bad Math, jest ona poświęcona głównie matematyce. Niemniej jednak ma również wiele analiz ezoterycznych języków programowania w serii zwanej patologicznym programowaniem (językiem). Można zobaczyć na przykład jeden poświęcony najmniejszemu językowi programowania.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Previous post domowe suszone kółka do cytrusów
Next post Krew i czekolada (2007)