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.
echipă | Descriere | echivalent în BASIC |
COMMENT | comentariu (textul care urmează comenzii este ignorat) | REM |
TYPE | scoate în consolă valorile constantelor și expresiilor | |
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).
Exemplu standard Hello World
1.05 C Programul afișează un șir de testare 1.10 T „Bună lume!” ! 1.20QRezolvarea 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,90REtichetele 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.
Limbaje de programare | |
---|---|
|