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
Č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:  154
  •  | 
  • Páči sa:  1 728x

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

Prémioví blogeri

INESS

INESS

106 článkov
Martina Hilbertová

Martina Hilbertová

50 článkov
Post Bellum SK

Post Bellum SK

89 článkov
Iveta Rall

Iveta Rall

91 článkov
Lucia Šicková

Lucia Šicková

4 články
Karol Galek

Karol Galek

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