cwbe coordinatez:
101
63540
2076399
3671716
8798096

ABSOLUT
KYBERIA
permissions
you: r,
system: public
net: yes

neurons

stats|by_visit|by_K
source
tiamat
K|my_K|given_K
last
commanders
polls

total descendants::8
total children::4
20 ❤️


show[ 2 | 3] flat


Napisal som kompilator medzi dvoma velmi neproceduralnymi jazykmi -- zdrojovym jazykom je Ever, dialekt Scheme; cielovym jazykom je Excel, ktory je este neproceduralnejsi nez Scheme.

Funguje to takto. Najskor si clovek napise program v jazyku Ever:

(define (fac acc n)
  (if-zero
    n
    acc
    (fac (* n acc) (- n 1))))

(define (main)
  (display
    (fac 1 6)))


Potom ho kompilator prelozi cez nejaky zasobnikovy bajtkod...

; -------[ main ] -------------
OP 0 (XStr "ret")
OP 0 (XInt 1)
OP 0 (XInt 6)
LOAD (Addr 3)
PUSHL (PC 8)
LOAD (Addr 2)
STORE (Addr 3)
JMP (PC 13)
LABEL (PC 8)
STORE (Addr 3)
POP 2
PRINT
HALT
; -------[ fac ] --------------
LABEL (PC 13)
OP 0 (XLoc 2)
JZ (PC 22)
OP 0 (XOp "*" (XLoc 2) (XLoc 3))
OP 0 (XOp "-" (XLoc 2) (XInt 1))
LSTORE 2
LSTORE 3
JMP (PC 13)
JMP (PC 24)
LABEL (PC 22)
OP 0 (XLoc 3)
LABEL (PC 24)
LSTORE 4
RET

...do Excelu a dostane toto:
screenshot.png

Kazda bunka obsahuje nejake magicke vzorceky, ktore nakoniec dopocitaju faktorial 6-tky a vypluju ho do laveho stlpceka.

Hlavnou vyzvou je, ze Excel je velmi-velmi neproceduralny. Neda sa proste povedat "ak X, potom zapis Y do bunky C9, inak nerob nic". Clovek musi povedat "C9 = ak X potom Y, inak C8" a zahrnut v jednom vzorci vsetky mozne pristupy z celeho programu. Cize cely program sa obrati "naruby" a miesto programovania niecoho, co pise do buniek, musi clovek naprogramovat bunky, aby samy zmenili svoju hodnotu podla toho, co vidia okolo seba. A aby to dohromady vyzeralo, akoby do nich pisal niekto zvonku.

Nuz a nazov tohto kompilatora je zaroven mottom istej Skotskej univerzity. :)