Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Windows 8
  • Sisteme și limbaje de programare. Lista limbajelor de programare

Sisteme și limbaje de programare. Lista limbajelor de programare

^

Limbaje și sisteme de programare

  1. Dezvoltarea limbajelor de programare

Generații de limbaje de programare

Se obișnuiește să se împartă limbajele de programare în cinci generații.

^ În prima generație include limbaje create la începutul anilor 50, când au apărut primele computere. A fost primul limbaj de asamblare construit pe principiul unei instrucțiuni, unei linii.

Înfloritoare a doua generație limbajele de programare au apărut la sfârșitul anilor 50 - începutul anilor 60. Apoi a fost dezvoltat un asamblator simbolic, în care a apărut conceptul de variabilă. A devenit primul limbaj de programare cu drepturi depline. Datorită aspectului său, viteza de dezvoltare și fiabilitatea programelor au crescut considerabil.

Ieșirea a treia generatie limbajele de programare sunt de obicei atribuite anilor 60. În acest moment, au apărut limbi universale la nivel înalt, cu ajutorul lor este posibil să se rezolve probleme din orice domeniu. Calitățile noilor limbaje, cum ar fi simplitatea relativă, independența față de un anumit computer și capacitatea de a folosi constructe sintactice puternice, au crescut dramatic productivitatea programatorilor. Structura acestor limbi, de înțeles de majoritatea utilizatorilor, i-a atras să scrie programe mici (de obicei de natură inginerească sau economică). Majoritatea covârșitoare a limbilor acestei generații sunt folosite cu succes astăzi.

De la începutul anilor 70 până în prezent, perioada limbilor durează a patra generație... Aceste limbaje sunt destinate implementării proiectelor mari, crescând fiabilitatea și viteza de creare a acestora. Acestea sunt axate pe domenii de aplicare specializate, unde pot fi obținute rezultate bune folosind limbaje nu universale, ci orientate spre probleme, care operează cu concepte specifice unui domeniu îngust.

De obicei, aceste limbi au operatori puternici încorporați pentru a descrie funcționalitatea într-o singură linie care ar necesita mii de linii de cod sursă pentru a fi implementate în limbi de generație inferioară.

Nașterea limbilor a cincea generație s-a întâmplat la mijlocul anilor '90. Acestea includ și sisteme pentru crearea automată a programelor de aplicație folosind instrumente de dezvoltare vizuală, fără cunoștințe de programare.

Ideea principală din spatele acestor limbaje este capacitatea de a genera automat textul rezultat în limbaje de programare universale (care apoi trebuie compilate). Instrucțiunile sunt introduse în computer în cea mai vizuală formă, folosind metode care sunt cele mai convenabile pentru o persoană care nu este familiarizată cu programarea.

^ O prezentare generală a limbajelor de programare de nivel înalt

Fortran

Este primul limbaj compilat în anii 1950.

Programatorii care au dezvoltat programe exclusiv în limbaj de asamblare și-au exprimat îndoieli serioase cu privire la posibilitatea unui limbaj de înaltă performanță la nivel înalt, așa că principalul criteriu de dezvoltare a compilatoarelor Fortran a fost eficiența codului executabil. Deși Fortran a fost pionier pentru o serie de concepte critice de programare, ușurința de a scrie programe a fost sacrificată pentru capacitatea de a genera cod eficient de mașină. Cu toate acestea, un număr mare de biblioteci au fost create pentru acest limbaj, variind de la complexe statistice la pachete de control prin satelit. Fortran continuă să fie utilizat activ în multe organizații. Există o versiune standard a Fortran HPF (High Performance Fortran) pentru supercalculatoare paralele cu procesoare multiple.

Cobol (Cobol).

Este un limbaj compilat pentru utilizare în economie și pentru rezolvarea problemelor de afaceri, dezvoltat la începutul anilor '60. Este foarte „verbos” - operatorii săi arată uneori ca expresii obișnuite în engleză. În Cobol, au fost implementate instrumente foarte puternice pentru lucrul cu cantități mari de date stocate pe diverse medii externe. Au fost create o mulțime de aplicații în acest limbaj, care sunt încă utilizate astăzi.

Algol Limbaj compilat creat în 1960. A fost destinat să înlocuiască Fortran, dar datorită structurii sale mai complexe, nu a fost adoptat pe scară largă. În 1968. A fost creată o versiune a Algol 68, care este încă înaintea multor limbaje de programare în ceea ce privește capacitățile sale, dar din cauza lipsei de computere suficient de eficiente pentru acesta, nu a fost posibil să se creeze compilatoare bune în timp util.

Pascal

Limbajul Pascal, creat la sfârșitul anilor 70, seamănă în multe privințe cu Algol, dar înăsprește o serie de cerințe pentru structura programului și există oportunități care îi permit să fie folosit cu succes atunci când se creează proiecte mari.

De bază

Există atât compilatoare, cât și interpreți pentru această limbă și se află pe primul loc în lume ca popularitate. A fost creat în anii 60 ca limbă de predare și este foarte ușor de învățat.

C (C)

Acest limbaj a fost creat în laboratorul Bell și nu a fost considerat inițial drept mainstream. Acesta a fost destinat să înlocuiască asamblatorul, astfel încât să poată crea programe care sunt la fel de eficiente și compacte, fără a fi dependente de un anumit tip de procesor. C este în multe privințe similar cu Pascal și are facilități suplimentare pentru manipularea directă a memoriei (pointeri). Multe aplicații și programe de sistem și o serie de sisteme de operare cunoscute (Unix) au fost scrise în acest limbaj în anii '70.

C ++ (C ++)

C++ este o extensie orientată pe obiecte a limbajului C, dezvoltată în 1980. Implementează multe caracteristici noi puternice care au crescut dramatic productivitatea programatorilor, dar crearea de programe complexe și de încredere necesită un nivel ridicat de pregătire profesională din partea dezvoltatorilor.

Java (Java)

Acest limbaj a fost creat de Sun la începutul anilor 90 pe baza C++. Este conceput pentru a simplifica dezvoltarea aplicațiilor bazate pe C++ prin excluderea tuturor caracteristicilor de nivel scăzut din acesta. Dar principala caracteristică a acestui limbaj este compilarea nu în codul mașinii, ci în bytecode independent de platformă (fiecare comandă ia un octet). Acest bytecode poate fi executat folosind un interpret, a cărui versiune JVM (Java Virtual Machine) este creată astăzi pentru toate platformele.

O atenție deosebită este acordată dezvoltării acestui limbaj în două direcții:


  • suport pentru tot felul de dispozitive mobile și microcalculatoare încorporate în aparatele de uz casnic (tehnologia Jini);

  • crearea de module software independente de platformă capabile să ruleze pe servere din rețele globale și locale cu diverse sisteme de operare (tehnologia Java Beans).
Până acum, dezavantajul acestui limbaj este performanța scăzută.

^ Limbaje de programare a bazelor de date

Acest grup de limbi diferă de limbajele algoritmice, în primul rând, în sarcinile care se rezolvă. O bază de date este un fișier (sau un grup de fișiere) care este un set ordonat de înregistrări care au o structură uniformă și sunt organizate conform unui singur șablon (de obicei sub formă tabelară). O bază de date poate consta din mai multe tabele. Este convenabil să stocați în baze de date diverse informații din cărți de referință, dulapuri de dosare, jurnale contabile etc. Când lucrați cu baze de date, cel mai adesea trebuie să efectuați următoarele operațiuni:

Primele baze de date au apărut cu foarte mult timp în urmă, de îndată ce a apărut necesitatea procesării unor cantități mari de informații și a selectării grupurilor de înregistrări pe anumite criterii. Pentru aceasta, a fost creat Structured Query Language (SQL). Se bazează pe o teorie matematică puternică și permite procesarea eficientă a bazelor de date prin manipularea grupurilor de înregistrări, mai degrabă decât a înregistrărilor individuale.

Pentru gestionarea bazelor de date mari și prelucrarea eficientă a acestora au fost dezvoltate DBMS (Sisteme de management al bazelor de date).

De fapt, de fapt, fiecare SGBD, pe lângă suportul pentru limbajul SQL, are propriul său limbaj unic, care se concentrează pe caracteristicile acestui SGBD și nu este portabil pe alte sisteme.

Astăzi, există cinci producători de top DBMS din lume:

Microsoft (SQL Server), IBM (DB2), Oracle, Software AG (Adabas), Informix și Sybase. Produsele lor sunt destinate să susțină munca simultană a mii de utilizatori în rețea, iar bazele de date pot fi stocate într-o formă distribuită pe mai multe servere.

Odată cu apariția computerelor personale, au fost create așa-numitele SGBD desktop. DBMS dBase II, al cărui limbaj a fost interpretat, este considerat a fi strămoșul limbajelor moderne de programare a bazelor de date pentru computere. Apoi au fost create compilatoare pentru acesta, au apărut SGBD-urile FoxPro și Clipper, care acceptă dialectele acestui limbaj. Astăzi, versiuni similare, dar incompatibile, ale familiei de limbi dBase sunt implementate în Visual FoxPro de la Microsoft și Visual dBase de la Inprise.

^ Limbaje de programare pentru internet

Odată cu dezvoltarea activă a rețelei globale, au fost create multe limbaje de programare populare, adaptate special pentru Internet.

Toate diferă prin trăsături caracteristice: limbile sunt interpretate, interpreții pentru ele sunt distribuite gratuit, iar programele în sine sunt în codul sursă. Astfel de limbi sunt numite limbaje de scripting.

HTML. Un limbaj binecunoscut pentru documente. Este foarte simplu și conține comenzi de bază pentru formatarea textului, adăugarea de imagini, setarea fonturilor și culorilor, organizarea legăturilor și a tabelelor. Toate paginile Web sunt scrise în HTML sau folosesc extensii HTML.

Perl. În anii 1980, Larry Wall a dezvoltat limbajul Perl. A fost conceput ca un instrument pentru procesarea eficientă a fișierelor text mari, generarea de rapoarte text și gestionarea sarcinilor. Perl este mult mai puternic decât limbaje precum C. Introduce multe funcții utilizate în mod obișnuit pentru lucrul cu șiruri de caractere, matrice, tot felul de instrumente de conversie a datelor, controlul procesului, lucrul cu informații despre sistem etc.

VRML. În 1994. limbajul VRML a fost creat pentru organizarea interfețelor virtuale tridimensionale pe Internet. Vă permite să descrieți sub formă de text diverse scene tridimensionale, lumini și umbre, texturi (acoperiri de obiecte), rotiți în orice direcție, scalați, reglați iluminarea etc.

^ Limbaje de modelare

Atunci când se creează programe și se formează structuri de baze de date, se folosesc adesea metode formale de prezentare a acestora - notații formale, cu ajutorul cărora puteți reprezenta vizual tabele bazei de date, câmpurile, obiectele programului și relația dintre acestea într-un sistem care are un editor specializat și un generator de coduri sursă de programe bazate pe modelele create. Astfel de sisteme se numesc sisteme CASE. Ei folosesc în mod activ notațiile IDEF, iar recent UML devine din ce în ce mai răspândit.

      1. ^

        Sisteme de programare moderne

Bazele programării interfeței vizuale

Unul dintre punctele moarte, sau crizele programării, a fost recent asociat cu dezvoltarea unei interfețe grafice pentru utilizator. Programarea manuală a oricăror ferestre, butoane, meniuri familiare utilizatorului, gestionarea evenimentelor de la mouse și tastatură, inclusiv imagini și sunet în programe, au necesitat din ce în ce mai mult timp programator. În unele cazuri, întregul serviciu a început să ocupe până la 80-90% din volumul codurilor de program. Mai mult decât atât, toată această muncă a fost adesea irosită aproape în zadar, deoarece un an mai târziu stilul general acceptat al interfeței grafice s-a schimbat și totul a trebuit să fie reluat.

Ieșirea din această situație a fost indicată de două abordări.

Prima este standardizarea multor funcții de interfață, care a făcut posibilă utilizarea bibliotecilor disponibile, de exemplu, în Windows. Ca urmare, la schimbarea stilului interfeței grafice (de exemplu, la trecerea de la Windows 3.x la Windows 95), aplicațiile au putut să se adapteze automat la noul sistem fără nicio reprogramare.

Al doilea pas revoluționar a fost apariția programării vizuale, care își are originea în Visual Basic și a fost întruchipat în mod strălucit în Delphi și Borland C ++ Builder.

Programarea vizuală a făcut posibilă reducerea designului interfeței cu utilizatorul la proceduri simple și intuitive care fac posibilă realizarea în câteva minute sau ore a ceea ce anterior necesita luni de muncă.

Exemplu. În Delphi, arată așa. Lucrezi in Mediul de Dezvoltare Integrat Delphi, care iti pune la dispozitie formulare (pot fi mai multe in aplicatie) pe care se potrivesc componentele. Aceasta este de obicei o formă cu fereastră, deși pot exista forme invizibile. Cu ajutorul mouse-ului, pictogramele componentelor disponibile în bibliotecile Delphi sunt transferate pe formular și plasate. Cu manipulări simple, puteți redimensiona locația acestor componente. În același timp, tot timpul în timpul procesului de proiectare, rezultatul este vizibil - o imagine a formei și a componentelor situate pe acesta. Rezultatele designului sunt vizibile fără a compila programul.

Principalul avantaj este că în timpul proiectării formularului și al plasării componentelor pe acesta, Delphi generează automat coduri de program, inclusiv fragmentele corespunzătoare care descriu această componentă. Și apoi, în casetele de dialog corespunzătoare, utilizatorul poate modifica valorile implicite ale componentelor și, dacă este necesar, poate scrie handlere pentru unele evenimente. De fapt, proiectarea se reduce la plasarea componentelor într-un formular, setarea unora dintre proprietățile acestora și scrierea unor handlere de evenimente, dacă este necesar.

Componentele pot fi vizuale, vizibile atunci când aplicația rulează și non-vizuale, îndeplinind anumite funcții de serviciu. Componentele vizuale sunt imediat vizibile pe ecran în timpul procesului de proiectare, în aceeași formă în care utilizatorul le va vedea în timpul execuției.

Bibliotecile de componente vizuale ale Delphi includ multe tipuri de componente, iar nomenclatura lor se extinde foarte repede de la o versiune la alta. Ceea ce este deja disponibil este suficient pentru a construi aproape oricare dintre cele mai complicate aplicații fără a recurge la crearea de noi componente. În același timp, chiar și un programator fără experiență poate crea aplicații care arată profesional.

^ Sisteme de programare de bază

Cele mai populare limbaje de programare universale astăzi sunt următoarele: Basic, Pascal, C ++ (C ++), Java.

Pentru fiecare dintre aceste limbaje de programare astăzi există multe sisteme de programare produse de diverse companii și orientate către diverse modele de PC și sisteme de operare.

Cele mai populare medii vizuale pentru proiectarea rapidă a programelor pentru Windows sunt:


  • De bază: Microsoft Visual Basic;

  • Pascal: Borland Delphi;

  • C ++: Borland C ++ Bulider;

  • Java: Symantec Cafe.
Pentru a dezvolta aplicații server și distribuite, puteți utiliza sistemul de programare Microsoft Visual C ++, produsele Borland, aproape orice instrument de programare Java.
    1. ^

      Arhitectura sistemelor software

În timp ce majoritatea aplicațiilor de sine stătătoare - programe de birou, medii de dezvoltare, sisteme de pregătire a textului și a imaginilor - rulează pe un singur computer, sistemele mari de informații (de exemplu, un sistem de automatizare a întreprinderii) constau din zeci și sute de programe individuale care interacționează între ele printr-o rețea. rulează pe diferite computere. În astfel de cazuri, se spune că aceștia funcționează pe o arhitectură software diferită.


  1. Aplicații de sine stătătoare. Ei lucrează pe un singur computer.

  2. Aplicații într-o arhitectură de server de fișiere. Calculatoarele utilizatorilor sistemului sunt unite într-o rețea, în timp ce pe fiecare dintre ele sunt lansate copii ale aceluiași program (la locul clientului), care accesează serverul pentru date, care stochează fișiere care sunt simultan disponibile pentru toți utilizatorii. (de regulă, acestea sunt baze de date). Serverul are fiabilitate crescută, performanță ridicată, capacitate mare de memorie; pe el este instalată o versiune specială de server a sistemului de operare. Atunci când mai multe programe accesează același fișier în același timp, de exemplu, pentru a-l actualiza, pot apărea probleme din cauza ambiguității definiției conținutului acestuia. Prin urmare, fiecare modificare a unui fișier public este alocată unei tranzacții (o operație elementară de prelucrare a datelor cu un început fix, un sfârșit (finalizare cu succes sau nereușit) și o serie de alte caracteristici). Particularitatea acestei arhitecturi este că toate calculele sunt efectuate pe site-urile clientului, ceea ce necesită PC-uri suficient de productive pe acestea (acestea sunt așa-numitele sisteme cu un client gros - un program care realizează toată prelucrarea informațiilor primite de la server).

  3. Aplicații client-server . Această arhitectură este similară cu cea anterioară, doar serverul, pe lângă faptul că oferă simplu acces simultan la date, este și capabil să execute programe care preiau o anumită cantitate de calcul (în serverul de fișiere arhitectură, este implementat în întregime pe instalațiile client). Datorită acestui fapt, este posibil să creșteți fiabilitatea generală a sistemului, deoarece serverul este mult mai stabil decât PC-ul și să eliminați încărcătura inutilă din locurile clientului unde poate fi utilizat. Aplicațiile lansate pe ele efectuează cantități mici de calcul și, uneori, sunt angajate doar în afișarea informațiilor primite de la server, motiv pentru care sunt numite clienți subțiri.

  4. Aplicații în arhitectură multi-nivel. Dezavantajul arhitecturii anterioare este că sarcina pe server crește dramatic, iar dacă eșuează, întregul sistem nu mai funcționează. Prin urmare, la sistem este adăugat un așa-numit server de aplicații, pe care se efectuează toată munca de calcul. Un alt server de baze de date procesează cererile utilizatorilor, iar un al treilea poate fi echipat cu un program special - un monitor TP, care optimizează procesarea tranzacțiilor și echilibrează sarcina de pe servere. În cele mai multe cazuri practice, toate serverele sunt conectate în serie, iar eșecul unei legături, dacă nu oprește toate lucrările, atunci cel puțin reduce performanța sistemului.

  5. Aplicații într-o arhitectură distribuită. Pentru a evita dezavantajele arhitecturilor luate în considerare, au fost inventate tehnologii speciale care vă permit să creați un program sub forma unui set de componente care pot fi rulate pe orice server conectat la rețea (componentele sunt, parcă, distribuite pe rețeaua). Principalul avantaj al acestei abordări este că, în cazul în care un computer eșuează, programele speciale de monitor care monitorizează funcționarea corectă repornesc imediat componenta lipsă temporar pe alt computer. În acest caz, fiabilitatea generală a întregului sistem devine foarte mare, iar sarcina de calcul este distribuită între servere într-un mod optim. Accesul la capacitățile oricărei componente concepute pentru a comunica cu utilizatorul se realizează de pe un site client arbitrar. Deoarece toate calculele au loc pe servere, devine posibil să se creeze clienți ultra-subțiri - programe care afișează doar informațiile primite din rețea și necesită resurse minime de calculator. Datorită acestui fapt, accesul la sistemul de componente este posibil nu numai de pe un PC, ci și de pe dispozitive mobile mici. Un caz special al abordării componentelor este accesul la aplicațiile server din browsere de pe Internet.
Cele mai populare tehnologii din trei componente sunt astăzi: CORBA al consorțiului OMG, Java Beans de la Sun, COM + de la Microsoft.

Aceste tehnologii vor modela dezvoltarea industriei informaționale în următoarele decenii.

Limbaje și sisteme de programare

Conceptul de limbaj mașină

Limbajul mașină este un sistem de comenzi înțeles direct de hardware-ul unui anumit sistem electronic de calcul. În consecință, limbajul mașinii este determinat în mod unic de setul de instrucțiuni al procesorului și de arhitectura computerului.

Setul de instrucțiuni procesor conține:

· Comenzi aritmetic-logice - comenzi pentru operatii aritmetice pe numere binare si operatii logice pe vectori binari;

· Comenzi de control - comenzi de tranziție, ramuri, repetări și alte comenzi;

· Comenzi de transfer de date - comenzi cu ajutorul cărora se schimbă RAM și CPU;

· Comenzi de intrare-ieșire a datelor - comenzi cu ajutorul cărora CPU și dispozitivele externe fac schimb de date.

Fiecare comandă conține codul operației pe care o efectuează și informații despre adresele datelor pe care se efectuează această operație. În plus, comanda (direct - comenzi de control și indirect - alte comenzi) conține informații despre adresa comenzii care va fi executată în continuare. Astfel, orice secvență de instrucțiuni aflată în RAM este de fapt un algoritm înregistrat în sistemul de instrucțiuni al procesorului - un program de mașină.

Cea mai comună acum este arhitectura unui computer cu o magistrală comună. Autobuzul comun este autostrada centrală de informare care conectează dispozitivele externe la procesorul central. Este format dintr-o magistrală de date, o magistrală de adrese și o magistrală de control. Busul de date este destinat schimbului de date între RAM și dispozitive externe. Autobuzul de adrese transportă adrese de date. Acest autobuz este unidirecțional. Busul de control servește ca canal pentru schimbul de semnale de control între dispozitivele externe și procesorul central.

Astfel, limbajul mașină (limbajul procesorului) este un set de instrucțiuni, fiecare dintre ele descrie o acțiune elementară de transformare a informațiilor reprezentate în cod binar. Utilizarea universală a codului binar pentru reprezentarea informațiilor dintr-o mare varietate de forme duce la faptul că programul pentru rezolvarea chiar și a unei probleme destul de simple conține sute de instrucțiuni ale mașinii. Scrierea unui astfel de program folosind instrucțiunile mașinii nu este ușoară nici măcar pentru un programator priceput. Programele reale constau din zeci și sute de mii de instrucțiuni ale mașinii. Prin urmare, orice tehnologie pentru proiectarea unui program ar trebui să se bazeze pe tehnici caracteristice gândirii umane, să opereze cu concepte familiare unei persoane din domeniul căreia îi aparține sarcina.

Cu alte cuvinte, programatorul (designerul de algoritm) trebuie să fie capabil să-și formuleze algoritmul în limbajul conceptelor familiare; atunci un program special trebuie să exprime aceste concepte folosind mașini-unelte, traducând (traducând) textul algoritmului în limba mașinii.

Această necesitate a dus la apariția limbajelor de programare de nivel înalt ca limbaje de înregistrare a algoritmilor destinati execuției pe un computer.

Limbaje orientate pe mașini

Predecesorii limbajelor de nivel înalt sunt așa-numitele limbaje orientate spre mașină sau limbaje de codare automată. Unul dintre cei mai proeminenți reprezentanți ai limbajelor orientate spre mașină este Assembler. Assembler este foarte aproape de limbajul mașinii, majoritatea instrucțiunilor sale sunt reprezentări simbolice exacte ale instrucțiunilor mașinii. Avantajul este ca nu mai este necesar sa retineti codurile numerice ale instructiunilor procesorului, este suficient sa cunoastem reprezentarea lor simbolica. În plus, pentru prima dată în limbaje orientate către mașină, conceptul de variabilă apare ca o zonă de memorie numită pentru stocarea datelor și, odată cu acesta, conceptul de tip de date. În programele într-un limbaj orientat către mașină, devine posibilă utilizarea atât a informațiilor numerice, cât și a celor textuale într-o formă familiară oamenilor.

În ciuda avantajelor clare ale limbajelor orientate pe mașină față de un limbaj pur mașină, scrierea de programe în aceste limbi este încă plină de dificultăți semnificative. Programele sunt foarte greoaie și greu de citit.

Limbaje de programare de nivel înalt

Limbajele de programare la nivel înalt joacă rolul unui mijloc de comunicare între programator și mașină, precum și între programatori. Această împrejurare impune multe obligații asupra limbii:

Limba ar trebui să fie aproape de acele fragmente de limbi naturale care oferă un domeniu specific al activității umane; (Un limbaj axat pe aplicatii de business ar trebui sa contina conceptele folosite in acest tip de activitate: document, factura, baza de date etc.).

Toate facilitățile lingvistice trebuie să fie formalizate în așa măsură încât să poată fi implementate ca programe de mașină.

Un limbaj de programare este mai mult decât un mijloc de descriere a algoritmilor: conține un sistem de concepte pe baza căruia o persoană se poate gândi la problemele sale și o notație cu care își poate exprima gândurile despre rezolvarea unei probleme.

Modele de programe de difuzare. Traducători

În general, computerele nu sunt proiectate să înțeleagă limbaje de programare de nivel înalt. Hardware-ul recunoaște și execută doar limbajul mașinii, programul în care nu este altceva decât o secvență de numere binare.

Apariția limbajelor de programare a fost asociată cu realizarea faptului că traducerea unui algoritm scris într-un limbaj „aproape” natural (algoritmic) într-un limbaj de mașină poate fi automatizată și, prin urmare, încredințată umerilor unei mașini. Este important aici să facem distincția între limbaj și implementarea sa. Limba în sine este un sistem de notație guvernat de un set de reguli care îi definesc vocabularul și sintaxa. O implementare de limbaj este un program care convertește această notație într-o secvență de instrucțiuni de mașină conform regulilor semantice definite în limbaj.

Există două moduri principale de a implementa un limbaj: compilatori și interpreți. Compilatorii traduc întregul text al unui program scris într-un limbaj de programare în cod de mașină într-un proces continuu. Acest lucru creează un program complet de cod de mașină care poate fi apoi executat fără a fi nevoie de un compilator.

Interpretul în fiecare moment recunoaște și execută o propoziție (operator) a programului, transformând pe parcurs propoziția procesată într-un program de mașină. Diferența dintre un compilator și un interpret este similară cu diferența dintre interpretarea simultană a vorbirii orale și traducerea unui text.

În principiu, orice limbă poate fi atât compilată, cât și interpretată, dar în majoritatea cazurilor fiecare limbă are propriul mod preferat de implementare. Aparent, această preferință este mai mult decât un tribut adus tradiției. Alegerea este determinată de limba în sine. Fortran, Pascal, Modula-2 sunt în mare parte compilate. Limbi precum Logo, Fort sunt aproape întotdeauna interpretate. BASIC și Lisp sunt utilizate pe scară largă în ambele forme.

Există două tipuri principale de compilatoare bazate pe tipul de date de ieșire:

· Compilarea codului executabil final;

· Compilarea codului interpretat, pentru a cărui execuție este nevoie de software suplimentar.

Codul executabil final este aplicațiile implementate ca fișiere EXE, biblioteci DLL, componente COM. Codul interpretat include bytecode-ul programelor JAVA care sunt executate de mașina virtuală JVM.

Codul obiect generat de compilator este o zonă de date și o zonă de instrucțiuni de mașină cu adrese care sunt ulterior „negociate” de către un editor de legături (uneori numit încărcător). Editorul de legături plasează toate modulele obiect compilate separat și bibliotecile legate static într-un singur spațiu de adrese.

În cele ce urmează, vom numi forma executabilă a programului codul obținut în urma compilării programului sursă.

Procesul de traducere (compilare).

Un program scris într-un limbaj de programare de nivel înalt se numește program sursă, iar fiecare unitate de program independentă care formează un anumit program se numește modul de program. Pentru a transforma programul sursă în forma sa executabilă (fișier executabil), traducătorul efectuează o anumită secvență de acțiuni. Această secvență depinde atât de limbajul de programare, cât și de implementarea specifică a traducătorului în sine. În cursul traducerii, este important nu numai să compilați programul, ci și să obțineți un cod suficient de eficient.

În procesul de traducere, se efectuează analiza programului original și apoi se realizează sinteza formei executabile a acestui program. În funcție de numărul de vizualizări ale programului sursă efectuate de compilator, traducătorii sunt împărțiți în cu o singură trecere, cu două treceri și traducători care folosesc mai mult de două treceri.

Avantajele unui compilator cu o singură trecere includ viteza mare de compilare, iar dezavantajele sunt, de regulă, să nu obțineți cel mai eficient cod.

Compilatoarele cu două treceri sunt utilizate pe scară largă. Acestea permit ca prima trecere să analizeze programul și să construiască tabele de informații utilizate în a doua trecere pentru a genera codul obiect.

Figura prezintă principalele etape efectuate în procesul de traducere a programului sursă.

Faza de analiză a programului constă în:

· Analiză lexicală;

· Analiză sintactică;

· Analiză semantică.

La analiza programului sursă, traducătorul scanează secvenţial textul programului reprezentat ca un set de caractere, analizând structura programului.

La etapa analizei lexicale se disting principalele componente ale programului - lexeme. Tokenurile sunt cuvinte cheie, identificatori, simboluri de operare, comentarii, spații și separatori. Analizatorul lexical nu numai că extrage jetoane, ci determină și tipul fiecărui jetoane. Totodată, în etapa de analiză lexicală, este alcătuit un tabel de simboluri, în care fiecărui identificator este asociat cu propria sa adresă. Acest lucru permite analizei ulterioare să folosească adresa sa în tabelul cu simboluri în loc de o anumită valoare (șir de caractere).

Procesul de evidențiere a jetoanelor este destul de laborios și necesită utilizarea unor algoritmi complexi, sensibili la context.

În etapa de parsare, jetoanele primite sunt analizate pentru a obține unități sintactice ușor de înțeles din punct de vedere semantic, care sunt apoi procesate de analizorul semantic. Deci, unitățile sintactice sunt expresiile, declarația, operatorul unui limbaj de programare, apelul de funcție.

În etapa analizei semantice, unitățile sintactice sunt procesate și se generează codul intermediar. În funcție de prezența sau absența fazei de optimizare, rezultatul analizei semantice poate fi un cod intermediar optimizat suplimentar sau un modul obiect gata făcut.

Cele mai comune sarcini rezolvate de analizorul semantic includ:

· Detectarea erorilor de compilare;

· Completarea tabelului de simboluri, creat în etapa analizei lexicale, cu valori specifice care determină informații suplimentare despre fiecare element al tabelului;

· Înlocuirea macrocomenzilor cu definițiile lor;

· Executarea directivelor în timp de compilare.

O macrocomandă este un cod predefinit care este inserat în program în etapa de compilare în toate locurile în care este indicată apelarea la această macrocomandă.

În faza de sinteză a programului se efectuează următoarele:

· Generarea codului;

· Editarea link-urilor.

Procesul de generare a codului constă în conversia codului intermediar (sau cod optimizat) în cod obiect. În acest caz, în funcție de limbajul de programare, codul obiect rezultat poate fi prezentat într-o formă executabilă sau ca un modul obiect pentru a fi prelucrat în continuare de către linker.

Deci, procesul de generare a codului este o parte integrantă a fazei de sinteză a programului, iar necesitatea de a executa linkerul depinde de limbajul de programare specific. Trebuie remarcat faptul că, în practică, termenul „generare de cod” este adesea aplicat tuturor acțiunilor fazei de sinteză a programului care conduc la o formă de program executabil.

Linker-ul se potrivește cu adresele fragmentelor de cod situate în module obiect separate: sunt determinate adrese ale funcțiilor externe numite, adrese ale variabilelor externe, adrese ale funcțiilor și metode ale fiecărui modul. Pentru a edita adrese, editorul de linkuri folosește tabele speciale de încărcare create în etapa de traducere. După ce modulele obiect sunt procesate de către linker, este generat un formular de program executabil.

Un limbaj de programare este un limbaj formal conceput pentru a conecta o persoană cu un computer. Informațiile și algoritmul de procesare a datelor sunt setate în limbajul de programare. Un computer electronic (ECM) percepe direct un program prezentat într-un limbaj mașină, programare în care este foarte incomod pentru oameni.

Dezvoltarea tehnologiei informatice a dus la apariția limbajelor de programare. Scopul unui astfel de limbaj este de a echipa un set de formule de calcul cu informații suplimentare care transformă acest set într-un algoritm. În cele ce urmează, un limbaj de programare este înțeles ca un limbaj pentru compilarea programelor, adică. limba în care este scris algoritmul pentru rezolvarea problemei pe un calculator.

Programarea calculatoarelor din prima generație a fost realizată exclusiv în limbaj mașină. Limbajul mașină este un set de reguli pentru codificarea anumitor acțiuni (în majoritatea aritmetică) în formă numerică. Pentru toate mașinile este de înțeles doar sistemul de numere binar, care însă, pentru a scurta notația de către programatori, a fost înlocuit cu cel octal.

Un sistem numeric este de obicei înțeles ca un set de tehnici de denumire și desemnare a numerelor. Sistemul obișnuit de notare a numerelor este un sistem numeric zecimal pozițional în conformitate cu faptul că valoarea sa numerică depinde de poziția ocupată de oricare dintre cifrele utilizate în acest sistem. Sistemul de numere binare este cel mai simplu, deoarece folosește doar două cifre: 0 și 1, iar sistemul de numere octale este convenabil deoarece baza lui, și anume valoarea numerică 8, este puterea bazei sistemului de numere binar 2. Pentru de exemplu, se poate introduce numărul zecimal 65

În notație zecimală:

6 x 101 + 5 x 100 = 65;

În sistem octal ca

1 × 82 + 0 × 81 + 1 × 80 = 101;

Și în sistemul de numere binar în formă

1 × 26 + 0 × 25 + 0 × 24 + 0 × 23 + 0 × 22 + 0 × 2l + 1 × 20 = 100 001.

Fiecare acțiune care trebuie efectuată de un computer este specificată în limbajul mașinii ca o comandă. O comandă este o informație prezentată într-o formă care vă permite să o introduceți într-o mașină și determină acțiunile unui computer pentru o anumită perioadă de timp. Astfel, fiecare comandă definește, în general, o parte elementară a procesului de prelucrare a informațiilor, numită operație de mașină. Informațiile inițiale pentru prelucrare sunt furnizate, de regulă, ca un set de valori specifice, numite de obicei date. Datele inițiale pentru efectuarea oricărei acțiuni, inclusiv a unei operații de mașină, se vor numi operanzi.

Într-o comandă, în cazul general, tipul acțiunii, locația de stocare în mașină (adresa) a informațiilor inițiale pe care se efectuează operarea mașinii, adresa rezultatului, precum și următoarea comandă care urmează să fie executată. după aceasta, trebuie indicat. Pentru operațiile (sau operațiile) aritmetice, informațiile inițiale sunt setate, de regulă, sub formă de două numere, prin urmare, în comanda trebuie specificate două adrese. Astfel, o instrucțiune trebuie să conțină un opcode care specifică tipul de operare a mașinii care trebuie efectuată și patru adrese: două adrese de operanzi, adresa rezultatului și adresa următoarei instrucțiuni. De obicei, numărul necesar de adrese într-o comandă este mai mic de patru.

Într-un computer cu comenzi cu trei adrese, adresa comenzii următoare nu este indicată, dar comanda din următoarea celulă de memorie este executată automat (cu un număr mai mare cu unu, care este adresa comenzii următoare). De exemplu, dacă acceptăm codul 01 pentru operația de adăugare, atunci pentru adăugarea a două numere din celulele numerotate 2051 și 2052 cu rezultatul plasat în celula numerotată 2345, într-o mașină cu trei adrese comanda va arăta astfel:

01 2051 2052 2345 26

Prima îmbunătățire a procesului de programare a fost introducerea adreselor simbolice, care au făcut posibilă compunerea comenzilor și alocarea separată a memoriei. Esența acestei tehnici constă în împărțirea memoriei RAM a mașinii în matrice, numărul de celule în care nu este cunoscut în prealabil, iar numerele celulelor matricei sunt date prin denumiri alfanumerice precum ai + 1, ai + 2,. ... ., numite adrese simbolice. Alocarea memoriei se realizează prin alocarea de valori numerice tuturor ai după ce programul a fost compilat. Ultimul proces este pur mecanic și poate fi automatizat, adică. atribuirea adreselor adevărate poate fi încredințată computerului însuși.

Această îmbunătățire a procesului de programare a condus în curând la crearea unor limbaje de programare simbolice sau autocoduri. Un astfel de limbaj diferă de un limbaj de mașină doar prin aceea că sunt folosite denumiri simbolice (alfabetice) în locul valorilor numerice care exprimă codul de operare a comenzii și adresa acestuia. Prin urmare, în primele autocoduri, a existat o corespondență unu-la-unu între operațiile scrise în limbajul de programare simbolic (sau codificare) și instrucțiunile în limbajul mașinii, care era indicată de simbolul 1: 1, care era scris după numele limbii. De exemplu, AUTOCODE 1: 1 - AUTO Coding unu la unu.

Îmbunătățirea ulterioară a autocodurilor s-a exprimat în apariția unor mijloace suplimentare care stabilesc, conform regulilor uzuale, ordinea acțiunilor în formule aritmetice sau asigură, în condițiile necesare, ramificarea procesului de calcul, repetarea ciclică a secțiunilor de program și alte operațiuni care decurg din starea problemei. Deci, treptat, codurile automate au pierdut prefixul 1: 1, iar limbajele lor de introducere nu au devenit pur mașină, ci orientate către mașină. Orientarea mașinii a însemnat că aceste limbi au continuat să se bazeze pe setul de instrucțiuni al unui anumit computer. Primele limbaje orientate spre mașină au fost în general imperfecte. În unele limbi, descrierea secvenței de calcule a fost smulsă din formulele în sine, altele aveau simboluri complexe, puțin vizuale sau prea specializate, altele erau adaptate doar pentru rezolvarea unei game limitate de probleme. Principalul dezavantaj a fost atașarea limbii la această mașină.

Odată cu apariția mașinilor din a doua generație, a apărut nevoia de a crea limbaje care să fie în întregime concentrate pe caracteristicile sarcinilor și să nu depindă de o anumită mașină. Această cerință a fost agravată de faptul că computerele de diferite mărci s-au înlocuit rapid între ele sau au fost utilizate împreună. Limbajele de programare orientate spre probleme au devenit simbolul celei de-a doua generații de calculatoare. Dezvoltarea lor a fost din ce în ce mai determinată de specificul sarcinilor, și nu de caracteristicile mașinilor. În prim-plan a apărut ceea ce era comun în diferite probleme, iar acest lucru a reunit diferite limbaje create în epoca dominației problemelor de calcul. Aceste limbaje sunt de obicei numite limbaje algoritmice formale sau pur și simplu algoritmice.

Este nevoie de mult de la un limbaj algoritmic formal. În primul rând, trebuie să fie vizual, ceea ce poate fi realizat prin utilizarea simbolurilor matematice existente și a altor mijloace picturale ușor de înțeles. În al doilea rând, flexibil, astfel încât orice algoritm poate fi descris fără complicații inutile asociate cu lipsa mijloacelor vizuale. În al treilea rând, limbajul trebuie să fie lipsit de ambiguitate - înregistrarea oricărui algoritm, realizată în conformitate cu toate regulile limbii, nu ar trebui să permită interpretări diferite. În al patrulea rând, mai multe etape - un algoritm complex poate fi descris ca o combinație de algoritmi mai simpli. Și, în sfârșit, limbajul ar trebui să fie uniform - pe de o parte, numărul de mijloace picturale nu trebuie să fie prea mare și, pe de altă parte, este necesar ca aceleași mijloace să poată fi folosite pentru a exprima aceleași concepte sau concepte înrudite. în diferite (în funcție de scopul lor) părți ale algoritmului. Un astfel de limbaj servește:

Un mijloc de gândire - imperfecțiunea logică a metodei propuse pentru rezolvarea unei probleme este adesea relevată în procesul de scriere a acestei metode prin intermediul unui limbaj algoritmic;

· Un mijloc de comunicare între oameni - o descriere a procesului, efectuată de o persoană, ar trebui să fie disponibilă alteia;

· Un intermediar între un om și o mașină - în acest caz, traducerea din limbajul algoritmic în limba mașinii este efectuată de mașina însăși folosind un program special - un traducător.

Una dintre primele și cele mai de succes limbi de acest gen a fost Fortran, dezvoltat de IBM. În 1954, un grup de specialiști americani în programare a publicat primul raport despre limbajul Fortran. Numele limbajului provine de la expresia formule TRANslation - transformarea formulelor. Limba Fortran nu numai că a existat până în prezent, dar deține cu încredere și primul loc în lume în ceea ce privește prevalența. Printre motivele acestei longevități se remarcă structura simplă atât a Fortranului însuși, cât și a traducătorilor destinați acestuia. Un program Fortran este scris sub forma unei secvențe de propoziții, sau operatori (un operator înseamnă o descriere a unei anumite transformări a informațiilor) și este întocmit după anumite reguli. Aceste reguli impun restricții, în special, cu privire la forma de înregistrare și aranjarea părților operatorului în linia formularului pentru operatorii de înregistrare. Un program Fortran este unul sau mai multe segmente (subrutine) de instrucțiuni. Segmentul care controlează funcționarea întregului program în ansamblu se numește program principal.

Fortran a fost conceput pentru a fi utilizat în calculul științific și de inginerie. Cu toate acestea, acest limbaj poate descrie cu ușurință sarcini cu logică ramificată (modelarea proceselor de producție, rezolvarea situațiilor de joc etc.), unele probleme economice, și mai ales sarcini de editare (întocmirea de tabele, rezumate, enunțuri etc.).

O modificare a limbajului Fortran, care a apărut în 1958, a fost numită Fortran II și conținea conceptele de subrutină și variabile partajate pentru a asigura comunicarea între segmente.

Până în 1962, aparține apariția limbii cunoscute sub numele de Fortran IV și care a devenit cea mai comună în prezent. În același timp, a început lucrările comisiei la Asociația Americană de Standarde (ASA), care a dezvoltat (până în 1966) două standarde - limbile Fortran și FORTRAN de bază (principal) (Fortran de bază). Aceste limbi corespund aproximativ modificărilor IV și II, dar Fortran de bază este un subset al Fortran, în timp ce Fortran II nu este așa pentru Fortran IV.

Limba Fortran continuă să evolueze și să se îmbunătățească, influențând crearea și dezvoltarea altor limbi. De exemplu, Fortran este baza pentru limbajul de dialog BASIC și extensia sa BASIC-plus, limbaje utilizate pe scară largă în toate sistemele de partajare a timpului, limbaje pentru predarea abilităților de utilizare a limbajelor algoritmice în practica de programare. Aceste limbaje sunt implementate în special pe computerele personale. În prezent, a fost creat un nou standard - Fortran 77.

La scurt timp după crearea Fortran (1957), a apărut Limbajul ALGOritmic (ALGOritmic Language), creat pe baza unei largi cooperări internaționale. În 1960, a fost publicat un mesaj oficial despre un limbaj algoritmic numit Algol-60, unde numărul 60 înseamnă anul în care limba a fost aprobată.

Algol-60 a fost creat după dezvoltarea și aplicarea practică a Fortran, prin urmare se caracterizează atât prin introducerea de noi modele, cât și prin generalizarea conceptelor disponibile în Fortran. De exemplu, dacă în Fortran operatorii sunt împărțiți din punct de vedere funcțional în executabili și neexecutabili, atunci în Algol nu există o astfel de diviziune, iar construcțiile numite descrieri joacă rolul operatorilor Fortran neexecutabili.

Există și alte diferențe. Cu toate acestea, ceea ce Fortran și Algol au în comun este faptul că ambele limbi se bazează pe conceptul de expresie, care practic coincide cu conceptul de expresie matematică folosind numai operații algebrice și funcții elementare. Cele mai simple obiecte din care sunt compuse expresiile sunt numerele întregi și aproximează numerele reale și valorile logice.

Algol este recunoscut pe scară largă ca un instrument foarte util pentru publicarea algoritmilor și pentru predarea elementelor de bază ale programării.

Până de curând, atât Fortran, cât și Algol-60 au meritat pe bună dreptate numele de limbaje universale, deoarece acestea asigurau programarea majorității problemelor științifice și tehnice (în principal computaționale). Dar niciuna dintre aceste limbi, desigur, nu a făcut posibilă descrierea tuturor problemelor apărute fără excepție. Prin urmare, cam în același timp, limbajele algoritmice au apărut cu o orientare diferită, satisfacând nevoile acelor noi domenii ale științei și tehnologiei, care au început să se dezvolte intens în anii următori.

Un exemplu sunt sarcinile economice - sarcina de a contabiliza activele materiale, produsele fabricate, personalul, finanțele etc. întreprindere sau industrie. Pentru astfel de sarcini, acțiunile principale sunt operațiunile de intrare și ieșire cu o cantitate relativ mică de calcule simple, precum și procesarea secvențială a matricelor de date. Descrierea acțiunilor de acest fel poate fi realizată în Common Business Oriented Language, propus de IBM în 1959.

Sarcinile de prelucrare a informațiilor simbolice apar mai ales în domeniul cercetării științifice. Acestea sunt, de exemplu, transformarea formulelor, rezolvarea ecuațiilor (nu numerice, ci sub formă analitică), analiza și sinteza de texte în limbaj artificial sau natural (în special, programarea automată și traducerea automată) etc.

Dintre limbile de procesare a informațiilor simbolice, limbajul Lisp, creat de un grup de cercetători în 1960 la Institutul de Tehnologie din Massachusetts, este foarte popular, în principal printre reprezentanții științelor fizice și matematice. În acest limbaj, toate informațiile în curs de procesare, inclusiv programul în sine, sunt organizate în așa-numitele liste - secvențe de elemente. Un element poate fi primar (litera sau cifra) sau, la randul sau, o lista. În acest fel, pot apărea structuri arbitrar complexe.

O altă limbă - Snobol - este folosită în principal pentru analiza automată a textelor scrise în limbi naturale. În el, conceptul de bază este un șir - o secvență arbitrară de litere, numere și alte caractere. Operația principală este o căutare într-un șir a unei părți dintr-un șir construit într-o imagine dată și înlocuirea acestei părți cu un alt șir. Atât imaginea, cât și liniile care o înlocuiesc sunt compuse din elemente separate de tip simplu. Rezultatul căutării determină succesiunea acțiunilor ulterioare. Limba Snobol este foarte ușor de învățat.

Principalul avantaj al limbajelor algoritmice orientate către probleme, independente de mașină, este că au fost construite luând în considerare maximă ideile umane, dacă nu despre creatură, atunci despre forma problemei care se rezolvă, cu o aproximare maximă la forma. în care o persoană este obișnuită să descrie aceste sarcini și ținând cont de conexiunile logice pe care a învățat să le evidențieze în fenomenele studiate.

Algol, de exemplu, se caracterizează printr-o aproximare a simbolismului matematic obișnuit. Fortran, spre deosebire de Algol, este mai aproape de limbajul mașinii decât de limbajul uman. Lisp se caracterizează prin utilizarea aparatului așa-numitelor descrieri recursive, care este utilizat pe scară largă în logica matematică, în cercetările asupra fundamentelor matematicii etc.

Abundența limbajelor algoritmice care au apărut în perioada celei de-a doua generații de computere, pe de o parte, se datorează în mare măsură modei, pe de altă parte, imposibilității oricăruia dintre limbajele propuse de a descrie convenabil toate problemele care au apărut. A treia generație de calculatoare a pus pe ordinea de zi dezvoltarea unei noi abordări a creării unui limbaj algoritmic cu adevărat universal.

Una dintre încercările de acest fel este crearea de către IBM a limbajului algoritmic PL/1 (Limbaj de programare/1 - un limbaj de programare). Se bazează pe limbajele Fortran și Cobol, o serie de mijloace și concepte picturale sunt preluate din Algol și din alte limbi, în special limbaje pentru procesarea informațiilor simbolice. Ulterior au fost publicate mai multe versiuni ale limbii, care erau foarte diferite unele de altele, dar treptat limbajul s-a stabilizat, iar acum noile publicații se deosebesc de cele anterioare doar prin modificări editoriale, eliminarea inexactităților sau îmbunătățirea elementelor individuale.

Elementele principale ale unui program scris în limbajul PL/1 sunt operatorii, cu ajutorul cărora sunt descrise atât datele, cât și operațiunile de prelucrare a acestora. Prin analogie cu Fortran, programul original este o colecție a programului principal și a subrutinelor sub forma unui bloc. Conceptul de bloc în PL / l se bazează pe conceptele de bloc în limbajul Algol-60. Astfel, acest limbaj este construit pe ansamblu pe baza conceptelor limbajelor algoritmice existente și în tradițiile lor.

O altă încercare este legată de dezvoltarea ulterioară a lui Algol. În 1968, a fost publicat un document care descrie bazele unui nou limbaj algoritmic universal numit Algol-68. În acest limbaj, numărul conceptelor de bază este redus la un minim rezonabil pentru a realiza o putere vizuală ridicată a limbajului, asigurând libertatea de combinare și interacțiune a acestor concepte între ele.

Limbajul Algol-68 este tradițional, deoarece există dorința de a oferi tuturor utilizatorilor mijloace gata făcute pentru a-și descrie algoritmii. Până acum, această abordare nu a putut împiedica apariția unor noi limbi specializate. Așadar, în 1971, a fost publicat limbajul algoritmic Pascal, numit după marele om de știință francez al secolului al XVII-lea, care a fost primul din lume care a inventat un dispozitiv automat care permite adăugarea numerelor. Limba Pascal este succesorul lui Algol-60, are construcții similare cu cele din PL/l și Algol-68, dar Pascal este mai laconic. Limbajul Pascal este aproape la fel de simplu ca BASIC, dar Pascal promovează introducerea tehnologiei moderne de programare bazată pe construirea treptată a unui program format din mici proceduri bine definite, de exemplu. ideile de programare structurată sunt implementate în mod consecvent. O altă caracteristică semnificativă a lui Pascal este conceptul de structură a datelor ca unul dintre conceptele fundamentale care se află, alături de conceptul de algoritm, în centrul programării.

Pe baza limbajului Pascal la sfârșitul anilor 70 a fost creat limbajul Ada, care are un domeniu de aplicare foarte larg. Limbajul este numit după prima femeie programatoare, Ada Lovelays. Limbajul algoritmic al lui Ada a suferit anumite modificări în procesul de evoluție și acum are toate semnele distinctive ale unui limbaj standard. Este un limbaj foarte structurat, potrivit în special pentru dezvoltarea sistemelor în timp real. Cu toate acestea, limbajul Ada este prea greoi, verbos și nu oferă programatorului suficientă libertate.

Spre deosebire de limbajele de nivel înalt enumerate care au apărut la începutul anilor 80, limbajul de programare C este un limbaj de nivel relativ scăzut. Dar asta nu înseamnă că acest limbaj nu este suficient de puternic. Limbajul C este un limbaj universal strâns legat de popularul sistem de operare UNIX (atât sistemul UNIX, cât și software-ul său sunt scrise în limbajul C). Limbajul algoritmic C reflectă destul de pe deplin capacitățile computerelor moderne, permițându-vă să scrieți programe foarte eficiente fără a recurge la limbaje de asamblare, în principal datorită construcțiilor simple, secvențiale ale fluxurilor de control. Sunt oferite verificări, bucle, grupări și subrutine, dar nu multiprogramare, operații paralele, sincronizare și corutine - atribute indispensabile ale limbajelor puternice (Ada, PL/1, Algol-68).

Recent, a existat o tendință spre crearea așa-numitelor limbi universale extensibile. Ideea principală a acestei tendințe nu este evitarea limbilor dialectale specializate, ci crearea unei baze comune pentru „dialectele de programare”.

Limba extensibilă trebuie să aibă facilități pentru analizarea gramaticală a textelor oricăreia dintre extensii pentru a afla ce texte sunt corecte din punct de vedere gramatical pentru un dialect dat și ce structură au acestea. Un astfel de limbaj ar trebui să ofere viitorilor săi consumatori o serie de posibilități importante: de exemplu, să construiască modele semantice (adică să introducă termeni noi pentru a descrie conceptele exprimate de aceștia, relația acestora cu unele concepte de bază, inițiale și cu conceptele introduse anterior). ), descriu implementarea extensiilor - modalități de reprezentare a lor cea mai convenabilă folosind mijloacele disponibile calculatoarelor moderne. Există și alte caracteristici ale limbilor extensibile care pot fi remarcate.

4.1. Sisteme de programare.

Scopul principal al oricărui program - o descriere a secvenței de comenzi pentru procesorul central, care trebuie să o execute. Aceste comenzi trebuie să fie exprimate în codul mașinii, adică într-un limbaj înțeles de procesorul central. Prin urmare, este foarte dificil pentru o persoană să scrie programe într-o astfel de limbă se adoptă următoarea abordare pentru a crea programe:

Programatorul scrie text într-o limbă pe care o înțelege și cu care se simte confortabil. Apoi îl traduce în limbajul mașinii și îl transformă într-o formă convenabilă pentru procesor și pentru sistemul de operare.

În acest scop, sunt dezvoltate limbaje speciale pentru descrierea algoritmilor, care sunt numite limbaje algoritmice sau limbaje de programare .

(05.12.2012)

Ele (limbaj algoritmic) au o serie de proprietăți:

1. Specializare - un instrument oferit de un limbaj axat pe descrierea sarcinilor unor discipline de un anumit tip. de exemplu: unele limbi sunt destinate în principal calculelor numerice (Pascal), altele pentru lucrul cu informații textuale (LISP), iar altele pentru scrierea programelor de sistem (C). Practic, cele mai comune limbaje vă permit să descrieți soluția diferitelor probleme (de aceea sunt numite universale), dar sunt cele mai convenabile pentru rezolvarea problemelor pentru care sunt concepute.

2. Abilitatea de a scrie text ușor de citit, cu o structură clară. Această abordare în programare se numește modular (structural) ... El presupune scrierea modulelor software separate cu asamblarea lor automată ulterioară într-un singur program. În acest caz, programatorul scrie un modul de program numit programul principal (cap). ... În ea, el descrie secvența de execuție a modulelor rămase, care sunt numite programe sau funcții .

Datorită particularităților limbajelor de programare, există patru etape importante ale pornirii unui program pentru execuție :

1. Difuzare - traducerea textului modulelor de program dintr-un limbaj algoritmic într-un limbaj automat.

2. Asamblarea modulelor de program obținute după traducere într-un singur program.

3. Depanarea unui program - procesul de găsire și eliminare a erorilor în textul programului.

4. Executarea programului.

Pentru a asigura aceste etape sunt destinate sistemele de programare.

Acestea includ următoarele componente:

1. Editor de text specializat. Oferă asistență unei persoane în procesul de scriere a textului modulelor de program.

2. Traducători. Traducător Este un traducător din limba în care textele modulelor de program sunt scrise în limbajul intern al mașinii. Două tipuri de traducători:

  • Interpreți. Interpretul asigură traducerea linie cu linie a textului programului în limbajul mașinii și execuția simultană a fiecărei comenzi a acestui program. Interpretul automatizează toate etapele de pornire a programului pentru execuție.
  • Compilatoare. Compilatorul traduce textul unui modul de program în limbajul mașinii fără a-l executa. În același timp, sunt relevate erorile de sintaxă făcute de programator în text. Ca rezultat al muncii compilatorului, este creat un modul obiect, care nu este încă gata de execuție.

3. Editor de linkuri. Editorul de linkuri automatizează procesul de asamblare a modulelor software conexe, dar scrise și traduse separat. În cursul muncii lor dezvăluie el erori ale legăturilor specificate incorect între module ( De exemplu, prezența în text a unui link către un modul inexistent) sau absența acestora. În afară de, el adauga informații de serviciu solicitate de sistemul de operare pentru controlul ulterior al execuției acestui program. Fișierul obținut de program poate fi executat sub controlul sistemului de operare fără un sistem de programare, de aceea este numit fișier executabil (de pornire). .


4. Depanator. Depanator redă ajuta la gasirea diverselor erori in program in timpul executiei acestuia. Acestea includ, de exemplu: erori logice (o încercare de împărțire la zero), precum și erori asociate cu date de intrare incorecte.

Introducere ………………………………………………………………… .... 2

1 Limbajul și sistemul de programare - concept, esență ……………… .4

2 Clasificarea limbajelor de programare……………………………………… .6

2.1 Limbaje orientate către mașină ………………………………… .... 6

2.1.1 Limbaje mașini ……………………………………………… ... 6

2.1.2 Limbaje de codare simbolică………………………… ... 7

2.1.3 Autocoduri ……………………………………………………… 8

2.1.4 Macro ……………………………………………………… .9

2.2 Limbaje independente de mașină……………………………………… ..9

2.2.1 Limbaje independente de mașină …………………………………… 10

2.2.2 Limbi universale …………………………………………… 10

2.2.3 Limbi conversaționale ……………………………………………… ... 11

2.2.4 Limbi non-procedurale …………………………………………… 12

3 Limbi moderne și sisteme de programare ……………………… 13

3.1 De bază ………………………………………………………………………………… 13

3.2 Pascal …………………………………………………………………… ... 14

3.3 Delphi …………………………………………………………………… ..15

3.4 Fortran …………………………………………………………………… .17

3.5 СС ++ ……………………………………………………………………… ... 18

3.6 Java …………………………………………………………………… ..20

Concluzie ………………………………………………………………… ..22

Lista surselor utilizate .................................................. ................ 23

Introducere

Progresul tehnologiei informatice a determinat procesul de apariție a diferitelor sisteme de semne noi pentru scrierea algoritmilor - limbaje de programare. Sensul apariției unui astfel de limbaj este că un set echipat de formule de calcul pentru informații suplimentare transformă acest set într-un algoritm. Un limbaj de programare servește două scopuri conexe: oferă programatorului aparatul pentru specificarea acțiunilor care trebuie efectuate și modelează conceptele pe care programatorul le folosește atunci când se gândește la ce să facă. Primul obiectiv este răspuns în mod ideal de un limbaj care este atât de „aproape de o mașină” încât toate aspectele de bază ale mașinii pot fi operate ușor și simplu într-un mod destul de evident pentru programator. Cel de-al doilea scop îndeplinește în mod ideal limbajul, care este atât de „apropiat de problema care se rezolvă” încât conceptele soluției sale pot fi exprimate direct și pe scurt. Legătura dintre limbajul în care gândim/programăm și problemele și soluțiile pe care ni le putem imagina în imaginația noastră este foarte strânsă. Din acest motiv, limitarea proprietăților unui limbaj doar la scopul eliminării erorilor programatorului este periculoasă în cel mai bun caz. Ca și în cazul limbilor naturale, există un beneficiu extraordinar de a fi cel puțin bilingv. Limbajul oferă programatorului un set de instrumente conceptuale, dacă acestea nu îndeplinesc sarcina, atunci sunt pur și simplu ignorate. De exemplu, limitările severe ale conceptului de pointer forțează programatorul să folosească vectori și aritmetica întregi pentru a implementa structuri, pointeri și altele asemenea. Un design bun și un design fără erori nu pot fi garantate doar prin mijloace de limbaj. Poate părea surprinzător, dar un anumit computer este capabil să ruleze programe scrise în limbajul propriu al mașinii. Există aproape la fel de multe limbaje de mașină diferite ca și computere, dar toate sunt varietăți ale aceleiași idei; operațiuni simple sunt efectuate cu viteza fulgerului pe numere binare. Calculatoarele personale IBM folosesc limbajul mașină al familiei de microprocesoare 8086. hardware-ul lor se bazează tocmai pe aceste microprocesoare. Este posibil să scrieți programe direct în limbajul mașinii, deși acest lucru este dificil. În zorii computerizării (la începutul anilor 1950), limbajul mașinii era singurul limbaj, pe care o persoană mai mare nu ar fi putut să-l inventeze până atunci. Pentru a salva programatorii de limbajul dur de programare al mașinii, au fost create limbaje de nivel înalt (adică limbaje non-mașină), care au devenit un fel de punte de legătură între limbajul omului și al mașinii computerului. Limbile de nivel înalt funcționează prin programe de traducere care injectează „cod sursă” (un hibrid de cuvinte englezești și expresii matematice pe care le citește o mașină) și, în cele din urmă, forțează computerul să execute instrucțiunile corespunzătoare, care sunt date în limbajul mașinii. Există două tipuri principale de traducători: interpreți, care scanează și verifică codul sursă într-un singur pas, și compilatoare, care scanează codul sursă pentru a produce textul unui program în limbaj mașină, care este apoi executat separat.

1 Limbajul și sistemul de programare - concept, esență

În prezent, există o dezvoltare rapidă a disciplinei științifice numite programare. În același timp, nu numai că apar limbi noi, dar apar idei noi care măresc puterea și eficiența limbilor. Este posibil, fără a intra în detaliile vreunuia dintre limbile existente sau în curs de dezvoltare, să remarcăm următoarea tendință: dezvoltarea limbilor se îndreaptă către o creștere a expresivității textului sursă al programului. Acest lucru ajută la reducerea dimensiunii programului și la creșterea fiabilității acestuia.

Pentru a crește expresivitatea unei limbi, este necesar ca limbajul să conțină mijloace de exprimare a conceptelor abstracte. Acest lucru ajută la înțelesul programelor mari. Prin urmare, suportul pentru abstracții este o necesitate pentru orice limbaj de programare modern. Totodata, baza limbajului (ansamblul posibilitatilor oferite de limbaj, constructii semantice) trebuie sa aiba o cardinalitate minima.

Cele mai generale concepte pe care le operează un programator atunci când folosește un anumit limbaj de programare sunt conceptele de program și mașină virtuală. Programul trebuie să satisfacă cerințele (specificațiile) unui anumit limbaj de programare și servește ca un container pentru stocarea unei secvențe de acțiuni și a unui set de date. Mașina virtuală acționează ca un interpret al conceptelor de bază utilizate în limbajul de programare și este mediul de existență a programului. Toate celelalte abstracții discutate în acest articol sunt grupate în jurul acestor abstracții de bază.

În unele cazuri, puteți considera procesul de programare ca un proces de modelare. Aceasta creează un program model capabil să realizeze comportamentul originalului descris în enunțul problemei. Prin urmare, în viitor, conceptul de model va acționa ca un substitut pentru conceptul de program, iar conceptul de mediu de modelare pentru conceptul de mașină virtuală.

2 Clasificarea limbajelor de programare

2.1 Limbaje orientate pe mașini

Limbile orientate către mașină sunt limbaje, seturi de operatori și mijloace grafice ale cărora depind în principal de caracteristicile computerului (limbaj intern, structura memoriei etc.). Limbajele orientate pe mașină vă permit să utilizați toate capacitățile și caracteristicile limbilor dependente de mașină:

Calitate înaltă a programelor create (compacitate și viteză

execuţie);

Abilitatea de a utiliza resurse hardware specifice;

Predictibilitatea codului obiect și a ordinelor de memorie;

Pentru a scrie programe eficiente, trebuie să cunoașteți sistemul

comenzi și caracteristici ale funcționării acestui computer;

Complexitatea procesului de elaborare a programelor (în special pentru

limbaje mașină și YASK), slab protejate de aspect

Viteză mică de programare;

Imposibilitatea utilizării directe a programelor,

compilate în aceste limbi, pe computere de alte tipuri.

Limbile orientate către mașină sunt subdivizate în clase în funcție de gradul de programare automată.

2.1.1 Limbajul mașinii

După cum am menționat deja, în introducere, un computer separat are propriul limbaj de mașină specific (în continuare ML), este prescris să efectueze operațiunile specificate pe operanzii pe care îi definesc, deci ML este un limbaj de comandă. Cu toate acestea, unele familii de calculatoare (de exemplu, ES EVM, IBM / 370 / și altele) au un singur LM pentru calculatoare cu putere diferită. Comanda oricăruia dintre ele oferă informații despre locația operanzilor și tipul de operație care se efectuează.

În noile modele de computer, există tendința de a crește limbajele interne prin mijloace mașină-hardware pentru a implementa comenzi mai complexe, apropiindu-se în acțiunile lor funcționale de operatorii de limbaje de programare algoritmică.

2.1.2 Limbaje de codare simbolică

Să continuăm povestea despre limbaje de comandă, Limbaje de codare simbolică (în continuare YSC), precum și ML, sunt limbaje de comandă. Cu toate acestea, codurile de operare și adresele din instrucțiunile mașinii, care sunt o secvență de cifre binare (în codul intern) sau octale (deseori utilizate la scrierea programelor), sunt înlocuite în YASK cu simboluri (identificatori), a căror formă de scriere ajută la programator pentru a memora mai ușor conținutul semantic al operației. Acest lucru asigură o reducere semnificativă a numărului de erori în programare.

Utilizarea adreselor simbolice este primul pas către crearea unui YSC. Comenzile computerului conțin adrese simbolice în loc de adrese adevărate (fizice). Pe baza rezultatelor programului compilat, se determină numărul necesar de celule pentru stocarea valorilor intermediare și rezultate inițiale. Atribuirea adreselor, efectuată separat de compilarea programului în adrese simbolice, poate fi efectuată de un programator mai puțin calificat sau de un program special, ceea ce facilitează foarte mult munca programatorului.

2.1.3 Autocoduri

Există, de asemenea, limbi care includ toate capacitățile YSK, prin introducerea extinsă a macrocomenzilor - se numesc Autocodes.

În diferite programe, există câteva secvențe de comenzi destul de des folosite care corespund anumitor proceduri de conversie a informațiilor. Implementarea eficientă a unor astfel de proceduri este asigurată prin proiectarea lor sub formă de macro-uri speciale și includerea acestora din urmă în limbajul de programare de care dispune programatorul. Macro-urile sunt traduse în instrucțiuni ale mașinii în două moduri - aranjare și generare. Sistemul de punere în scenă conține „schelete” - o serie de comenzi care implementează funcția necesară, indicată printr-o macro. Macro-urile asigură transferul parametrilor actuali, care sunt inserați în „nucleul” programului în timpul traducerii, transformându-l într-un adevărat program de mașină.

Într-un sistem cu generare, există programe speciale care analizează macro-ul, care determină ce funcție trebuie îndeplinită și formează secvența necesară de comenzi care implementează această funcție.

Ambele sisteme folosesc traducători YSC și un set de macrocomenzi, care sunt, de asemenea, operatori de codificare automată.

Autocodurile dezvoltate se numesc Assembleri. Programele de servicii etc., de regulă, sunt scrise în limbi precum Assembler. Vedeți mai jos pentru mai multe informații despre limbajul de asamblare.

2.1.4 Macro

Un limbaj care este un mijloc de înlocuire a unei secvențe de caractere care descriu performanța acțiunilor necesare computerului cu o formă mai concisă se numește Macro (mijloace de înlocuire).

Practic, Macro are scopul de a scurta înregistrarea programului original. Componenta software care permite macrocomenzilor să funcționeze se numește procesor macro. Macrodefinirea și textul sursă sunt trimise la macroprocesor. Reacția macroprocesorului la emiterea de apel a textului de ieșire.

O macrocomandă poate funcționa în același mod, atât cu programe, cât și cu date.

2.2 Mașină - limbaje independente

Mașină - limbajele independente sunt un mijloc de descriere a algoritmilor de rezolvare a problemelor și a informațiilor care urmează să fie procesate. Sunt convenabile de utilizat pentru o gamă largă de utilizatori și nu necesită ca aceștia să cunoască specificul organizării funcționării computerelor și aeronavelor.

Astfel de limbaje sunt numite limbaje de programare de nivel înalt. Programele scrise în astfel de limbi sunt secvențe de declarații structurate conform regulilor limbajului (sarcini, segmente, blocuri etc.). Operatorii de limbaj descriu acțiunile pe care sistemul ar trebui să le efectueze după ce programul este tradus în LM.

Astfel, secvențele de comenzi (proceduri, subrutine), folosite adesea în programele mașinii, sunt reprezentate în limbaje de nivel înalt prin instrucțiuni separate. Programatorul a avut ocazia să nu descrie în detaliu procesul de calcul la nivelul instrucțiunilor mașinii, ci să se concentreze pe principalele caracteristici ale algoritmului.

2.2.1 Limbi orientate spre probleme

Odată cu extinderea domeniilor de aplicare a tehnologiei informatice, a devenit necesară formalizarea prezentării formulării și soluționării unor noi clase de probleme. A fost necesar să se creeze astfel de limbaje de programare care, folosind notația și terminologia în acest domeniu, să permită descrierea algoritmilor necesari pentru rezolvarea problemelor puse, au devenit limbaje orientate către probleme. Aceste limbaje, limbaje axate pe rezolvarea unor probleme specifice, ar trebui să ofere programatorului mijloacele de a formula problema într-un mod scurt și clar și de a obține rezultatele în forma necesară.

Există o mulțime de limbi problematice, de exemplu:

Fortran, Algol - limbaje create pentru rezolvarea problemelor matematice;

Simula, Slang - pentru modelare;

Lisp, Snobol - pentru lucrul cu structuri de liste.

2.2.2 Limbi universale

Au fost create limbi universale pentru o gamă largă de sarcini: comerciale, științifice, de modelare etc. Primul limbaj universal a fost dezvoltat de IBM, care a devenit în secvența limbilor Pl / 1. Al doilea cel mai puternic limbaj universal se numește Algol-68. Vă permite să lucrați cu caractere, cifre, numere fixe și în virgulă mobilă. Pl/1 dispune de un sistem dezvoltat de operatori pentru gestionarea formatelor, pentru lucrul cu domenii de lungime variabila, cu date organizate in structuri complexe, si pentru utilizarea eficienta a canalelor de comunicare. Limbajul ține cont de capabilitățile de întrerupere incluse în multe mașini și are operatori corespunzători. Este asigurată posibilitatea executării paralele a secțiunilor de program.

Programele din PL / 1 sunt compilate folosind rutine automate. Limba folosește multe proprietăți ale lui Fortran, Algol, Kobol. Cu toate acestea, permite nu numai alocarea memoriei dinamice, ci și gestionate și statistice.

2.2.3 Limbi conversaționale

Apariția de noi capacități tehnice a stabilit sarcina programatorilor de sistem - să creeze instrumente software care să asigure interacțiunea operațională a unei persoane cu un computer, acestea au fost numite limbaje de dialog.

Aceste lucrări au fost efectuate în două direcții. Au fost create limbaje de control speciale pentru a oferi un impact operațional asupra trecerii sarcinilor, care au fost compilate în orice limbaj nedezvoltat anterior (neinteractiv). Au fost dezvoltate și limbaje care, pe lângă obiectivele de control, ar oferi o descriere a algoritmilor pentru rezolvarea problemelor.

Necesitatea de a asigura interacțiunea promptă cu utilizatorul a cerut ca o copie a programului original să fie salvată în memoria computerului chiar și după primirea programului obiect în coduri de mașină. Atunci când se efectuează modificări la program folosind limbajul de dialog, sistemul de programare folosind tabele speciale stabilește relația dintre structurile programelor sursă și obiect. Acest lucru permite efectuarea modificărilor editoriale necesare în programul obiect.

Un exemplu de limbi conversaționale este BASIC.

BASIC folosește notații similare expresiilor matematice comune. Mulți operatori sunt versiuni simplificate ale operatorilor Fortran. Prin urmare, acest limbaj vă permite să rezolvați o gamă destul de largă de probleme.

2.2.4 Limbi non-procedurale

Limbile non-procedurale alcătuiesc un grup de limbi care descriu organizarea datelor prelucrate prin algoritmi fixați (limbaje tabulare și generatoare de rapoarte) și limbaje pentru comunicarea cu sistemele de operare.

Permițând să descrie în mod clar atât sarcina, cât și acțiunile necesare pentru a o rezolva, tabelele de decizie fac posibilă, într-o formă vizuală, să se determine ce condiții trebuie îndeplinite înainte de a trece la orice acțiune. Un tabel de decizie care descrie o anumită situație conține toate diagramele bloc posibile de implementare a algoritmilor de decizie.

Metodele tabelare sunt ușor de stăpânit de specialiștii din orice profesie.

Programele scrise într-un limbaj tabelar descriu convenabil situații complexe care apar în analiza sistemului.

3 Limbi moderne și sisteme de programare

3.1 De bază

La fel ca faimoșii burgeri, baseball și baschet, BASIC este un produs New England. După cum am spus, a fost creat în 1964 ca limbaj pentru predarea programarii. BASIC este un acronim comun pentru Beginner's All-purpose Symbolic Insruction Code (BASIC).

Curând, atât cursanții, cât și autorii programelor au descoperit că BASIC poate face aproape tot ceea ce face plictisitorul stângaci Fortran. Și din moment ce BASIC era ușor de învățat și ușor de lucrat, programele din acesta erau de obicei scrise mai repede decât în ​​Fortran. BASIC era disponibil și pe computerele personale, de obicei încorporate în ROM. Acesta este modul în care BASIC a câștigat popularitate. Interesant, la 20 de ani de la inventarea BASIC, este încă cel mai ușor de învățat din zeci de limbaje de programare de uz general, disponibile pasionaților de programare. În plus, face o treabă grozavă.

În ciuda afirmațiilor snobilor - susținători ai limbajelor C și Pascal, BASIC este considerat un limbaj de afaceri dotat cu instrumente puternice pentru rezolvarea problemelor specifice pe care majoritatea utilizatorilor le rezolvă de obicei folosind computere mici, și anume: lucrul cu fișiere și afișarea de text și imagini grafice pe ecranul de afișare.

În ciuda unor deficiențe ale lui Basic, nimeni nu va nega că Kemeny și Kurtz și-au atins obiectivul principal: să facă programarea mai accesibilă pentru mai mulți oameni.

Din punct de vedere istoric, BASIC a fost de obicei implementat ca interpret (izomerul familiar este interpretativ BASIC însuși). Motivele trecerii de la nivelul amator la cel profesional sunt numeroase extensii ale versiunii clasice a limbajului: capacitatea de a dezactiva numerotarea liniilor, constructe de programe structurate pe mai multe linii, structuri de tip „înregistrare”, subrutine denumite cu parametri și variabile locale.

Mai mult, odată cu apariția traducătorului QuickBasic de la Microsoft, dezvoltatorii au putut să construiască aplicații în BASIC din module compilate separat, dintre care unele pot fi scrise în alte limbi. Acum, ca și în cazul altor limbaje de programare de top, dezvoltatorul are posibilitatea de a alege dintre mai multe biblioteci de subrutine industriale care oferă soluții ieșite din cutie pentru problemele comune de programare.

3.2 Pascal

Limbajul Pascal a fost creat ca limbaj de programare educațional în 1968-1971. Niklaus Wirth. În prezent, această limbă are un domeniu de aplicare mai larg decât era preconizat când a fost creat. Scopul lucrării lui Wirth a fost de a crea un limbaj care:

Ar fi construit pe un număr mic de concepte de bază;

Ar avea o sintaxă simplă;

Ar permite ca programele să fie traduse în codul mașinii cu un simplu compilator;

Toate aceste calități au făcut ca limba să fie foarte populară și convenabilă pentru utilizare în școală.

Pascal este un limbaj de programare profesional numit după matematicianul și filozoful francez Blaise Pascal (1623-1662) și dezvoltat în 1968-1971. Nikolaus Wirth, pentru a preda elevilor metode de dezvoltare de software, cum ar fi programarea de sus în jos, programarea structurată etc. Virtu nu-i plăcea niciunul dintre limbajele care existau la acea vreme, iar în 1968 a început să-și dezvolte propriile limbi. Prima versiune a limbajului a fost creată pentru computerul CDC 6000. Datorită clarității, consistenței și altor caracteristici, Pascal și-a ocupat de multă vreme nișa, fiind un limbaj excelent pentru predarea programarii. Pascal a fost, de asemenea, folosit pentru a dezvolta aplicații software serioase. Au glumit că Wirth a dezvoltat o jucărie, dar mulți au luat-o prea în serios

Ulterior, au apărut diverse versiuni ale limbii și extensiile sale. Cea mai cunoscută expansiune a fost pachetul Turbo Pascal de la Borland, care a apărut în 1983 și a devenit imediat un eveniment în lumea tehnologiei informatice.

Turbo Pascal este un sistem de programare conceput pentru a îmbunătăți calitatea și viteza dezvoltării software (anii 80). Cuvântul Turbo din numele sistemului de programare este o reflectare a mărcii înregistrate a companiei de dezvoltare Borland International (SUA).

Sistemul de programare Turbo Pascal se numește mediu de programare integrat (integrare - unificarea elementelor individuale într-un singur întreg), deoarece include un editor, un compilator, un depanator și are capabilități de servicii.

Prima mențiune despre acesta a fost conținută într-o reclamă publicată în revista Byte, iar pachetul în sine este destinat sistemului de operare CP/M. La începutul anului 1984, a fost portat în mediul MS-DOS și a câștigat o popularitate imensă. De atunci au apărut mai multe versiuni de Turbo Pascal, ultima fiind a șaptea.

3.3 Delphi

Apariția lui Delphi nu a putut trece neobservată în rândul numeroșilor utilizatori de computere. Evaluările experților care explorează posibilitățile acestui nou produs Borland sunt de obicei tentate de entuziasm. Principalul avantaj al Delphi este că aici sunt implementate idei de programare vizuală. Mediul de programare vizuală transformă procesul de creare a unui program într-o construcție plăcută și ușor de înțeles a unei aplicații dintr-un set mare de primitive grafice și structurale.

Sistemul Delphi vă permite să rezolvați multe probleme, în special:

Creați aplicații Windows complete cu o mare varietate de scopuri: de la pur computațional și logic, la grafic și multimedia.

Creați rapid (chiar și pentru programatorii începători) o interfață de fereastră cu aspect profesional pentru orice aplicație.

Creați sisteme puternice pentru lucrul cu baze de date locale și la distanță.

Creați sisteme de ajutor (fișiere .hlp) pentru aplicațiile dvs. și multe altele. dr.

Delphi este un sistem cu creștere extrem de rapidă. Prima versiune, Delphi 1.0, a fost lansată în februarie 1995, iar apoi versiuni noi au fost lansate anual.

Cele mai multe versiuni de Delphi sunt disponibile în mai multe versiuni: Standard - standard, Profesional - profesional, Client/Server - client/server, Enterprise - dezvoltarea bazelor de date pe domenii. Variantele diferă în principal în diferite niveluri de acces la sistemele de gestionare a bazelor de date. Ultimele opțiuni sunt Client/Server și Enterprise, care sunt cele mai puternice în acest sens.

Delphi este o combinație de mai multe tehnologii critice:

Compilator de înaltă performanță la codul mașinii.

Model de componente orientate pe obiecte.

Construirea vizuală (și, prin urmare, de mare viteză) a aplicațiilor din prototipuri de software.

Instrumente scalabile pentru construirea bazelor de date.

3.4 Fortran

Unul dintre primele și cele mai de succes compilatoare a fost limbajul Fortran, dezvoltat de IBM. Profesorul J. Books si un grup de specialisti americani in domeniul programarii au publicat in 1954 primul mesaj despre limbaj. Literal, numele limbajului FORmulaeTRANslation este transformarea formulelor.

Printre motivele longevității Fortranului (și este una dintre cele mai răspândite limbi din lume), se poate remarca structura simplă atât a Fortranului însuși, cât și a traducătorilor destinați acestuia. Un program Fortran este scris într-o succesiune de propoziții sau operatori (o descriere a unei anumite transformări a informațiilor) și este întocmit după anumite standarde. Aceste standarde impun restricții, în special, cu privire la forma de înregistrare și aranjarea părților operatorului în linia formularului pentru operatori de înregistrare. Un program Fortran este unul sau mai multe segmente (subrutine) de instrucțiuni. Segmentul care controlează funcționarea întregului program în ansamblu se numește program principal.

Fortran a fost conceput pentru a fi utilizat în calculul științific și de inginerie. Cu toate acestea, acest limbaj poate descrie cu ușurință sarcini cu logică ramificată (modelarea proceselor de producție, rezolvarea situațiilor de joc etc.), unele sarcini economice, și mai ales sarcini de editare (întocmirea de tabele, rezumate, enunțuri etc.).

O modificare a limbajului Fortran, care a apărut în 1958, a fost numită Fortran II și conținea conceptul de subrutină și variabile partajate pentru a asigura comunicarea între segmente.

Până în 1962, aparține apariția limbii cunoscute sub numele de Fortran IV și care a devenit cea mai comună în prezent. În același timp, a început lucrările comisiei la Asociația Americană de Standarde (ASA), care a dezvoltat până în 1966 două standarde - limbile Fortran și FORTRAN de bază (principal) (BasicFORTRAN). Aceste limbi corespund aproximativ modificărilor IV și II, dar Fortran de bază este un subset al Fortran, în timp ce Fortran II nu este așa pentru Fortran IV. Limba Fortran continuă să evolueze și să se îmbunătățească, influențând crearea și dezvoltarea altor limbi. De exemplu, Fortran stă la baza Basic, un limbaj conversațional foarte popular pentru rezolvarea problemelor mici, un limbaj excelent pentru predarea abilităților de utilizare a limbajelor algoritmice în practica de programare. Acest limbaj - Beginner’s All –purposeSymbolicInstructionCode - a fost dezvoltat de un grup de angajați ai Centrului de calcul al Colegiului Durmouth, New Hampshire, creat în 19.... ... Dar aceasta este deja următoarea limbă.

3.5 C și C++

Limbajul „C” este un limbaj de programare universal. Este strâns legat de sistemul de operare „UNIX”, deoarece a fost dezvoltat pe acel sistem și întrucât „UNIX” și software-ul său sunt scrise în „C”. Limbajul în sine, însă, nu este asociat cu niciun sistem de operare sau mașină unică; și, deși este numit un limbaj de programare a sistemelor, deoarece este convenabil pentru scrierea sistemelor de operare, a fost folosit cu același succes în scrierea de programe de calcul mari, programe de procesare de text și baze de date.

Limba „C” este un limbaj relativ „de nivel scăzut”. Nu există nimic ofensator într-o astfel de descriere; înseamnă pur și simplu că „C” se ocupă de obiecte de același fel ca majoritatea computerelor, și anume simboluri, numere și adrese. Ele pot fi combinate și trimise prin operațiunile aritmetice și logice obișnuite efectuate de computere reale.

Nu există operații în C care să se ocupe direct de obiecte compuse, cum ar fi șiruri de caractere, seturi, liste sau matrice ca un întreg. Aici, de exemplu, nu există un analog al operațiilor PL / 1 care operează pe matrice și șiruri întregi. Limbajul nu oferă alte posibilități de alocare a memoriei în afară de definirea statică și mecanismul de stive oferit de variabilele locale ale funcțiilor; nu există „heap” (HEAP) sau „colectare de gunoi”, așa cum este prevăzut în ALGOL-68. În cele din urmă, „C” în sine nu oferă nicio capacitate I/O: nu există instrucțiuni READ sau WRITE și nici metode de acces la fișiere încorporate. Toate aceste mecanisme de nivel înalt trebuie să fie susținute de funcții care pot fi apelate în mod explicit.

De asemenea, C oferă doar structuri simple, secvenţiale de flux: verificări, bucle, grupări şi subrutine, nu multiprogramare, operaţii paralele, sincronizare sau coroutine. În timp ce lipsa unora dintre aceste caracteristici poate părea o inferioritate frustrantă („deci trebuie să apelez la o funcție pentru a compara două șiruri de caractere?!”), menținerea limbajului modest are beneficii reale. Deoarece „C” este relativ mic, nu ocupă mult spațiu pentru al descrie și poate fi învățat rapid. Un compilator „C” poate fi simplu și compact. În plus, compilatoarele sunt ușor de scris; folosind tehnologia modernă, ne putem aștepta să scrieți un compilator pentru un computer nou în câteva luni și, în același timp, se dovedește că 80% din programul noului compilator va fi comun cu programul pentru compilatoarele existente. Acest lucru oferă un grad ridicat de portabilitate a limbii. Deoarece tipurile de date și structurile de control găsite în „C” sunt suportate direct de majoritatea computerelor existente, biblioteca necesară la rularea programelor în sandbox este foarte mică. Pe PDP-11, de exemplu, conține doar programe pentru multiplicarea și împărțirea pe 32 de biți și pentru executarea programelor de intrare și ieșire a secvenței. Desigur, fiecare implementare

Oferă o bibliotecă cuprinzătoare și consecventă de funcții pentru efectuarea I/O, manipularea șirurilor de caractere și alocarea memoriei, dar deoarece sunt accesate doar în mod explicit, pot fi evitate dacă este necesar; aceste funcții pot fi scrise compact în „C” însuși.

3.6 Java

Astăzi, World Wide Web este un mediu de schimb de informații pentru milioane de oameni. Ei găzduiesc text, video, sunet și informații și, din ce în ce mai mult, își complică paginile făcându-le interactive pe web. JavaScript este un nou limbaj de programare folosit ca parte a paginilor HTML pentru a crește funcționalitatea și experiența utilizatorului. A fost dezvoltat de Netscape în colaborare cu Sun Microsystems și se bazează pe limbajul Java al Sun. JavaScript vă permite să faceți lucruri pe o pagină Web care nu pot fi făcute cu etichete HTML standard. Scripturile sunt executate ca urmare a evenimentelor declanșate de utilizator. Crearea Documentele web care includ programe JavaScript necesită un editor de text și un browser adecvat. Unele vizualizatoare includ editori încorporați, deci nu este nevoie de un editor extern.

Deși nu are legătură directă cu limbajul Java, JavaScript poate accesa proprietăți și metode externe ale applet-urilor Java încorporate într-o pagină HTML. Diferența se rezumă la faptul că applet-urile există în afara browserului, în timp ce programele JavaScript pot rula doar în interiorul browserului. La prima vedere, se pare că informațiile JavaScript sunt ușor de găsit. La început, ai impresia că îl poți vedea peste tot: pe serverul Natscape, sub formă de ghiduri electronice și exemple, în multe alte locuri. Cu toate acestea, este dificil să găsești informații despre obiecte, operatori, culori și orice altceva într-o singură sursă, astfel încât să fie mereu la îndemână, este dificil.

Concluzie

Invenția unui limbaj de programare de nivel înalt ne-a permis să comunicăm cu o mașină, să o înțelegem. Știința programării s-a dezvoltat de pe vremea când au apărut limbajele de programare și, la urma urmei, un limbaj de programare de cel mai înalt nivel, aparent, este încă un copil. Dar dacă acordăm atenție ratelor de creștere și dezvoltării celor mai noi tehnologii în domeniul programării, atunci putem presupune că, în viitorul apropiat, cunoștințele umane în acest domeniu vor ajuta la producerea de limbi care pot primi, procesa și transmite informații sub formă de gânduri, cuvinte, sunet sau gesturi. Aș dori să numesc această creație a viitorului computerizat: „limbaje de programare de „cel mai înalt „nivel”. Poate că conceptul de rezolvare a acestei probleme este simplu, iar viitorul apropiat al acestui proiect nu este departe.

Reflectând la aceasta, vreau să cred în progresul științei și tehnologiei, în viitorul extrem de computerizat al omenirii, ca singura creatură de pe planetă, chiar dacă nu folosește o limbă vorbită specifică, dar este capabilă să progreseze atât de repede. și să-și dezvolte intelectul pentru a trece de la multilingv, sistemul de înțelegere generală nu va trebui să aștepte mult.

Lista surselor utilizate

1) Rodley John Crearea applet-urilor Java - The Coriolis Group, Inc., 1996, Editura NIPF „DiaSoft Ltd.”, 1996

2) Efergan Michael Java: A Handbook - QUE Corporation, 1997, Peter Com Publishing, 1998

3) Davidov Mihail Izgiyaevici; Antonov Vadim Gennadievich „LEX - generator de programe de analiză lexicală” MOSCVA - 1985;

4) „BASIC Face-off”, Justin J. Crom, PC Tech Journal, septembrie 1987, 136 Traducere: V.N. Lopukhov. (Integrator Promt98);

5) Kernighan B.V., Ritchie D., Fewer A. „Limbajul de programare C”. Traducere rusă: Moscova: Finanțe și Statistică. 1985;

6) Zolotarev V.V., „Fundamentals of Automation” Part 1, 1978;

7) Vaulin A.S., „Limbaje de programare” cartea 5, 1993;

8) Terrence P. „Limbaje de programare: proiectare și implementare”, 1979;

9) Kasvands E.G „Introducere în programare în limbajul Assembler” partea 1;

10) Khrotko G., „Limbaje de programare de înalt nivel”, 1982;

11) Malyutin E.A., Malyutina L.V., „Limbaje de programare”, 1982;

12) Ushkova V. „Noi limbaje de programare și tendințe ale dezvoltării lor”, 1982;

13) Huvenen E., Seppenen J., „The World of Lisp” v.1, 1990;

14) Young S., „Limbi algoritmice ale timpului real”, 1985.

Top articole similare