C/C++, C#, VB, Java, Perl, Delphi, Python, PHP... chyba nikt nie zaprzeczy, że terminy te są wśród programistów bardzo dobrze znane. Wymienione technologie oferują wiele różnych udogodnień i generalnie każda ma coś, czym może się szczycić lub przynajmniej - wyróżniać. Na licznych grupach dyskusyjnych, forach, konferencjach lub ot tak - przy kawie - deweloperzy wymieniają się doświadczeniami, dyskutują, kłócąc się często o to, który z języków jest najlepszy.
Tymczasem, po drugiej stronie przestrzeni zdarzeń, w rejonach pozbawionych błysku fleszy i uwagi ogółu, istnieją praktycznie nieznane szerszej publiczności byty. Nie powstały po to, by być wykorzystywane, rozwijane. Najczęściej są oscentacyjną manifestacją możliwości, realizacją często zwariowanego pomysłu. Wszystkim, którzy narzekają na technologię, w której pracują, polecam małą refleksję: co byłoby, gdyby musieli zacząć programować w jednym z następujących wynalazków:
Brainfuck (Brainf*ck, BF)
Powstał około 1993 roku. Można w nim zaimplementować dowolny algorytm (zupełność w sensie maszyny Turinga), jednak jak sugeruje jego nazwa - nie jest to proste. Nic dziwnego - celem nie była czytelna składnia, tylko jak najmniejszy kompilator (240 bajtów). Program "Hello world" wygląda w BF tak:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++.
.+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
Whitespace
Język ten to swoisty protest przeciwko ignorowaniu przez inne języki programowania tzw. białych znaków (spacji, tabulacji, znaków końca linii). Twórcy whitespace`a zadają pytanie: czy to, że tych znaków nie widać oznacza, że ich tam nie ma? W proteście przeciwko takiemu stanowi rzeczy - aby przywrócić równowagę - postanowili, że składnię ich języka będą tworzyły wyłącznie: spacja, tabulacja i nowa linia. Przykładowy kod:
To jedyny język, którego kod może być drukowany bez konieczności posiadania tuszu/tonera w drukarce. Ponadto raz zadrukowana kartka może być używana wielokrotnie.
Malbolge
Niektórzy twierdzą, że jest to absolutnie najtrudniejszy język programowania. Instrukcji języka Malbolge nie można zapisać wprost, jak to ma miejsce we wszystkich innych językach. Kod źródłowy nie jest tutaj bezpośrednio interpretowany, tylko podlega szeregowi operacji logiczno-arytmetycznych, zależnych dodatkowo od położenia danej sekwencji znaków ASCII względem pozostałej części kodu. Nic więc dziwnego, że jak dotąd najbardziej złożonym programem napisanym w tym języku był program drukujący na ekranie trzy szóstki. A prosos, nazwa tego języka pochodzi od nazwy 8 kręgu piekła z
Boskiej komedii Dantego. Jeżeli w piekle programują w Malbolge`u, to poziom informatyzacji jest tam pewnie niewielki. Poniżej przykładowy program:
(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**
hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<
BeFunge
W większości języków programowania kod źródłowy nie jest zorganizowany przestrzennie. W BeFunge mamy sytuację wręcz odwrotną. Na początek prosty program w BeFunge, który losuje liczbę (wygląd przybliżony):
vv < <
2
^ v<
v1<?>3v4
^ ^
> >?> ?>5^
v v
v9<?>7v6
v v<
8
. > > ^
^<
Język ten jest bardzo intuicyjny. Występują w nim specjalne instrukcje strzałkowe (<, >, v, ^), dzięki którym w prosty sposób można sterować przejściem. To język wręcz stworzony dla operacji iteracyjnych.
Warto byłoby pewnie wspomnieć jeszcze o innych językach ezoterycznych, jak np. SMETANA czy Whirl. Nie mniej jednak prezentacja nawet kilku nietypowych realizacji pokazuje, że na świat programowania należy patrzeć w maksymalnie szerokim spektrum.