Neprogramátor/Čtyři kouzelné jazyky

Z Wikiknih

Ř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ě.