Focal

Focal
Semantică imperativ
Clasa de limba limbaj de programare
Tipul de execuție interpret
Aparut in 1968
Autor Richard Merrill ( Richard Merrill )
Tip sistem un tip - real
Implementări majore muzeul FOCAL-81 pentru sisteme POSIX
Dialectele FOCAL-69 („clasic”), FOCAL 1971, FOCAL 11, FOCAL-81
A fost influențat JOSS

Focal ( Focal , un acronim din engleza  formula calculator ) este un limbaj de programare interpretat la nivel înalt , o reelaborare a limbajului JOSS .

Cea mai mare contribuție la dezvoltarea limbajului a fost făcută de Richard Merrill , unul dintre  dezvoltatorii cheie ai DEC PDP-8 , care a creat interpreții focali originali (în 1968 ) și clasici (FOCAL-69) pentru PDP-8. Focal a fost comercializat de DEC ca „limbaj de tip JOSS”.

La fel ca versiunile timpurii ale BASIC (care au apărut 7 ani mai târziu), interpretul Focal însuși a furnizat tot mediul software necesar și nu a avut nevoie de un sistem de operare .

Focal este extrem de nepretențios față de resurse. Deci, a lucrat la cele mai simple versiuni ale PDP-8, inclusiv sisteme fără dispozitive de stocare. Versiunile pentru mai mulți utilizatori ale interpretului au suportat munca simultană a până la patru utilizatori pe terminale de teletip. Au fost create implementări ulterioare pentru PDP-7/9 și PDP-11 .

Compania Coca-Cola a folosit o versiune modificată intern a Focal numită COKE.

Dintre computerele sovietice, Focal a existat pe Elektronika BK-0010/0011 și DVK încorporat în ROM (în modelele ulterioare, BK este disponibil pe un cartuş). Au fost disponibile și extensii focale pentru aceste aparate, scrise de diverși pasionați. Extensiile conțineau o varietate de comenzi și funcții suplimentare pentru lucrul cu grafica, sunet, rularea programelor binare, procesarea șirurilor și o serie de altele.

O versiune semnificativ extinsă a limbajului a fost folosită ca limbaj inclusiv în DIASP  - Conversational Design System - un CAD specializat conceput pentru scopuri microelectronice.

În anii 1990, entuziaștii au încercat să port Focal pe computerul IBM (Turbo Focal), dar nu a lăsat versiunea beta distribuită prin canalele BBS .

Versiunea sursă disponibilă public a Focal-81 a fost testată cu succes pe următoarele platforme și compilatoare:

Datorită asemănării sintaxei, Focal a fost adesea comparat cu BASIC . În general, limbajul este inferior BASIC în ceea ce privește capacitățile sale expresive - de exemplu, în Focal nu există absolut niciun tip de șir de date ; toate variabilele de pe Focal sunt numerice (de obicei numere fracționale în virgulă mobilă ). În același timp, interpretul Focal este mult mai puțin solicitant cu resurse (în primul rând memorie ) decât BASIC, ceea ce a făcut posibilă scrierea de programe mai complexe pe sisteme cu resurse limitate.

De la sfârșitul anilor 1980, Focalul nu a fost dezvoltat sau folosit prea mult, porturile menționate mai sus ale Focal-81 au fost realizate de pasionați pentru distracție.

Unele comenzi focale

echipă Descriere echivalent în BASIC
COMMENT comentariu (textul care urmează comenzii este ignorat) REM
TYPE scoate în consolă valorile constantelor și expresiilor PRINT
QUIT finalizarea de rutină a programului END
SET atribuirea unei valori unei variabile (sau unui element de matrice) LET
ASK introducerea valorilor din consolă INPUT
GOTO sari neconditionat GOTO
DO apel de subrutină GOSUB
RETURN întoarcere din subrutină RETURN
IF ramificarea prin valoarea expresiei corespunde parțialIF

Interpretul de limbă recunoaște comenzile după prima literă, deci nu este nevoie să le scrieți în întregime. Au existat și versiuni ale Focal cu cuvinte cheie în limbi europene (furnizate de DEC).

Exemple de programe

Exemplu standard Hello World

1.05 C Programul afișează un șir de testare 1.10 T „Bună lume!” ! 1.20Q

Rezolvarea unei ecuații pătratice de forma ax² + bx + c = 0

1.05 C **** Un program pentru rezolvarea unei ecuații pătratice de forma ax^2 + bx + c = 0 1.10 T „Introduceți coeficienții a, b, c pentru ecuația ax^2 + bx + c = 0” ! 1,20 A "a = ", a ! "b =", b ! "c =", c 1.30T! "Rezolvați ecuația (", a, ")x2 + (", b, ")x + (", c, ") = 0"! 1,35 C **** Calculați discriminantul 1,40 Sd = b^2 - 4*a*c 1,50 T! „D=", d ! 1,55 C **** Aflați numărul de rădăcini 1,60 I (d), 3, 4 1,65 C **** prima etichetă este omisă, deci cu valoarea D 1,66 C **** mai puțin de zero ajungem la următoarea linie după IF 2,05 C **** Discriminant negativ - fără rădăcini 2.10 T „Ecuația nu are rădăcini reale” ! 2.20Q 3,05 C **** Zero discriminant - o rădăcină 3.10 T „Ecuația are o rădăcină” ! 3,20 S s = 0 3.30D5 3,40 T "x = ", x ! 3,90Q 4,05 C **** Discriminant pozitiv - două rădăcini 4.10 T „Ecuația are două rădăcini” ! 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 **** Rutina rădăcină unde s este rădăcina discriminantului cu semn 5,10 Sx = (s - b) / (2*a) 5,90R

Etichetele rândurilor din Focal sunt de forma <номер_группы>.<номер_строки>. Comenzile GOTO, IF, DOpot specifica atât eticheta completă, cât și numărul grupului fără numărul de linie (determină o tranziție la linia cu cel mai mic număr din acest grup).

Semnul exclamării (" ") din !comenzile ASKși (console I/O ) TYPEeste (împreună cu o virgulă) un separator de argument și provoacă un avans de linie înainte ca următorul element al listei să fie introdus sau scos.

Comanda IFevaluează valoarea expresiei și sare la una dintre cele trei etichete din lista furnizată, în funcție de rezultat - negativ, zero sau pozitiv. Dacă eticheta este omisă, atunci controlul este transferat la următoarea IFlinie.

Note

Literatură

Link -uri