DE BAZĂ

DE BAZĂ
Clasa de limba algoritmic, mai târziu procedural , mai târziu orientat pe obiecte
Aparut in 1964
Autor Thomas Kurtz , John Kemeny
Dezvoltator Kurtz, Thomas , Kemeny, John George și Mary Kenneth Keller [d] [1] [2]
Extensie de fișier .bas
Tip sistem lax
A fost influențat Algol 60 , Fortran II, JOSS
influențat COMAL , GRASS și multe dialecte ulterioare ale limbii
 Fișiere media la Wikimedia Commons

BASIC ( BASIC , prescurtare pentru engleză.  Codul  de instrucțiuni simbolice universale pentru începători - un cod universal pentru instrucțiuni simbolice pentru începători [3] ) - o familie de limbaje de programare de nivel înalt .

A fost dezvoltat în 1964 de profesorii de la Dartmouth College Thomas Kurtz și John Kemeny [4] .

Limbajul a fost creat ca un instrument cu ajutorul căruia studenții non-programatori puteau crea în mod independent programe de calculator pentru a-și rezolva problemele. S-a răspândit sub formă de diferite dialecte, în primul rând ca limbă pentru computerele de acasă . Până în prezent, a suferit modificări semnificative, îndepărtându-se de simplitatea caracteristică primelor versiuni, la granița cu primitivismul și transformându-se într-un limbaj de nivel înalt destul de obișnuit, cu un set tipic de caracteristici. Este folosit ca limbaj independent pentru dezvoltarea de programe de aplicație, care operează în principal sub sistemul de operare Windows de diferite versiuni. Este, de asemenea, utilizat pe scară largă ca limbaj încorporat pentru sistemele software de aplicații în diverse scopuri și ca limbaj pentru calculatoare programabile .

Istorie

Condiția prealabilă pentru apariția BASIC a fost disponibilitatea crescută a computerelor în anii 1960 și apariția capacității de a lucra în modul de partajare a timpului ( time - sharing ). Studenții și specialiștii care nu sunt programatori pregătiți, dar care au nevoie să-și rezolve problemele pe un computer, au obținut acces la computere.

Naștere

BASIC a fost conceput în 1964 de profesorii de la Dartmouth College, John Kemeny și Thomas Kurtz , și sub îndrumarea lor a fost implementat de o echipă de studenți. De-a lungul timpului, pe măsură ce alte dialecte au început să apară, implementarea originală a devenit cunoscută sub numele de Dartmouth BASIC .

BASIC a fost conceput astfel încât studenții să poată scrie cu ușurință programe folosind terminale de partajare a timpului. A fost destinat utilizatorilor mai „simpli”, nu atât de interesați de viteza de execuție a programului, cât pur și simplu de capacitatea de a folosi un computer pentru a-și rezolva problemele fără pregătire specială.

Următoarele opt principii au fost utilizate în proiectarea limbajului. Noua limbă era să:

  1. Fiți ușor de utilizat pentru începători .
  2. Să fie un limbaj de programare de uz general .
  3. Oferiți capacitatea de a extinde funcționalitatea disponibilă programatorilor experimentați.
  4. Fii interactiv .
  5. Furnizați mesaje de eroare clare.
  6. Lucrați rapid la programe mici.
  7. Nu necesită o înțelegere a modului în care funcționează hardware-ul.
  8. Protejați utilizatorul de sistemul de operare .

Limbajul s-a bazat parțial pe Fortran II și parțial pe Algol 60 , cu adăugiri pentru a-l face potrivit pentru partajarea timpului și, mai târziu, pentru procesarea textului și aritmetica matriceală. BASIC a fost implementat inițial pe mainframe -ul GE-265 cu suport pentru mai multe terminale. Contrar credinței populare, la momentul înființării era un limbaj compilat .

Creștere

Deși limbajul era deja folosit pe mai multe minicalculatoare, răspândirea sa reală a început odată cu introducerea microcomputerului Altair 8800 . Multe limbaje de programare erau prea mari pentru a se potrivi în memoria mică pe care și-o puteau permite utilizatorii unor astfel de mașini. Pentru mașinile cu suporturi lente, cum ar fi bandă de hârtie (mai târziu caseta audio) și fără un editor de text adecvat, un limbaj mic precum BASIC a fost o mană divină.

În 1975, Microsoft (atunci erau doar doi: Bill Gates și Paul Allen - cu participarea lui Monte Davidov ), a lansat Altair BASIC . Versiuni ale acestuia au apărut apoi pe o altă platformă sub licență, iar în curând au fost utilizate milioane de copii și variante: o variantă, Applesoft BASIC , a devenit limba standard pe Apple II . Pentru sistemul de operare CP/M a fost creat dialectul BASIC-80 , care a determinat dezvoltarea limbajului pentru o lungă perioadă de timp.

În 1979, Microsoft a discutat cu câțiva furnizori de computere (inclusiv IBM ) pentru a licenția interpretul BASIC pe mașinile lor. O versiune ( ROM BASIC ) a fost inclusă în ROM - ul IBM PC : computerul putea porni automat în BASIC. Întrucât IBM nu acorda prea multă importanță computerelor personale în acel moment ( mainframe -urile erau principalul său domeniu de activitate ), contrar principiilor sale, a permis Microsoft să vândă interpretul separat. Acest lucru l-a făcut pe acesta din urmă un pionier în lansarea unei noi generații de software - nelegat de hardware specific și furnizat separat de computer.

BASIC a experimentat pe deplin un fenomen atât de cunoscut în 1970-1980, precum reproducerea în masă a versiunilor și dialectelor unei limbi de nivel înalt care sunt în mare măsură incompatibile între ele. Au fost mai multe motive pentru aceasta. Deoarece limbajul nu era considerat unul industrial, nu s-au făcut eforturi deosebite pentru a-l standardiza, iar fiecare computer și-a creat propria implementare. În aceiași ani, a apărut un număr mare de computere pentru acasă și educaționale pe 8 biți, construite pe baza de procesoare precum Intel 8080 (analogic sovietic - KR580VM80A ) sau Z80 , pe care BASIC era principalul (sau numai disponibil) high- limbaj de nivel. Fiecare model de computer avea anumite caracteristici hardware și software, mijloace specifice de a scoate sunet și grafică; instrumente de intrare non-standard, pentru suportul cărora au fost introduse comenzi și construcții speciale în implementarea BASIC. Uneori, instrumentele de programare de nivel scăzut au fost implementate chiar în BASIC, cum ar fi lucrul direct cu memoria fizică sau gestionarea întreruperilor hardware. Prin urmare, dacă în partea de bază (setul minim standard de operatori și I/O seriale de consolă) cele mai multe implementări erau practic similare, atunci în ceea ce privește ieșirea sunetului, grafica și controlul mai complex al consolei de text (gestionarea culorilor, crearea unui fel a ferestrei I/O), acestea sunt aproape sigur incompatibile. Drept urmare, doar cele mai comune versiuni și dialecte ale BASIC au fost mai mult de o duzină, iar numărul total de implementări adesea incompatibile nu a fost inferior numărului de tipuri și soiuri de computere în funcțiune.

Maturitate

Perioada de cea mai mare prosperitate și dezvoltare a BASIC-ului original poate fi considerată sfârșitul anilor 1970 - prima jumătate a anilor 1980. În această perioadă, aproape toate computerele personale aveau propriul interpret de BASIC, adesea cusut în ROM, care în cele mai simple computere îndeplinea adesea și funcțiile unui sistem de operare. Aproape toate calculatoarele mai puternice aveau și sisteme interactive BASIC. Practic nu existau compilatoare BASIC , marea majoritate a implementărilor au fost un hibrid standard între un editor de linie și un interpret. De-a lungul timpului, instrumentele de bază ale limbajului s-au îmbunătățit, ceea ce a dus la apariția în unele implementări a operatorilor de ramificație complecși, a unor tipuri suplimentare de bucle și a procedurilor numite cu parametri.

Au fost create mai multe versiuni noi de BASIC pentru platforma IBM PC. Microsoft a vândut BASIC pentru MS-DOS / PC DOS , inclusiv IBM Advanced BASIC (BASICA), GW-BASIC (o modificare a BASICA care nu necesită „firmware” de la IBM) și QuickBASIC . Borland , care a intrat inițial pe piață cu binecunoscutul său Turbo Pascal , a lansat un sistem Turbo Basic 1.0 bazat pe același mediu software în 1985 (succesorii săi au fost ulterior vânduți de o altă companie sub numele PowerBASIC ). Unele alte limbi au folosit binecunoscuta sintaxă BASIC ca bază pe care a fost construit un sistem complet diferit (a se vedea GRASS de exemplu ). Dorința de a crește performanța programelor BASIC a dus la apariția compilatoarelor cu drepturi depline (cum ar fi Turbo Basic menționat mai sus), precum și a sistemelor „hibride” în care, menținând interpretarea ca metodă principală de execuție a programului, compilarea parțială „on the fly” a fost implementat, de exemplu, compilarea de cicluri scurte. În plus, cel puțin pe platforma IBM, s-a răspândit pseudo-compilarea programelor BASIC, atunci când traducătorul traduce programul BASIC în pseudocod (adesea reversibil) și formează un program executabil din modulul obiect interpret și modulul codificat cu textul programului. . Un astfel de program ar rula și rula ca un program obiect compilat normal, deși a rămas interpretat în esență.

La mijlocul anilor 1980, BASIC a devenit limbajul principal în modelele complexe de calculatoare programabile , care tocmai în acest moment ajunseseră la puterea de a permite utilizarea unui limbaj cu drepturi depline la nivel înalt. Însuși faptul că mulți producători, fără să spună un cuvânt, au ales BASIC ca bază pentru limbajul de nivel înalt al calculatoarelor, vorbește cel mai bine despre prevalența și popularitatea acestui limbaj la momentul indicat. Deci, BASIC a fost integrat în calculatorul electronic sovietic MK-85 și în toate modelele sale ulterioare. Utilizarea BASIC ca limbaj principal de nivel înalt pentru calculatoarele programabile continuă până în prezent; în prezent, „calculatorul” BASIC este cel mai asemănător cu versiunea originală a anilor 1960-80, de exemplu, implementarea pentru calculatoarele CITIZEN conține doar 14 cuvinte cheie (fără a număra funcțiile matematice) și permite doar nume de variabile cu un singur caracter .

Până la sfârșitul anilor 1980, computerele personale au devenit mult mai puternice și au oferit caracteristici (cum ar fi o interfață grafică de utilizator ) care nu mai erau la fel de convenabile de utilizat în BASIC. În plus, apariția pe computere a clasei „educative” și „acasă” a traducătorilor ieftini de limbi industriale \u200b\u200b (în primul rând Pascal și C), însoțite de medii de programare convenabile și biblioteci utile (de exemplu, Borland Pascal ). cu biblioteca Turbo Vision ) a creat o concurență puternică pentru BASIC. BASIC a început să piardă teren, în ciuda faptului că un număr mare de versiuni au fost încă folosite și vândute. În același timp, a început o schimbare rapidă a aspectului acelor sisteme BASIC care au rămas în funcțiune. A existat o „derivare” treptată către limbaje structurale recunoscute: vocabularul și setul de constructe ale limbajului s-au extins, au apărut ramuri complexe, subrutine și funcții numite, nume lungi de variabile. În plus, capacitățile sporite ale computerelor personale au făcut posibilă abandonarea trăsăturilor caracteristice ale BASIC, introduse pentru a asigura o muncă interactivă eficientă la un terminal de text: semne numerice pentru fiecare linie și editare linie cu linie.

BASIC a primit o a doua viață odată cu apariția Microsoft Visual Basic . Deși este dificil să fim de acord că acest limbaj este cu adevărat de BAZĂ; a fost concluzia logică a evoluției limbajului și, în ciuda păstrării cuvintelor cheie obișnuite, din punct de vedere al structurii și al setului de caracteristici, este mai aproape de Pascal decât de BASIC-ul original. Dar, ca instrument pentru crearea rapidă a programelor Windows practic utile, cu o calificare scăzută de programator, s-a dovedit a fi foarte util și a devenit rapid unul dintre cele mai utilizate limbi de pe platforma Windows . Nu ultimul rol aici a fost jucat de implementarea cu succes a constructorului GUI inclus în sistem, care a ascuns detaliile programării GUI Windows de la dezvoltator și le-a permis să se concentreze asupra sarcinii. Microsoft a creat o variantă numită WordBasic și a folosit-o în MS Word până la apariția lui Word 97. Varianta Visual Basic pentru aplicații (VBA) a fost încorporată în Microsoft Excel 5.0 în 1993 , apoi în Access 95 în 1995 și, după aceea, în toate celelalte instrumente incluse în suita Microsoft Office . Internet Explorer 3.0 și versiunile ulterioare, precum și Microsoft Outlook , au inclus un interpret VBScript .

Descriere

Sintaxa limbajului seamănă cu Fortran și multe elemente sunt împrumuturi explicite din acesta. Limba a fost concepută pentru învățare, așa că design-urile sale sunt cât se poate de simple. Ca și în cazul altor limbaje de programare , cuvintele cheie sunt preluate din limba engleză. Există două tipuri de date de bază: șiruri și numere. Odată cu apariția versiunii Visual Basic , precum și cu diferitele sale modificări (cum ar fi VBA ), multe alte tipuri de date și completări care sunt tipice limbajelor de programare moderne (cum ar fi modelul obiect) au apărut în limbaj. Declararea variabilelor nu necesită o secțiune specială (spre deosebire de Pascal ). Declararea unei variabile este prima utilizare a acesteia.

Versiunile timpurii ale BASIC (cum ar fi BASICA , GW-BASIC ) diferă semnificativ de dialectele moderne și sunt cu greu folosite astăzi.

Versiunile timpurii

Apariția programelor în versiunile timpurii ale BASIC a fost în mare măsură determinată de faptul că era destinat unui mediu de programare cu un editor de text în linie. Într-un astfel de editor, utilizatorul nu a putut să afișeze tot textul pe ecran (în fereastră), să se deplaseze în orice direcție folosind tastatura și/sau mouse-ul. În editorii de linie, pentru a schimba o linie de text, utilizatorul trebuie să dea comanda de a schimba linia cu un anumit număr, apoi să introducă noul text al liniei specificate. Pentru a introduce o linie nouă, trebuie să dați comanda de inserare, indicând din nou numărul. Șirurile de intrare sunt afișate secvenţial pe ecran (indiferent de numere). Pentru a vedea modificările efectuate, se folosește comanda text de ieșire, care scoate liniile în ordinea corectă (numerele crescătoare).

Toate acestea se reflectă în BASIC. Fiecare linie începe cu un număr. Când a fost introdusă în editor, linia a apărut în codul sursă al programului în poziția corespunzătoare numărului său. Pentru a introduce o nouă linie, a fost necesar să adăugați o linie cu un număr care se afla în intervalul dintre numerele celorlalte două linii. Era imposibil să „împrăștii” liniile dacă era necesar să inserezi o nouă linie între liniile cu numere adiacente, trebuia să reintroduci aceste linii cu alte numere pentru a asigura o întrerupere în numerotare (sau să folosești o comandă specială RENUMcare renumerota toate liniile deja introduse cu un pas constant, schimbând sincron toate comenzile de salt). Pentru a simplifica editarea on-line a programului, a devenit o practică de a numerota liniile cu un pas de 10 - acest lucru a făcut posibilă în aproape toate cazurile inserarea de noi linii fără a modifica numerele introduse anterior. De exemplu, pentru a adăuga o a treia linie între liniile 20 și 30, ar trebui să scrieți o linie cu un număr între 21 și 29. O linie tipică dintr-un program BASIC arăta astfel:

10 PRINT "Bună, lume!"

Nu era sigur să schimbați manual numerele liniilor deja existente, deoarece numerele au acționat ca etichete pentru operator GOTO. Anterior, BASIC permitea doar etichete numerice pentru acest operator, iar prezența unui număr unic pe fiecare linie făcea posibilă trecerea necondiționată la oricare dintre ele. Etichetele numerice și utilizarea intensă GOTOau fost inevitabile în programarea BASIC, ceea ce a contribuit la structura slabă a codului și, în proiectele mari, a condus la confuzia autorilor înșiși. Termenul de glumă „programare de paste” ( cod spaghete ) a fost chiar inventat, deoarece logica programului cu tranziții frecvente GOTOseamănă cu o farfurie de spaghete.

Terminația operatorului era capătul de linie. Pentru a plasa mai multe instrucțiuni pe o singură linie, trebuie să puneți două puncte între ele (acest lucru nu a fost permis în toate implementările limbajului). Numele variabilelor din majoritatea dialectelor puteau consta doar dintr-o literă, după care se putea adăuga o cifră, ceea ce, de asemenea, nu a îmbunătățit înțelegerea codului. Pentru a crea o variabilă de tip șir, a trebuit să puneți un semn dolar ( $) după nume. O variabilă fără acest semn a fost o variabilă numerică (în virgulă mobilă). Au mai fost câțiva modificatori legați de tipul numeric: semnul procentual ( %) - un tip întreg, semnul exclamării ( !) - precizie normală, octothorp ( #) - precizie dublă (pentru date în virgulă mobilă, adică fracții zecimale ). În unele versiuni, modificatorii numerici pot să nu fi fost aplicați sau să nu fi fost aplicați toți. În marea majoritate a programelor, a fost folosit doar tipul numeric de bază.

Expresiile sunt similare cu majoritatea celorlalte limbaje de programare procedurală, dar în primele versiuni ale BASIC setul lor era destul de slab. În primele versiuni, numărul de cuvinte cheie nici măcar nu ajungea la 20. Iată un set de construcții de bază de program și comenzi interactive care au fost implementate în aproape orice sistem BASIC de la sfârșitul anilor 1970:

  • LISTĂ - Ieșire pe monitor a textului programului în succesiunea corectă de linii. În funcție de implementare, comanda a acceptat parametrii - gama de linii pe care doriți să le afișați. Uneori a fost acceptată varianta LLIST - scoasă pe un dispozitiv de imprimare.
  • RUN - Rulați programul curent din prima instrucțiune a liniei cu cel mai mic număr. Ar putea fi suportat un parametru - numărul liniei de la care ar trebui să înceapă execuția.
  • REM - Comentariu. Textul care era după cuvântul cheie și înainte de sfârșitul liniei nu a afectat execuția programului. Mulți interpreți au susținut, de asemenea, ghilimele unice „ ca început al unui comentariu.
  • INTRARE „Prompt: „, Variabilă — Imprimați textul „Prompt:” pe monitor și așteptați ca utilizatorul să introducă o valoare și apăsați Enter. După aceea, valoarea introdusă va fi scrisă în Variabilă. În cele mai simple implementări, promptul INPUT nu era acceptat și trebuia emis într-o instrucțiune PRINT separată (vezi mai jos).
  • PRINT "Text";Variable;Variable;"Text" - Ieșire către obiectele listate secvenţial pe monitor (valori text și variabile). În funcție de implementare, separatoarele au fost percepute diferit: în unele cazuri, separatorul ducea la ieșirea a cel puțin un spațiu, în altele, valorile erau afișate pe rând, iar separatoarele trebuiau adăugate manual. Separator ";" a îndeplinit și funcția de suprimare a translației la linia următoare.
  • CLS - Ștergerea ecranului terminalului. În funcție de implementarea, designul și modul de funcționare al terminalului, cursorul de text a fost transferat fie în colțul din stânga sus, fie în colțul din stânga jos.
  • LET - Atribuire (format „LET Variable = Value”). În marea majoritate a versiunilor, operatorul LET era suportat, dar era opțional - atribuirile de variabile erau scrise fără LET).
  • DIM - Descrierea matricei. Spre deosebire de variabilele obișnuite, tablourile necesită o descriere. Numărul maxim de dimensiuni ale matricei a fost determinat doar de implementare
  • DATE - Un set de date plasate direct în textul programului (analog al unei constante sau al unei constante matrice).
  • READ - Comanda de citit din setul de DATE.
  • GOTO Lbl - Comandă de salt necondiționat pentru a eticheta Lbl.
  • ON ... GOTO - Comandă de tranziție calculată - după ON ar fi trebuit să existe o expresie sau variabilă calculată, iar după GOTO - un set de etichete separate prin virgule. Valoarea expresiei a indicat numărul etichetei la care să mergeți.
  • DACĂ... ATUNCI... - Operatorul obișnuit al sucursalei. După IF se plasează o condiție logică, după THEN, un operator care trebuie executat dacă această condiție este adevărată. Pentru a scurta înregistrarea, multe implementări au acceptat convenția - dacă THEN este urmată de un număr, atunci aceasta este eticheta la care să sari, adică forma „IF ... THEN 150” este echivalentă cu „IF ... THEN GOTO 150". Formele „IF...GOTO...” pot fi de asemenea acceptate.
  • FOR LoopVariable=StartValue TO EndValue STEP Step — Antet buclă cu pas. Inițiază o buclă în care variabila trece secvenţial printr-o serie de valori de la StartValue la EndValue în Step. Corpul buclei este delimitat de titlul și cuvântul cheie NEXT. Partea STEP putea fi omisă - în acest caz, pasul era egal cu unu. Când LoopVariable depășește limitele specificate, trece la instrucțiunea NEXT corespunzătoare.
  • NEXT - Completarea corpului buclei cu un pas. Declarația indică faptul că este necesar să săriți la capul buclei FOR care se execută în prezent și să continuați lucrul. În implementările mai avansate, NEXT ar putea conține o listă de variabile bucle separate prin virgulă - asta însemna că, la un moment dat al programului, corpul nu a uneia, ci a mai multor bucle se termină. Utilizarea NEXT cu o variabilă a asigurat și împotriva încălcării logicii programului, deoarece a provocat o eroare de rulare dacă, la executarea acestei comenzi, s-a dovedit că bucla era activă nu pe variabila al cărei nume a fost specificat.
  • Condiție WHILE - Antetul ciclului cu o precondiție. Bucla s-a încheiat dacă condiția era falsă. În acest caz, a existat o tranziție dincolo de instrucțiunea WEND corespunzătoare antetului.
  • WEND - Terminarea corpului buclei WHILE. Similar cu NEXT, dar pentru o buclă cu o precondiție.
  • GOSUB Label - Salt la subrutină începând cu Label. Returul are loc atunci când se ajunge la instrucțiunea RETURN. Apelurile de procedură recursive au fost în general interzise și au dus la o eroare de rulare.
  • RETURN - O instrucțiune de returnare dintr-o subrutină. Se face un salt necondiționat la instrucțiunea în urma instrucțiunii GOSUB care a sărit la subrutină.
  • END - Sfârșitul execuției programului. Sistemul intră în interpret și utilizatorului i se cere să introducă comenzi.
  • CHAIN ​​​​- Încărcarea unei game de linii de program de pe medii externe.
  • OPEN - Deschiderea unui fișier de date pe un suport extern.
  • CLOSE - Închiderea fișierului de date pe medii externe.
  • GET - Citirea secvențială a valorilor variabilelor specificate din fișier, deplasând indicatorul fișierului dincolo de ultimul caracter citit.
  • PUT - Scrierea secvențială a valorilor variabilelor specificate într-un fișier cu indicatorul fișierului deplasându-se dincolo de ultimul caracter scris.
  • DELETE - Comandă interactivă - șterge linia cu numărul specificat.
  • SAVE - Comandă în modul interactiv - salvarea programului curent într-un fișier pe suport extern.
  • LOAD - Comanda mod interactiv - încărcarea unui program în memorie dintr-un fișier de pe un suport extern. De regulă, în mod implicit, a dus la distrugerea programului și a datelor descărcate anterior.
  • RENUM - Comandă în mod interactiv - renumerotează toate liniile de program sau o gamă dată de linii pornind de la un număr dat cu un pas specificat. În mod implicit, toate liniile de program sunt renumerotate în trepte de 10.

Operatorul condiționat ( IF..THEN) avea inițial o singură ramură - nu era ELSEnicio ramură în el și a fost modelat folosind o tranziție necondiționată. Deci, în următorul program, se efectuează o operație elementară - introducerea unui număr și afișarea mesajului „Număr negativ” sau „Număr pozitiv sau zero”, în funcție de valoarea acestuia:

10 INPUT I 20 IF I >= 0 THEN PRINT "Număr pozitiv sau nul" : GOTO 40 30 PRINT "Număr negativ" 40 END

A existat un operator de tranziție printr-o etichetă calculată ON..GOTO(moștenită dintr-o construcție similară Fortran) - după ON, era indicată o expresie numerică, iar după GOTO - o listă de numere de linii. Tranziția a avut loc la linie, al cărei număr din listă corespundea valorii expresiei. Există, de asemenea, cicluri (un ciclu cu un numărător FORși un ciclu cu o precondiție WHILE).

Utilizarea funcțiilor definite de utilizator (secțiuni de cod, reutilizabile) a fost posibilă în două moduri: funcții definite și subrutine.

Subrutinele nu erau analoge cu funcțiile limbajelor precum C sau Pascal , deoarece nu aveau nume și nu puteau accepta și/sau returna parametri. Parametrii și rezultatele au fost transmise prin variabile globale (toate variabilele din versiunile inițiale ale BASIC au fost globale). Subprogramele erau de obicei scrise la sfârșitul modulului, cu numerotarea evident mai mare decât numărul planificat de linii (de exemplu, numerotarea unui bloc de subprograme putea începe de la 5000, chiar dacă programul avea câteva sute de linii). Subrutinele nu aveau antete sau nume și nu erau diferite de orice altă bucată de cod. Subrutina a fost apelată folosind cuvântul cheie GOSUB <метка>. Aceasta este practic o clonă GOTO, cu excepția unui singur lucru: revenirea la punctul de apel a avut loc automat atunci când cuvântul cheie a fost atins în subrutină RETURN. GOSUB, ca GOTOși , au contribuit doar la structura slabă a codului, deoarece a fost o sarcină dificilă să urmăriți execuția unui program care conținea un număr mare de salturi și subrutine necondiționate. Recursiunea nu a fost permisă.

Incapacitatea de a numi subrutine (și de a transfera controlul asupra acestora), incapacitatea de a trece parametrii, absența variabilelor locale, utilizarea doar a etichetelor numerice în proiecte mari au provocat confuzie în cod și au făcut foarte dificilă depanarea.

În unele dialecte BASIC, a fost posibilă încărcarea unui fișier cu cod direct în timpul execuției programului (cel curent a fost descărcat) de către operator CHAIN. Aceasta a fost una dintre cele mai utile caracteristici ale limbajului, deoarece vă permitea să împărțiți un proiect mare în module, apelându-le în ordinea nevoilor.

Nu exista niciun editor de cod în versiunile anterioare, ca atare. La pornirea interpretului BASIC, a fost lansat modul de dialog pentru introducerea comenzilor. Pentru a funcționa în acest mod, au fost furnizate comenzi speciale care nu erau operatori ai limbajului în sine (nu puteau fi incluse în codul programului). Acestea sunt comenzi pentru gestionarea mediului de intrare, cum ar fi: LIST <диапазон строк> - afișarea listei de programe pe ecran ( LLIST - către imprimantă), SAVE <имя файла> - salvarea textului programului într-un fișier, LOAD <имя файла> - încărcarea codului în memorie etc. Programul a fost lansat de către introducând comanda RUN. Majoritatea interpreților BASIC aveau o linie cu aceste (și alte) comenzi în partea de jos a ecranului.

Dacă comanda a început cu un număr de linie (etichetă), a fost stocată în memorie ca parte a programului de introducere. Dacă șirul operator a fost introdus fără număr, acesta a fost executat imediat după apăsarea tastei ↵ Enter. Ca primele lecții, studenții de la BASIC au fost rugați să experimenteze un astfel de mod, când rezultatul execuției expresiei era imediat vizibil. De exemplu, dacă introduceți un șir în modul de dialog PRINT 2+2și apăsați ↵ Enter, rezultatul adăugării va fi afișat pe ecran.

Pentru a edita un șir deja introdus, în majoritatea implementărilor a fost necesar să-l reintroduceți complet. Rândurile au fost șterse cu comanda DELETE <диапазон строк>. Comanda RENUM - este permisă restabilirea pasului 10 în numerotarea liniilor. Adesea a existat o situație în care pasul obișnuit 10 nu era suficient pentru liniile viitoare (deoarece un astfel de pas vă permite să adăugați doar 9 linii între cele necesare) și apoi comanda RENUMa fost necesară (toate liniile au fost renumerotate cu un pas de 10, iar liniile au fost ajustate corespunzător GOTOpentru noua numerotare a liniilor) .

Pentru a executa programul în BASIC, numele fișierului cu codul programului a fost transmis interpretului pe linia de comandă. În acest caz, după încărcarea codului, comanda RUN (start program execution) a fost apelată automat.

Un fragment dintr-un program tipic BASIC:

10 CLS „Șterge ecranul 20 PRINT „Bun venit!” „Titlu pe primul rând 30 „Buclă care trage o linie sub titlu la lățimea ecranului complet 40 FOR I = 1 TO 80 50 PRINT „=" ; 60 NEXT I 65 'Introducerea caracterelor de la utilizator (comentar adăugat după introducerea liniilor de jos) 70 INPUT "Prenumele: " , N$ 80 INPUT "Nume: " , S$ 90 INPUT "Patronimic: " , T$ 95 ' Tăiați o copie a primelor caractere din primul și al doilea nume 100 N2$ = LEFT$ ( N$ , 1 ) 110 T2$ = LEFT$ ( T$ , 1 ) 120 'Tipărește rezultatul 130 PRINT "Numele tău este scurt: " ; S$ ; "" ; N2$ ; "." ; T2$ ; "." 140 INTRARE „Repetați programul? (D/N)” , U$ 150 IF U$ = „Y” THEN GOTO 10 160 END

Punctul și virgulă are funcția de a suprima o nouă linie după operator PRINT. Cuvântul cheie ENDînseamnă terminarea programului. Este optional, in lipsa lui programul se termina dupa executarea ultimei instructiuni, dar era util in cazurile in care exista o sectiune de subrutine, sau programul avea mai multe puncte de terminare posibile (in ultimul caz, fie la fiecare astfel de punct au stabilit END, sau ENDera unul, iar pe el se făceau pasaje în altă parte).

Versiuni ulterioare

Una dintre cele mai comune variante ale limbajului BASIC a fost implementarea interpretului QBasic de către Microsoft Corporation . Timp de mulți ani, a fost inclusă ca o aplicație gratuită inclusă cu MS-DOS și sistemele de operare Windows timpurii . Avea capacități grafice și de sunet destul de puternice, permițându-vă să creați chiar jocuri în această limbă.

Versiunile ulterioare ale BASIC (începând cu Turbo Basic și Visual Basic ) sunt foarte diferite de versiunile anterioare. De fapt, este un nou limbaj care este în multe privințe mai aproape de Fortran sau Pascal decât de BASIC original. Principalele modificări în versiunile anilor 1990 sunt următoarele:

  • A refuzat să prezinte programul ca un set nestructurat de linii numerotate. Numerele liniilor au devenit etichete obișnuite, care au devenit opționale și nu mai afectează ordinea execuției programului. Dacă mai devreme linia cu numărul 15 mergea întotdeauna în program înaintea liniei cu numărul 20, acum ordinea de execuție a devenit determinată de ordinea liniilor din codul sursă. Etichetele nu mai sunt doar numerice.
  • În limbaj au apărut subrutine denumite cu parametri, mecanismul de apelare a subrutinelor a devenit obișnuit: o subrutine este numită după nume, indicând o listă de parametri actuali.
  • A existat o recursivitate.
  • GOTOAu fost introduse structuri de control structural, ca urmare, utilizarea unui operator și a etichetelor de linie nu a mai fost necesară pentru organizarea ramurilor și buclelor obișnuite .
  • Nomenclatura tipurilor de date s-a extins semnificativ, a devenit posibil să se descrie în mod explicit tipurile de variabile obișnuite.
  • Tastarea sufixelor în numele variabilelor a devenit opțională, deși utilizarea lor nu a fost interzisă.
  • Versiunile ulterioare au introdus gestionarea excepțiilor și suport pentru elementele POO .
  • Au fost introduse mecanisme de susținere a modularității - a devenit posibil fără „trucuri” (cum ar fi încărcarea dinamică a modulelor folosind apeluri de sistem explicite) să se împartă programul în mai multe fișiere de cod sursă.
  • Au existat instrumente pentru lucrul cu grafica color și o placă de sunet.
  • Visual Basic, axat pe dezvoltarea de aplicații Windows cu o interfață grafică de utilizator, a fost realizat integrat cu un designer de interfață grafică, ceea ce a făcut posibilă scrierea rapidă a programelor simple sub Windows.
  • Au apărut implementări pe mai multe platforme , cum ar fi FreeBASIC și PureBasic .

Aproape toate deficiențele inerente versiunilor timpurii ale limbii au fost remediate, iar programarea în dialectele BASIC moderne diferă puțin de utilizarea altor limbi și medii (cum ar fi Delphi ). Partea inversă a procesului de modificare de bază este că limbajul a devenit mult mai mare și mai complex, iar dezvoltarea sa necesită mai mult timp și efort.

Fragment dintr-un program tipic FreeBASIC:

# Lang "fb" Dim As String n , s , t , n2 , t2 Cls : Print "Bine ați venit!" 'Titlu pe prima linie Efectuați 'Buclă care trage linia de sub titlu la lățimea ecranului complet Pentru i As Integer = 1 To LowWord ( Width ) Print "=" ; În continuare i 'Introduceți date despre caractere de la utilizator Introduceți „Prenumele: ” , n Introduceți „Nume: ” , s Introduceți „Nume de mijloc: ” , t 'Tăiați o copie a primelor caractere din prenume și patronimic n2 = Stânga ( n , 1 ) t2 = Stânga ( t , 1 ) 'Afișează rezultatul Imprimă „Numele tău este scurt:” ; s ; "" ; n2 ; "." ; t2 ; "." Tipăriți „Repetați programul? (y/n)” Loop While LCase ( Intrare ( 1 )) = „y” End 0

În ciuda popularității sale, în 2001 Microsoft a abandonat suportul suplimentar pentru Visual Basic în favoarea unui limbaj Visual Basic .NET fundamental nou  - în această implementare, limbajul a fost din nou revizuit radical și, în starea sa actuală, practic coincide în ceea ce privește setul de caracteristici cu limbajul C # , doar detaliile diferă de sintaxă și cuvinte cheie. În acest fel, Basic a evoluat de la un instrument pentru crearea de programe pentru amatorii neprofesioniști la un instrument cu drepturi depline pentru crearea de programe.

Pe lângă scrierea de programe cu drepturi depline, BASIC este utilizat pe scară largă ca bază pentru diferite limbaje de scripting (de exemplu, macrocomenzile din pachetul Microsoft Office sunt scrise în dialectul VBA ).

Critica

În perioada de glorie (1970-1980), BASIC a fost puternic criticat. Pe lângă afirmarea deficiențelor evidente ale limbajului asociate cu sărăcia sintactică a versiunilor timpurii și absența multor constructe și mecanisme recunoscute și convenabile, BASIC a fost criticat pentru faptul că simplitatea și lipsa de structură încurajează utilizarea practicilor vicioase de dezvoltare și contribuie la dezvoltarea unor obiceiuri de programare periculoase care pot fi uneori adecvate pentru crearea rapidă de programe mici pentru nevoile actuale, dar pot duce la prăbușirea proiectelor mari.

Educația inițială de programare bazată pe BASIC a fost aspru criticată. Una dintre „cartele de vizită” ale lui Edsger Dijkstra a fost afirmația:

Elevii care au studiat anterior BASIC sunt aproape imposibil să predea programare bună. Ca potențiali programatori, aceștia sunt infirmi mental, fără nicio speranță de recuperare [5] .

Text original  (engleză)[ arataascunde]

Este practic imposibil să predați programare bună studenților care au avut o expunere anterioară la BASIC: ca potențiali programatori, ei sunt mutilați mental dincolo de speranța de regenerare.

Ca răspuns la critici, adepții BASIC notează că criticii atribuie limbajului acele aspecte negative care ar trebui atribuite utilizării greșite a acestuia. Dezavantajele BASIC (dacă ne referim la dialectele timpurii) apar atunci când se încearcă dezvoltarea profesională a programelor complexe și mari pe el și când se folosește ca limbaj de bază pentru predarea programatorilor, dar acest limbaj nu a fost destinat niciunei dintre aceste aplicații; sarcina sa principală a fost de a oferi studenților neprogramatori posibilitatea, după o pregătire minimă , de a scrie cele mai simple programe pentru propriile nevoi , pentru a nu distrage atenția specialiștilor pentru această muncă. Limbajul este destul de potrivit pentru această sarcină.

Dacă vorbim despre dialectele moderne și despre implementările BASIC, atunci acestea au mers atât de departe de forma originală a limbii încât toate cele de mai sus pot fi considerate cu greu legate de ele. Dialectele moderne ale BASIC sunt limbi destul de structurate, sunt comparabile ca capacități cu limbi precum C , Pascal etc.

Producători

În momente diferite, interpreții BASIC au fost produși de diferite organizații, companii, firme:

Sovietic:

Implementări

Măr:

Microsoft :

Sinclair :

  • 4K DE BAZĂ
  • 8K DE BAZĂ
  • 48 DE BAZĂ
  • 128 DE BAZĂ

Alte:

Fapte interesante

Note

  1. 1 2 Gürer D. Femeile pioniere în informatică  (engleză) // Buletinul SIGCSE - 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 = Elemente de bază ale computerului INPUT/OUTPUT. Înțelegerea computerelor / Per. din engleza. K. G. Bataeva Ed. si cu prefata. cand. Fiz.-Matematică. Științe V. M. Kurochkin. — M .: Mir, 1989. — 240 p. — 100.000 de exemplare.  — ISBN 5-03-001147-1 .
  4. Mary Bellis, BASIC - (Codul de instrucțiuni simbolice universale pentru începători) . Preluat la 1 septembrie 2012. Arhivat din original la 7 august 2021.
  5. Cum spunem adevăruri care ar putea răni? Arhivat 2 mai 2017 la Wayback Machine , Amenințările la adresa științei informatice Arhivat 15 octombrie 2012 la Wayback Machine

Literatură

  • Dyakonov V., Munerman V., Samoylova T., Yemelchenkov Ye. Ghidul revoluționar pentru QBASIC. - Birmingham: Wrox Press Ltd, 1996. - 578 p.
  • Dyakonov V.P. Manual de algoritmi și programe în BASIC pentru calculatoare personale. - M. : Nauka, Fizmatlit, 1987. - 240 p.
  • Dyakonov V.P. Utilizarea computerelor personale și programarea în BASIC. - M . : Radio şi comunicare, 1989. - 288 p.
  • Dyakonov V.P. Calculatoare străine moderne. - M. : SOLON-R, 2002. - 400 p.
  • Ketkov Yu. Practică de programare BASIC, C, Pascal. - BHV, 2002. - 480 p. — ISBN 5941571046 .
Standarde

Link -uri