Ohniskové | |
---|---|
Sémantika | rozkazovací způsob |
Jazyková třída | programovací jazyk |
Typ provedení | tlumočník |
Objevil se v | 1968 |
Autor | Richard Merrill ( Richard Merrill ) |
Typový systém | jeden typ - skutečný |
Hlavní implementace | muzeum FOCAL-81 pro systémy POSIX |
Dialekty | FOCAL-69 ("klasika"), FOCAL 1971, FOCAL 11, FOCAL-81 |
Byl ovlivněn | JOSS |
Focal ( Focal , zkratka z anglického vzorce calculator ) je interpretovaný programovací jazyk na vysoké úrovni , přepracovaný jazyk JOSS .
Největší podíl na vývoji jazyka měl Richard Merrill , jeden z klíčových vývojářů DEC PDP-8 , který vytvořil původní (v roce 1968 ) a klasické (FOCAL-69) Focal interprety pro PDP-8. Focal byl prodáván společností DEC jako „jazyk typu JOSS“.
Stejně jako rané verze BASICu (které se objevily o 7 let později) i samotný interpret Focal poskytoval veškeré potřebné softwarové prostředí a nepotřeboval operační systém .
Focal je extrémně nenáročný na zdroje. Takže pracoval na nejjednodušších verzích PDP-8, včetně systémů bez úložných zařízení. Víceuživatelské verze tlumočníka podporovaly současnou práci až čtyř uživatelů na dálnopisných terminálech. Pozdější implementace byly vytvořeny pro PDP-7/9 a PDP-11 .
Společnost Coca-Cola Company používala interně upravenou verzi Focal s názvem COKE.
Ze sovětských počítačů existoval Focal na Elektronika BK-0010/0011 a DVK zabudovaný v ROM (v pozdějších modelech je BK k dispozici na kazetě). K dispozici byly i ohniskové nástavce pro tyto stroje, které napsali různí nadšenci. Rozšíření obsahovalo celou řadu dalších příkazů a funkcí pro práci s grafikou, zvukem, spouštění binárních programů, zpracování řetězců a řadu dalších.
Výrazně rozšířená verze jazyka byla použita jako inkluzivní jazyk v DIASP - Conversational Design System - specializovaném CAD navrženém pro účely mikroelektroniky.
V devadesátých letech se nadšenci pokusili přenést Focal na IBM PC (Turbo Focal), ale neopustil beta verzi distribuovanou prostřednictvím kanálů BBS .
Veřejně dostupná zdrojová verze Focal-81 byla úspěšně testována na následujících platformách a kompilátorech:
Kvůli podobnosti v syntaxi byl Focal často přirovnáván k BASICu . Obecně je jazyk horší než BASIC, pokud jde o jeho vyjadřovací schopnosti - například ve Focalu neexistuje absolutně žádný datový typ řetězec ; všechny proměnné na Focal jsou číselné (obvykle zlomková čísla s plovoucí desetinnou čárkou ). Interpret Focal je zároveň mnohem méně náročný na zdroje (především paměť ) než BASIC, což umožnilo psát složitější programy na systémech s omezenými zdroji.
Od konce 80. let se Focal příliš nevyvíjel ani nepoužíval, zmíněné porty Focalu-81 vyráběli nadšenci pro zábavu.
tým | popis | ekvivalent v BASICu |
COMMENT | komentář (text za příkazem je ignorován) | REM |
TYPE | výstup do konzole hodnoty konstant a výrazů | |
QUIT | rutinní dokončení programu | END |
SET | přiřazení hodnoty proměnné (nebo prvku pole) | LET |
ASK | zadávání hodnot z konzole | INPUT |
GOTO | bezpodmínečně skočit | GOTO |
DO | volání podprogramu | GOSUB |
RETURN | návrat z podprogramu | RETURN |
IF | větvení podle hodnoty výrazu | částečně odpovídáIF |
Jazykový tlumočník rozpoznává příkazy podle prvního písmene, takže je není potřeba psát celé. Existovaly také verze Focal s klíčovými slovy v evropských jazycích (dodává DEC).
Standardní příklad Hello World
1.05 C Program zobrazí testovací řetězec 1.10 T "Ahoj světe!" ! 1.20QŘešení kvadratické rovnice ve tvaru ax² + bx + c = 0
1,05 C **** Program pro řešení kvadratické rovnice tvaru ax^2 + bx + c = 0 1.10 T "Zadejte koeficienty a, b, c pro rovnici ax^2 + bx + c = 0" ! 1,20 A "a = ", a ! "b =", b! "c =", c 1,30T! "Vyřešte rovnici (", a, ")x2 + (", b, ")x + (", c, ") = 0" ! 1,35 C **** Vypočítejte diskriminant 1,40 Sd = b^2 - 4*a*c 1,50 T! "D=", d! 1,55 C **** Zjistěte počet kořenů 1,60 I (d), 3, 4 1,65 C **** první štítek je vynechán, takže s hodnotou D 1,66 C **** menší než nula se dostaneme na další řádek po IF 2,05 C **** Negativní diskriminant - bez kořenů 2.10 T "Rovnice nemá skutečné kořeny" ! 2.20Q 3,05 C **** Diskriminant nula - jeden kořen 3.10 T "Rovnice má jeden kořen" ! 3,20 S s = 0 3.30D5 3,40 T "x =", x ! 3,90 Q 4,05 C **** Kladný diskriminant - dva kořeny 4.10 T "Rovnice má dva kořeny" ! 4,20 Ss = FQT(d) 4.30D5 4,40 T "x1 =", x ! 4,50 Ss = -s 4.60D5 4,70 T "x2 = ", x ! 4,90 Q 5.05 C **** Kořenová rutina, kde s je kořen diskriminantu se znaménkem 5,10 Sx = (s - b) / (2*a) 5,90 RPopisky řádků v Focal mají tvar <номер_группы>.<номер_строки>. Příkazy GOTO, IF, DOmohou specifikovat jak celý popisek, tak i číslo skupiny bez čísla řádku (způsobí přechod na řádek s nejmenším číslem v této skupině).
Vykřičník (" ") v !příkazech ASKand (console I/O ) TYPEje (společně s čárkou) oddělovač argumentů a způsobí posun na řádek před zadáním nebo výstupem dalšího prvku seznamu.
Příkaz IFvyhodnotí hodnotu výrazu a skočí na jeden ze tří štítků z poskytnutého seznamu v závislosti na výsledku – záporný, nulový nebo kladný. Pokud je štítek vynechán, řízení se přenese na další IFřádek.
Programovací jazyky | |
---|---|
|