ALAPVETŐ

ALAPVETŐ
Nyelvóra algoritmikus, később procedurális , később objektumorientált
Megjelent 1964
Szerző Thomas Kurtz , John Kemeny
Fejlesztő Kurtz, Thomas , Kemeny, John George és Mary Kenneth Keller [d] [1] [2]
Fájlkiterjesztés _ .bas
Típusrendszer laza
Befolyásolva Algol 60 , Fortran II, JOSS
befolyásolta COMAL , GRASS és a nyelv sok későbbi dialektusa
 Médiafájlok a Wikimedia Commons oldalon

BASIC ( BASIC , az angol rövidítése.  Beginner's All-purpose Symbolic Instruction Code  - univerzális kód a szimbolikus utasításokhoz kezdőknek [3] ) - magas szintű programozási nyelvek családja .

1964 - ben fejlesztették ki a Dartmouth College professzorai , Thomas Kurtz és John Kemeny [4] .

A nyelv olyan eszközként jött létre, amellyel a nem programozó tanulók önállóan hozhattak létre számítógépes programokat problémáik megoldására. Széles körben elterjedt különféle nyelvjárások formájában, elsősorban otthoni számítógépek nyelveként . A mai napig jelentős változásokon ment keresztül, eltávolodva az első verziókra jellemző egyszerűségtől, a primitivizmus határát súrolva, és egy meglehetősen hétköznapi, magas szintű nyelvvé alakult, jellegzetes vonásokkal. Független nyelvként használják alkalmazási programok fejlesztéséhez, főleg Windows operációs rendszeren, különböző verziókban. Szintén széles körben használják beépített nyelvként különféle célokra szolgáló szoftverrendszerekhez, valamint programozható számológépek nyelveként .

Történelem

A BASIC megjelenésének előfeltétele a számítógépek megnövekedett elérhetősége volt az 1960-as években, valamint az időmegosztásos módban való munkavégzés (time- sharing ) megjelenése . Olyan hallgatók és szakemberek jutottak számítógéphez, akik nem képzett programozók, de számítógépen kell megoldaniuk problémáikat.

Születés

A BASIC-et 1964-ben a Dartmouth College professzorai , John Kemeny és Thomas Kurtz alkották meg, és az ő irányításukkal egy főiskolai hallgatókból álló csapat valósította meg. Idővel, ahogy más dialektusok is megjelentek, az eredeti megvalósítás Dartmouth BASIC néven vált ismertté .

A BASIC-et úgy alakították ki, hogy a diákok könnyen írhassanak programokat az időmegosztó terminálok segítségével. Az "egyszerűbb" felhasználóknak szánták, akiket nem annyira a programvégrehajtás sebessége érdekel, hanem egyszerűen az, hogy a számítógép segítségével speciális képzés nélkül megoldják problémáikat.

A következő nyolc alapelvet alkalmaztuk a nyelv kialakítása során. Az új nyelv a következő volt:

  1. Legyen könnyen használható kezdők számára .
  2. Általános célú programozási nyelvnek lenni .
  3. Lehetővé teszi a rendelkezésre álló funkciók kiterjesztését a tapasztalt programozók számára.
  4. Legyen interaktív .
  5. Adjon egyértelmű hibaüzeneteket.
  6. Gyorsan dolgozhat a kis programokon.
  7. Nem szükséges megérteni a hardver működését.
  8. Védje a felhasználót az operációs rendszertől .

A nyelv részben a Fortran II-re, részben az Algol 60 -ra épült, kiegészítésekkel, amelyek alkalmassá tették időosztásra, majd később szövegfeldolgozásra és mátrixaritmetikára. A BASIC-et eredetileg a GE-265 nagyszámítógépen valósították meg, több terminál támogatásával. A közhiedelemmel ellentétben létrejöttekor összeállított nyelv volt.

Növekedés

Bár a nyelvet már több miniszámítógépen is használták, igazi elterjedése az Altair 8800 mikroszámítógép megjelenésével kezdődött . Sok programozási nyelv túl nagy volt ahhoz, hogy beleférjen abba a kis memóriába, amelyet az ilyen gépek felhasználói megengedhettek maguknak. Lassú adathordozókkal, például papírszalaggal (később hangkazettával) és megfelelő szövegszerkesztővel nem rendelkező gépeknél egy olyan kis nyelv, mint a BASIC, jó áldás volt.

1975 -ben a Microsoft (akkor még csak kettő volt: Bill Gates és Paul Allen - Monte Davidov részvételével ) kiadta az Altair BASIC -et . Ennek verziói aztán egy másik platformon is megjelentek licenc alatt, és hamarosan több millió példányt és változatot használtak: az egyik változat, az Applesoft BASIC lett az Apple II szabvány nyelve . A CP/M operációs rendszerhez a BASIC-80 dialektus jött létre , amely hosszú időre meghatározta a nyelv fejlődését.

1979- ben a Microsoft több számítógépgyártóval (beleértve az IBM -et is ) tárgyalt a BASIC interpreter licenceléséről a gépeiken. Az egyik verzió ( ROM BASIC ) bekerült az IBM PC ROM - ba: a számítógép automatikusan elindulhatott a BASIC-be. Mivel az IBM akkoriban nem tulajdonított különösebb jelentőséget a személyi számítógépeknek ( fő tevékenységi területe a mainframe volt ), elveivel ellentétben lehetővé tette a Microsoft számára, hogy a tolmácsot külön értékesítse. Ez utóbbit úttörővé tette a szoftverek új generációjának kiadásában – nem kötött konkrét hardverhez, és a számítógéptől külön szállítják.

A BASIC 1970-1980-ban teljesen átélt egy olyan jól ismert jelenséget, mint egy magas szintű nyelv változatainak és dialektusainak tömeges sokszorosítása, amelyek egymással nagyrészt összeegyeztethetetlenek. Ennek több oka is volt. Mivel a nyelvet nem tekintették ipari nyelvnek, nem történt különösebb erőfeszítés a szabványosítására, minden számítógép elkészítette a saját implementációját. Ugyanebben az években nagyszámú 8 bites otthoni és oktatási számítógép jelent meg, amelyek olyan processzorokra épültek, mint az Intel 8080 (szovjet analóg - KR580VM80A ) vagy a Z80 , amelyeken a BASIC volt a fő (vagy csak elérhető) nagy teljesítményű. szintű nyelv. Minden számítógépmodell rendelkezett bizonyos hardver- és szoftverjellemzőkkel, valamint a hang- és grafikakimenet sajátos eszközeivel; nem szabványos beviteli eszközök, amelyek támogatására a BASIC implementációban speciális parancsokat, konstrukciókat vezettek be. Néha az alacsony szintű programozási eszközöket közvetlenül a BASIC-ben implementálták, mint például a fizikai memóriával való közvetlen munka vagy a hardveres megszakítások kezelése. Ezért, ha az alap részben (az operátorok minimális standard készlete és a konzol soros I / O) a legtöbb megvalósítás alapvetően hasonló volt, akkor a hangkimenet, a grafika és a szövegkonzol összetettebb vezérlése (színkezelés, egyfajta létrehozása) ablak I / O), szinte biztosan nem kompatibilisek. Ennek eredményeként a BASIC-nek csak a leggyakoribb változatai és nyelvjárásai voltak több mint egy tucat, és a gyakran össze nem egyeztethető megvalósítások száma nem volt alacsonyabb, mint a működő számítógépek típusai és fajtái.

Lejárat

Az eredeti BASIC legnagyobb felvirágzásának és fejlődésének időszakának az 1970-es évek végét - a 80-as évek első felét tekinthetjük. Ebben az időszakban szinte minden személyi számítógépnek volt saját, gyakran ROM-ba varrt BASIC tolmácsa, amely a legegyszerűbb számítógépeken gyakran egy operációs rendszer funkcióit is ellátta. Szinte minden nagyobb teljesítményű számítógépnek volt interaktív BASIC rendszere is. Gyakorlatilag nem voltak BASIC fordítók , az implementációk túlnyomó többsége egy sorszerkesztő és egy interpreter szabványos hibridje volt. Az idő múlásával a nyelv alapvető eszközei javultak, ami egyes implementációkban összetett elágazási operátorok, további ciklustípusok és paraméterekkel ellátott elnevezett eljárások megjelenéséhez vezetett.

A BASIC számos új verziója készült az IBM PC platformra. A Microsoft eladta a BASIC-et MS-DOS-hoz / PC DOS -hoz , beleértve az IBM Advanced BASIC-et (BASICA), a GW-BASIC-et (a BASICA olyan módosítása, amely nem igényel "firmware-t" az IBM-től) és a QuickBASIC -et . Az eredetileg jól ismert Turbo Pascal -al piacra lépő Borland 1985 -ben adott ki egy ugyanerre a szoftverkörnyezetre épülő Turbo Basic 1.0 rendszert (utódjait ezt követően egy másik cég adta el PowerBASIC néven ). Néhány más nyelv a jól ismert BASIC szintaxist használta egy teljesen más rendszer alapjául (lásd például a GRASS -t ). A BASIC programok teljesítményének növelésének vágya a teljes értékű fordítók (például a fent említett Turbo Basic), valamint a „hibrid” rendszerek megjelenéséhez vezetett, amelyekben az értelmezés, mint a programvégrehajtás fő módszere megtartása mellett a részleges fordítás. "on the fly" valósult meg, például rövid ciklusok összeállítása. Ezen túlmenően legalább az IBM platformon elterjedt a BASIC programok pszeudo-fordítása, amikor a fordító a BASIC programot pszeudokódra fordítja (gyakran visszafordítható), és a program szövegével az interpreter objektum modulból és a kódolt modulból futtatható programot alkot. . Egy ilyen program úgy futna és futna, mint egy normál lefordított objektumprogram, bár lényegében értelmezve maradt.

Az 1980-as évek közepén a BASIC vált a fő nyelvvé a programozható számológépek összetett modelljeiben , amelyek éppen ekkorra érték el azt a hatalmat, amely lehetővé tette egy teljes értékű, magas szintű nyelv használatát. E nyelv elterjedtségéről és népszerűségéről a jelzett időpontban a legjobban az a tény beszél, hogy sok gyártó szó nélkül a BASIC-et választotta a számológépek magas szintű nyelvének alapjául. Tehát a BASIC beépült a szovjet elektronikai MK-85 számológépbe és minden későbbi modelljébe. A BASIC használata a programozható számológépek elsődleges magas szintű nyelveként a mai napig tart; jelenleg a „kalkulátor” BASIC hasonlít leginkább az 1960-80-as évek eredeti változatához, például a CITIZEN számológépek megvalósítása mindössze 14 kulcsszót tartalmaz (a matematikai függvényeket nem számítva), és csak egykarakteres változóneveket engedélyez. .

Az 1980-as évek végére a személyi számítógépek sokkal erősebbek lettek, és olyan funkciókat (például grafikus felhasználói felületet ) biztosítottak, amelyek használata már nem volt olyan kényelmes a BASIC-ben. Ezenkívül az "oktatási" és "otthoni" osztályú ipari nyelvek (elsősorban Pascal és C) olcsó fordítóinak megjelenése a számítógépeken, kényelmes programozási környezetekkel és hasznos könyvtárakkal (például Borland Pascal ) a Turbo Vision könyvtárral ) erős versenyt teremtett a BASIC számára. A BASIC kezdett veszíteni, annak ellenére, hogy rengeteg változatát még mindig használták és értékesítették. Ezzel párhuzamosan az üzemben maradt BASIC rendszerek megjelenésében is gyors változás indult meg. Fokozatosan „sodródás” következett be az elismert szerkezeti nyelvek felé: bővült a szókincs és a nyelvi konstrukciók halmaza, megjelentek összetett ágak, alprogramokat és függvényeket neveztek el, hosszú változónevek. Emellett a személyi számítógépek megnövekedett képességei lehetővé tették a szöveges terminálon történő hatékony interaktív munka érdekében bevezetett BASIC jellemző tulajdonságainak elhagyását: soronkénti numerikus jelölések és soronkénti szerkesztés.

A BASIC második életet kapott a Microsoft Visual Basic megjelenésével . Bár nehéz egyetérteni azzal, hogy ez a nyelv valóban ALAP; ez volt a logikus konklúziója a nyelv fejlődésének, és a megszokott kulcsszavak megőrzése ellenére szerkezetét és jellemzőkészletét tekintve közelebb áll a Pascalhoz, mint az eredeti BASIC-hez. De mint eszköz a gyakorlatban hasznos Windows-programok gyors létrehozásához alacsony programozói képesítéssel, nagyon hasznosnak bizonyult, és gyorsan a Windows platform egyik leggyakrabban használt nyelvévé vált . Itt sem utolsó szerepe volt a rendszerben található GUI-készítő sikeres megvalósításának, amely elrejtette a Windows GUI programozásának részleteit a fejlesztő elől, és lehetővé tette, hogy a feladatra összpontosítsanak. A Microsoft elkészítette a WordBasic nevű változatát, és a Word 97 megjelenéséig használta az MS Word-ben. A Visual Basic for Applications (VBA) változat 1993 - ban épült be a Microsoft Excel 5.0- ba, majd 1995 -ben az Access 95-be, majd az összes többibe . a Microsoft Office programcsomagban található eszközök . Az Internet Explorer 3.0 és újabb verziói, valamint a Microsoft Outlook tartalmazott egy VBScript értelmezőt .

Leírás

A nyelv szintaxisa a Fortranhoz hasonlít , és sok elem kifejezetten abból származik. A nyelvet tanulásra tervezték, így a kialakítása a lehető legegyszerűbb. Más programozási nyelvekhez hasonlóan a kulcsszavak az angol nyelvből származnak. Két alapvető adattípus létezik: karakterláncok és számok. A Visual Basic verzió megjelenésével , valamint annak különféle módosításaival (például VBA ) számos egyéb, a modern programozási nyelvekre jellemző adattípus és kiegészítés (például az objektummodell) jelent meg a nyelvben. A változók deklarálása nem igényel speciális szakaszt (ellentétben a Pascal -al ). Egy változó deklarálása az első használata.

A BASIC korai változatai (például BASICA , GW-BASIC ) jelentősen eltérnek a modern dialektusoktól, és ma már alig használják őket.

Korai verziók

A BASIC korai verzióiban a programok megjelenését nagyban meghatározta, hogy soros szövegszerkesztővel ellátott programozási környezetbe készült. Egy ilyen szerkesztőben a felhasználó nem tudta megjeleníteni az összes szöveget a képernyőn (az ablakban), a billentyűzet és / vagy egér segítségével bármely irányba mozogni. A sorszerkesztőkben a szövegsor módosításához a felhasználónak ki kell adnia a sor módosítását egy adott számmal, majd be kell írnia a megadott sor új szövegét. Új sor beszúrásához ki kell adnia a beszúrás parancsot, ismét megadva a számot. A bemeneti karakterláncok sorban jelennek meg a képernyőn (a számoktól függetlenül). A végrehajtott változtatások megtekintéséhez a kimeneti szöveg parancsot használjuk, amely a megfelelő sorrendben (növekvő számok) adja ki a sorokat.

Mindez a BASIC-ben tükröződik. Minden sor egy számmal kezdődik. A szerkesztőbe beírva a sor a program forráskódjában a számának megfelelő helyen jelent meg. Új sor beszúrásához egy olyan sort kellett hozzáadni, amely a másik két sor száma közötti tartományba esik. Lehetetlen volt a sorokat "szétszórni", ha új sort kellett beszúrni a sorok közé, ahol a szomszédos számok vannak, ezeket a sorokat más számokkal kellett újra beírni, hogy a számozás megszakadjon (vagy használjon speciális parancsot RENUM, amely átszámozta minden már beírt sor állandó lépéssel, szinkronban változtatva az összes ugrási parancsot). A program on-line szerkesztésének egyszerűsítése érdekében gyakorlattá vált a sorok számozása 10-es lépéssel - ez szinte minden esetben lehetővé tette új sorok beszúrását a korábban beírt számok megváltoztatása nélkül. Például egy harmadik sor hozzáadásához a 20 és 30 sorok közé egy 21 és 29 közötti számot kell írni. Egy BASIC program tipikus sora így nézett ki:

10 NYOMTATÁS "Hello, World!"

Nem volt biztonságos a már meglévő sorok számának manuális megváltoztatása, mivel a számok a kezelő címkéjeként működtek GOTO. Korábban a BASIC csak numerikus címkéket engedélyezett ehhez az operátorhoz, és az egyedi szám jelenléte minden soron lehetővé tette, hogy bármelyikre feltétel nélkül ugorjon. A BASIC programozásban elkerülhetetlenek voltak a numerikus címkék és az erős használat GOTO, ami hozzájárult a rossz kódszerkezethez, és a nagy projekteknél maguknak a szerzőknek a zavarához vezetett. Még a "tésztaprogramozás" ( spagetti kód ) vicckifejezést is megalkották, mert a programlogika gyakori átmenetekkel GOTOegy tányér spagettire emlékeztet.

Az operátor terminátora a karakterlánc vége volt. Ha több utasítást szeretne egy sorba helyezni, kettőspontot kell közéjük tenni (ez nem volt megengedett a nyelv minden implementációjában). A változónevek a legtöbb nyelvjárásban csak egy betűből állhattak, amely után egy számjegyet lehetett hozzáadni, ami szintén nem javította a kód megértését. $Karakterlánc típusú változó létrehozásához a név után dollárjelet ( ) kellett tenni . Az előjel nélküli változó numerikus (lebegőpontos) változó volt. A numerikus típushoz több módosító is tartozott: a százalékjel ( %) - egész típus, a felkiáltójel ( !) - normál pontosság, oktotor ( #) - kettős pontosság (lebegőpontos adatokhoz, azaz tizedes törtekhez ). Egyes verziókban előfordulhat, hogy a numerikus módosítókat nem alkalmazták, vagy nem alkalmazták mindegyiket. A programok túlnyomó többségében csak az alapvető numerikus típust használták.

A kifejezések hasonlóak a legtöbb más procedurális programozási nyelvhez, de a BASIC első verzióiban halmazuk meglehetősen gyenge volt. A legkorábbi verziókban a kulcsszavak száma még a 20-at sem érte el. Íme egy sor alapvető programkonstrukció és interaktív parancs, amelyet a hetvenes évek végén szinte bármelyik BASIC rendszerben implementáltak:

  • LIST - A program szövegének megjelenítése a monitorra a megfelelő sorok sorrendjében. A megvalósítástól függően a parancs támogatott paramétereket – a megjeleníteni kívánt sorok tartományát. Néha az LLIST változatot támogatták - nyomtatási eszközre történő kiadás.
  • RUN - Futtassa az aktuális programot a legkisebb sorszámú sor első utasításától. Egy paraméter támogatható - a sorszám, amelyről a végrehajtást el kell indítani.
  • REM - Megjegyzés. A kulcsszó után és a sor vége előtti szöveg nem befolyásolta a program végrehajtását. Sok tolmács is támogatta az egyetlen idézetet egy megjegyzés kezdeteként.
  • INPUT "Prompt:", Változó — Nyomtassa ki a "Prompt:" szöveget a monitorra, és várja meg, amíg a felhasználó beír egy értéket, majd nyomja meg az Enter billentyűt. Ezt követően a beírt érték beírásra kerül a Változóba. A legegyszerűbb megvalósításokban az INPUT prompt nem támogatott, és külön PRINT utasításban kellett kiadni (lásd alább).
  • PRINT "Szöveg";Változó;Változó;"Szöveg" - Sorozatosan listázott objektumok (szöveg és változóértékek) megjelenítése a monitornak. A megvalósítástól függően az elválasztókat eltérően érzékelték: egyes esetekben az elválasztó legalább egy szóköz kimenetéhez vezetett, másokban az értékek sorban jelennek meg, és az elválasztókat kézzel kellett hozzáadni. Elválasztó ";" a következő sorra való fordítás elnyomásának funkcióját is ellátta.
  • CLS - A terminál képernyőjének törlése. A terminál megvalósításától, kialakításától és működési módjától függően a szöveges kurzor a bal felső vagy a bal alsó sarokba került.
  • LET - Hozzárendelés ("LET Változó = Érték" formátum). A verziók túlnyomó többségében a LET operátor támogatott, de opcionális volt - a változó hozzárendeléseket LET nélkül írták.
  • DIM - A tömb leírása. A hagyományos változókkal ellentétben a tömbök leírást igényeltek. A tömbdimenziók maximális számát csak a megvalósítás határozta meg
  • ADATOK – közvetlenül a programszövegben elhelyezett adathalmaz (konstans vagy tömbállandó analógja).
  • READ – Az ADATkészletből való olvasás parancsa.
  • GOTO Lbl – Feltétlen ugrási parancs az Lbl címkéhez.
  • ON ... GOTO - Számított átmeneti parancs - az ON után egy számított kifejezésnek vagy változónak kellett volna lennie, a GOTO után pedig - vesszővel elválasztott címkék halmaza. A kifejezés értéke a címke számát jelezte.
  • HA ... AKKOR ... - A szokásos fiókkezelő. Az IF után egy logikai feltétel, a THEN után pedig egy operátor, amelyet végre kell hajtani, ha ez a feltétel igaz. A rekord lerövidítése érdekében sok implementáció támogatta a konvenciót – ha a THEN után egy szám következik, akkor erre a címkére kell ugrani, vagyis az "IF ... THEN 150" forma megegyezik a "HA ... THEN" kifejezéssel. GOTO 150" Az "IF...GOTO..." űrlapok is támogathatók.
  • FOR LoopVariable=StartValue TO EndValue STEP Lépés — Hurokfejléc lépéssel. Elindít egy hurkot, amelyben a Változó egymás után áthalad a StartValue értéktől az EndValue értékig lépésben. A ciklus törzsét a címsor és a NEXT kulcsszó határolja. A STEP rész elhagyható – ebben az esetben a lépés egyenértékű volt. Amikor a LoopVariable túllép a megadott határokon, a megfelelő NEXT utasításra ugrik.
  • NEXT - A huroktest befejezése lépéssel. Az utasítás azt jelzi, hogy az éppen futó FOR ciklus fejére kell ugrani, és folytatni kell a munkát. Fejlettebb megvalósításokban a NEXT tartalmazhatta a ciklusváltozók vesszővel elválasztott listáját – ez azt jelentette, hogy a program egy adott pontján nem egy, hanem több ciklus törzse végződik. A NEXT változóval való használata a programlogika megsértése ellen is biztosított, mivel futási hibát okozott, ha a parancs végrehajtása során kiderült, hogy a ciklus nem azon a változón volt aktív, amelynek a nevét megadtuk.
  • WHILE Feltétel – A ciklus fejléce előfeltétellel. A ciklus véget ért, ha a feltétel hamis volt. Ebben az esetben a fejlécnek megfelelő WEND utasításon túli átmenet történt.
  • WEND - A WHILE hurok törzsének befejezése. Hasonló a NEXT-hez, de előfeltételes ciklushoz.
  • GOSUB Label - Ugrás a Label-lel kezdődő szubrutinra. A visszatérés akkor következik be, amikor elérjük a RETURN utasítást. A rekurzív eljáráshívások általában tilosak voltak, és futásidejű hibát eredményeztek.
  • RETURN – Visszatérési utasítás egy szubrutinból. Feltétlen ugrás történik a szubrutinra ugrott GOSUB utasítást követő utasításra.
  • VÉGE – A program végrehajtásának vége. A rendszer belép a tolmácsba, és a felhasználónak parancsokat kell megadnia.
  • LÁNC – Számos programsor betöltése külső adathordozóról.
  • OPEN - Adatfájl megnyitása külső adathordozón.
  • CLOSE - A külső adathordozón lévő adatfájl bezárása.
  • GET - A megadott változók értékeinek szekvenciális kiolvasása a fájlból, a fájlmutató mozgatása az utolsó beolvasott karakter után.
  • PUT - A megadott változók értékeinek szekvenciális írása egy fájlba úgy, hogy a fájlmutató az utoljára írt karakter után mozog.
  • TÖRLÉS - Interaktív parancs - törölje a megadott számú sort.
  • SAVE - Interaktív mód parancs - az aktuális program mentése egy fájlba külső adathordozón.
  • LOAD - Interaktív mód parancs - program betöltése a memóriába egy külső adathordozón lévő fájlból. Alapértelmezés szerint ez a korábban letöltött program és adatok megsemmisüléséhez vezetett.
  • RENUM - Interaktív mód parancs - átszámozza az összes vagy egy adott programsort egy adott számtól kezdve, meghatározott lépéssel. Alapértelmezés szerint az összes programsor újraszámozása 10-es lépésekben történik.

A feltételes operátornak ( IF..THEN) kezdetben csak egy ága volt – nem volt ELSEbenne ág, és feltétel nélküli átmenettel modellezték. Tehát a következő programban egy elemi műveletet hajtanak végre - egy szám beírásával és a „Negatív szám” vagy a „Pozitív szám vagy nulla” üzenet megjelenítésével, az értékétől függően:

10 INPUT I 20 IF I >= 0 THEN NYOMTATJA "Pozitív szám vagy nulla" : GOTO 40 30 NYOMTATÁS "Negatív szám" 40 VÉGE

Volt egy átmenet operátor egy számított címkével ON..GOTO(hasonló Fortran konstrukcióból örökölt) - az ON után egy numerikus kifejezés, utána GOTO pedig a sorszámok listája volt feltüntetve. Az átmenet arra a sorra történt, amelynek a listában szereplő száma megfelelt a kifejezés értékének. Vannak ciklusok is (egy ciklus számlálóval FORés egy ciklus előfeltétellel WHILE).

A felhasználó által definiált függvények (kódszakaszok, újrafelhasználható) használata kétféleképpen lehetséges: definiált függvények és szubrutinok.

Az alprogramok nem voltak analógok az olyan nyelvek funkcióival, mint a C vagy a Pascal , mivel nem volt nevük, és nem tudtak elfogadni és/vagy visszaadni a paramétereket. A paramétereket és az eredményeket globális változókon keresztül vitték át (a BASIC korai verzióiban minden változó globális volt). A szubrutinokat általában a modul végére írták, a sorszámozás nyilvánvalóan nagyobb, mint a tervezett sorszám (például egy szubrutin blokk számozása 5000-től kezdődhet, még akkor is, ha a programnak pár száz sora volt). A szubrutinoknak nem volt fejléce vagy neve, és semmiben sem különböztek a többi kódrészlettől. Az alprogramot a kulcsszó használatával hívták meg GOSUB <метка>. Ez gyakorlatilag egy klón GOTO, kivéve egy dolgot: a hívási ponthoz való visszatérés automatikusan megtörtént, amikor a szubrutinban elértük a kulcsszót RETURN. GOSUB, mint a GOTO, csak hozzájárult a rossz kódszerkezethez, mivel nehéz feladat volt követni egy nagyszámú feltétel nélküli ugrást és szubrutint tartalmazó program végrehajtását. A rekurzió nem volt megengedett.

A szubrutinok elnevezésének (és a felettük való vezérlés átadásának) képtelensége, a paraméterek átadásának képtelensége, a helyi változók hiánya, a csak numerikus címkék használata nagy projektekben zavart okozott a kódban, és nagyon megnehezítette a hibakeresést.

Egyes BASIC dialektusokban lehetőség volt a kódot tartalmazó fájl közvetlenül a program végrehajtása során történő betöltésére (az aktuálisat kirakta) a kezelő CHAIN. Ez volt a nyelv egyik leghasznosabb funkciója, mivel lehetővé tette, hogy egy nagy projektet modulokra bontson, szükség szerint hívva őket.

A korábbi verziókban nem volt kódszerkesztő . A BASIC interpreter indításakor elindult a parancsok bevitelére szolgáló párbeszédablak. Az ebben a módban történő működéshez speciális parancsokat adtak, amelyek nem maguk a nyelv operátorai (nem szerepelhettek a programkódban). Ezek a beviteli környezet kezelésére szolgáló parancsok, mint például: LIST <диапазон строк> - a programlista megjelenítése a képernyőn ( LLIST - a nyomtatóra), SAVE <имя файла> - a program szövegének mentése fájlba, LOAD <имя файла> - a kód betöltése a memóriába stb. A programot elindította a RUN parancs beírása. A legtöbb BASIC értelmezőnek volt egy sora ezekkel (és más) parancsokkal a képernyő alján.

Ha a parancs sorszámmal (címkével) kezdődött, akkor az a beviteli program részeként a memóriában tárolódott. Ha az operátori karakterláncot szám nélkül adtuk meg, az a gomb megnyomása után azonnal végrehajtásra került ↵ Enter. Az első leckéken a BASIC tanulóit arra kértük, hogy kísérletezzenek egy ilyen móddal, amikor a kifejezés végrehajtásának eredménye azonnal látható volt. Például, ha párbeszéd módban beír egy karakterláncot, PRINT 2+2és megnyomja a gombot ↵ Enter, akkor az összeadás eredménye megjelenik a képernyőn.

Egy már bevitt karakterlánc szerkesztéséhez a legtöbb megvalósításban teljesen újra kellett gépelni. A sorokat a paranccsal törölték DELETE <диапазон строк>. Parancs RENUM – engedélyezett a sorszámozás 10. lépésének visszaállítása. Gyakran előfordult olyan helyzet, hogy a szokásos 10-es lépés nem volt elég a jövőbeli sorokhoz (mivel egy ilyen lépés csak 9 sort tesz lehetővé a szükséges sorok közé), majd RENUMszükség volt a parancsra (minden sor 10-es lépéssel lett újraszámozva, és a sorokat ennek megfelelően igazították GOTOaz új sorszámozáshoz) .

A program BASIC-ben történő végrehajtásához a fájlnevet a programkóddal a parancssorban átadtuk az értelmezőnek. Ebben az esetben a kód betöltése után automatikusan meghívásra került a RUN (programvégrehajtás indítása) parancs.

Részlet egy tipikus BASIC programból:

10 CLS 'Képernyő törlése 20 NYOMTATÁS "Üdvözöljük!" 'Cím az első sorban 30 'Hurok, amely a cím alatti vonalat a teljes képernyő szélességére húzza 40 FOR I = 1 - 80 50 PRINT "=" ; 60 NEXT I 65 'Karakterbevitel a felhasználótól (megjegyzés az alsó sorok beírása után) 70 INPUT "Keresztnév: " , N$ 80 INPUT "Vezetéknév: " , S$ 90 INPUT "Patronym: " , T$ 95 ' Vágja ki az első és a középső név első karaktereinek másolatát 100 N2$ = LEFT$ ( N$ , 1 ) 110 T2$ = LEFT$ ( T$ , 1 ) 120 'Az eredmény kinyomtatása 130 PRINT "Az Ön neve rövid: " ; S$ ; "" ; N2$ ; "." ; T2$ ; "." 140 BEMENET "Ismétlés? (I/N)" , 150 U $ HA U$ = "I" AKKOR UGRÁS 10 160 VÉGE

A pontosvesszőnek az a funkciója, hogy elnyomja az újsort az operátor után PRINT. A kulcsszó ENDprogramlezárást jelent. Nem kötelező, hiányában a program az utolsó utasítás végrehajtása után fejeződött be, de hasznos volt olyan esetekben, amikor szubrutinok szakasza volt, vagy a programnak több lehetséges végpontja volt (utóbbi esetben vagy minden ilyen pontot állítottak be END, vagy ENDvolt ilyen, és azon másutt szövegrészeket készítettek).

Későbbi verziók

A BASIC nyelv egyik legelterjedtebb változata a QBasic interpreter Microsoft Corporation általi megvalósítása volt . Sok éven át ingyenes alkalmazásként szerepelt az MS-DOS és a korai Windows operációs rendszerekben . Meglehetősen erőteljes grafikai és hangzási képességekkel rendelkezett, így akár játékokat is létrehozhat ezen a nyelven.

A BASIC későbbi verziói (a Turbo Basic -től és a Visual Basic -től kezdve ) nagyon eltérnek a korábbi verzióktól. Valójában ez egy új nyelv, amely sok szempontból közelebb áll a Fortranhoz vagy a Pascalhoz , mint az eredeti BASIC-hez. Az 1990-es évekbeli verziók főbb változásai a következők:

  • Nem volt hajlandó bemutatni a programot számozott sorok strukturálatlan halmazaként. A sorszámok közönséges címkékké váltak, amelyek opcionálisakká váltak, és már nem befolyásolják a program végrehajtásának sorrendjét. Ha korábban a 15-ös sor mindig a 20-as sor elé került a programban, most a végrehajtási sorrendet a forráskód sorainak sorrendje határozza meg. A címkék már nem csak numerikusak.
  • Megjelentek a nyelvben az elnevezett szubrutinok paraméterekkel, általánossá vált a szubrutinok hívásának mechanizmusa: egy szubrutint név szerint hívnak meg, jelezve a tényleges paraméterek listáját.
  • Volt egy rekurzió.
  • Strukturális vezérlési struktúrák kerültek bevezetésre, ennek eredményeként a szokásos ágak és hurkok rendszerezéséhez már nem volt szükség operátorra GOTOés vonalcímkékre.
  • Az adattípusok nómenklatúrája jelentősen bővült, lehetővé vált a hétköznapi változók típusainak explicit leírása.
  • Az utótagok beírása a változónevekben opcionálissá vált, bár használatuk nem volt tilos.
  • A későbbi verziók bevezették a kivételkezelést és az OOP elemek támogatását .
  • Bevezették a modularitást támogató mechanizmusokat – lehetővé vált „trükkök” nélkül (például a modulok dinamikus betöltése kifejezett rendszerhívásokkal) a program több forráskódfájlra való felosztása.
  • Voltak eszközök a színes grafikával való munkához és a hangkártyához.
  • A grafikus felhasználói felülettel rendelkező Windows alkalmazások fejlesztésére koncentráló Visual Basic grafikus felülettervezővel integrálva készült, ami lehetővé tette egyszerű programok gyors írását Windows alatt.
  • Többplatformos megvalósítások jelentek meg , mint például a FreeBASIC és a PureBasic .

A nyelv korai verzióiban rejlő szinte összes hiányosságot kijavították, és a modern BASIC dialektusok programozása alig különbözik más nyelvek és környezetek (például Delphi ) használatától. A Basic módosítási folyamat másik oldala, hogy a nyelv sokkal nagyobb és összetettebb lett, fejlesztése pedig több időt és erőfeszítést igényel.

Egy tipikus FreeBASIC program töredéke:

# Lang "fb" Dim As String n , s , t , n2 , t2 Cls : Nyomtatás "Üdvözöljük!" 'Cím az első sorban Hajtsa végre a hurkot, amely a cím alatti vonalat a teljes képernyő szélességére húzza For i As Integer = 1 To LowWord ( Width ) Print "=" ; Következő i 'Karakteradatok bevitele a felhasználótól Adja meg a "Keresztnév:" , n Adja meg a "Vezetéknév:" , s Adja meg a "Középső név:" , t 'Vágja ki az első karakterek másolatát a keresztnévből és a családnévből n2 = Bal ( n , 1 ) t2 = Balra ( t , 1 ) 'Az eredmény megjelenítése Nyomtatás "Az Ön neve rövid:" ; s ; "" ; n2 ; "." ; t2 ; "." Nyomtatás "Ismétlés program? (y/n)" Loop While LCase ( Input ( 1 )) = "y" End 0

Népszerűsége ellenére a Microsoft 2001 -ben lemondott a Visual Basic további támogatásáról, és egy alapvetően új Visual Basic .NET nyelvet  választott - ebben a megvalósításban a nyelv ismét gyökeresen átdolgozásra került, és jelenlegi állapotában gyakorlatilag egybeesik a készletét tekintve. funkciók a C # nyelvvel , csak a részletek különböznek a szintaxistól és a kulcsszavaktól. Ily módon a Basic a nem professzionális amatőrök számára készült műsorkészítő eszközből egy teljes értékű programkészítő eszközzé fejlődött.

A teljes értékű programok írása mellett a BASIC-et széles körben használják különféle szkriptnyelvek alapjaként (például a Microsoft Office csomag makróit VBA nyelvjárásban írják ).

Kritika

Fénykorában (1970-1980) a BASIC-et erősen kritizálták. Amellett, hogy kimondja a nyelv nyilvánvaló hiányosságait, amelyek a korai verziók szintaktikai szegénységével, valamint számos elismert és kényelmes konstrukció és mechanizmus hiányával járnak, a BASIC-et kritizálták amiatt, hogy egyszerűsége és szerkezet nélkülisége rosszindulatú fejlesztési gyakorlatok alkalmazására ösztönöz. hozzájárulnak a veszélyes programozási szokások kialakulásához, amelyek időnként alkalmasak lehetnek kis programok gyors létrehozására az aktuális igényekre, de a nagy projektek összeomlásához vezethetnek.

A mindenütt jelenlévő BASIC-alapú programozási alapképzést élesen bírálták. Edsger Dijkstra egyik "hívókártyája" a következő kijelentés volt:

Azok a diákok, akik korábban BASIC-ot tanultak, szinte lehetetlen jó programozást tanítani. Leendő programozóként mentálisan nyomorékok, és nincs remény a felépülésre [5] .

Eredeti szöveg  (angol)[ showelrejt]

Gyakorlatilag lehetetlen jó programozást tanítani azoknak a diákoknak, akik korábban megismerték a BASIC-et: potenciális programozóként szellemileg megcsonkítják őket a regeneráció reménye nélkül.

A BASIC hívei a kritikára válaszolva megjegyzik, hogy a kritikusok a nyelvnek azokat a negatív vonatkozásait tulajdonítják, amelyeket a visszaélésnek tulajdonítanak. A BASIC (ha a korai dialektusokra gondolunk) hátrányai akkor jelennek meg, amikor bonyolult és nagy programokat próbálunk szakszerűen fejleszteni rajta, illetve a programozók oktatásának alapnyelveként használjuk, de ezt a nyelvet egyik alkalmazásra sem szánták; fő feladata az volt, hogy lehetőséget biztosítson a nem programozó hallgatóknak , hogy minimális képzés után a legegyszerűbb programokat saját igényeiknek megfelelően írhassák meg , nehogy eltereljék a szakemberek figyelmét erre a munkára. A nyelv nagyon alkalmas erre a feladatra.

Ha a modern dialektusokról és a BASIC megvalósításairól beszélünk, akkor azok annyira eltávolodtak a nyelv eredeti formájától, hogy a fentiek aligha tekinthetők hozzájuk kapcsolódónak. A BASIC modern dialektusai meglehetősen strukturált nyelvek, képességeikben összehasonlíthatók az olyan nyelvekkel, mint a C , Pascal stb.

Producerek

Különböző időpontokban a BASIC tolmácsokat különféle szervezetek, cégek, cégek készítettek:

Szovjet:

Megvalósítások

Alma:

Microsoft :

Sinclair :

  • 4K BASIC
  • 8K BASIC
  • 48 ALAP
  • 128 ALAP

Egyéb:

Érdekes tények

Jegyzetek

  1. 1 2 Gürer D. Úttörő nők a számítástechnikában  (angol) // SIGCSE bulletin - 2002. - Vol. 34, Iss. 2. - P. 175. - ISSN 0097-8418 ; 2331-3927 - doi:10.1145/543812.543853
  2. 1 2 https://www.computinghistory.org.uk/det/47364/Sister-Mary-Kenneth-Keller/
  3. 1 2 Meet Computer = Számítógépes alapismeretek INPUT/OUTPUT. A számítógépek megértése / Per. angolról. K. G. Bataeva Szerk. és előszóval. folypát. Fiz.-Matek. Tudományok V. M. Kurochkin. — M .: Mir, 1989. — 240 p. — 100.000 példány.  — ISBN 5-03-001147-1 .
  4. Mary Bellis, BASIC – (Kezdők általános célú szimbolikus utasításkódja) . Letöltve: 2012. szeptember 1. Az eredetiből archiválva : 2021. augusztus 7..
  5. Hogyan mondjunk el olyan igazságokat, amelyek fájhatnak? Archiválva 2017. május 2-án a Wayback Machine -nél , A számítástechnikát fenyegető veszélyek Archiválva : 2012. október 15-én a Wayback Machine -nél

Irodalom

  • Dyakonov V., Munerman V., Samoylova T., Yemelchenkov Ye. A QBASIC forradalmi útmutatója. - Birmingham: Wrox Press Ltd, 1996. - 578 p.
  • Dyakonov V.P. Algoritmusok és programok kézikönyve BASIC nyelven személyi számítógépekhez. - M. : Nauka, Fizmatlit, 1987. - 240 p.
  • Dyakonov V.P. A személyi számítógépek használata és programozás a BASIC-ben. - M . : Rádió és kommunikáció, 1989. - 288 p.
  • Dyakonov V.P. Modern külföldi számológépek. - M. : SOLON-R, 2002. - 400 p.
  • Ketkov Yu. Programozási gyakorlat BASIC, C, Pascal. - BHV, 2002. - 480 p. — ISBN 5941571046 .
Szabványok

Linkek