Kouzelný jazyk, kouzelná hůlka

Jazyk čeština má deset druhů slov: podstatná jména (třeba "kniha"), přídavná jména (třeba "kouzelná"), zájmena, číslovky (třeba 0 a 3.14), slovesa (třeba sečti a spoj), a pak ještě příslovce, předložky, spojky, částice a citoslovce. Každá věta začíná velkým písmenem, pak jsou slova oddělená mezerami, a nakonec tečka ., vykřičník !, nebo otazník ?.


Sečti 0 a 3.14!

Spoj "kouzelná" a "kniha".

V jazyce čeština je stavba věty celkem složitá. Příklady vět výše zní kostrbatě a nejspíš by se použily spíše věty:


Prosím, sečti pro mě čísla nula a 3.14.

Co vznikne, když ke slovu "kouzelná" přidáš slovo "kniha"?

Kouzelný jazyk Racket má jen dva druhy slov: podstatná jména a slovesa. Podstatná jména ukrývají nějakou informaci. Třeba "kniha", "kouzelná", 0 a 3.14 jsou všechno podstatná jména kouzelného jazyka. Slovesa říkají, co se má s podstatnými jmény stát. Třeba + a string-append jsou slovesa kouzelného jazyka. Každá kouzelná věta začíná závorkou ( a hned po ní následuje sloveso. Potom jsou podstatná jména oddělená mezerami a úplně nakonec zase závorka ).


(+ 0 3.14)

(string-append "kouzelná" "kniha")

Aby čaroděj mohl v kouzelném jazyce vyjádřit, co chce, kromě slov a skladby věty (odborně syntax) potřebuje znát i význam slov (odborně sémantika), protože i když slova zná a vytvoří kouzelnou větu podle správných pravidel, výsledek nemusí dávat smysl. Věta


Prosím, sečti pro mě nulu a "kniha".

smysl nedává, stejně tak ani kouzelná věta


(+ 0 "kniha")

A nakonec je tu kouzelná hůlka, která umí vykonat kouzelné věty zapsané v kouzelném jazyce Racket. Kouzelná hůlka vykoná kouzelnou větu

tak, že se z ní stane


3.14

a z kouzelné věty


"kouzelnákniha"

Když kouzelná hůlka vykoná kouzelnou větu, výsledek je slovo kouzelného jazyka. Může to být podstatné jméno ukrývající informaci, kterou chtěl čaroděj získat. Nebo to může být sloveso, které čaroděj použije pro další čarování.

Protože výsledek vykonání kouzelné věty je slovo kouzelného jazyka, může čaroděj použít více jednodušších vět, aby vytvořil jednu dlouhou mocnou kouzelnou větu.


6.28

Jenže aby se vykonala kouzelná věta složená z menších, musí se nejprve vykonat ty menší. O to se už ale postará kouzelná hůlka.

Dialog s kouzelnou hůlkou

Kouzelná hůlka poslouchá, jestli po ní čaroděj něco nechce. Pokud ji čaroděj předá kouzelnou větu, kouzelná hůlka kouzelnou větu přečte a vykoná, vytiskne výsledek a pak čeká, až jí čaroděj předá nějakou další kouzelnou větu. Anglicky se Přečti, Vykonej, Vytiskni (výsledek), Opakuj řekne Read, Evaluate, Print, Loop, a tak se dialogu s kouzelnou hůlkou říká zkrátka REPL.

Screenshot DrRacket
REPL kouzelné hůlky DrRacket

REPL je ve vývojovém prostředí DrRacket prostor v dolní polovině. V následujících kapitolách se REPL používá pro sdílení kouzelných vět s kouzelnou hůlkou.

Podstatná jména: primitivní datové typy

Podstatná jména kouzelného jazyka uchovávají nějakou informaci. Jsou ale různé druhy informací, jako třeba desetinná čísla, celá čísla, nebo text, či pravdivostní hodnota: pravda nebo nepravda. S každým typem podstatných jmen je potřeba zacházet trochu jinak, a tak se pro každý typ podstatného jména hodí trochu jiná slovesa.

Pojmenování informací: definice proměnných

Když se stejná informace, třeba číslo nebo text, používá na více místech, hodí se si ji zapamatovat. To se nejlépe udělá tak, že se informace pojmenuje a její jméno se pak použije všude tam, kde je informace třeba.

Vykonat či nevykonat: predikáty a podmínkové výrazy

Když kouzelná hůlka vykoná kouzelnou větu, výsledkem je slovo kouzelného jazyka. A když je to slovo podstatné jméno a informace v něm ukrytá buď pravda, nebo nepravda, říká se, že ona kouzelná věta je predikát. (Je rozdíl mezi lží a nepravdou – nepravda je opak pravdy a lež je uvedení v omyl.)

Čarodějové často tvoří mocné kouzelné věty, ve kterých používají predikáty, aby na kouzelné hůlce nechali rozhodnutí, kterou z jednodušších vět vykoná kouzelná hůlka jako další. Takovým mocným kouzelným větám se říká podmínkové výrazy.

Nová slovesa: definice funkcí

Čaroděj občas ví, jakou kouzelnou větu by sestavil – jaké by použil sloveso a co by se mělo stát s podstatnými jmény, ale kouzelná hůlka žádné takové sloveso nezná. Pak čaroději nezbývá než kouzelnou hůlku nové sloveso naučit. Musí ale použít jen slovesa a podstatná jména kouzelného jazyka, kterým kouzelná hůlka rozumí.

Epilog dialogu s kouzelnou hůlkou

Máme za sebou čtyři kapitoly popisující základy kouzelného jazyka: jaká jsou podstatná jména a která slovesa se k nim hodí, jak pojmenovat konkrétní informace ukryté v podstatných jménech, rozhodování ponechané na kouzelné hůlce a jak kouzelnou hůlku naučit nová kouzelná slovesa.

Nedá se říci, že neprogramátor je teď čaroděj. Ještě chvíli potrvá, než dokáže v kouzelném jazyce plynule vyjádřit své myšlenky, než přijde na to, jaké myšlenky to vlastně mají být, než se naučí čarodějnické triky ověřené staršími generacemi, jak zaznamenat a zkontrolovat kouzelné věty a jak spolupracovat s ostatními čaroději.

Neprogramátor by ale měl už vědět, cože to to programování-čarování vlastně je, že je to vytváření kouzelných vět, které vykoná kouzelná hůlka, a měl by umět přečíst a rozumět jednoduchým větám kouzelného jazyka.

Poslední věc, kterou se snad neprogramátor naučil, je, že kouzelné (programovací) jazyky se liší. Liší se skladbou kouzelné věty a kouzelnými slovy a jejich významem. Z toho plyne, co by měl neprogramátor hledat, setká-li se s novým kouzelným jazykem: skladbu věty, význam slov, co jsou podstatná jména a která slovesa se k nim hodí, jak podstatná jména pojmenovat, jak funguje rozhodování a jak tvořit nová kouzelná slovesa.

Kouzelných (programovacích) jazyků je hodně (moc velká spousta). Pro zajímavost:

Kouzelné čtení

Jazyk je jeden ze způsobů, jak se dají sdílet myšlenky. Použije se při mluvení a poslouchání a psaní a čtení. To, že kouzelná hůlka dokáže vykonat věty zapsané v některém z jazyků, neovlivňuje možnost sdílet v jazyce myšlenky. Vykonání kouzelné věty kouzelnou hůlkou ale souvisí s tím, jak se dá s myšlenkami vyjádřenými v kouzelném jazyce pracovat, protože dost práce udělá právě kouzelná hůlka.

Zde se hodí zopakovat, že kouzelný jazyk Racket má jen dva druhy slov: podstatná jména a slovesa. Podstatná jména ukrývají nějakou informaci. Třeba "kniha", "kouzelná", 0 a 3.14 jsou všechno podstatná jména kouzelného jazyka. Slovesa říkají, co se má s podstatnými jmény stát. Třeba + a string-append jsou slovesa kouzelného jazyka. Každá kouzelná věta začíná závorkou ( a hned po ní následuje sloveso. Potom jsou podstatná jména oddělená mezerami a úplně nakonec zase závorka ).

A tady je několik myšlenek o nekouzelném světě zapsaných ve větách kouzelného jazyka:


CC BY-SA 4.0 neprogramator.cz