Fokális

Fokális
Szemantika parancsoló
Nyelvóra programozási nyelv
A végrehajtás típusa tolmács
Megjelent 1968
Szerző Richard Merrill ( Richard Merrill )
Típusrendszer az egyik típus - igazi
Főbb megvalósítások múzeum FOCAL-81 POSIX rendszerekhez
Dialektusok FOCAL-69 ("klasszikus"), FOCAL 1971, FOCAL 11, FOCAL-81
Befolyásolva JOSS

A Focal ( Focal , az angol formula calculator rövidítése ) egy magas szintű értelmezett programozási nyelv , a JOSS nyelv átdolgozása .  

A nyelv fejlesztéséhez a legnagyobb mértékben Richard Merrill , a DEC PDP-8 egyik  legfontosabb fejlesztője járult hozzá , aki megalkotta a PDP-8 eredeti ( 1968 -ban ) és klasszikus (FOCAL-69) Focal tolmácsát . A Focalt a DEC "JOSS-típusú nyelvként" forgalmazta.

A BASIC korai verzióihoz hasonlóan (amelyek 7 évvel később jelentek meg), a Focal interpreter maga biztosította az összes szükséges szoftverkörnyezetet, és nem volt szüksége operációs rendszerre .

A Focal rendkívül erőforrásigényes. Tehát a PDP-8 legegyszerűbb verzióin dolgozott, beleértve a tárolóeszközök nélküli rendszereket is. A tolmács többfelhasználós verziói akár négy felhasználó egyidejű munkáját támogatták a teletype terminálokon. Későbbi megvalósítások készültek a PDP-7/9 és PDP-11 számára .

A Coca-Cola Company a Focal belsőleg módosított, COKE nevű változatát használta.

A szovjet számítógépek közül a Focal az Elektronika BK-0010/0011- en és a ROM - ba épített DVK -n létezett (a későbbi modellekben a BK kazettán is elérhető). Ezekhez a gépekhez gyújtóponti bővítmények is rendelkezésre álltak, amelyeket különböző rajongók írtak. A kiterjesztések számos további parancsot és funkciót tartalmaztak a grafikával, hanggal, bináris programok futtatásával, karakterlánc-feldolgozással és számos mással való munkához.

A nyelv egy jelentősen kibővített változatát használták befogadó nyelvként a DIASP  - Conversational Design System -ben - egy speciális , mikroelektronikai célokra tervezett CAD -ben.

Az 1990-es években a rajongók kísérletet tettek arra, hogy a Focalt az IBM PC -re (Turbo Focal) portolják, de ez nem hagyta el a BBS csatornákon terjesztett béta verziót .

A Focal-81 nyilvánosan elérhető forrásverzióját sikeresen tesztelték a következő platformokon és fordítókon:

A szintaxis hasonlósága miatt a Focalt gyakran a BASIC -hez hasonlították . Általánosságban elmondható, hogy a nyelv kifejezőképességét tekintve rosszabb, mint a BASIC - például a Focal-ban egyáltalán nincs karakterlánc adattípus ; A Focal összes változója numerikus (általában tört lebegőpontos számok ). Ugyanakkor a Focal interpreter sokkal kevésbé igényli az erőforrásokat (elsősorban a memóriát ), mint a BASIC, amely lehetővé tette bonyolultabb programok írását korlátozott erőforrásokkal rendelkező rendszereken.

Az 1980-as évek vége óta a Focal-t nem nagyon fejlesztették vagy használták, a Focal-81 fent említett portjait a rajongók készítették szórakozásból.

Néhány fókuszparancs

csapat leírás egyenértékű a BASIC-ben
COMMENT megjegyzés (a parancsot követő szöveget figyelmen kívül hagyja) REM
TYPE kiadja a konzolra az állandók és kifejezések értékeit PRINT
QUIT a program rutinszerű befejezése END
SET érték hozzárendelése egy változóhoz (vagy tömbelemhez) LET
ASK értékek bevitele a konzolból INPUT
GOTO feltétel nélkül ugorj GOTO
DO szubrutinhívás GOSUB
RETURN visszatérés a szubrutinból RETURN
IF kifejezési érték szerinti elágazás részben megfelelIF

A nyelvi tolmács a parancsokat az első betűjük alapján ismeri fel, így nem kell azokat teljes egészében leírni. A Focalnak is voltak olyan verziói, amelyek kulcsszavakat tartalmaztak európai nyelveken (a DEC szállítója).

Programpéldák

Normál Hello World példa

1,05 C A program megjelenít egy tesztkarakterláncot 1.10 T "Hello World!" ! 1.20Q

Az ax² + bx + c = 0 alakú másodfokú egyenlet megoldása

1,05 C **** Program egy ax^2 + bx + c = 0 alakú másodfokú egyenlet megoldására 1.10 T "Írja be az a, b, c együtthatókat az ax^2 + bx + c = 0 egyenlethez" ! 1,20 A "a = ", a ! "b = ", b ! "c = ", c 1.30T! "Oldja meg a (", a, ")x2 + (", b, ")x + (", c, ") = 0 egyenletet" ! 1,35 C **** Számítsa ki a diszkriminánst! 1,40 Sd = b^2 - 4*a*c 1,50 T ! "D=", d ! 1,55 C **** Határozza meg a gyökerek számát 1,60 I (d), 3, 4 1,65 C **** az első címke kimarad, tehát D értékkel 1,66 C **** nullánál kisebb értékkel az IF után következő sorba jutunk 2,05 C **** Negatív diszkrimináns - nincs gyökér 2.10 T "Az egyenletnek nincs valódi gyökere" ! 2.20Q 3,05 C **** Nulla diszkrimináns - egy gyökér 3.10 T "Az egyenletnek egy gyöke van" ! 3,20 S s = 0 3.30D5 3,40 T "x = ", x ! 3,90Q 4,05 C **** Pozitív diszkrimináns - két gyök 4.10 T "Az egyenletnek két gyökere van" ! 4,20 Ss = FQT(d) 4.30D5 4,40 T "x1 = ", x ! 4,50 Ss = -s 4.60D5 4,70 T "x2 = ", x ! 4,90Q 5.05 C **** Gyökérrutin, ahol s az előjeles diszkrimináns gyökere 5,10 Sx = (s - b) / (2*a) 5.90R

A Focal sorcímkéi formátumúak<номер_группы>.<номер_строки> . GOTOA , IF, parancsok DOmegadhatják a teljes címkét és a csoport számát is sorszám nélkül (átmenetet okoz a csoport legkisebb sorszámú sorára).

A és (konzol I/O !) parancsokban lévő felkiáltójel (" ") egy argumentumelválasztó (a vesszővel együtt), és soremelést okoz a lista következő elemének bevitele vagy kiadása előtt. ASKTYPE

A parancs IFkiértékeli a kifejezés értékét, és az eredménytől függően - negatív, nulla vagy pozitív - a megadott listából a három címke valamelyikére ugrik. Ha a címke kimarad, akkor a vezérlés átkerül a következő IFsorba.

Jegyzetek

Irodalom

Linkek