Fokal | |
---|---|
Semantik | nödvändigt |
Språkklass | programmeringsspråk |
Utförandetyp | tolk |
Framträdde i | 1968 |
Författare | Richard Merrill ( Richard Merrill ) |
Typ system | en typ - verklig |
Stora implementeringar | museum FOCAL-81 för POSIX-system |
Dialekter | FOCAL-69 ("klassisk"), FOCAL 1971, FOCAL 11, FOCAL-81 |
Blivit påverkad | JOSS |
Focal ( Focal , en akronym från den engelska formelkalkylatorn ) är ett tolkat programmeringsspråk på hög nivå , en omarbetning av JOSS - språket .
Det största bidraget till utvecklingen av språket gjordes av Richard Merrill , en av nyckelutvecklarna av DEC PDP-8 , som skapade de ursprungliga ( 1968 ) och klassiska (FOCAL-69) Focal- tolkarna för PDP-8. Focal marknadsfördes av DEC som ett språk av "JOSS-typ".
Liksom tidiga versioner av BASIC (som dök upp 7 år senare), tillhandahöll Focal-tolken själv all nödvändig mjukvarumiljö och behövde inget operativsystem .
Focal är extremt föga resurskrävande. Så han arbetade på de enklaste versionerna av PDP-8, inklusive system utan lagringsenheter. Fleranvändarversioner av tolken stödde det samtidiga arbetet av upp till fyra användare på teletypterminaler. Senare implementeringar skapades för PDP-7/9 och PDP-11 .
Coca -Cola Company använde en internt modifierad version av Focal som heter COKE.
Av de sovjetiska datorerna fanns Focal på Elektronika BK-0010/0011 och DVK inbyggd i ROM (i senare modeller finns BK på en patron). Fokala tillägg för dessa maskiner fanns också, skrivna av olika entusiaster. Tilläggen innehöll en mängd ytterligare kommandon och funktioner för att arbeta med grafik, ljud, köra binära program, strängbearbetning och ett antal andra.
En betydligt utökad version av språket har använts som det inkluderande språket i DIASP - Conversational Design System - en specialiserad CAD designad för mikroelektronikändamål.
På 1990-talet gjordes ett försök av entusiaster att porta Focal till IBM PC (Turbo Focal), men det lämnade inte betaversionen distribuerad via BBS -kanaler .
Den allmänt tillgängliga källversionen av Focal-81 har testats framgångsrikt på följande plattformar och kompilatorer:
På grund av likheten i syntax har Focal ofta jämförts med BASIC . I allmänhet är språket sämre än BASIC när det gäller dess uttrycksförmåga - till exempel i Focal finns det absolut ingen strängdatatyp ; alla variabler på Focal är numeriska (vanligtvis bråktal med flyttal ). Samtidigt är Focal-tolken mycket mindre resurskrävande (främst minne ) än BASIC, vilket gjorde det möjligt att skriva mer komplexa program på system med begränsade resurser.
Sedan slutet av 1980-talet har Focal inte utvecklats eller använts mycket, de ovannämnda portarna i Focal-81 gjordes av entusiaster för skojs skull.
team | beskrivning | motsvarande i BASIC |
COMMENT | kommentar (text efter kommandot ignoreras) | REM |
TYPE | mata ut värdena för konstanter och uttryck till konsolen | |
QUIT | rutinmässigt slutförande av programmet | END |
SET | tilldela ett värde till en variabel (eller matriselement) | LET |
ASK | ange värden från konsolen | INPUT |
GOTO | hoppa villkorslöst | GOTO |
DO | subrutinsamtal | GOSUB |
RETURN | tillbaka från subrutinen | RETURN |
IF | förgrening efter uttrycksvärde | delvis motsvararIF |
Språktolken känner igen kommandon med sin första bokstav, så det finns ingen anledning att skriva dem i sin helhet. Det fanns också versioner av Focal med nyckelord på europeiska språk (tillhandahålls av DEC).
Standard Hello World Exempel
1.05 C Programmet visar en teststräng 1.10 T "Hej världen!" ! 1.20QLösning av en andragradsekvation av formen ax² + bx + c = 0
1.05 C **** Ett program för att lösa en andragradsekvation av formen ax^2 + bx + c = 0 1.10 T "Ange koefficienterna a, b, c för ekvationen ax^2 + bx + c = 0" ! 1.20 A "a = ", a ! "b =", b! "c = ", c 1.30T! "Lös ekvationen (", a, ")x2 + (", b, ")x + (", c, ") = 0" ! 1,35 C **** Beräkna diskriminanten 1,40 Sd = b^2 - 4*a*c 1,50 T! "D=", d! 1,55 C **** Ta reda på antalet rötter 1,60 I (d), 3, 4 1,65 C **** den första etiketten utelämnas, så med värdet D 1,66 C **** mindre än noll kommer vi till nästa rad efter IF 2,05 C **** Negativ diskriminant - inga rötter 2.10 T "Ekvationen har inga riktiga rötter" ! 2.20Q 3,05 C **** Noll diskriminant - en rot 3.10 T "Ekvationen har en rot" ! 3,20 S s = 0 3.30D5 3,40 T "x =", x ! 3,90Q 4,05 C **** Positiv diskriminant - två rötter 4.10 T "Ekvationen har två rötter" ! 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 **** Rotrutin där s är roten till den signerade diskriminanten 5,10 Sx = (s - b) / (2*a) 5,90 RRadetiketter i Focal är av formen <номер_группы>.<номер_строки>. Kommandona GOTO, IF, DOkan ange både den fullständiga etiketten och gruppnumret utan radnumret (orsakar en övergång till raden med det minsta numret i denna grupp).
Utropstecknet (" ") i !kommandona ASKoch (konsol I/O ) TYPEär (tillsammans med ett komma) en argumentavgränsare och orsakar en radmatning innan nästa element i listan skrivs in eller matas ut.
Kommandot IFutvärderar uttryckets värde och hoppar till en av de tre etiketterna från den angivna listan, beroende på resultatet - negativt, noll eller positivt. Om etiketten utelämnas överförs kontrollen till nästa IFrad.
Programmeringsspråk | |
---|---|
|