O czarodziejach
Żartobliwie linkowałem przedwczoraj w komentarzu okładkę klasycznego podręcznika akademickiego "Struktura i interpretacja programów komputerowych", najczęściej znanego pod skrótem angielskiego tytułu, czyli "SICP". Funkcjonuje też określenie "Wizard Book", czyli książka z czarodziejem. Eric S. Raymond wyjaśnia w swoim słowniku żargonu hakerskiego, że to ze względu na "czarodzieja" na okładce. Przy okazji nazywa też książkę "biblią" pewnego informatycznego środowiska, związanego z funkcyjnymi językami Scheme i Lisp. Tu okładka jeszcze raz:
Jak można przeczytać z tyłu książki, ryciny pochodzą z francuskiego dzieła Paula Lacroix i Ferdinanda Seré "Le moyen äge et la renaissance". Konkretniej z rozdziału o chemii i alchemii w drugim tomie, gdzie obie postacie, przedstawione w ramach pocztu alchemików, wyglądają tak:
Postać z lewej, czyli ten "czarodziej" to Hermes Tresmegistos, ten od hermetyzmu - synkretyczne połączenie greckiego Hermesa, egipskiego Thota, żydowskiego mistycyzmu i kto wie kogo lub czego jeszcze; ważne, żeby było tajemniczo. Sferę armilarną w ręku Hermesa wypełniono na okładce (progra)mistycznymi zaklęciami "eval" i "apply", to znaczy dwoma kluczowymi funkcjami języka programowania Scheme.
Postać z prawej to Rajmund Llull, którego dzieło "Ars Magna" przedstawia się czasem jako wyprzedzającą jego epokę o całe wieki zapowiedź informatyki. Dążyć miał w nim do opracowania metody uogólnienia, automatyzacji, a nawet mechanizacji rozumowania. Jak uzupełnił Magazynier, Rajmund Llull to poza potencjalną ikoną alchemii czy informatyki także błogosławiony Kościoła rzymskokatolickiego, którego imieniem ochrzczono świętego Maksymiliana Kolbe. Autorów tak ryciny, jak i podręcznika interesowały jednak w jego przypadku inne znaczenia, choć u tych ostatnich również mogące skojarzyć się z Kościołem.
Spowitą płomieniem salamandrę Llulla zastąpiono na okładce grecką literą lambda (λ). Służy ona jako logo języka Scheme oraz ogólnie jako popularny symbol wśród amatorów języków funkcyjnych. Wynika to z faktu, że języki te zainspirowane są rachunkiem lambda, czyli systemem formalnym istotnym w algorytmice i teorii obliczalności. Rachunek lambda to uniwersalny model obliczeniowy, a więc w pewnym sensie nowoczesne wcielenie llullowego "Ars Magna". Opracował go promotor Alana Turinga, profesor Alonzo Church (tu to wspomniane, bardzo płytkie, skojarzenie z Kościołem).
Z położenia postaci na okładce można by zgadywać, że "czarodziej" oświeca tą swoją lambdą młodzieńca. No właśnie - młodzieńca, bo Llull wygląda na tej rycinie bardzo młodo. Trochę to zagadkowe, bo na większości ilustracji, jakie znalazłem, Rajmund Llull jest starcem z brodą. Według Wikipedii broda jest wręcz jednym z jego atrybutów. A niektórzy czytelnicy podręcznika widzą nawet na okładce postać kobiecą. Skoro już wspomniałem Magazyniera, to dodam, że niedawno zaskoczył mnie, biorąc na tapet wypowiedź z serwisu Quora. Postąpię podobnie i pozwolę sobie przełożyć (dodając objaśniające linki) interpretację okładki z programistycznego serwisu Stack Overflow:
- Panna reprezentuje programowanie funkcyjne. Jest panną (tzn. dziewicą), ponieważ programiści funkcyjni nie mogą robić niczego, co ma efekty uboczne.
- Stół reprezentuje język COBOL. Dlatego ma nogę demona.
- Czarka reprezentuje bogactwo, które spoczywa na COBOLu, ponieważ COBOL przynajmniej nadaje się do pisania aplikacji biznesowych.
- Stół kusi pannę, by porzuciła Lispa i napisała coś, z czego ktoś faktycznie skorzysta. Dlatego wskazuje ona na stół. Czarodziej próbuje ją od tego odwieść.
- Ostre narzędzia w ręku czarodzieja posłużą zabiciu panny, jeśli nie posłucha. (Programiści funkcyjni denerwują się w obecności COBOLa).
Nieco poważniej, interpretacji z czarodziejem oświecającym młodzieńców i dziewice dodaje mocy fakt, że podręcznik powstał jako akompaniament do słynnej serii wykładów (dostępnej online) prowadzonych na MIT przez jego autorów, profesorów Hala Abelsona i Geralda Jay Sussmana. Sporo w tych wykładach popisowości. Na planszy przed nagraniami wykładów widać czarodzieja, a Abelson otwiera pierwszy z nich, zapisując na tablicy słowa "Computer Science", a następnie energicznie je skreślając. Zdarzają się też odniesienia do mistycyzmu i orientalne przebieranki, to znaczy fez Sussmana. Wszystko to odegrało rolę w uczynieniu wykładów i książki kultowymi w pewnych środowiskach. Przyczyniło się też jednak do tego, że amatorzy języków funkcyjnych mają famę czegoś w rodzaju mistycznego, przekonanego o własnej wyższości kultu. Skutkuje to kpinami jak ta cytowana powyżej. Sam wykłady obejrzałem kiedyś za czasów studenckich, a książkę i zdanie na te tematy posiadam, ale o tym może kiedy indziej.
Tekst sobotni, eklektyczny (synkretyczny?) i luźny, bo na spójny nie było czasu. Zresztą wszyscy zajęci są dziś targami w Ojrzanowie, które jak mam nadzieję idą świetnie!
P.S.
Z polskich wydań coś tę symbolikę wykrojono: https://tezeusz.pl/struktura-i-interpretacja-programow-komputerowych-harold-abelson
tagi: informatyka alchemicy programowanie hermetyzm
![]() |
tomasz-kurowski |
6 lipca 2024 18:45 |
Komentarze:
![]() |
MarekBielany @tomasz-kurowski |
6 lipca 2024 23:30 |
To dość dalekie od zwykłego kodowania tych tam ...
P.S.
Wszyscy znamy zasady zaokrąglania liczby. Powyżej 0,5 na plus, a poniżej na minus.
Z kursu na PW metod numerycznych, załoga z WAT wprowadziła zasadę dla rozwiązywania zadań:
parzyste na plus, nieparzyste na minus ?
Jest pytaniem do czasu spotkania z zerem i jedynką.
![]() |
ArGut @tomasz-kurowski |
7 lipca 2024 00:03 |
W języku polski jest czarodziej i już. Język angielski ma sorcerer-a, wizard-a czy witcher-a. Ci pierwsi mogą się kojarzyć z programowaniem ... Sorcerer z source - kod źródłowy a wizard z asystentem pomocy czy asystentem tworzenia ...
Pan Rajmund Llull zrobił na mnie duże wrażenie, szczególnie stwierdzenie, że prawda filozoficzna i prawda teologiczna to nie to samo. Na to nakłada się koncepcja funkcji znana z działu matematyki nazywanego analizą. F-cja matematyczna na taką ZALETĘ, że dla f(x1)=y1 przy każdym "wywołaniu". W programowaniu nie funkcyjnym, to wcale nie jest takie oczywiste.
![]() |
gabriel-maciejewski @tomasz-kurowski |
7 lipca 2024 07:32 |
Targi idą świetnie, ale ludzi mogłoby być więcej. Może dziś przyjdą jacyś nowi
![]() |
tomasz-kurowski @MarekBielany 6 lipca 2024 23:30 |
7 lipca 2024 15:34 |
Te różne metody zaokrąglania to ciekawa sprawa, bo ogólnie szukamy kompromisu i typu zniekształcenia danych, który jest dla nas najbardziej akceptowalny. A potem ta złożoność jest już ukryta przed kimś używającym naszego urządzenia do rozwiązywania problemów na jakimś wyższym poziomie abstrakcji.
W składaniu genomów, o którym pisałem niedawno, jest podobnie. W myśl tego, o co pytał Olekfara, ja jako osoba składająca genom mam różny stopień pewności co do różnych regionów złożonej sekwencji. Jednak już przed biologiem używającym tej sekwencji do jakiegoś eksperymentu te niuanse są z reguły ukryte, a przecież może się zdarzyć, że jakiś ciekawy gen jest akurat w dość podejrzanym regionie, który ledwo znalazł się w końcowej sekwencji.
Ot, abstrakcja :)
![]() |
tomasz-kurowski @ArGut 7 lipca 2024 00:03 |
7 lipca 2024 15:45 |
W języku polskim jest czarodziej i już (...)
Oj tam, a czarownik i czarnoksiężnik? Od razu bardziej złowieszczo i tajemniczo :) Gabriel we wczorajszym tekście użył pierwszego słowa; ja dla niepoznaki nieco ułagodziłem. Ale fakt, nie mamy dobrego odpowiednika żartu językowego z kodem źródłowym. W polskim tłumaczeniu Pratchettowego "sourcery" było "czarodzicielstwo", ale tam akurat o kod nie chodziło. Zresztą żarty Pratchetta pozostają w większości nieprzetłumaczalne.
Słabo znam tę postać, ale Rajmund Llull i jego dzieła na pewno zasługują na głębsze studia.
Programowanie funkcyjne jest bardzo użyteczne, tylko nie chciałem takich rzeczy roztrząsać w tym tekście. Atmosfera kultu, którą Abelson i Sussman pomagali tworzyć (z ewidentną premedytacją), jest intrygująca sama w sobie, niezależnie od szczegółów technicznych.
![]() |
tomasz-kurowski @gabriel-maciejewski 7 lipca 2024 07:32 |
7 lipca 2024 15:46 |
Super!
![]() |
MarekBielany @tomasz-kurowski 7 lipca 2024 15:34 |
7 lipca 2024 22:01 |
Pierwsza odpowiedź pooleciała ...
No właśnie. Byłem już dużym dzieckiem, kiedy usłyszałem o abstrakcji.
Dzięki krzemowej technologii możemy się komunikować. To chyba jest tylko rzut beretem/ruch powieki, do zbudowania na najmnieszej wspólnej wielokrotności (NWW) atomów (Si, B, P ... O. C przeszedł do innej ligi) najmniejszego tranzystora na płytce/waflu krzemu.