Dartmouth BASIC - Dartmouth BASIC
Paradigma | rozkazovací způsob |
---|---|
Navrhl | John G. Kemény, Thomas E. Kurtz |
Poprvé se objevil | 1964 |
OS | Systém sdílení času v Dartmouthu |
Ovlivněno | |
FORTRAN, ALGOL | |
Ovlivněno | |
Srov. seznam základních dialektů |
Dartmouth BASIC je původní verze ZÁKLADNÍ programovací jazyk. Byl navržen dvěma profesory na Dartmouth College, John G. Kemény a Thomas E. Kurtz. S podkladem Systém sdílení času v Dartmouthu (DTSS), nabídlo interaktivní programovací prostředí všem vysokoškolským studentům i větší univerzitní komunitě.
Několik verzí bylo vyrobeno v Dartmouthu, implementovaných vysokoškolskými studenty a fungujících jako kompilovat a jít systém. První verze proběhla 1. května 1964 a pro běžné uživatele byla otevřena v červnu. Následovaly upgrady, které vyvrcholily sedmým a posledním vydáním v roce 1979. Dartmouth také představil dramaticky aktualizovanou verzi známou jako Strukturovaný ZÁKLAD (nebo SBASIC) v roce 1975, který přidal různé strukturované programování koncepty. SBASIC tvořil základ ANSI -Standard Standardní ZÁKLADNÍ úsilí na počátku 80. let.
Většina dialektů jazyka BASIC sleduje jejich historii až ke čtvrtému vydání a vynechala další esoterické prvky, jako je maticová matematika. Na rozdíl od překladačů v Dartmouthu byla většina ostatních BASIC napsána jako tlumočníci. To jim umožnilo běžet v omezeném množství hlavní paměť brzy mikropočítače. Microsoft BASIC je jeden příklad navržený pro provoz v 4 kB paměti. Na začátku 80. let desítky milionů domácí počítače provozovali nějakou variantu tlumočníka MS. Stalo se to de facto standard pro BASIC, což vedlo k upuštění od úsilí ANSI SBASIC. Kemény a Kurtz později opustili Dartmouth, aby vyvinuli a propagovali verzi SBASIC známou jako True BASIC.
Mnoho rané hry na sálových počítačích sledovat jejich historii do Dartmouth BASIC a systému DTSS. Jejich výběr byl shromážděn v HP Time-Shared BASIC verze, v Lidová počítačová společnost rezervovat Co dělat po stisknutí Návrat.[1] Mnoho původních výpisů zdrojů v ZÁKLADNÍ počítačové hry a související práce také sledují jejich historii do Dartmouth BASIC.
Historie vývoje
Dřívější práce
John Kemény nastoupil do matematického oddělení na Dartmouth College v roce 1953 a později se stal jejím předsedou. V roce 1956 získal přístup k IBM 704 přes MIT New England Regional Computer Center úsilí. Ten rok napsal DARSIMCO jazyk, který zjednodušil programování matematických operací. Pomohl mu Thomas E. Kurtz, který se k oddělení připojil v tomto roce.[2]
DARSIMCO byl zapomenut, když první FORTRAN překladač byl na stroj nainstalován v roce 1957. Příchod FORTRANU přinesl důležitou lekci. Kurtz, který byl indoktrinován tím, že FORTRAN je pomalý, strávil několik měsíců psaním programu v 704 assembleru, který na ladění zabral asi hodinu času CPU a stále neběžel. Vzdal to, přepsal to ve FORTRANU a nechal to běžet za pět minut. Lekce byla, že jazyky na vysoké úrovni mohou ušetřit čas bez ohledu na jejich měřený výkon.[2]
V roce 1959 škola obdržela svůj první počítač, počítač bubnový LGP-30. Jeden student pro stroj napsal jazyk inspirovaný FORTRANEM s názvem DART. To vedlo ke snaze vyrobit kompilátor ALGOL 58, který se obrátil na ALGOL 60 kdy byla tato definice dokončena. Psaní kompilátoru bylo obtížné kvůli velmi malé velikosti paměti, 4 kB v moderních termínech a bylo extrémně pomalé, založené na rychlosti bubnu 30 ot / min. Přesto byli schopni vyrobit funkční cut-down verzi známou jako ALGOL 30.[3]
Další vývoj přinesl SCALP, „Self-Contained Algol Processor“, jednoprůchodový kompilátor, který byl připraven spustit kompilovaný program, jakmile děrovací páska dočítání ve zdroji. Tuto operaci stylu kompilace-n-go by později použil BASIC.[3]
V roce 1962 začali Kemény a student Sidney Marshall experimentovat s novým jazykem, DOPE (Dartmouth Oversimplified Programming Experiment). Toto používalo očíslované řádky k reprezentaci instrukcí, například k přidání dvou čísel, použil DOPE:
5 + A B C
Což znamenalo „na řádku 5, proveďte sčítání hodnot v proměnných A a B a vložte výsledek do C“. Přestože je rozložení poněkud záhadné, lze vidět základ pro budoucí jazyk BASIC.[4] Kromě základních matematických operací jazyk zahrnoval SQR, EXP, LOG, SIN a jednoduchou větvící konstrukci.[5]
Výpočetní technika v svobodném umění
Kemény a Kurtz se shodli na potřebě programové gramotnosti u studentů mimo tradiční jazyk STEM pole; pouze 25% studentů v Dartmouthu absolvovalo kurzy týkající se STEM, ale téměř ve všech oborech byla použita určitá úroveň matematiky. Vzhledem k tomu, že se počítače ve společnosti staly důležitějšími, přemýšleli: „Jak mohou rozumná rozhodnutí o práci na počítači a jeho používání činit osoby, které o něm v zásadě nevědí?“[5]
Kemény později poznamenal, že „Naší vizí bylo, že každý student na akademické půdě by měl mít přístup k počítači a každý člen fakulty by měl mít možnost používat počítač ve třídě, kdykoli je to vhodné. Bylo to tak jednoduché.“[6] Ale to by bylo z velké části nemožné vzhledem k tomu, s čím museli pracovat; obrat v typickém běhu SCALP byl asi 15 minut a jazyky byly pro uživatele, kteří nejsou STEM, příliš obtížné pro základní úkoly.[5]
Problémem nebyla jen složitost, byl to celý koncept dávkového procesu. Studenti připravovali své programy na děrné štítky nebo papírové pásky, předávali je počítačovým operátorům a poté v budoucnu dostávali své výstupy, často aby zjistili, že došlo k chybě, a celý proces se musel opakovat. Jak později řekli: „Pokud to na jeden pokus trvá řádově 1 den, student buď ztratí zájem, nebo zapomene, jaké byly problémy. V nejlepším případě bude ztrácet čas čekáním na výsledky daného dne. "[7][A]
V roce 1959 katedra získala díky Keményově pověsti inovátora ve výuce matematiky Nadace Alfreda P. Sloana ocenění za 500 000 $ na vybudování nové budovy oddělení.[8]
Rozvoj konceptu
Během návštěvy MIT v roce 1961 byli představeni PDP-1 a jeho nedávno dokončené experimentální sdílení času operační systém. John McCarthy zeptal se Kurtze, proč nevyužili sdílení času pro své úsilí přinést výpočetní techniku masám. Kurtz později řekl Keményovi „měli bychom sdílet čas“, na což Kemény odpověděl „OK“. Příchod Teletype Model 33 dálnopis pomocí nově zavedené ASCII přes telefonní linky vyřešil problém přístupu; již by programátoři nemuseli předávat programy na kartách nebo papírových páskách. Vše, co bylo potřeba, byl nový stroj, který byl dostatečně rychlý na to, aby hostil systém sdílení času, a jednoduchý jazyk, který mohli programátoři používat.[9]
Když se téma jednoduchého jazyka začalo vážně uvažovat, Kemény okamžitě navrhl napsat nový. Kurtz se více zajímal o omezenou verzi FORTRANU nebo ALGOLU. Ale tyto jazyky měly tolik výstředností, že Kurtz rychle souhlasil s Keményem. Postupem času se objevily čtyři klíčové prvky; systém by využíval sdílení času, potřeboval by nový jazyk, aby se uživatelé do systému dostali, nové kurzy by zavedly programování jako doplněk jiných předmětů a konečně by byly terminály otevřené všem uživatelům.[10]
Počáteční verze
Projekt byl oficiálně zahájen v září 1963. Cílem bylo vyvinout jazyk a operační systém na běžném počítači.[11] Na začátku roku 1964 byly dva granty z Národní vědecká nadace Jeden vyvinul systém sdílení času a druhý jazyk, spolu se vzdělávacími slevami od společnosti General Electric vedlo k nákupu a GE-225 počítač. To bylo spárováno s mnohem jednodušším DATANET-30 (DN-30) stroj a pevný disk připojeno k oběma strojům za účelem sdílení dat.[12]
Systém by fungoval tak, že by DN-30 spustil terminály a uložil práci na disk. Když uživatel zadal BĚH
„GE-225 by tento soubor přečetl, zkompiloval, spustil a předal zpět výsledky, které se mají vytisknout na terminálu.[13] Tato kombinace strojů byla později známá jako GE-265 a přidala jejich modelová čísla. Společnost GE vytvořila asi padesát dalších příkladů modelu GE-265, mnoho pro své servisní kancelář podnikání. GE je označoval jako své systémy sdílení času Mark I.[14]
V létě roku 1963, až do zakoupení počítače, poskytla společnost GE přístup k jednomu ze svých GE-225. Kemény začal pracovat na prototypovém kompilátoru. Studenti Michael Busch a John McGeachie začali pracovat na návrhu operačního systému, který spadne. Jazyk i OS byly během tohoto období značně upraveny, ačkoli základní cíle zůstaly stejné a byly zveřejněny v konceptu v listopadu.[12]
Stroj dorazil poslední únorový týden 1964,[15] byl v provozu do poloviny března,[16] a oficiálně předáno 1. dubna. V tomto bodě byl návrh operačního systému již dobře vyvinut. Většina studentských programátorů pracujících na operačním systému tak dělala po dobu 50 hodin týdně, kromě své běžné zátěže kurzu.[15] Jazyk byl vyvinut paralelně na vypůjčený čas na jiném stroji 225.[17] OS byl dokončen v dubnu a celý systém běžící na třech terminálech Model 33 byl připraven do konce měsíce. John Kemény a John McGeachie spustili první program BASIC 1. května 1964 ve 4 hodiny ráno ET.[16]
Není zcela jasné, jaké byly první programy. Mnoho zdrojů, včetně Dartmouthu, tvrdí, že to byl tento jednoduchý program:[18]
TISK 2 + 2
Během příštího měsíce byl systém testován zavedením testovacích programů třídy numerické analýzy. Během této doby zůstal stroj správně v průměru po dobu pěti minut.[19] Problémy však byly rychle vyřešeny a v červnu bylo rozhodnuto zvýšit počet terminálů na jedenáct. To bylo kolem tentokrát že rychlejší GE-235 nahradil 225. Na podzim bylo v provozu 20 terminálů.[12]
Nový systém
Jedním z původních cílů programu bylo zapracovat programování do jiných kurzů. To byl úspěch, ale značně to zatěžovalo systém a ukázalo se, že nemá prostor pro budoucí růst.[20]
V roce 1965 se tým obrátil na společnost GE s žádostí o podporu s pokračujícím vývojem. V září viceprezident Louis Rader nabídl nové GE-635, který běžel přibližně 10krát rychleji a zahrnoval dva CPU. Navíc by byl přidán druhý DN-30, který zvládne více linek, což je dost pro 150 současných uživatelů.[20] K jeho umístění by bylo potřeba větší zařízení než v suterénu College Hall, kde běžela 265. Peter Kiewit, třída '22, spolu s další podporou NSF vedly k výstavbě výpočetního centra Kiewit, které bylo otevřeno v prosinci 1966.[20]
Při čekání na příchod tohoto stroje byl v létě a na podzim roku 1966 na letišti GE-635 Rome Air Development Center byl použit k vývoji MOLDS, „systému ladění více uživatelů online“. GE-635 byl v provozu počátkem roku 1967 a pomocí MOLDS byl nový operační systém plně funkční v září, kdy byl GE-265 rozprodán.[21]
Společnost GE poskytla stroj zdarma po dobu tří let v rámci širší dohody, podle níž Dartmouth bude vyvíjet nové verze BASIC, zatímco GE je používá k vývoji nové verze jejich verze operačního systému.[21] Tato spolupráce se ukázala jako úspěšná; GE začala nasazovat tyto stroje jako své systémy sdílení času Mark II,[22] a do konce tohoto desetiletí byli jedním z největších prodejců sdílení času na světě.[20]
Když začal fungovat tento systém „Fáze I“, tým Dartmouthu zahájil vývoj „Fáze II“, ideálního operačního systému. To bylo instalováno v březnu 1969 a změnilo svůj název na Systém sdílení času v Dartmouthu krátce poté. Když tříleté období vypršelo, GE nadal stroj na univerzitu. Přestože týmy zůstaly v kontaktu a bylo učiněno několik pokusů o dobrou víru, aby vztah pokračoval, došlo k další malé spolupráci a partnerství oficiálně skončilo 20. září 1972.[21]
Rozšiřování uživatelské základny
Přezkum v roce 1968 zaznamenal, že 80% studentů a 70% fakulty tento systém nějak využívalo. Po celém areálu byly rozmístěny stovky terminálů, od nemocnice po obchodní školu. 57% času CPU bylo použito pro práci v kurzu, 16% pro výzkum a zbývajících 27% pro „rekreační využití“; Dartmouth aktivně vybídl uživatele, aby hráli hry, což je způsob, jak získat praktické používání a překonat strach z počítače.[23]
Počínaje dalším grantem NFS, v roce 1967 Dartmouth také začal umisťovat terminály na místa mimo areál, včetně středních škol v této oblasti. Pokud jde o počet uživatelů, tyto terminály hostovaly 69% z celkového počtu uživatelů, i když využívali menší množství počítačového času.[23] Do roku 1971 bylo 79 vzdálených terminálů, tak daleko, jak daleko New Jersey a Bangor, Maine. Ty byly podporovány multiplexer systémy, které umožňovaly podporu až 12 terminálů přes jednu hlasovou telefonní linku. Řada těchto linek byla navíc k dispozici pro telefonické použití s telefonním číslem modem.[24]
Vliv
Sdílení času bylo hlavní oblastí výzkumu v 60. letech, kdy mnoho v počítačovém průmyslu předpovídalo, že výpočetní výkon bude levný a rozšířený. Toto nejslavněji uvedl John McCarthy, který uvedl, že „výpočet může být někdy organizován jako veřejná služba, stejně jako telefonní systém je veřejná služba.“[25]
Díky BASICu se tyto služby staly mnohem přístupnější pro koncové uživatele, jejichž úkoly by trvaly příliš dlouho na to, aby byly kódovány tak, aby byly vhodné pro řešení na počítači. To vedlo k řadě výrobců, kteří představili počítače speciálně určené pro tento trh uživatelů, kteří chtěli řešit malé nebo střední úkoly a nebyli tak znepokojeni přímým výkonem. Zejména dva stroje zaměřené přímo na tento trh se staly „nejrozšířenějšími malými systémy sdílení času, jaké byly kdy vyvinuty“.[22]
The HP 2000 běžel HP Time-Shared BASIC, kombinace BASIC a časově sdíleného operačního systému téměř identického s nastavením DTSS. Systém podporoval až 32 současných uživatelů a používal low-endový procesor HP 2100 ke spouštění terminálů stejným způsobem jako Datanet-30 původního nastavení GE-265, zatímco programy běžely na vyšším modelu modelu stejný stroj, obvykle se liší tím, že měl více základní paměť. Společnost HP BASIC použila pro ukládání programů polokompilovaný „tokenizovaný“ formát, což zlepšilo časy načítání a znamenalo, že „kompilace“ byly nulové.[26]
Digital Equipment Corporation zaujali podobný přístup a nabídli své stávající PDP-11 linka s novým RSTS / E operační systém a BASIC-PLUS. BASIC-PLUS těsněji sledoval Páté vydání, včetně ROHOŽ
příkazy, ale byl implementován jako čistý tlumočník na rozdíl od kompilátoru Dartmouth nebo tokenizovaného formátu HP. Rovněž zahrnoval řadu řídících struktur navazujících na JOSS model, jako TISKJáLIJá>10
.[27] Tymshare SUPER BASIC také podporoval struktury ve stylu JOSS a maticovou matematiku, ale zachoval původní operaci kompilace a pokračování.
Prakticky každý prodejce éry nabídl nějaké řešení tohoto stejného problému, i když nemusí být tak blízké originálu. Když Kurtz začal uvažovat o vytvoření ANSI Standard pro BASIC v roce 1973 zjistil, že počet kanceláří služeb sdílení času s dostupným BASIC byl větší než v jakémkoli jiném jazyce. Bohužel tento úspěch byl také problémem; do té doby bylo tolik variací, že se norma zdála nemožná.[22]
Hry v ZÁKLADĚ
Kemény aktivně podporoval hry na platformě DTSS a považoval to za jeden z hlavních důvodů úspěchu systému DTSS.[28] Pravděpodobně byl autorem knihy časná mainframová hra. Ačkoli si za to Kemény nevzal zásluhy, později se o tom zmínil FTBAL uvedením „bylo napsáno v neděli po jistém Dartmouth-Princeton hra v roce 1965, kdy Dartmouth vyhrál Lambertova trofej. Je to druh pamětního programu. “Tato hra byla rozrušená nad silně oblíbeným Princetonem.[29][b]
Jak se systém rozšiřoval, zejména po přidání manipulace s řetězci v BASICu, stal se systém DTSS hlavní platformou pro vývoj mnoha textové hry. Na začátku 70. let 20. století Lidová počítačová společnost začal je publikovat ve svém časopise, obvykle převedeném na široce dostupnou verzi HP BASIC. Mnoho z těchto výpisů bylo shromážděno v jejich knize z roku 1975, Co dělat poté, co stisknete návrat. I když jsou publikovány ve formě HP BASIC, většina z nich stopuje svou historii buď k DTSS, nebo k Lawrence Hall of Science v Kalifornii, kde byl zřízen podobný stroj, známý jako ROZHODNUTÍ.[31]
Slavnější sbírka je ZÁKLADNÍ počítačové hry z roku 1978, kdy asi polovina programů v knize byla napsána v Dartmouthu, včetně dalšího od Keménye, Batnuma, nebo častěji, jedné z mnoha středních škol, které k ní byly připojeny po roce 1968. Obzvláště plodná střední škola byla Lexington High School v Massachusetts ale objevuje se také mnoho dalších škol. Řada programů neuvádí své původní umístění, ale pochází od autorů, kteří byli pravděpodobně připojeni k systému prostřednictvím školy nebo veřejných projektů, jako je Project SOLO.[32]
Verze
První vydání
Původní verze, se zpětnou platností známá jako verze jedna, tyto příkazy podporovala NECHAT
, TISK
, KONEC
, PRO DALŠÍ
, JÍT DO
, GOSUB ... NÁVRAT
, POKUD ... POTOM
, DEF
, ČÍST
, DATA
, ZTLUMIT
, a REM
. Zahrnovalo základní matematické pokyny, +, -, * a /, stejně jako šipka nahoru pro exponenty „... protože na dálnopisném psacím stroji není možné tisknout horní indexy.“[33]. V moderních odrůdách je šipka nahoru obvykle nahrazena znakem „klobouk“, ^. Exponenti si před výpočtem vzali absolutní hodnotu čísla, tedy k výpočtu -X ^ 3
, jeden musel použít X * X * X
. Ve exponenciální funkci, která ošetřovala, byl další problém -X ^ 2
tak jako (-X) ^ 2
na rozdíl od správného pořadí operací - (X ^ 2)
, který byl opraven až ve třetím vydání.[33] The INT ()
funkce vždy zkrácena na nulu.[34]
Jazyk měl řadu vlastních výstředností. Na rozdíl od pozdějších verzí NECHAT
příkaz byl vyžadován u všech příkazů bez dalšího příkazu, takže 10A=5*5
nebyl v této verzi platný.[34] The TISK
příkaz použil čárku při tisku více proměnných a postoupil do další z pěti „zón“. Čárka nebyla nutná v případě, že jeden tiskl výzvu a jedinou hodnotu, takže TISK„hodnota A je“A
byl platný. Poněkud skrytým rysem bylo, že všechny proměnné byly schopné reprezentovat pole (vektory) až deseti prvků (dolní indexy 1 až 10, ve druhém vydání změněné na 0 až 10), aniž by byly deklarovány tímto způsobem pomocí ZTLUMIT
.[35][C]
Názvy proměnných byly omezeny na jedno písmeno nebo písmeno následované číslicí (286 možných názvů proměnných). Všechny operace byly provedeny v plovoucí bod. Na GE-225 a GE-235 to poskytlo přesnost asi 30 bitů (zhruba deset číslic) s rozsahem exponentů base-2 od -256 do +255.[36]
Navíc, vzhledem k tomu, že velikost slova GE-235 je 20 bitů a používá a šestibitový znakový kód, jazyk zakotvil použití třípísmenných názvů funkcí, protože to umožnilo uložení tří šestibitových znaků do 20bitového slova (s použitím 18 bitů). Proto mají ZÁKLADNÍ funkce tři písmena INT
nebo SQR
, něco, co zůstalo v mnoha variantách jazyka dlouho poté, co opustili GE-235.[34]
Druhé vydání, CARDBASIC
Druhé vydání BASICu, i když se o něm v té době nehovořilo, provedlo jen minimální změny. Vydáno v říjnu 1964 umožnilo polím začínat jako dolní index 0 místo 1 (užitečné pro reprezentaci polynomy ) a přidal středník, ;, do TISK
prohlášení.[37] Na rozdíl od pozdějších implementací, kde toto ponechalo mezeru mezi položkami, středník pokročilý tisk na další násobek tří znaků, což umožnilo "zabalit" více čísel do řádku výstupu než existující oddělovač čárky.[38]
Říjnová verze také zahrnovala samostatnou definici pro CARDBASIC, která byla jednoduše verzí BASIC pro použití na pracovních postupech založených na kartách. CARDBASIC byl téměř identický s interaktivní verzí, s tou výjimkou, že neobsahoval pole založená na nule. Ještě důležitější pro budoucnost jazyka, CARDBASIC přidal ROHOŽ
příkazy, které fungovaly s numerickými maticemi. CARDBASIC nebyl dále vyvíjen, protože celá myšlenka BASIC měla být interaktivní.[37]
Třetí edice
Třetí vydání, vydané v roce 1966 a první, které používalo pojmenování „vydání“, bylo první navrženo konkrétně se záměrem provozu na novém počítači GE-635, který měl brzy dorazit. Tato verze obsahuje ROHOŽ
funkce z CARDBASIC, i když nyní umožňují index 0.[39]
Nové SGN
funkce dala znaménko svého argumentu (kladné ⇒0 a záporné ⇒1), zatímco OBNOVIT
byl přidán k "přetočení" pozice PŘEČTĚTE / DATA
. Problém s umíráním byl opraven, takže -X ^ 2
bude interpretováno jako - (X ^ 2)
.[39] Navíc INT
funkce byla změněna na skutečnou podlahu, na rozdíl od trim-towards-zero, což umožnilo implementaci zaokrouhlování INT (X + 0,5)
[34]
Hlavní změnou v této verzi byla nová VSTUP
příkaz, který uživateli umožňoval zadávat číselné hodnoty, čímž byl jazyk při provádění poprvé skutečně interaktivní; dříve jediný ovládací prvek, který měl během provádění, byl psát STOP
na monitoru. Systém navíc nyní umožňoval a podporoval odsazení smyček, což je funkce, která se u většiny ostatních verzí jazyka BASIC neobjevila.[40]
Čtvrté vydání
Třetí vydání zůstalo v provozu po celou dobu životnosti GE-235 na podzim roku 1967. Nicméně, jak bylo plánováno přijetí GE-635, byla na jaře roku 1967 vytvořena experimentální verze pro 635. Tato verze byla partnerství mezi GE a Dartmouthem, přičemž GE přispívá novým operačním systémem i řadou funkcí BASIC z jejich vlastního úsilí Mark 1 BASIC.[40]
Tato verze, původně publikovaná jako doplněk třetího vydání, přidala NÁHODNĚ
příkaz k "nasazení" souboru RND
funkce a ZAPNUTO ... GOTO
„vypočítané goto“, které se těsně shodovalo s podobnou funkcí ve FORTRANU. Tato verze také povolena ZAPNUTO ... POTOM
, argumentovat tím POKUD ... POTOM
nevyžadoval JÍT DO
takže zde by měl být povolen stejný formát. Nové TAB
funkce umožnila přesun tisku do daného sloupce od 0 do 74.[40] Další vnitřní změnou bylo znovu změnit ROHOŽ
být založen na 1; dalo by se použít 0. index, ale ten by byl obvykle ignorován různými příkazy.[41]Během vývoje byly provedeny dva hlavní doplňky. Prvním přírůstkem byly proměnné řetězce spolu se změnami v PŘEČTĚTE / DATA
příkazy umožňující ukládání řetězců v nich a VSTUP
interaktivně je přečíst. Jedním z rysů řetězcového systému bylo, že koncové mezery byly při srovnávání záměrně ignorovány, takže „ANO“ a „ANO“ byly považovány za rovnocenné.[42] To se později ukázalo jako závažná chyba.[41] Tato verze také přidala středník do TISK
příkazy k provedení "uzavřeného balení" výstupu.[43]
Oficiální čtvrté vydání se objevilo až v roce 1968, který přidal několik nových funkcí nad předchozí přírůstky. To zahrnovalo schopnost definovat víceřádkové funkce pomocí DEF
velení a mocní ZMĚNA
příkaz, který zacházel s řetězci jako s poli ASCII -jako kódy, které umožňují operace na znak bez nutnosti smyčky přes řetězec.[41] To byla také jediná funkce manipulace s řetězci; pro extrahování jednoho znaku nebo podřetězce bylo nutné použít jeden ZMĚNA
převést jej na pole čísel, manipulovat s tímto polem a poté jej převést zpět. To byl důvod, proč MAT byl opět založen na 1, protože délka řetězce byla umístěna na nulu, takže byla normálně ignorována.[44]
Páté vydání
Páté vydání, od konce roku 1970, opět začalo jako dva doplňky ke čtvrtému vydání, od února do dubna 1969.[41]
Hlavní změnou bylo zavedení zpracování souborů. Dříve všechna předdefinovaná data, která musela být použita v programu, musela být umístěna do DATA
řádky a poté číst najednou pomocí ČÍST
příkaz. Tato přípona umožňovala přístup k souborům a jejich čtení podobným způsobem. The VSTUP
příkaz lze nyní použít ke čtení jedné položky ze souboru, zatímco TISK
napsal by jeden. Pro náhodný přístup slouží ČÍST
nyní může být umístěn kdekoli v souboru s RESETOVAT
příkaz, zatímco PSÁT SI
by psal na tom místě. Aktuální umístění bylo vráceno LOC
funkce a délka souboru o LOF
. Dalo by se také otestovat, zda jste byli na konci souboru během sekvenčních čtení pomocí KDY POTOM KONEC ...
.[45]
Další významnou změnou byla schopnost jednoho programu BASIC volat jiný pomocí ŘETĚZ
příkaz a předejte mu proměnné pomocí BĚŽNÝ
seznam. Později bylo zjištěno, že tento základní koncept měl řadu problémů, ale přesto se používal k psaní některých velkých programů.[45]
Byly také přidány četné menší změny. Mezi nimi byla dvourozměrná pole řetězců, na rozdíl od jednorozměrných v předchozí verzi, stejně jako schopnost používat DEF
definovat funkce založené na řetězcích spíše než jen matematické. Nové funkce zaměřené na systém zahrnovaly CLK $, DAT $ pro práci s časy a daty, TIM, který vrátil uplynulý čas, a USR $, které vrátily číslo uživatele, což by dnes bylo uživatelské jméno. Nové funkce řetězce zahrnovaly LEN, STR $, VAL, ASC, které jsou běžné v moderních základních dialektech. The ' jako krátká forma pro REM
také se objevil v této verzi.[45]
Šesté vydání
Práce na šestém vydání začaly na podzim roku 1969, předtím, než bylo dokončeno páté vydání. Na rozdíl od předchozích verzí, kde byly dokumenty se specifikacemi založeny na změnách provedených v kompilátoru, byla pro novou verzi předem napsána úplná specifikace. Na této verzi pracovali Kemény a Kurtz, stejně jako několik bývalých studentů, kteří se vrátili jako učitelé; Stephen Garland, John McGeachie a Robert Hargraves. Bylo ponecháno značné množství času na zrání, přičemž beta verze běžela tři měsíce v létě 1971, než byla konečně vydána 21. září 1971. Díky tomu, že byl čas na zrání poskytnut, bylo to, jak popsal Kurtz, „pravděpodobně nejlépe navržený a nejstabilnější softwarový systém, jaký kdy Dartmouth napsal.“[46]
Jednou z hlavních změn bylo nahrazení dřívějších ŘETĚZ
koncept s mnohem lépe definovaným VOLÁNÍ
, která fungovala podobným způsobem jako GOSUB
ale odkazující spíše na název funkce než na číslo řádku. Funkce byly definovány pomocí SUB ... SUBEND
, a umožnil předání libovolných parametrů jako součást hovoru, místo použití BĚŽNÝ
Systém. Další významnou změnou bylo použití popisovačů souborů (čísel) vytvořených pomocí SOUBOR
příkaz, který je podobný příkazu OTEVŘENO
najdete ve většině moderních BASIC. Nové funkce řetězce zahrnovaly SEG $
vrátit podřetězce podobným způsobem jako MID $
nalezený v BASIC odvozených od MS, POS
který vrací umístění jednoho řetězce uvnitř druhého a & pro zřetězení.[47] POUŽÍVEJTE TISK
poskytl formátovaný výstup podobným způsobem jako FORTRAN.[48]
Šesté vydání bylo v podstatě poslední verzí původního konceptu BASIC. Po mnoho let zůstal nezměněn. Pozdější verze byly výrazně odlišné jazyky.[46]
SBASIC
V roce 1976 Stephen Garland shromáždil řadu strukturované programování dodatky k vytvoření Dartmouth Structured BASIC nebo SBASIC.[49] Primárním cílem bylo nahradit řídicí struktury založené na POKUD ... POTOM
a JÍT DO
s řadou blokově orientovaných struktur. Udělal to pomocí předkompilátoru, který převzal zdrojový kód SBASIC, převedl jej na 6. vydání BASIC a poté jej zkompiloval a spustil jako obvykle. SBASIC také přidal řadu grafických funkcí založených na SPIKNUTÍ
příkaz, který byl přidán jinými programátory.[50]
Blokové struktury byly ukončeny shodnými příkazy, jak tomu bylo v případě ALGOL 68, na rozdíl od obecných blokových struktur nalezených v jazycích jako Pascal nebo C. Například DĚLAT, ZATÍMCO...
překlenul více řádků, dokud to neskončilo a SMYČKA
.[51] The DĚLAT
smyčka může být také ukončena zdola odstraněním ZATÍMCO
nebo DOKUD
a umístění podmíněné na dno na SMYČKA
. Nekonečné smyčky byly podporovány pomocí DĚLAT NAVŽDY
nebo Smyčka NAVŽDY
.[52]
„Původní“ Dartmouth BASIC nepovolil prohlášení po a PAK
, pouze číslo řádku, na které se má pobočka. SBASIC povolil jakékoli prohlášení, například KDYŽ X <5 PAK X = X + 1
.[53] Toto základní rozšíření do POKUD ... POTOM
, průkopníkem v roce 1972 s BASIC-PLUS,[54] v tomto bodě již byla široce podporována většinou různých BASIC, včetně mikropočítač verze, které byly v této době vydávány. Kromě toho SBASIC přidal blokově orientovaný LI
umístěním PAK
na samostatném řádku a poté blok ukončit pomocí POKRAČOVAT
.[55] Kromě toho SBASIC přidal VYBERTE PŘÍPAD
mechanismus, který přežije dodnes v VB.net.[56]
SBASIC také přidal řadu grafických příkazů určených k použití plotry. To vyžadovalo PLOTTER "plottername"
přesměrovat následné příkazy na vybrané zařízení a OKNO...
nastavit jeho parametry. Od té doby, PLOT X, Y
vytvoří na vybraném plotru tečky a přidá středník na konec příkazu, jak se používá v TISK
, by například nechali pero na papíře a vytvořily čáru POZEMEK 10,10; 20,20
.[57]
SBASIC tvořil základ pro ANSI BASIC, ale toto úsilí trvalo tak dlouho, že se i Garland vzdal čekání na schválení, a začátkem 80. let místo toho začal učit hodiny programování v Pascalu.[58]
Sedmé vydání
Garlandův SBASIC byl napsán jako předkompilátor, sám ve zdrojovém kódu SBASIC. Systém načte zdroj SBASIC, zapíše odpovídající kód 6. vydání a poté tento výstup zkompiluje. Sedmé vydání, vydané v roce 1978, bylo verzí SBASIC, která byla samostatným samostatným překladačem. Přidala řadu vlastních doplňků. Většinou změn bylo další rozpracování systému pro volání externích programů a „překryvů“, které umožnily rozdělení programu na části. V této verzi SUB
s sdílení jednoho souboru sdílených dat mezi nimi, což poskytuje trochu skrývání dat ve skupině rutin, nebo co by dnes bylo známé jako modul.[59]
Kromě toho toto vydání přidalo strukturované zpracování chyb a umožňovalo libovolnou maticovou matematiku NECHAT
prohlášení, takže by se dalo LET A = M * 4
kde M byla maticová proměnná a výstup další matice do A se všemi prvky v M násobil. Konečně další významnou aktualizací byly podprogramy, které nyní používají aktivační záznam systém, který umožňoval rekurze.[59]
ANSI BASIC, osmé vydání
Na začátku 70. let se počet implementací BASIC rozrostl na desítky, přičemž u všech došlo ke změnám v základním konceptu zavedeném v původní verzi. Většina z nich vycházela z pátého vydání, i když jim často chyběly pokyny MAT a schopnost odsadit kód. GE byla jednou z těchto společností; vydali své systémy Mark II s 5. vydáním, místo aby čekali, až dorazí 6. o několik měsíců později.[60] BASIC-PLUS na platformě DEC byla možná nejbližší implementace, například včetně příkazů MAT, ale poté přidala řadu změn, které nebyly zpětně kompatibilní.[27]
Po vydání 6. vydání se Kurtz zapojil do snahy definovat standardní BASIC. An Americký národní normalizační institut (ANSI) pracovní skupina, X3J2, založená v lednu 1974, a odpovídající Evropská asociace výrobců počítačů (ECMA) skupina TC21, toho září. Cílem v té době bylo vytvořit dva související standardy. Minimal BASIC by byl podobný Second Edition, ale přidání řetězců, což je standard, kterému by se už prakticky každý BASIC dokázal přizpůsobit. Standardní BASIC by přidal více funkcí k výrobě něčeho více v souladu se skutečnými odrůdami BASIC na trhu.[60]
Proces byl pomalý a první koncept Minimal BASIC byl publikován až v lednu 1976, což vedlo k jeho oficiálnímu přijetí v prosinci 1977 ECMA a 1979 ANSI jako X3.60-1978. Minimal BASIC byl podobný 3. vydání, včetně řetězcových proměnných, ale postrádal MAT a další pokročilé funkce.[61] Naproti tomu Standard BASIC měl mnoho nových funkcí, které v jiných BASICech neexistovaly, a mnoho z nich bylo špatně zváženo a bylo předmětem určité kritiky. Například standard zahrnoval znak pokračování řádku, ale vybral ampersand, &, který byl také použit pro zřetězení řetězců. Jejich použití v jednom řádku by mohlo vést k velmi matoucímu kódu.[62]
Do této doby, vydání prvního mikropočítač systémy v roce 1975 rychle vedly k zavedení Altair BASIC, první verze toho, co bude brzy známé jako Microsoft BASIC. MS BASIC byl vzorován na BASIC-PLUS, a tedy nakonec Páté vydání, ale postrádal odsazení, MAT a další funkce. Také přidal VLEVO $
a RIGHT $
funkce, porušující třípísmennou konvenci. Jak počet mikropočítačů rostl a změnil se na domácí počítač na konci 70. let se MS BASIC stal de facto Standard.[60]
S touto rychlou změnou na trhu se úsilí Standard BASIC dále zpomalilo a formálně bylo ratifikováno až v roce 1987 jako X3.113-1987. Do této doby neměly standardy žádný skutečný účel; nejenže byl MS BASIC všude, ale v polovině 80. let používání BASICu upadalo, protože software zmenšování převzal od programů pro zadávání textu. Oba standardy byly nakonec staženy.[60]
Navzdory případnému neúspěchu úsilí ANSI byl v roce 1982 v Dartmouthu implementován návrh Standard BASIC jako osmé vydání.[59]
Rozhraní DTSS
DTSS implementováno brzy integrované vývojové prostředí (IDE): interaktivní rozhraní příkazového řádku. To poskytlo řadu příkazů pro ovládání uživatelů a úloh. For instance, an idle terminal could be connected to a user account by typing AHOJ
, and logged out again with SBOHEM
.[d]
Any line typed in by the user, and beginning with a line number, was added to the program, replacing any previously stored line with the same number; vše ostatní bylo považováno za příkaz DTSS a bylo okamžitě provedeno. Lines which consisted solely of a line number weren't stored but did remove any previously stored line with the same number. This method of editing was necessary due to the use of dálnopisů as the terminal units.
Each user account could have any number of BASIC programs stored offline, while administrator accounts could also leave programs in permanent storage. Any one of these was active at a given time for a given user account, and if no program had been loaded, a new program was assumed. Stored programs were accessed using commands that are today better known as parts of the BASIC language itself; například SEZNAM
command instructed DTSS to print out the currently active program.
Seznam příkazů
AHOJ
- log into DTSS
SBOHEM
- log off from DTSS
ZÁKLADNÍ
- start BASIC mode
NEW
- name and begin writing a program
OLD
- retrieve a previously named program from permanent storage
SEZNAM
- display the current program
ULOŽIT
- save the current program in permanent storage
UNSAVE
- clear the current program from permanent storage
CATALOG
- display the names of programs in permanent storage
POŠKRÁBAT
- erase the current program without clearing its name
PŘEJMENOVAT
- change the name of the current program without erasing it
BĚH
- execute the current programs
STOP
- interrupt the currently running program
FRI
- Friden mode for teletypes with mechanical linefeeds
NFR
- exit Friden mode
EXP
- explain (help) EXP EXP for list of commands that can be explained by the system
NAHRADIT
- save the current program using a name already in use for another file
The commands were often believed to be part of the BASIC language by users, but, in fact, were part of the time sharing system and were also used when preparing ALGOL or FORTRAN programs via the DTSS terminals.
BASIC language
The first release implemented the following statement types, taking some of its operators and keywords from FORTRAN II a některé z ALGOL 60. Overall, the language more closely follows the FORTRAN model,[33] in that it generally has one statement per line of code, lacks ALGOL's "blocks" to group code (these structured programming constructs were a primary reason for ALGOLs development) and the use of GOTO to control program flow.
From ALGOL it took the ZA ... K ... KROKU
style loops that replaced FORTRAN's unwieldy DO...CONTINUE
prohlášení.[34] BASIC also simplified the IF...THEN
construct to allow simple comparisons like IF X>5 THEN GOTO 20
, as opposed to FORTRAN's IF (X-5) 20,20,30
.[34] FORTRAN's style "computed IF" was reintroduced with the ON...GOTO
command in later versions.
Variable names were limited to A to Z, A0 to A9, B0 to B9, ..., Z0 to Z9, giving a maximum of 286 possible distinct variables. FORTRAN's odd system for setting up the variables I through N as integers and the rest as floating point was removed, and all variables were assumed to be floating point and dimensioned with up to 10 elements. The ZTLUMIT
command was only required if the array held more than ten elements.[34] Array names were restricted to A to Z only.
List of BASIC statements
DEF
- define single line functions
ZTLUMIT
- (zkratka pro dimenze) define the size of arrays
KONEC
- define the end of the program
STOP
- stop a program before the textual end
PRO / NA / KROK
- define loops
DALŠÍ
- mark the end of loops
GOSUB
- transfer control to simple subroutines
VRÁTIT SE
- return control from simple subroutines
JÍT DO
- transfer control to another statement
LI / PAK
- rozhodování
NECHAT / =
- assign formula results to a variable
TISK
- output results
DATA
- store static data within the program
ČÍST
- input data stored in DATA statements
REM
- comment ("REMark")
It also implemented floating-point numeric variables and arithmetic.
Seznam operátorů
Aritmetické operátory | Relational/logical operators | ||
---|---|---|---|
- | Negation (unary op.) | = | Equal To |
+ | Přidání | <> | Not Equal To |
- | Subtraction (binary op.) | < | Méně než |
* | Násobení | <= | Less Than or Equal To |
/ | Divize | > | Větší než |
↑ | Umocňování | => | Greater Than or Equal To |
Grouping operator | |||
( ) | Seskupení |
List of functions
břišní svaly
- Absolutní hodnota
ATN
- Arctangent value (result in radiány )
COS
- Cosine value (argument in radiány )
EXP
- Exponential value
INT
- Celočíselná hodnota
LOG
- Natural Logarithmic value
RND
- Random value
HŘÍCH
- Sine value (argument in radiány )
SQR
- Square root value
OPÁLENÍ
- Tangent value (argument in radiány )
Příklady
Early versions of BASIC did not have the ability to read and write external files. To represent lists of data that would normally be read from a file, BASIC included the DATA
keyword, which could be followed by an arbitrarily long list of elements, ending only at the limit of the line length. The DATA
was non-executable and was skipped if encountered. ČÍST
commands would consume the data one by one, keeping track of its location within the complete collection of DATA
elements in an internal pointer. In version 3, a OBNOVIT
command was added to reset the pointer to the first DATA
command in a program.
In this example, "the first three data values are read into X, Y, and Z respectively. The value -1 is read into N. The next 11 values, .1 through .3, are read into the 11 elements of array B."[63]
15ČÍSTX,Y,Z20ČÍSTN24PROJá=0NA1025ČÍSTB(Já)26DALŠÍJá40DATA4.2,7.5,25.1,-1,.1,.01,.001,.000145DATA.2,.02,.002,.0002,.015,.025,.3,.03,.003
Unlike most subsequent BASICs, Dartmouth BASIC, from the Third Edition onwards, had a matrix keyword, ROHOŽ
, which could prefix a number of other commands to operate on entire arrays of data with a single command. In this example, from the 1968 manual,[64] MAT INPUT V
is used to input a series of variables. When the user enters nothing on a line, this process ends and the total number of elements is accessed in the NUM
pseudovariable.[E] The code then adds up all of the individual elements in the matrix and calculates the average. The Third Edition also added indentation, which is used here to clarify the loop structure.
5NECHATS=010ROHOŽVSTUPPROTI20NECHATN=NUM30LIN=0PAK9940PROJá=1NAN45NECHATS=S+PROTI(Já)50DALŠÍJá60TISKS/N70JÍTNA599KONEC
Poznámky
- ^ Note the use of the term "his", which in this case was the only possibility as Dartmouth did not admit women until some time later.
- ^ David Ahl stated Kenemy had written it when describing the game in BASIC Computer Games.[30]
- ^ This feature was found on most BASICs based on Dartmouth, but was rare on those that were created independently.
- ^ There was no need to log out, if users did not respond, they were logged out after a short delay.
- ^ Proč
NUM
was not implemented as a function, likeLEN()
, is a mystery.
Reference
Citace
- ^ What to do after you hit Return. Lidová počítačová společnost. 1975.
- ^ A b Kurtz 1981, str. 516.
- ^ A b Kurtz 1981, pp. 516-516.
- ^ Kurtz 1981, str. 517.
- ^ A b C Kurtz 1981, str. 518.
- ^ Time 2014.
- ^ Kenemy & Kurtz 1968, str. 3.
- ^ "High Math at Hanover". Čas. 23 February 1959.
- ^ Kurtz 1981, str. 519.
- ^ Kurtz 1981, str. 519-520.
- ^ Kiewit 1971, str. 9.
- ^ A b C Kurtz 1981, str. 520.
- ^ Dartmouth Time Sharing System (DTSS). Březen 1995. Vyvolány 27 May je 2016
- ^ Kurtz 1981, pp. 532,534.
- ^ A b Kenemy & Kurtz 1968, str. 224.
- ^ A b Kiewit 1971, str. 10.
- ^ Kenemy & Kurtz 1968, str. 225.
- ^ „Šedesátá léta“. Dartmouth ITS.
- ^ Kenemy & Kurtz 1968, str. 226.
- ^ A b C d Kiewit 1971, str. 11.
- ^ A b C Kurtz 1981, str. 533.
- ^ A b C Kurtz 1981, str. 534.
- ^ A b Kiewit 1971, str. 17.
- ^ Kiewit 1971, str. 18.
- ^ Garfinkel, Simson (1999). Abelson, Hal (ed.). Architects of the Information Society, Thirty-Five Years of the Laboratory for Computer Science at MIT. Cambridge: MIT Press. p. 1. ISBN 978-0-262-07196-3.
- ^ A Guide to Time Shared BASIC (PDF). Hewlett Packard. Srpna 1969.
- ^ A b BASIC-PLUS Manual (PDF). DEC. 1972.
- ^ Kemény, John (1972). Man and the computer. Scribner. p.35.
- ^ "John Kemény and Tecmo's BASIC FTBALL Granddaddy". 17. října 2017.
- ^ Ahl 1978, str. 64.
- ^ What to do after you hit return. Lidová počítačová společnost. 1975.
- ^ Ahl 1978.
- ^ A b C Kurtz 1981, str. 523.
- ^ A b C d E F G Kurtz 1981, str. 524.
- ^ Kurtz 1981, str. 525.
- ^ Kurtz, Thomas. "BASIC Commands: The Original-Original Version".
- ^ A b Kurtz 1981, str. 526.
- ^ BASIC version 4 manual (PDF). Dartmouth College. January 1968.
- ^ A b Kurtz 1981, str. 527.
- ^ A b C Kurtz 1981, str. 528.
- ^ A b C d Kurtz 1981, str. 529.
- ^ Man4, str. 66.
- ^ Man4, str. 64.
- ^ Man4, str. 67.
- ^ A b C Kurtz 1981, str. 530.
- ^ A b Kurtz 1981, str. 531.
- ^ Kurtz 1981, str. 532.
- ^ Elliott 1988, str. 134.
- ^ Garland 1976.
- ^ Garland 1976, str. 1.
- ^ Garland 1976, str. 4.
- ^ Garland 1976, str. 5.
- ^ Garland 1976, str. 6.
- ^ Jazyková příručka BASIC-PLUS (PDF). Maynard, Massachusetts: Digital Equipment Corporation. 1972. str. 3-13.
- ^ Garland 1976, str. 7.
- ^ Garland 1976, str. 10.
- ^ Garland 1976, str. 21.
- ^ Mace, Scott (6 September 1982). "College Board developing Pascal-based AP course". InfoWorld. p. 29.
- ^ A b C Elliott 1988, str. 135.
- ^ A b C d Marconi.
- ^ Minimal BASIC (PDF). ECMA. Leden 1978.
- ^ Guntheroth, Kurt (July 1983). "The New ANSI BASIC Standard". Oznámení ACM SIGPLAN. 18 (7): 50–59. doi:10.1145/988216.988221. S2CID 31236801.
- ^ BASIC Language Reference Mandual. Interdata. January 1975. pp. 3–24.
- ^ BASIC, 4th Edition, 1968, strana 53
Bibliografie
- Kenemy, John; Kurtz, Thomas (11 October 1968). "Dartmouth Time-Sharing". Věda. 162 (3850): 223–228. Bibcode:1968Sci...162..223K. doi:10.1126/science.162.3850.223. PMID 5675464.
- Kurtz, Thomas E. (1981). "ZÁKLADNÍ". In Wexelblat, Richard (ed.). History of programming languages. History of Programming Languages I. New York: ACM. str.515–537. doi:10.1145/800025.1198404. ISBN 0127450408.
- The Kiewit Computation Center and the Dartmouth Time-Sharing System. Dartmouth University. 1971.
- BASIC version 2 manual (PDF). Dartmouth College. Říjen 1964.
- BASIC version 4 manual (PDF). Dartmouth College. January 1968.
- Garland, Stephen (December 1976). Structured Programming, Graphics, and BASIC. Dartrmouth College.
- "Fifty Years of BASIC, the Programming Language That Made Computers Personal". Čas. 29.dubna 2014.
- Ahl, David (1978). ZÁKLADNÍ počítačové hry. Kreativní výpočetní technika.
- Marconi, Andrea. "History of the BASIC Programming Language" (PDF). Q7basic.
- Elliott, Brig (1988). "ZÁKLADNÍ". In Kent, Allen; Williams, James (eds.). Encyclopedia of Microcomputers: Volume 2. CRC Press. pp. 133–153. ISBN 9780824727017.
Další čtení
- Kemény, John G. & Kurtz, Thomas E. (1985). Back to BASIC: The History, Corruption and Future of the Language. Addison-Wesley Publishing Company, Inc. ISBN 0-201-13433-0.