CAL (programovací jazyk) - CAL (programming language)
CAL, zkratka pro Konverzační algebraický jazyk, byl programovací jazyk a Systém navrhl a vyvinul Butler Lampson na Berkeley v roce 1967 pro SDS 940 sálový počítač. CAL je verze semináře JOSS jazyk s řadou vyčištění a novými funkcemi pro využití výhod platformy SDS.
Berkeley SDS byl použit pro vývoj Tymshare komerční sdílení času platforma a vylepšená verze CAL byla zákazníkům nabídnuta jako programovací prostředí v roce 1969. Ačkoli CAL neviděla „téměř žádné využití“, měla trvalý dopad ovlivněním designu Tymshare SUPER BASIC který kopíroval řadu jeho funkcí. Některé z těchto funkcí se zase objevily v BASIC-PLUS na PDP-11, což je přímý předchůdce Microsoft BASIC.[1]
Popis
Základní pojmy
JOSS byl navržen pro použití neprogramátory v EU Americké letectvo a uvnitř Rand Corporation Rand navrhl zvyk počítačové terminály které bylo snazší nastavit a používat. Tyto terminály, založené na IBM Selectric psací stroj, také vlastní znaková sada které implementovaly běžné matematické symboly jako ≥
a ≠
.
Do značné míry byla CAL verzí JOSS, která nahradila tyto druhy přizpůsobení běžnějšími řešeními >=
a #
aby mohli běžet na společných terminálech.[2] Mezi další znatelné rozdíly patřilo to, že CAL byla velká písmena, na rozdíl od věty v JOSS, a nevyžadovalo to období na konci řádku.[3] Příkazy byly jinak téměř totožné a celková struktura a syntaxe stejné.
Stejně jako u JOSS měla CAL interaktivní uživatelské rozhraní který uživateli umožňoval zadávat příkazy v „přímém režimu“ nebo programy, které se mají spouštět v „nepřímém režimu“. V BASICu se první z nich běžněji označuje jako „okamžitý režim“. CAL i JOSS používaly dvoudílnou verzi číslo řádku, známé jako část a krok, oddělené tečkou, například 1.100
pro část 1 krok 100. Díly se obecně používaly ke seskupení souvisejících příkazů do podprogramů. V CAL může být číslo dílu mezi 0 a 999999 a krok od 0 do 99999.[4]
Existovaly dvě hlavní verze licence CAL, vydané v letech 1967 a 1969. Následující popis bude vycházet primárně z předchozí verze, pokud není uvedeno jinak.
Skoky a podprogramy
Stejně jako v JOSS, CAL podporovala NA
příkaz rozvětvit na poskytnutou část nebo krok, jako v K ČÁSTI 3
nebo KROK 4.5
, a DĚLAT
pro volání podprogramů, jako v DĚLAT ČÁST 9
provést celou část, nebo KROK 5.1
spustit tento jediný krok a poté se vrátit. Pozdější syntaxe byla užitečná, když existovalo mnoho malých podprogramů, protože je bylo možné implementovat na jeden řádek bez přidruženého VRÁTIT SE
nebo podobný koncept.[5]
Podmíněné větvení a přiřazení
Jedním z nejpozoruhodnějších syntaktických rysů JOSS byl koncept „modifikátorů příkazů“, který řídil činnost ostatních příkazů. JOSS to použil pro podmíněné větvení.
Ve většině jazyků by se dalo napsat něco v tom smyslu, že „pokud je tento výraz pravdivý, udělejte to ...“. V JOSS bylo toto pořadí obráceno a tato prohlášení měla například podobu „udělejte to, pokud je to pravda“, Zadejte „AHOJ“, pokud X = 5.
. CAL přidal nějaké syntaktický cukr k tomuto základnímu konceptu přidáním nového modifikátoru POKUD
, což v závislosti na kontextu vedlo ke zjevnějšímu kódu; TYP „NENÍ ROVNÉ PĚT“, POKUD X = 5
.[6]
Přiřadit tedy hodnotu 5 proměnné A, pokud by hodnota B byla větší než 10 a jinak 0, by kód byl:
Nastavte A = 5, pokud B> 10. Nastavte A = 0, pokud B <= 10.
CAL také podporována podmíněné výrazy:[7]
A = IF B> 10 PAK 5 JINÉ 0
Podobná modifikace byla KDE
příkaz, který se používá k nastavení proměnných jako součást příkazu if nebo for. Bylo to koncepčně podobné struktuře if / then / else, ale mohlo to mít libovolný počet položek. Například,= A * B KDE A = B DO A> 20, KDE A = 1 DO A> 100
.[8]
Smyčky
Looping v JOSS byl také řízen modifikátorem, Pro
. Toto používalo poněkud nejasnou syntaxi; Typ i pro i = 1 (2) 10.
spustí smyčku od 1 do 10 s krokem 2, takže vytiskne 1,3,5,7,9. Dalo by se také dodat explicitní hodnoty, Typ i pro i = 1,5,6,7,10.
nebo je smíchejte, Typ i pro i = 1,5 (1) 7,10.
CAL vylepšila syntaxi JOSS zavedením PODLE
a NA
klíčová slova, takže ekvivalentní kód v CAL bude TYP I PRO I = 1 O 2 DO 10
. V JOSS byla závorka kolem hodnoty kroku oddělovačem pro dva limity, takže ji nebylo možné učinit volitelnou. Oddělením NA
limity se staly výslovnými a PODLE
byl volitelný, jak se předpokládá, TYP I PRO I = 1 AŽ 10
. Stejně jako u JOSS lze použít explicitní hodnoty a rozsahy; TYP I PRO I = 1,5 TO7, 10
. CAL dále upravila smyčku for přidáním podmíněných východů pomocí ZATÍMCO
a DOKUD
. Například, TYP A PRO A = 1 NA 1, KDYŽ A <= 50
nebo TYP B PRO B = 1 DO A = 50
.[9]
Uživatelem definované funkce
JOSS umožnil uživateli definovat funkce pomocí Nechat
prohlášení. Syntaxe umožňovala pojmenování místních proměnných v podpisu funkce; Nechť F (X, Y) = X + Y.
Programy by pak mohly tyto funkce volat, jako by byly vestavěné, Nastavte A = F (1,5).
CAL změněna Nechat
na DEFINOVAT
, což je mnohem jasnější a provedlo se menší změna, parametry byly předány pomocí závorek místo závorek, takže ekvivalentní definice bude DEFINE F [X, Y] = X + Y
a zavolal stejným způsobem, SADA A = F [1,5]
.[10]
Důležitější změnou funkcí CAL byla schopnost volat podprogramy z definic pomocí NA
, jako v DEFINE F (X, Y): K ČÁSTI 5
.[A] Tím byla ponechána otázka přiřazení výsledné vypočítané hodnoty zpět funkci, která byla vyřešena zavedením NÁVRAT Z
prohlášení na konci části, kde Z je konečná hodnota, která má být vrácena.[10]
Další změny
CAL zahrnovala matematické funkce JOSS, ale přidala řadu nových, včetně břišní svaly
, OPÁLENÍ
, OPÁLENÍ
, a LOG10
.[11] Přidal také nového operátora, MOD
, který vrátil zbytek divize svých dvou operandů.[12]
Přímý režim
CAL přidal malý počet příkazů přímého režimu a souvisejících příkazů.
PAUZA
, když se v programu setkáte, vytiskne zprávu „POZASTAVENO V KROKU 1.1“ a poté se vrátí do přímého režimu. To bylo podobné jako STOP
příkaz v BASIC. To umožnilo uživateli zadat hodnoty a pokračovat v provádění s JÍT
.[13] V přímém režimu mohl uživatel KROK
po jednom řádku k vysledování provádění programu.[13]
CAL změnila JOSS ' Nechat
uživatelsky definovaná funkce na poněkud jasnější DEFINOVAT
, a zároveň měníte seznam parametrů tak, aby místo () používal []. V JOSS se obvykle nacházely v přímém režimu, zatímco v CAL byly povoleny pouze v přímém režimu. Například by se dalo DEFINE F [N] = PROD (I FOR I = 1 TO N)
. Tento příklad také ukazuje schopnost JOSS používat rozsah smyčky jako vstup do funkce.[14] Na rozdíl od JOSS umožňovala CAL vícestupňové funkce přidáním dalších příkazů oddělených dvojtečkou, například DEFINE X [A, B, C]: DĚLAT ČÁST 5
. Všimněte si, že tento příklad nemá žádné tělo, jednoduše volá c
Vylepšení v CAL 1969
Jednou menší změnou ve verzi z roku 1969 bylo vyřazení SOUBOR
příkaz pro variabilní přiřazení. To bylo v přímém režimu v JOSS volitelné, ale bylo to vyžadováno v programových prohlášeních a verze CAL z roku 1967 se řídila tímto pravidlem.[15] Verze 1969 umožnila v obou případech volitelnost.
Poznámky pod čarou
- ^ Vzhledem k tomu, že DO se běžně používá k volání podprogramů, není zřejmé, proč v tomto případě zvolili TO.
Reference
Citace
- ^ Lampson, "Systémy", Výzkum, Microsoft.
- ^ Manuál 1969, str. 7.
- ^ Manuál 1969, str. 23.
- ^ Manuál 1969, str. 11.
- ^ Manuál 1969, str. 15, 26.
- ^ Manuál 1969, str. 12.
- ^ Manuál 1969, str. 14.
- ^ Manuál 1969, str. 21.
- ^ Manuál 1969, str. 13.
- ^ A b Příručka 1967, str. 27.
- ^ Příručka 1967, str. 9.
- ^ Manuál 1967, str. 10.
- ^ A b Příručka 1967, str. 25.
- ^ Příručka 1967, str. 26.
- ^ Příručka 1967, str. 8.
Bibliografie
- Lampson, Butler (červen 1969). CAL (PDF). Tymshare.
- Lampson, Butler (červen 1967). Referenční příručka CAL pro počítačové systémy SDS 940 s časovým sdílením (PDF). Vědecké datové systémy.