Programovací jazyk ktorý na to ide tak akosi inak a odzadu

BASIC, Python ale aj COBOL sú aj keď odlišné, patria do podobnej skupiny. Jestvujú ale jazyky ktoré na to idú ináč.

Písmo: A- | A+
Diskusia  (9)

Jedným z nich je Forth ktorý vytvoril pôvodne jediný človek Charles Moore a používal ho na riadenie astronomických prístrojov. Používa celkom unikátny spôsob vytvárania programu. Je možno na prvý pohľad divný ale takýto jazyk má mnoho výhod a používa sa skôr v zabudovaných počítačoch .

Forth na svoju prácu používa zásobníkovú pamäť typu zásobník LIFO , tj niečo ako zásobník na náboje. Operácie sa vykonávajú s údajmi ktoré sú uložené v zásobníku a výsledok sa znovu ukladá na vrchol zásobníka.

Na zápis matematických operácií sa používa tzv. postfixová notácia ( RPN - obrátená poľská logika ).

SkryťVypnúť reklamu
SkryťVypnúť reklamu
SkryťVypnúť reklamu
Článok pokračuje pod video reklamou
SkryťVypnúť reklamu
Článok pokračuje pod video reklamou

Teda v editore sa čísla najprv uložia do zásobníka a potom sa povie čo s nimi má počítač spraviť.

2 ok

3 ok

+ . 5 ok

bodka slúži na výpis hodnoty ktorá sa nachádza na vrchole zásobníka.

Zaujímavý je spôsob ako sa vytvára program. Základom Forthu je tzv. slovo. Niektoré su zabudované a nové sa dajú tvoriť.

Napríklad ak chceme vypočítať druhú mocninu , teda násobiť číslo sebou samým, môžeme to urobiť nasledovne:

: umocni dup * . ; ok

vytvorili sme nové slovo ( : znamená že vytvárame nové slovo ) kde sme najprv pomocou dup zduplikovali číslo na vrchole zásobníka, potom sme tie čisla vynásobili a . znamená vypísanie výsledku na vrchole zásobníka.

SkryťVypnúť reklamu

Ak zadáme číslo a za ním nové slovo umocni, dostaneme druhú mocninu.

: umocni dup * cr . cr ; ( pred . sme dali cr teda odriadkovanie aby to nevypisovalo do jedneho riadku |

4 umocni

16

ok

2 umocni

4

ok

Slová sa dajú použiť v definícii ďalšieho slova a takto sa dá program skladať postupne z najnižšej až po najvyššiu úroveň. T.j. navrhuje sa zhora dole ale programuje zdola hore .

Pre môj príklad s výpočtom čistej mzdy som postupoval podobne.

Môj Forth bol len celočíselný , tak som to trochu upravil a % rátam tzv škálovaním, tj nie krát % deleno 100 ale sumy percent som znásobil 10 a potom delím 1000.

SkryťVypnúť reklamu

Výsledkom návrhu je zavolanie výpočtu zadaním hrubej mzdy ( ktorá sa uloží na zásobník) , najvyšie slovo vykoná načítanie hodnoty do premennej a zavolá výpisy hodnôt ktoré v sebe volajú ich výpočet.

Celé to vyzerá takto:

variable hruba ( vytvorenie premennej )

: nem hruba @ 14 * 1000 / ; ( vypocet sumy nemocenského poistenia, zavináč je tzv fetch , zavolá hodnotu premennej na vrchol zásobníka)

: sta hruba @ 40 * 1000 / ;

: inv hruba @ 30 * 1000 / ;

: nez hruba @ 10 * 1000 / ;

: zdr hruba @ 40 * 1000 / ;

: odv hruba @ 134 * 1000 / ;

: dan hruba @ odv - 375 - 19 * 100 / ;

: mzda hruba @ odv - dan - ;

: vyphruba ." Hruba mzda je " hruba @ . ;

SkryťVypnúť reklamu

: vypnem ." Nemocenske je " nem . ; ( vypíše text a zavolá slovo nem a vypíše bodkou hodnotu ktorú zanechalo na vrchole zásobníka )

: vypsta ." Starobne je " sta . ;

: vypinv ." Invalidne je " inv . ;

: vypnez ." Poistenie v nezam je " nez . ;

: vypzdr ." Zdravotne poistenie je " zdr . ;

: vypdan ." Dan z prijmu je " dan . ;

: vypmzda ." Cista mzda je " mzda . ;

: vypis cr vyphruba cr vypnem cr vypsta cr vypinv cr vypnez cr vypzdr cr vypdan cr vypmzda cr ; ( odriadkuje a vola slová výpisov potrebných hodnôt )

: nacitajmzdu hruba ! ; ( toto slovo načíta hodnotu z vrcholu zásobníka do premennej hruba , robí to ten výkričník)

: zratajcistu nacitajmzdu vypis ; (tuto síce mohlo byť aj to načítanie ale je to nové slovo v ktorom sa načíta hodnota a zavolá výpis)

Celé to potom funguje tak, že sa zadá hrubá mzda ktorá sa uloží na vrchol zásobníka a zavolá slovo zratajcistu . A kaskáda sa spustí.

1000 zratajcistu

Hruba mzda je 1000

Nemocenske je 14

Starobne je 40

Invalidne je 30

Poistenie v nezam je 10

Zdravotne poistenie je 40

Dan z prijmu je 93

Cista mzda je 773

ok

2000 zratajcistu

Hruba mzda je 2000

Nemocenske je 28

Starobne je 80

Invalidne je 60

Poistenie v nezam je 20

Zdravotne poistenie je 80

Dan z prijmu je 257

Cista mzda je 1475

ok

forth program
forth program (zdroj: ML)

Jednotlivo vytvorené slová sa vždy dajú volať samostatne a môžete si kontrolovať či robia to čo treba. Vždy je potrebné vedieť čo je v zásobníku lebo okolo necho sa to celé vo Forth točí, teda skôr posúva...

forth
forth  (zdroj: ML)

Zvyknúť si na celkom iným spôsob je ako prepisovať texty do klinového písma ale ľudia ktorí to vymysleli to vymysleli dobre, len ináč. Nenadarmo sa jedna z knih popisujúca filozofiu jazyka volá "Thinking Forth".

Matúš Lazúr

Matúš Lazúr

Bloger 
Populárny bloger
  • Počet článkov:  155
  •  | 
  • Páči sa:  1 777x

Dokážem usedavo ležať. Zoznam autorových rubrík:  AustráliaMalajziaSúkromnéNezaradenéVeda a technikaO dobe kovidovej

Prémioví blogeri

Marcel Rebro

Marcel Rebro

152 článkov
Lucia Nicholsonová

Lucia Nicholsonová

207 článkov
Karol Galek

Karol Galek

116 článkov
Matúš Sarvaš

Matúš Sarvaš

3 články
Pavol Koprda

Pavol Koprda

10 článkov
INESS

INESS

110 článkov
reklama
reklama
SkryťZatvoriť reklamu