Limbaje de programare. Sisteme de programare

By Alexandru Corbaru

Limbaje de programare. Sisteme de programare

Deoarece dezvoltarea tehnologiei computerului nu stă pe loc, metodele și limbajele de programare sunt în mod constant îmbunătățite. Luați în considerare ce limbi există în domeniul computerelor moderne și clasificarea lor.

Informații generale

Lista limbajelor de programare este atât de largă și de variată, încât stabilirea ei completă este o sarcină aproape imposibilă. Dintre toate limbile, se pot distinge trei subgrupuri principale:

mașină (limbaje de programare de nivel scăzut);

orientat spre mașină (asamblori);

independent de mașină (nivel înalt);

Printre dezvoltatorii de software modern, următoarele limbaje principale de programare sunt cele mai populare. Lista este afișată în ordinea descrescătoare a popularității:

Java. HTML. Visual Basic. Delphi.

Această listă de limbaje de programare este departe de a fi completă, dar acestea sunt cele mai populare limbaje pe care un programator ar trebui să le cunoască atunci când aplică pentru un loc de muncă. Toate sunt limbaje de programare la nivel înalt.

Bazele programării

Limbajele de programare de nivel scăzut sunt limbaje care necesită luarea în considerare a tipului și capabilităților procesorului. Operatorii și metodele de operare ale acestor limbaje de programare sunt suficient de apropiate de codul mașinii, necesită cunoașterea memoriei unui computer personal și a modului în care procesorul îl accesează.

Este dificil de numit diferitele limbaje de programare de nivel scăzut. Lista va fi în continuare redusă la o limbă dominantă - asamblarea. Deoarece vă permite să compuneți coduri de programe în notație apropiată de codul mașinii, asamblatorul este utilizat exclusiv la scrierea software-ului de sistem, cum ar fi sistemele de operare, driverele de dispozitiv și la programarea codurilor de control ale microcircuitelor.

Dezavantajul unor astfel de limbaje de programare este că programele din ele sunt scrise pentru a efectua sarcini specifice pe un anumit dispozitiv și executarea lor este imposibilă dacă este transferată către un alt procesor.

Dezvoltarea aplicației

Lista limbajelor de programare pentru crearea aplicațiilor personalizate, precum și pentru dezvoltarea și implementarea software-ului personalizat are mii de poziții. După cum ați înțeles, o astfel de varietate se datorează faptului că un anumit limbaj este potrivit pentru rezolvarea anumitor probleme.

În ciuda faptului că aceste limbaje de programare sunt definite într-un grup separat, execuția lor are loc în codul mașinii. Pentru a executa programul terminat linie cu linie și a-l traduce, se folosesc programe speciale - interpreți. Dacă traducerea unui cod de program dintr-o limbă în alta se efectuează fără executarea comenzilor, atunci acest lucru se face de către programele de compilare. În general, programele concepute pentru a traduce programe scrise dintr-un limbaj de programare formal în altul se numesc traducători.

Să aruncăm o privire mai atentă asupra limbajelor de programare la nivel înalt. Nu vom face o listă, vom scrie doar câteva detalii despre fiecare dintre cele mai populare.

SQL

Un limbaj de programare specializat este destinat în primul rând pentru lucrul cu sistemele de gestionare a bazelor de date și programarea acestora. SQL se traduce prin „specializat. Deoarece piața bazelor de date a crescut exponențial în ultimele decenii, popularitatea acestui limbaj nu ar trebui să fie o surpriză”.

Există diverse opinii cu privire la viitorul acestui limbaj. Se crede fără echivoc că tehnologia de creare a bazelor de date relaționale a fost la cel mai bun nivel, dar timpul său se termină. Necesitatea dezvoltării în legătură cu creșterea volumelor de date prelucrate îi conduce pe specialiști la ideea că, în viitor, omenirea are nevoie pur și simplu de o tranziție de la tehnologiile relaționale la cele post-relaționale, dar luând în considerare păstrarea compatibilității cu băncile de date existente.

Javascript

Este pe bună dreptate pe locul doi printre limbajele de programare la nivel înalt. Ușor de învățat, ușor de utilizat. Adaptabilitatea crescută la programare în comparație cu progenitorul duce la faptul că milioane de oameni din întreaga lume lucrează cu acest limbaj. Un limbaj orientat pe obiecte bazat pe C ++, adaptat la crearea de programe și aplicații capabile să proceseze fluxuri uriașe de informații în medii specializate și luând în considerare specificul mediului pentru implementarea produselor gata făcute

Tehnologia Java este fundamentul care permite o creștere nelimitată a infrastructurii întreprinderilor și companiilor, capabile să conecteze sisteme dintr-o mare varietate de calibre, de la conectarea la o rețea de telefonie prin Wi-Fi la supercomputere.

XML

Descendent al HTML, această tehnologie este un limbaj de markup extensibil. Este adaptat pentru interpretarea documentelor. Cele mai complexe transformări și modificări ale documentelor sunt efectuate asupra acestuia. XML este utilizat pentru a transfera și stoca temporar date atunci când lucrați cu diferite baze de date relaționale pe Internet.

XML a ajuns deja la punctul în care poate pretinde că este tehnologia fundamentală pentru construirea rețelelor corporative.

Programăm în limba rusă

Cele mai populare limbaje de programare folosesc vocabularul în limba engleză. Cu toate acestea, pe lângă acestea, există și limbaje de programare rusești. Lista în limba rusă este mică, iar subiectul în care sunt utilizate este foarte specializat. Aici sunt cateva exemple.

1C: Enterprise. Un întreg sistem conceput pentru a gestiona o organizație în toate domeniile de activitate. Adesea în reclame pentru căutarea angajaților, puteți găsi „Programator 1C”.

Verb. Analog al lui Pascal de limbă engleză.

Robik. Un limbaj de programare specializat conceput pentru a învăța copiii noțiunile de bază ale programării.

Spadă. Un limbaj bazat pe proceduri.

După cum puteți vedea, lista limbajelor de programare este atât de largă și variată încât este imposibil să o acoperiți cu orice clasificare și listă. Dacă decideți să începeți programarea la nivel amator sau profesional, atunci amintiți-vă că un programator este o profesie creativă care necesită nu numai cunoștințe, ci și imaginație, imaginație, intuiție și chiar puțin noroc.

Numele parametrului Sens Subiectul articolului: Limbaje și sisteme de programare Rubrică (categorie tematică) Informatică

Program- ϶ᴛᴏ o secvență ordonată logic de comenzi necesare pentru a controla un computer (pentru a efectua operațiuni specifice), în acest sens, programarea se reduce la crearea unei secvențe de comenzi, ceea ce este extrem de important pentru rezolvarea unei sarcini specifice.

Procesor computer- circuit circuit integrat mare. El primește toate comenzile și datele sub formă de semnale electrice, care pot fi reprezentate ca un set de zerouri și unii. Din acest motiv, în realitate, programul cu care funcționează procesorul este o secvență de numere binare numită Codul mașinii... Este foarte dificil să scrieți un program în codul mașinii de unul singur, iar această complexitate crește dramatic odată cu creșterea dimensiunii programului și a complexității soluționării problemei solicitate. Din acest motiv, astăzi aproape toate programele sunt create folosind limbaje de programare.

În acest caz, folosind un limbaj de programare, nu se creează un program finalizat, ci doar textul acestuia ( sursă) descrierea algoritmului dezvoltat anterior. Pentru a obține un program de lucru, aveți nevoie de acest text folosind aplicații speciale de utilități numite traducători, fie tradus în codul mașinii, fie executat.

Există trei tipuri de traducători: compilatori, interpreți și asamblatori.

Compilatoare procesează complet întregul cod sursă: îl scanează în căutarea erorilor de sintaxă (uneori de mai multe ori), efectuează o anumită analiză semantică și apoi traduc automat (traduc) în limbajul mașinii - generează cod mașină.

Interpret preia următorul operator al limbajului codului sursă al programului, analizează structura acestuia și apoi execută imediat comanda tradusă. Numai după ce declarația curentă a fost executată cu succes, interpretul va trece la următoarea, în plus, dacă aceeași instrucțiune trebuie executată în program de mai multe ori, interpretul o va executa de fiecare dată ca și când ar fi întâlnit-o pentru prima data. Aceasta nu creează un fișier executabil. Interpretorii sunt mai ușor de dezvoltat decât compilatoarele, dar programele interpretate tind să funcționeze mai lent decât cele compilate.

Asamblatori sunt concepute pentru a traduce un program scris în limbaj de asamblare în codul mașinii.

Limbaje de programare- limbaje artificiale. Ele diferă de cele naturale printr-un număr limitat de „cuvinte” și reguli foarte stricte pentru scrierea comenzilor (operatori). Formularitatea totală a acestor cerințe sintaxă limbaj de programare și sens fiecare comandă și alte construcții de limbaj - sale semantică.Încălcarea formularului de înregistrare a programului duce la faptul că traducătorul nu poate înțelege scopul operatorului și emite un mesaj despre eroare de sintaxă... Scrisă corect, dar nu corespunde algoritmului, utilizarea comenzilor de limbaj duce la erori semantice, numite și erori logice sau erori de execuție.

Procesul de căutare a erorilor într-un program se numește de obicei testare, proces de eliminare a erorilor - depanare.

Sistem de programare

Crearea unui instrument software complex se realizează într-un mediu de inginerie software. Conform GOST R ISO / IEC 14764-2002, este „un set de instrumente automate, software și hardware și mijloace tehnice necesare pentru realizarea domeniului de lucru în ingineria software”. Instrumentele automate includ, dar nu se limitează la acestea, compilatoare, linkere ale sistemului de operare bootabile, depanatoare, simulatoare, instrumente de documentare și sisteme de gestionare a bazelor de date.

Sistemul de programare eliberează utilizatorul problemei sau programatorul de aplicații de nevoia de a scrie programe pentru rezolvarea problemelor lor într-un limbaj de instrucțiuni mașină care este incomod pentru el și le oferă posibilitatea de a utiliza limbaje speciale de un nivel superior. Pentru fiecare dintre aceste limbaje, numite limbaje de intrare sau sursă, sistemul de programare are un program care traduce (traduce) automat textele de program din limbajul de intrare în limbajul mașinii. De obicei, un sistem de programare conține descrieri ale limbajelor de programare utilizate, programe de traducere din aceste limbaje, precum și o bibliotecă dezvoltată de subrutine standard. Este important să se facă distincția între limbajul de programare și implementarea limbajului.

Limba Este un set de reguli care determină sistemul de înregistrări care alcătuiesc programul, sintaxa și semantica structurilor gramaticale utilizate.

Implementarea limbajului Este un program de sistem care traduce (convertește) înregistrările lingvistice de nivel înalt într-o secvență de instrucțiuni ale mașinii.

Conform setului de limbaje de intrare, se poate distinge între sistemele de programare unice și cele multilingve. O caracteristică distinctivă a sistemelor multilingve este că părțile individuale ale programului pot fi compuse în diferite limbi și cu ajutorul programelor speciale de procesare pot fi combinate într-un program gata de execuție pe computer.

Pentru a construi limbaje de programare, un set de simboluri și reguli general acceptate este folosit pentru a descrie algoritmii problemelor rezolvate și pentru a interpreta fără ambiguitate semnificația ortografiei create. Principala tendință în dezvoltarea limbajelor de programare este de a crește nivelul lor semantic pentru a facilita dezvoltarea programelor și a crește productivitatea compilatoarelor lor.

Prin structură, nivel de formalizare a limbajului de intrare și scop, se disting sistemele de programare orientat spre mașinăși independent de mașină.

Sisteme orientate spre mașină programarea are un limbaj de intrare, seturi de operatori și mijloace grafice care depind în esență de caracteristicile computerului (limbaj intern, structură de memorie etc.). Sistemele orientate spre mașină vă permit să utilizați toate capacitățile și caracteristicile limbajelor dependente de mașină:

calitate ridicată a programelor create;

calitate ridicată a programelor create;

capacitatea de a utiliza resurse hardware specifice;

capacitatea de a utiliza resurse hardware specifice;

predictibilitatea codului obiectului și a comenzilor de memorie;

predictibilitatea codului obiectului și a comenzilor de memorie;

pentru a compune programe eficiente, este necesar să cunoașteți sistemul de comandă și particularitățile funcționării acestui computer;

pentru a compune programe eficiente, este necesar să cunoașteți sistemul de comandă și particularitățile funcționării acestui computer;

laboriositatea procesului de compilare a programelor (în special în limbaje de mașini și YSK), slab protejat de apariția erorilor;

laboriositatea procesului de compilare a programelor (în special în limbaje de mașini și YSK), slab protejat de apariția erorilor;

viteză redusă de programare;

viteză redusă de programare;

imposibilitatea utilizării directe a programelor scrise în aceste limbi pe computere de alte tipuri.

Sistemele orientate către mașini sunt împărțite în clase în funcție de gradul de programare automată:

1. Limbajul mașinii... În astfel de sisteme de programare, un computer separat are propriul limbaj de mașină specific (în continuare LM), este prescris să efectueze operații specificate pe operanzii pe care îi definesc, prin urmare LM este unul de comandă. Cu toate acestea, unele familii de computere (de exemplu, ES EVM, IBM / 370 / etc.) au un singur LM pentru calculatoare cu putere diferită.

Comanda oricăruia dintre ei oferă informații despre locația operanzilor și tipul de operație care se efectuează. În noile modele de calculatoare, există tendința de a crește limbajele interne prin mijloace mașină-hardware pentru a implementa comenzi mai complexe, abordând în acțiunile lor funcționale operatorii limbajelor de programare algoritmică.

2. Sistem de codificare simbolică... Aceste sisteme folosesc limbaje de codificare simbolică (în continuare YSC), care, la fel ca LM, 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 (utilizate adesea 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. Aceasta oferă 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.

3. Autocoduri... Există sisteme de programare care utilizează limbaje care includ toate capacitățile YSC, prin introducerea extinsă a macro-urilor - acestea se numesc coduri automate. În diferite programe, există unele secvențe de comandă destul de des utilizate care corespund anumitor proceduri de conversie a informațiilor. Implementarea eficientă a unor astfel de proceduri este asigurată de proiectarea lor sub formă de macro-uri speciale și includerea acestora din urmă în limbajul de programare disponibil programatorului. Macrocomenzile sunt traduse în instrucțiuni ale mașinii în două moduri - plasarea și generarea. Sistemul de etapizare conține „schelete” - o serie de comenzi care implementează funcția necesară, indicată printr-o macro. Macrocomenzile asigură transferul parametrilor reali, care sunt introduși în „nucleul” programului în timpul traducerii, transformându-l într-un program mașină real. Î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 autocodare. Autocodurile dezvoltate se numesc Assemblers. Programele de servicii etc., de regulă, sunt scrise în limbi precum Assembler.

4. Macro... În astfel de sisteme, un limbaj care este un mijloc de înlocuire a unei secvențe de caractere care descrie performanța acțiunilor computerizate necesare cu o formă mai concisă se numește Macro (mijloace de înlocuire). B, Macro este destinat scurtării înregistrării programului original.

Componenta software care permite funcționarea macro-urilor se numește procesor macro. Macro-definiția și textul sursă sunt trimise procesorului de macro. Reacția procesorului macro la apel este emiterea textului de ieșire. O macro poate funcționa în același mod, atât cu programe, cât și cu date.

Sisteme de programare independente de mașini Este un mijloc de descriere a algoritmilor pentru rezolvarea problemelor și a informațiilor care trebuie procesate. Acestea sunt convenabile de utilizat pentru o gamă largă de utilizatori și nu le solicită să cunoască specificul organizării funcționării unui computer. În astfel de sisteme, programele compilate de limbaje numite limbaje de programare la nivel înalt sunt secvențe de enunțuri structurate conform regulilor limbajului (sarcini, segmente, blocuri etc.). Operatorii de limbă descriu acțiunile pe care trebuie să le efectueze sistemul după ce programul este tradus în LM. Astfel, secvențele de comandă (proceduri, subrutine), utilizate 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.

Dintre sistemele de programare independente de mașină, trebuie să se distingă următoarele:

1. Sisteme orientate către proceduri... Limbaje de programare de intrare în astfel de sisteme sunt utilizate pentru a scrie algoritmi (proceduri) pentru procesarea informațiilor, tipice pentru rezolvarea problemelor unei anumite clase. Aceste limbaje ar trebui să ofere programatorului mijloacele necesare pentru a formula sarcina într-un mod scurt și clar și pentru a obține rezultatele în forma cerută. Există o mulțime de limbaje procedurale, de exemplu: Fortran, Algol - limbaje create pentru rezolvarea problemelor matematice; Simula, Slang - pentru modelare; Lisp, Snobol - pentru lucrul cu structuri de liste.

2. Sisteme orientate spre probleme ca limbaj de intrare, se utilizează un limbaj de programare cu o orientare problematică. Odată cu extinderea domeniilor de aplicare a tehnologiei computerelor, a devenit necesară formalizarea prezentării formulării și soluționării noilor 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 de soluție necesari pentru sarcinile propuse. Aceste limbaje de rezolvare a problemelor ar trebui să ofere programatorului mijloacele necesare pentru a formula problema concis și clar și pentru a obține rezultatele în forma cerută. Programele bazate pe aceste limbaje de programare sunt scrise în funcție de problema rezolvată și sunt implementate prin efectuarea procedurilor adecvate.

3. Limbi de conversație... Apariția de noi capacități tehnice a stabilit sarcina programatorilor de sistem - de a crea instrumente software care asigură interacțiunea operațională a unei persoane cu un computer, acestea fiind numite limbaje de dialog. Au fost create limbaje speciale de control pentru a oferi un impact operațional asupra trecerii sarcinilor, care au fost compilate în orice limbaje nedezvoltate anterior (neinteractive).

De asemenea, au fost dezvoltate limbaje care, pe lângă obiectivele de control, ar oferi o descriere a algoritmilor pentru rezolvarea problemelor. Nevoia de a asigura o interacțiune promptă cu utilizatorul a cerut ca o copie a programului original să fie salvată în memoria computerului chiar și după ce programul obiect a fost primit în codurile mașinii. La efectuarea modificărilor programului, sistemul de programare care utilizează tabele speciale stabilește relația dintre structurile programelor originale și obiecte. Aceasta permite efectuarea modificărilor editoriale necesare în programul obiect.

4. Limbaje neprocedurale... Limbajele neprocedurale constituie un grup de limbaje care descriu organizarea datelor procesate de algoritmi fixi (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 rezolvării acesteia, tabelele de decizie permit determinarea clară a condițiilor care 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 tabulare sunt ușor stăpânite de specialiștii din orice profesie. Programele scrise într-un limbaj tabelar descriu convenabil situațiile complexe care apar în analiza sistemului.

În cel mai general caz, pentru a crea un program în limbajul de programare ales, trebuie să aveți următoarele componente:

1. Editor de text... Editorii de text specializați care se concentrează pe un limbaj de programare specific sunt necesare pentru a obține un fișier cu codul sursă al programului, care conține un set de caractere standard pentru scrierea algoritmului.

2. Text sursă folosind programe de compilare tradus în codul mașinii. Codul sursă al programului, de regulă, constă din mai multe module (fișiere cu coduri sursă). Fiecare modul este compilat într-un fișier separat cu cod obiect, care apoi trebuie combinate într-un singur întreg. În plus, sistemele de programare includ de obicei biblioteci de rutine standard... Subrutinele standard au o singură formă de apel, ceea ce creează posibilitatea includerii automate a acestor subrutine în programul de apelare și setarea parametrilor acestora.

3. Codul obiect al modulelor și funcțiile standard conectate la acesta sunt procesate de un program special - editor de legături... Acest program combină codurile obiect, ținând cont de cerințele sistemului de operare și formează o aplicație funcțională la ieșire - cod executabil pentru o anumită platformă. Un cod executabil este un program complet care poate fi rulat pe orice computer care are sistemul de operare pentru care a fost creat programul.

4. Există încă o componentă în sistemele moderne de programare - depanator, care vă permite să analizați activitatea programului în timpul executării acestuia. Cu ajutorul acestuia, puteți executa secvențial instrucțiuni individuale ale textului sursă secvențial, observând în același timp modul în care se modifică valorile diferitelor variabile.

De-a lungul timpului, dezvoltatorii de compilatoare au încercat să ușureze utilizatorii, oferindu-le tot setul necesar de module software ca parte a livrării unui compilator. Acum, compilatoarele au fost furnizate împreună cu toate mijloacele tehnice necesare. În plus, fișierele obiect și formatele de fișiere ale bibliotecii subrutine au fost unificate. Acum dezvoltatorii cu un compilator de la un furnizor ar putea, în principiu, să utilizeze biblioteci și fișiere obiect de la un alt furnizor de compilator.

A fost propus un limbaj special de comandă, limba Makefile, pentru scrierea fișierelor batch de compilație. A permis descrierea întregului proces de creare a unui program, de la generarea codurilor sursă până la pregătirea acestuia pentru execuție, într-o formă suficient de flexibilă și convenabilă. A fost un instrument tehnic convenabil, dar destul de complex, care a necesitat un nivel înalt de pregătire și cunoștințe profesionale de la dezvoltator, deoarece limbajul de comandă Makefile în sine era comparabil ca complexitate cu un limbaj de programare simplu. Limbajul Makefile a devenit un instrument standard comun pentru compilatorii tuturor dezvoltatorilor.

Această structură a instrumentelor de dezvoltare există de multă vreme și, în unele cazuri, este folosită și astăzi (în special la crearea programelor de sistem). Utilizarea sa pe scară largă s-a datorat faptului că în sine această întreagă structură a instrumentelor de dezvoltare a fost foarte convenabilă pentru executarea în serie a programelor pe un computer, ceea ce a contribuit la utilizarea sa omniprezentă în era mainframe-ului.

Următorul pas în dezvoltarea instrumentelor de dezvoltare a fost apariția așa-numitului mediu de dezvoltare integrată. Mediul integrat combină capacitățile editorilor de text ai codului sursă al programelor și limbajul de comandă pentru compilare. Utilizatorul (dezvoltatorul programului sursă) nu mai trebuia să efectueze întreaga secvență de acțiuni de la generarea codului sursă până la executarea acestuia și, de asemenea, nu trebuia să descrie acest proces folosind sistemul de comandă din Makefile. Acum tot ce trebuia să facă era să indice într-o formă de interfață convenabilă compoziția modulelor sursă și a bibliotecilor necesare pentru a crea programul. Cheile necesare pentru compilator și alte mijloace tehnice au fost, de asemenea, specificate sub formă de formulare de configurare a interfeței.

După aceea, mediul de dezvoltare integrat a pregătit automat întreaga secvență necesară de comenzi Makefile, le-a executat, a primit rezultatul și a raportat orice erori care au apărut, dacă există. Mai mult, utilizatorul ar putea modifica textul modulelor sursă aici, fără a întrerupe lucrul cu mediul integrat, astfel încât ulterior, dacă este necesar, să repete pur și simplu întregul proces de compilare.

Crearea unor medii de dezvoltare integrate a devenit posibilă datorită dezvoltării rapide a computerelor personale și apariției instrumentelor avansate de interfață cu utilizatorul (mai întâi textuale, apoi grafice). Apariția lor pe piață a determinat dezvoltarea în continuare a acestui tip de mijloace tehnice. Poate că primul mediu de succes de acest gen poate fi recunoscut ca mediu de programare integrat Turbo Pascal bazat pe limbajul Pascal fabricat de Borland. Popularitatea sa larg răspândită a fost determinată de faptul că, în timp, toți dezvoltatorii de compilatoare au apelat la crearea unor instrumente de dezvoltare integrate pentru produsele lor.

Dezvoltarea mediilor integrate a redus oarecum cerințele pentru abilitățile profesionale ale dezvoltatorilor de programe sursă. Acum, în cel mai simplu caz, dezvoltatorului i se cerea doar să cunoască limba sursă (sintaxa și semantica acesteia). La crearea unui program de aplicație, dezvoltatorul acestuia, în cel mai simplu caz, nici măcar nu putea înțelege arhitectura sistemului de calcul țintă.

Dezvoltarea ulterioară a instrumentelor de dezvoltare este, de asemenea, strâns legată de omniprezenta instrumentelor grafice avansate de interfață cu utilizatorul. O astfel de interfață a devenit o parte integrantă a multor sisteme de operare moderne și așa-numitele shell grafice. De-a lungul timpului, a devenit standardul de facto în aproape toate aplicațiile moderne.

Acest lucru nu putea decât să afecteze cerințele pentru instrumentele de dezvoltare software. Mai întâi au inclus bibliotecile corespunzătoare care oferă suport pentru o interfață grafică de utilizator avansată și interacțiunea cu funcțiile API (interfața programului de aplicație, interfața de programare a aplicației sistemului de operare). Și apoi, pentru a lucra cu ei, au fost necesare instrumente suplimentare pentru a asigura dezvoltarea aspectului modulelor de interfață. Acest tip de muncă era deja mai tipic pentru un designer decât pentru un programator.

Pentru a descrie elementele grafice ale programelor, au fost necesare limbile corespunzătoare. Pe baza lor s-a format conceptul resurse(resurse) programe de aplicare.

Resursele aplicației va apela o mulțime de date care oferă aspectul interfeței cu utilizatorul acestui program și nu sunt direct legate de logica de execuție a programului. Exemple tipice de resurse sunt: ​​textele mesajelor emise de program; culorile elementelor de interfață; etichete pe elemente precum butoane și titluri ale ferestrelor etc.

Pentru a forma structura resurselor, la rândul lor, au fost necesari editori de resurse și apoi compilatoare de resurse care procesează rezultatul muncii lor. Resursele obținute din rezultatele compilatoarelor de resurse sunt acum procesate de linkere și încărcătoare.

În ultimii ani în programare (în special pentru mediul de operare Windows), a existat un așa-numit vizual o abordare.

Acest proces este automatizat în medii de proiectare rapidă. În acest caz, se utilizează componente vizuale gata făcute, ale căror proprietăți și comportament sunt configurate folosind editori speciali. Astfel, există o tranziție de la limbaje de programare la nivel de sistem la limbaje de scriptare.

Aceste limbi au fost create în scopuri diferite, ceea ce a dus la o serie de diferențe fundamentale între ele. Sistemele au fost dezvoltate pentru a construi structuri de date și algoritmi de la zero, pornind de la elemente primitive precum un cuvânt de memorie pentru computer. În schimb, limbajele de scriptare au fost create pentru a lega programe gata făcute. Utilizarea lor implică disponibilitatea unei game suficiente de componente puternice care trebuie combinate doar între ele. Limbajele la nivel de sistem utilizează o tastare puternică a datelor pentru a ajuta dezvoltatorii de aplicații să facă față sarcinilor complexe. Limbajele de scriptare nu folosesc conceptul de tip, care simplifică stabilirea relațiilor între componente și, de asemenea, accelerează dezvoltarea sistemelor de aplicații.

Limbile de scriptare se bazează pe un set ușor diferit de compromisuri decât limbajele la nivel de sistem. Acestea plasează viteza de execuție și strictețea controlului de tip într-un loc mai scăzut în scara priorităților, dar apreciază productivitatea programatorului și reutilizează mai mult. Această relație de valoare devine din ce în ce mai valabilă pe măsură ce computerele devin mai rapide și mai puțin costisitoare, ceea ce nu este cazul programatorilor. Limbajele de programare a sistemelor sunt potrivite pentru construirea componentelor, unde principala dificultate constă în implementarea algoritmilor și structurilor de date, în timp ce limbajele de scriptare sunt mai potrivite pentru construirea unei aplicații din componente gata făcute, în care complexitatea constă în stabilirea relațiile intercomponente. Problemele de acest tip sunt din ce în ce mai răspândite, astfel încât rolul limbajelor de scriptare va crește.

Interpreti și compilatori.

Difuzarea programelor și a proceselor conexe.

Trebuie remarcat faptul că orice limbaj de programare poate fi interpretat și compilat, dar în majoritatea cazurilor fiecare limbaj are propria sa metodă de implementare preferată. Limbile Fortran și Pascal sunt compilate în principal; limbajul asamblării interpretează aproape întotdeauna; limbile BASIC și Lisp folosesc ambele metode pe scară largă.

Principalul avantaj al compilării este viteza de execuție a programului finalizat. Un program interpretat este inevitabil mai lent de executat decât un program compilat, deoarece interpretul trebuie să construiască secvența adecvată de comenzi în momentul în care instrucțiunea comandă executarea.

În același timp, un limbaj interpretat este adesea mai convenabil pentru un programator, în special pentru un începător. Vă permite să controlați rezultatul fiecărei operațiuni. Un astfel de limbaj este adecvat în special pentru stilul interactiv de dezvoltare a programului, când părți individuale ale programului pot fi scrise, testate și executate în timpul creării programului fără a dezactiva interpretul.

Traducător este un program care traduce un program sursă în programul său obiect echivalent. Un program sursă este scris într-un limbaj sursă, un program obiect este format într-un limbaj obiect. Programul traducătorului în sine este executat în timpul difuzării.

Dacă limba sursă este un limbaj de nivel înalt, cum ar fi Fortran, C și Pascal, și dacă limbajul obiect este ansamblul sau un anumit limbaj mașină, atunci traducătorul este numit compilator. Limbajul mașinii este uneori numit cod mașină, deci un program obiect este numit uneori codul obiectului.

Traducerea programului sursă în programul obiect are loc în momentul compilării, iar execuția efectivă a programului obiect are loc în timpul execuției programului finalizat.

Asamblator este un program care traduce un program sursă scris în autocod sau limbaj de asamblare în limba unui computer. Autocodificare(asamblor) este foarte aproape de limbajul mașinii; într-adevăr, majoritatea instrucțiunilor de autocodificare sunt reprezentări simbolice exacte ale instrucțiunilor mașinii. Mai mult, instrucțiunile autocodificate sunt de obicei într-un format fix, ceea ce le face ușor de analizat. Autocodului îi lipsesc de obicei instrucțiuni imbricate, blocuri etc.

Interpret pentru un anumit limbaj sursă ia ca program de intrare un program sursă scris în limba respectivă și îl execută. Diferența dintre un compilator și un interpret este că interpretul nu generează un program obiect, care trebuie apoi executat, ci îl execută el însuși. Pentru a afla cum să executați instrucțiunile programului original, un interpret pur îl analizează ori de câte ori trebuie executat. Desigur, acest lucru este ineficient și nu este folosit foarte des.

La programare, interpretul este de obicei împărțit în două faze... Pe primulÎn această fază, interpretul analizează întregul program sursă, la fel ca și compilatorul, și îl traduce într-o reprezentare internă. Pe al doilea fază, această reprezentare internă a programului original este interpretată sau executată. Reprezentarea internă a programului original este concepută pentru a minimiza timpul necesar pentru a descifra sau analiza fiecare instrucțiune pe măsură ce este executată.

După cum sa menționat mai sus, eu însumi compilator nu este altceva decât un program scris într-un anumit limbaj, pentru care programul sursă servește drept informație de intrare, iar rezultatul este un program obiect echivalent cu acesta. Din punct de vedere istoric, compilatoarele erau scrise manual în autocod. În multe cazuri, aceasta a fost singura limbă disponibilă. Cu toate acestea, compilatoarele sunt acum dezvoltate în limbaje de nivel înalt (deoarece reduce timpul petrecut în programare și depanare și asigură, de asemenea, lizibilitatea programului de compilare atunci când lucrarea este terminată).

În plus, avem acum multe limbi concepute special pentru compilarea compilatoarelor. Aceste așa-numite „ compilatoare compilatoare"sunt unele subseturi de" sisteme de construcție a traducătorilor"(SPT).

Limbaje și sisteme de programare

Conceptul de limbaj al mașinilor

Limbajul mașinii este un sistem de comenzi înțeles direct de hardware-ul unui anumit sistem de calcul electronic. Î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 al procesorului conține:

· Comenzi aritmetice-logice - comenzi pentru operații aritmetice pe numere binare și operații 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 date - comenzi cu ajutorul cărora procesorul ș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 succesiune de instrucțiuni localizate în RAM este de fapt un algoritm înregistrat în sistemul de instrucțiuni al procesorului - un program de mașină.

Cea mai obișnuită acum este arhitectura computerului cu o magistrală comună. Autobuzul comun este autostrada centrală de informații care conectează dispozitivele externe la procesorul central. Se compune dintr-o magistrală de date, o magistrală de adrese și o magistrală de control. Magistrala de date este destinată schimbului de date între RAM și dispozitive externe. Autobuzul de adrese poartă adrese de date. Acest autobuz este unidirecțional. Autobuzul de control servește ca un canal pentru schimbul de semnale de control între dispozitivele externe și procesorul central.

Astfel, limbajul mașinii (limbajul procesorului) este un set de instrucțiuni, fiecare dintre ele descriind o acțiune elementară pentru transformarea informațiilor reprezentate în cod binar. Utilizarea universală a codului binar pentru reprezentarea informațiilor de diferite 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 în zeci și sute de mii de instrucțiuni pentru mașină. Prin urmare, orice tehnologie pentru proiectarea unui program ar trebui să se bazeze pe tehnici caracteristice gândirii umane, să funcționeze cu concepte familiare unei persoane din aria subiectului căreia îi aparține sarcina.

Cu alte cuvinte, programatorul (proiectantul algoritmilor) trebuie să poată formula algoritmul său în limbajul conceptelor familiare; atunci un program special trebuie să exprime aceste concepte cu ajutorul mașinilor-unelte, traducând (traducând) textul algoritmului în limbajul mașinii.

Această nevoie a dus la apariția limbajelor de programare la nivel înalt ca limbaje pentru înregistrarea algoritmilor destinați execuției pe computer.

Limbi orientate către mașini

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

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

Limbaje de programare la nivel înalt

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

Limba ar trebui să fie apropiată de acele fragmente de limbi naturale care oferă un domeniu specific al activității umane; (Un limbaj axat pe aplicațiile de afaceri ar trebui să conțină conceptele utilizate în acest tip de activitate: document, factură, bază de date etc.).

Toate facilitățile lingvistice trebuie formalizate într-o asemenea 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ărora 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 concepute pentru a înțelege limbaje de programare la nivel înalt. Hardware-ul recunoaște și execută numai limbajul mașinii, programul în care nu este altceva decât o succesiune de numere binare.

Apariția limbajelor de programare a fost asociată cu conștientizarea faptului că traducerea unui algoritm scris într-un limbaj „aproape” natural (algoritmic) într-un limbaj mașină poate fi automatizată și, prin urmare, încredințată pe umerii unei mașini. Aici este important să se facă distincția între limbă și implementarea sa. Limbajul în sine este un sistem de notare guvernat de un set de reguli care îi definesc vocabularul și sintaxa. O implementare a limbajului este un program care convertește această notație într-o secvență de instrucțiuni ale mașinii în conformitate cu regulile semantice definite în limbaj.

Există două modalități principale de implementare a unui limbaj: compilatoare și interpreți. Compilatoarele traduc întregul text al unui program scris într-un limbaj de programare în codul mașinii într-un singur proces continuu. Acest lucru creează un program complet de cod 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 propoziția procesată într-un program mașină pe parcurs. 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 compilată și interpretată, dar în majoritatea cazurilor fiecare limbă are propriul său mod preferat de implementare. Aparent, această preferință este mai mult decât un tribut adus tradiției. Alegerea este determinată de limbajul însuși. 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 executarea căruia este necesar software suplimentar.

Codul executabil final este aplicațiile implementate ca fișiere EXE, biblioteci DLL, componente COM. Codul interpretat este codul secundar al programelor JAVA executate de mașina virtuală JVM.

Codul obiect generat de compilator este o zonă de date și o zonă de instrucțiuni ale mașinii care au adrese care sunt ulterior „negociate” de un editor de legături (uneori numit încărcător). Editorul de linkuri plasează toate modulele de obiecte 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 ca urmare a compilării programului sursă.

Proces de traducere (compilare)

Un program scris într-un limbaj de programare la nivel înalt se numește program sursă și fiecare unitate de program independentă care formează un program dat 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 să obțineți un cod suficient de eficient în același timp.

Î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ă efectuat de compilator, traducătorii sunt împărțiți în o singură trecere, în două treceri și în traducători care folosesc mai mult de două treceri.

Avantajele unui compilator cu o singură trecere includ viteza mare de compilare, în timp ce dezavantajele includ, de regulă, nu codul cel mai eficient.

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

Figura prezintă etapele principale realizate în procesul de traducere a programului sursă.

Faza de analiză a programului constă din:

· Analiza lexicală;

· Analiza sintactică;

· Analiza semantică.

Când analizează programul sursă, traducătorul scanează secvențial textul programului reprezentat ca un set de caractere, analizând structura programului.

În etapa de analiză lexicală, se disting principalele componente ale programului - lexeme. Jetoanele sunt cuvinte cheie, identificatori, simboluri operaționale, comentarii, spații și separatoare. Analizatorul lexical nu numai că extrage jetoane, dar determină și tipul fiecărui jeton. În același timp, în etapa de analiză lexicală, este compilat un tabel de simboluri, în care fiecare identificator este asociat cu propria adresă. Aceasta permite analize suplimentare pentru a-și folosi adresa în tabelul de 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 analiză, jetoanele primite sunt analizate pentru a obține unități sintactice înțelese semantic, care sunt apoi procesate de analizorul semantic. Deci, unitățile sintactice sunt expresii, declarație, operator al unui limbaj de programare, apel funcțional.

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

Cele mai frecvente sarcini rezolvate de analizorul semantic includ:

· Detectarea erorilor în timpul compilării;

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

· Înlocuirea macro-urilor cu definițiile acestora;

· Executarea directivelor de compilare.

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

La faza de sinteză a programului, se efectuează următoarele:

· Generarea codului;

· Editarea linkurilor.

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 procesat ulterior de linker.

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

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

Lectura 11. Limbaje de programare. Sisteme de programare. miercuridesign vizual

Prezentare generală a limbajelor de programare

Comenzile de control și datele care intră în procesor prin intermediul autobuzelor sale sunt reprezentate sub forma codului mașinii.

Un cod al mașinii este un cod binar, adică o colecție de zerouri și unii sub formă de semnale electrice.

Calculatorul este controlat conform unui algoritm specific.

Un algoritm este o descriere definită cu precizie a unei metode de rezolvare a unei probleme sub forma unei secvențe de acțiuni finite în timp (operații elementare sau operatori). Această descriere se numește formală.

Pentru a prezenta algoritmul într-o formă ușor de înțeles PC sunt limbaje de programare. În primul rând, este întotdeauna dezvoltat un algoritm de acțiuni, care este scris într-una dintre aceste limbi.

Descrierea algoritmului obținut utilizând limbajul de programare este tradusă de programe utilitare speciale - traducători - în codul mașinii pentru executare.

Limbajele de programare folosesc propria sintaxă (set de cerințe pentru operatorii de scriere) și semantică (reflectarea semnificației comenzii) pentru a scrie fiecare comandă (operator) în program. Încălcarea formei de a scrie o comandă în program duce la o neînțelegere a acesteia de către traducător sau la o eroare de sintaxă.

O comandă scrisă corect care nu corespunde algoritmului programului duce la o eroare semantică (sau logică).

Procesul de găsire a erorilor într-un program testează programul, iar procesul de eliminare a acestora depanează programul.

Există două tipuri de programe de traducere:

un interpret care traduce și execută simultan o comandă dată, făcând-o una câte una sau una câte una;

un compilator care convertește un program scris într-un limbaj de nivel înalt într-un program într-un limbaj de mașină sau într-un limbaj apropiat de un limbaj de mașină, fără a participa la execuția acestuia.

Un program de interpretare este utilizat pentru a executa direct comenzi scrise într-un limbaj de programare de către procesor. Poate fi reprezentat ca un computer virtual, pentru care instrucțiunile de bază nu sunt instrucțiuni elementare ale procesorului (adică instrucțiuni din codul mașinii), ci operatori de limbaj de programare. Fiecare operator al programului de interpretare îl analizează secvențial ca și când ar fi prima dată când a fost întâlnit, ceea ce încetinește foarte mult munca. PC atunci când executați o cantitate mare de comenzi repetitive.

Programul compilator procesează complet întregul text al programului la nivel înalt. În același timp, optimizarea este realizată pentru a îmbunătăți performanța programului. Ca urmare, programul este compact, eficient și funcționează de sute de ori mai rapid decât programul executat cu ajutorul interpretului.

Dezavantajul compilatoarelor este dificultatea de a traduce direcționarea în limbiprelucrarea complexă a datelor, adică un program care este adesea necunoscut în prealabil sau care se schimbă dinamic în timpul funcționării.

În practică, sunt utilizate atât unul, cât și celălalt tip de programe de traducere, adică atât programe de interpretare, cât și programe de compilare.

Niveluri de limbaj de programare

Un limbaj de programare care vizează un anumit tip de procesor este un limbaj de nivel scăzut. Acest lucru nu înseamnă „rău”, ci doar faptul că limbajul este specific și apropiat de limbajul mașinii PC (de exemplu, limba „Asamblator”).

Cu ajutorul limbajelor de nivel scăzut, sunt create programe foarte eficiente și compacte, deoarece dezvoltatorul are acces la toate posibilitățile PC ... Dar acestea sunt specializate și nu pot fi portate pe un computer cu un alt tip de procesor.

Limbaje de programare la nivel înaltmai ușor de înțeles pentru o persoană decâtPC-uri, sunt ușor de transportat pe alte platforme pentru care a fost creat un traducător al acestei limbi. Este mai ușor să evitați erorile de programare în ele.

Nașterea limbilor de nivel înalt de generația a 5-a a avut loc la mijlocul anilor '90.

Fortran - primul limbaj compilat creat în anii 50, dar modificări în 2000 ( HPF - Fortran de înaltă performanță ) sunt folosite și astăzi în complexe statistice și chiar în sisteme de control prin satelit.

Cobol Este un limbaj compilat pentru utilizare în economie și pentru rezolvarea problemelor de afaceri, dezvoltat la începutul anilor '60. Are multe aplicații, este încă folosit acum (în Statele Unite, programatorii care lucrează la Cobol).

Algol este un limbaj compilat creat în 1960. Trebuia să înlocuiască Fortran , dar datorită structurii sale mai complexe, nu a fost utilizat pe scară largă.

Pascal - creat la sfârșitul anilor 70, seamănă în multe privințe Algol , dar întărește o serie de cerințe pentru structura programelor, ceea ce face posibilă aplicarea cu succes la crearea de proiecte mari.

De bază este un limbaj care are atât compilatori, cât și interpreți; este pe primul loc în lume în popularitate. A fost creat în anii 60 ca limbă de predare și este foarte ușor de învățat.

C (C) - a fost planificat să înlocuiască ansamblul pentru a putea crea programe eficiente și compacte și, în același timp, să nu depindă de un anumit tip de procesor. Multe programe de sistem și aplicații și o serie de sisteme de operare (în special, OS Unix).

C ++ (C ++) este o extensie orientată obiect a limbajului C, dezvoltată în 1980. Oferă performanțe ridicate, dar necesită un nivel ridicat de profesionalism din partea dezvoltatorilor.

Java - acest limbaj a fost creat la începutul anilor 90 pe baza C ++. Este conceput pentru a simplifica dezvoltarea aplicațiilor bazate pe C ++ prin excluderea caracteristicilor de nivel scăzut din acesta. Oferă compilarea nu în codul mașinii, ci în codul obiect independent de platformă care poate fi executat folosind un interpret - o mașină virtuală Java ( Mașină virtuală ), ale căror versiuni sunt create astăzi pentru orice platformă.

Această limbă ocupă locul al doilea în popularitate după De bază ... Principalul său dezavantaj este performanța scăzută, deoarece acestainterpretabil.

Limbaje de programare a bazei de date (DB)

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 într-o formă tabelară). Baza de date poate consta dintr-un tabel sau un număr de tabele interconectate.

Pentru a gestiona baze de date mari și pentru a prelucra eficient datele, au fost dezvoltate sisteme de gestionare a bazelor de date (SGBD). A fost creat un limbaj de interogare structurat pentru a prelucra date în baze de date. SQL (Structured Query Language).

În aproape fiecare SGBD, pe lângă suportul lingvistic SQL există, de asemenea, propriul limbaj unic, axat pe caracteristicile numai ale acestui SGBD.

În prezent, există mai mulți furnizori de SGBD. Printre acestea se numără:

Microsoft Access;

Oracol;

Informix etc.

SGBD-urile acestor companii sunt axate pe funcționarea simultană a mii de utilizatori într-o rețea, iar DB-ul poate fi stocat într-o formă distribuită pe mai multe servere.

Limbaje de programare pentru Internet

Toate aceste limbaje sunt interpretate, interpreții pentru ei sunt distribuiți gratuit, iar programele în sine sunt în texte sursă (scripturi). Astfel de limbi se numesc limbaje de scriptare.

Cel mai faimos dintre limbile de scriptare:

HTML, XML - limbaje bine cunoscute de marcare a hipertextului concepute pentru a descrie structura și conținutul Documente WEB;

Documente WEB; JavaScript - limbajul de programare al scripturilor sau scripturilor (planuri de lucru ale programelor pentru interacțiunea cu utilizatorul), încorporate în corp Pagini web;

Pagini web; Perl - un limbaj de programare folosit pentru a crea scripturi și pagini web generate dinamic, cu putere superioară unor limbaje precum C.

Sisteme de programare

Pentru a crea un program în limba selectată, trebuie să aveți următoarele componente:

Un editor de text (este mai bine să folosiți un limbaj de programare specializat, axat pe un anumit limbaj de programare și vă permite să evidențiați cuvinte cheie și identificatori în diferite culori și fonturi);

un program de compilare cu care textul poate fi tradus direct în codul mașinii, dar din moment ce programului îi lipsesc adesea unele componente, compilatorul poate produce cod obiect intermediar cu extensia. obj;

obj; biblioteci de funcții. Fiecare modul este compilat într-un fișier separat cu cod obiect, dar, în plus, li se pot adăuga codul mașină al subrutinelor care implementează funcții matematice standard (de exemplu, păcatul, în ) care vin cu compilatorul. Aceste rutine sunt localizate în biblioteci de funcții (fișiere cu extensia. lib);

păcatul, în lib); editor de link-uri. Codul obiect al modulului este procesat de un program special, un linker sau un colector (linker), care leagă codul obiect și codul mașinii de funcții standard și formează o aplicație funcțională la ieșire, adică cod executabil pentru un sistem specific platformă;

codul executabil este un program complet care poate fi rulat pe orice computer cu sistemul de operare pentru care a fost creat programul. Are extensii: sau. com.

Sistemele moderne de programare mai au o componentă - un depanator - care vă permite să analizați execuția programului în ansamblu și pas cu pas, adică să urmăriți activitatea fiecărui operator.

Medii de design vizual

În prezent, se îmbunătățește în programare vizual o abordare. În trecut, un obstacol major în calea dezvoltării aplicațiilor grafice a fost dificultatea creării și controlului diferitelor elemente vizuale ale unei aplicații. De exemplu, un program pentru adăugarea a 2 numere necesită doar un operator sau o linie de text sursă și să creeze un buton și două câmpuri de intrare pentru numere (pregătire pentru lucrul în - Windows ) - sute de linii de cod.

Procesul de programare grafică a fost automatizat înmedii de proiectare rapide RAD (Rapid Application Development) ). Toate elementele (componentele) de proiectare și control necesare sunt create folosind componente vizuale gata făcute, care sunt introduse cu mouse-ul în fereastra proiectată, în timp ce textul sursă auxiliar pentru aceste obiecte este generat automat de mediu, ceea ce vă permite să focalizați asupra logicii problemei care se rezolvă. Ca rezultat, programarea este înlocuită de design sau este numitădesign vizual.

Componentele pentru medii RAD cunoscute (butoane, butoane radio, liste, casete de selectare etc.) sunt combinate în biblioteci -depozite de obiecte.Această abordare bazată pe componente a dezvoltării software este foarte promițătoare.

În prezent, următoarele medii de programare vizuală pentru limbi sunt cele mai populare:

De bază: Microsoft Visual Basic;

Pascal: Borland Delphi;

C ++: Borland C ++ Builder;

Java: Symantec Cafe.

Microsoft Visual Basic

Limbaj de bază (Codul de instrucțiuni simbolice pentru toate scopurile pentru începători ) a fost modificat în GWBASIC (Atelier de grafică ), care a fost disponibil pentru prima PC.

La sfârșitul anilor 80 sa dezvoltat QuickBasic care în 1992 a înlocuit Visual Basic pentru Windows.

Mijlocul anului 1998 a fost dezvoltată cea de-a șasea versiune, cea mai matură Microsoft Visual Basic (MS VB 6), care a fost versiunea principală de antrenament de mult timp.

Această versiune a fost principalul mediu de dezvoltare pentru aplicațiile Windows de la Microsoft, până când a apărut o platformă fundamental nouă. Cadru net.

De atunci, Microsoft și-a schimbat drastic politica lingvistică de bază. În loc să dezvolte Visual Basic, a fost creat un limbaj complet nou Visual Basic.NET , a cărei versiune a apărut în 2001 d. Acesta este un limbaj fundamental nou, pe care, pe lângă sintaxă , foarte puțin similar cu VB 6.0 și destul de diferit de acesta.

VB.NET VB a ocupat imediat un loc ferm în complexul de limbaj Visual Studio, iar dezvoltarea limbajului clasic Visual Basic s-a oprit aici.

În 2005 a fost lansată o nouă versiune a Visual Basic 2005, inclusă Studio vizual ... Avea o nouă interfață și mari posibilități. Limbajul s-a bazat pe Visual Basic.NET.

La sfârșitul anului 2007 Microsoft a lansat o nouă versiune a Visual Basic - Visual Basic 2008, care se baza și pe Visual Basic.NET.

În 2010, ca parte a Visual Studio 2010 a fost lansat versiunea Visual Basic 2010 și versiunea sa oarecum simplificată a Visual Basic 2010 Expres care este orientat către utilizarea pe scară largă și este oferit gratuit.

Mediu de calcul pentru limbajul de programare vizual Visual Basic 2010 este Microsoft .NET Framework 4.0 (Microsoft punct NET Framework 4.0), care estecomponentă integrală a Windows.

În prezent, versiunea Visual Basic 2010 este principala, Microsoft a refuzat să susțină și să mențină toate dezvoltările anterioare ale Visual Basic.

Pentru a evita învățarea unei noi limbi pentru fiecare dintre produsele sale, Microsoft a început să includă elemente BASIC în limbile macro ale produsului.

Ca rezultat, a fost creată o versiune a limbajului Visual Basic, denumit Visual Basic pentru aplicații (VBA ), care este implementat în toate aplicațiile MSO 2003 și M SO 2007 (Word, Excel, PowerPoint etc.), în special, pentru crearea de macrocomenzi.