Kryptický jazyk
Ve chvílích intenzivní strnulosti se mi v hlavě rodí nový jazyk. Programovací. Pochopitelně. Nikdo nemá náladu na další Lojban.
Líbí se mi s kryptičností hraničící stručnost jazyků jako APL, J, K nebo Q. V nich pár znaků zastane spoustu práce. Sice prakticky není možné dekódovat, co
má program dělat, ale aspoň je krátký. To nikdo nemůže popřít.
Co dělá tohle? x[⍋x←6?40]
? Nebo tohle (~R∊R∘.×R)/R←1↓ιR
? Nebo toto
X[⍋X+.≠' ';]
? Anebo tohleto life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}
?
Dejte mi týden a originální výtisk A Programming Language a seanci na hrobu
Kennetha Iversona a možná vám řeknu. Možná.
Chtěl bych něco, co se nese v podobném duchu, jen se to v něm nese méně.
Tenhle jazyk, který nedostal jméno a možná ho nikdy nedostane, začal jako dumání nad tím, jak využít prostředky přirozeného jazyka k zápisu programového kódu. Postupně se od prvotní vize odchýlil a jeho současná podoba (jen myšlená, virtuální stroj existuje pouze v mojí hlavě) stojí na těchto bodech:
- Začni zleva, pošli to doprava. Program by se měl číst jako běžný text a jako ten by měl být v co největší míře lineární, kdy se není třeba vracet zpátky. Co se stane později, se musí nacházet víc vpravo a data putují zleva doprava.
- Interpunkce namísto závorkování. Psaný text používá několik úrovní oddělení, – čárku, středník, tečku – tvořící silovou hierarchii. Použití interpunkce je žádoucí i proto, že je omezené na jednu, maximálně dvě úrovně. Závorkování svádí k vnořování, které opět rozbíjí linearitu, vytváří prioritní skupiny se vzájemným pořadím.
- Vzájemná blízkost naznačuje sílu vztahu. Jako příklad si vezměte „Československo“, „Česko-slovenský“ a „český a slovenský“, které mají různou intenzitu vztahu. V podstatě to znamená, když zapíšete dvě věci těsně k sobě bez mezer, nachází se kolem nich pomyslná závorka a není třeba jejich vztah vymezit interpunkcí. (To znamená, že na bílých znacích záleží, jen ne v tradičním smyslu pro odsazování a vnořování.)
- Malé rozdíly mezi jedním a mnoha. Slova označující jeden předmět nebo mnoho jsou obvykle velice podobná, liší se jen příponou nebo malou změnou. Stejně tak je to se slovesy o nich. Mezi provedení určité operace na jednom objektu a jejich kolekci bude téměř identické.
- Kompoziční charakter operací, kdy je možné je specifikovat jako „udělej tohle, ale takhle“. Přemýšlejte o tom, jako o přídavných jménech nebo o předponách, které nemění obecnou myšlenku, ale vyjadřují něco o jejím průběhu nebo jiných kvalitách. Udělat, dodělat, předělat a tak podobně.
- Zkratky pro časté operace. Často používaná slova bývají krátká. V případě programovací jazyka není možné vytvořit zcela nový slovník odpovídající Huffmanovu kódování (jinak by to byl další Lojban a ten nikdo nechce). Místo toho bude mít klíčové operace jednopísmenné zkratky, ale jen málo, aby nebylo třeba memorovat dlouhý seznam.
Spousta detailů není vyřešena. Jak přesně budou vypadat syntaktická pravidla? Jaká má být role velkých písmen? Jak se stavit k použití ne-ASCII znaků? A pak hlavně v otázce předposledního bodu základní kompozice operací. V současnosti to má formu buď kompozice funkcí nebo oboustranných sigilů.
Jako ukázka poslouží LSH minhash ve čtyřech řádcích textu-.
{x->x +1 *`random:1<<64 |1` +`random:1<<32` >>32} {...} *16 minhash: set = set ^... T min,max table = dataset G:minhash
První řádek definuje univerzální hašovací funkci, druhý jich vygeneruje 16, třetí definuje minhash funkci (min-max hash, abych byl přesný) a čtvrtý vytvoří LSH tabulku.
Je to dost kryptické?
Ale nic z toho nemá smysl, protože AI apokalypsa, která naplno obnaží nesmyslnost ekonomického systému a pak našich životů (v tomto pořadí), se blíží a nemá ani minutu zpoždění.