Neprogramátor/Čtyři kouzelné jazyky
Řešení problému v různých kouzelných jazycích obsahují příklady toho, jak pojmenovat podstatná jména, jak funguje rozhodování a jak tvořit nová kouzelná slovesa. Příklady řešení slouží jako ukázky skladby vět různých kouzelných jazyků a v tuhle chvíli není důležité jim rozumět, jen se na chvilku potrápit nad možným významem.
Podstatné jméno (číslo) 20 je pojmenované jako dvacet
a nové kouzelné sloveso větší-než
pracuje s jedním podstatným jménem (parametrem) číslo
: jestli je číslo
větší než dvacet
, kouzelné sloveso větší-než
vrátí nové podstatné jméno (text) "Větší je číslo."
, kde číslo
v textu je nahrazené konkrétní aktuální hodnotou; jinak vrátí "Větší je 20."
.
Pro otestování kouzelného slovesa větší-než
se použijí podstatná jména (čísla, argumenty) 11 a 27.
Řešení v kouzelném jazyce Racket (nebo Scheme) se dá spustit pomocí kouzelné hůlky DrRacket.
; Je větší 20 nebo číslo?
(define dvacet 20)
(define (větší-než číslo)
(if (> číslo dvacet)
(string-append "Větší je " (number->string číslo) ".")
(string-append "Větší je " (number->string dvacet) ".")))
(větší-než 11)
(větší-než 27)
Kouzelnou hůlkou pro kouzelný jazyk JavaScript je webový prohlížeč. Třeba ve Firefox stačí zmáčknout F12, přepnout na záložku "Konzole" a vést dialog s kouzelnou hůlkou. Většinou jsou ale věty kouzelného jazyka JavaScript součástí webových stránek.
// Je větší 20 nebo číslo?
var dvacet = 20;
function větší_než(číslo) {
if (číslo > dvacet)
return "Větší je " + číslo + ".";
else
return "Větší je " + dvacet + ".";
}
větší_než(11);
větší_než(27);
Některé kouzelné hůlky umí jen přečíst dopis a nelze s nimi vést dialog. Třeba kouzelný jazyk C je případ kouzelného jazyka, pro který existuje spoustu (hodně moc) kouzelných hůlek, ale jen s málokterou se dá vést dialog. Mimochodem, kouzelný jazyk C je legendární a je v něm napsáno hodně operačních systémů – programů, které jsou potřeba, aby se zařízení jako počítač dalo vůbec spustit.
/* Je větší 20 nebo číslo? */
#include <stdio.h>
#include <stdlib.h>
int const dvacet = 20;
char *
vetsi_nez(int const cislo)
{
char *str = (char *)malloc(100 * sizeof(char));
if (NULL == str) {
exit(1);
}
if (cislo > dvacet) {
sprintf(str, "Větší je %d.", cislo);
} else {
sprintf(str, "Větší je %d.", dvacet);
}
return str;
}
int
main()
{
char *str;
str = vetsi_nez(11);
printf("%s\n", str);
str = vetsi_nez(27);
printf("%s\n", str);
free(str);
str = NULL;
return 0;
}
Nakonec možné řešení problému v kouzelném jazyce Uiua. Nejen takové kouzelné jazyky existují.
# Je větší 20 nebo číslo?
Dvacet ← 20
VětšíNež ← ⊡>Dvacet
.11 # Tady nahradit za 27
Dvacet
□$"Větší je _."
□$"Větší je _.":
⊂:
°□VětšíNež:
Je třeba si uvědomit, že příklady jsou skutečně příklady řešení – jednoduchý problém lze ve stejném kouzelném jazyce vyřešit více způsoby, stejně jako třeba v češtině jde jednu informaci říci různě.