Programarea sistemului, ce limbaj de programare să alegeți? Concept, principalele sale funcții și componente

SISTEME DE PROGRAMARE SI LIMBAJE

1. Sisteme de programare

Sistemele de programare sunt un set de instrumente software concepute pentru a lucra cu programe într-unul dintre limbajele de programare. Sistemele de programare oferă programatorilor servicii pentru a-și dezvolta propriile programe de calculator.

În prezent, dezvoltarea oricărui sistem și aplicație software se realizează folosind sisteme de programare, care includ:

    traducători din limbi de nivel înalt;

    instrumente pentru editarea, compunerea și încărcarea programelor;

    macroasambleri (limbaje orientate către mașină);

    depanatoare de programe de mașină.

Sistemele de programare includ de obicei

    un editor de text (Edit), care îndeplinește funcțiile de înregistrare și editare a textului sursă al programului;

    program loader (Încărcare), care vă permite să selectați fișierul text al programului dorit din director;

    lansatorul de programe (Run), care realizează procesul de execuție a programului;

    compilator (Compile), conceput pentru a compila sau interpreta textul sursă al unui program în codul mașinii cu diagnosticarea erorilor sintactice și semantice (logice);

    depanator (Debug), care realizeaza functii de service pentru depanarea si testarea programului;

    manager de fișiere (Fișier), care oferă posibilitatea de a efectua operațiuni cu fișiere: salvare, căutare, ștergere etc.

Miezul unui sistem de programare este limbajul.

Sistemele de programare „Turbo” de la Borland, al căror nucleu sunt traducători din limbajele de programare BASIC, Pascal, C, Prolog etc., sunt utilizate pe scară largă în rândul dezvoltatorilor de programe, precum și atunci când predau programarea pentru orice interfață externă sistemele de programare este exact aceeași și oferă utilizatorului un set standard de funcții și comenzi.

Tehnologia de dezvoltare a programelor folosind popularul sistem de programare Turbo Pascal 7 va fi discutată mai târziu. În astfel de sisteme de programare integrate, se încearcă să ofere dezvoltatorului programului capabilități maxime de servicii.

2. Clasificarea limbajelor de programare

În zorii erei computerelor, codul mașinii era singurul mijloc de comunicare între o persoană și un computer. Marea realizare a creatorilor de limbaje de programare a fost că au reușit să facă computerul însuși să funcționeze ca traducător din aceste limbi în codul mașinii.

Limbajele de programare existente pot fi împărțite în două grupuri: procedurale și non-procedurale (vezi Fig. 1).

Programele procedurale (sau algoritmice) sunt un sistem de instrucțiuni pentru rezolvarea unei anumite probleme. Rolul calculatorului se reduce la implementarea mecanică a acestor instrucțiuni.

Limbile procedurale sunt împărțite în limbi de nivel scăzut și de nivel înalt.

Diferite tipuri de procesoare au seturi de instrucțiuni diferite. Dacă un limbaj de programare este axat pe un anumit tip de procesor și ia în considerare caracteristicile acestuia, atunci este numit limbaj de programare de nivel scăzut. Aceasta înseamnă că operatorii de limbă sunt aproape de codul mașinii și sunt concentrați pe comenzi specifice procesorului.

Limbajele de nivel scăzut (orientate către mașină) vă permit să creați programe din codul mașinii, de obicei în formă hexazecimală. Este greu de lucrat cu ele, dar programele create cu ajutorul lor de un programator foarte calificat ocupă mai puțin spațiu de memorie și rulează mai repede. Folosind aceste limbaje, este mai convenabil să dezvoltați programe de sistem, drivere (programe pentru controlul dispozitivelor computerizate) și alte tipuri de programe.

Un limbaj de nivel scăzut (orientat către mașină) este Asamblator, care reprezintă pur și simplu fiecare instrucțiune de cod de mașină, nu ca numere, ci folosind notații simbolice numite mnemonice.

Limbajele de nivel scăzut creează programe foarte eficiente și compacte, deoarece dezvoltatorul are acces la toate capacitățile procesorului.

Limbaje de programare la nivel înalt mult mai aproape și mai de înțeles de o persoană decât de un computer. Caracteristicile arhitecturilor specifice computerelor nu sunt luate în considerare în ele, prin urmare programele create la nivel de text sursă sunt ușor de portat pe alte platforme pentru care a fost creat un traducător al acestui limbaj. Este mult mai ușor să dezvoltați programe în limbaje de nivel înalt folosind comenzi clare și puternice și sunt mult mai puține greșeli făcute la crearea programelor.

Principalul avantaj al limbajelor algoritmice de nivel înalt este capacitatea de a descrie programe de rezolvare a problemelor într-o formă cât mai convenabilă pentru percepția umană. Dar, din moment ce fiecare familie de calculatoare are propriul său limbaj intern (mașină) și poate executa doar acele comenzi care sunt scrise în acest limbaj, se folosesc programe speciale de traducere pentru a traduce programele sursă în limbajul mașinii.

Munca tuturor traducătorilor se bazează pe unul dintre cele două principii: interpretarea sau compilarea.

Interpretare implică traducerea instrucțiune cu instrucțiune și execuția ulterioară a instrucțiunii traduse a programului sursă. În acest sens, pot fi remarcate două dezavantaje ale metodei de interpretare: în primul rând, programul de interpretare trebuie să fie în memoria computerului pe parcursul întregului proces de execuție a programului original, adică. ocupă o anumită cantitate de memorie; în al doilea rând, procesul de traducere a aceluiași operator se repetă de câte ori trebuie executată această comandă în program, ceea ce reduce drastic performanța programului.

În ciuda acestor neajunsuri, traducători-interpreți au devenit destul de răspândite, deoarece sunt convenabile pentru dezvoltarea și depanarea programelor sursă.

La compilare Procesele de traducere și execuție sunt separate în timp: mai întâi, programul sursă este tradus complet în limbajul mașinii (după care prezența unui traducător în RAM devine inutilă), iar apoi programul tradus poate fi executat de mai multe ori. În consecință, pentru același program, traducerea folosind metoda de compilare oferă performanțe mai mari ale sistemului de calcul, reducând în același timp RAM necesară.

Complexitatea mai mare în dezvoltarea unui compilator în comparație cu un interpret din aceeași limbă se explică prin faptul că compilarea unui program presupune două acțiuni: analiza, i.e. determinarea corectitudinii înregistrării programului sursă în conformitate cu regulile de construire a constructelor de limbaj ale limbajului de intrare și sinteza - generarea unui program echivalent în coduri mașini. Difuzarea folosind metoda de compilare necesită „vizionarea” repetată a programului difuzat, de exemplu. traducători-compilatori sunt multi-pass: la prima trecere verifică corectitudinea sintaxei constructelor de limbaj ale operatorilor individuali independent unul de celălalt, la trecerea ulterioară - corectitudinea relațiilor sintactice dintre operatori etc.

Programul obținut ca urmare a traducerii folosind metoda de compilare este numit modul obiect, care este un program echivalent în codul mașinii, dar nu „legat” la anumite adrese RAM. Prin urmare, înainte de execuție, modulul obiect trebuie procesat de un program special de sistem de operare (editor de linkuri) și convertit în modul de încărcare, adică modul software cu adrese relative.

Alături de traducătorii-interpreți și traducătorii-compilatorii discutați mai sus, în practică se folosesc și traducătorii interpret-compilatoare, care combină avantajele ambelor principii de traducere: în etapa de dezvoltare a programului și de depanare, traducătorul funcționează în modul interpret, iar după finalizarea procesului de depanare, programul sursă este retradus într-un modul obiect (adică, folosind metoda de compilare) . Acest lucru vă permite să simplificați și să accelerați semnificativ procesul de compunere și depanare a programelor și, prin obținerea ulterior a unui modul obiect, asigurați o execuție mai eficientă a programului.

Orez. 1. Clasificarea generală a limbajelor de programare

Programarea procedurală clasică necesită ca programatorul să descrie în detaliu cum să rezolve o problemă, de ex. formularea algoritmului și notația specială a acestuia. În acest caz, proprietățile așteptate ale rezultatului nu sunt de obicei indicate. Conceptele de bază ale limbilor acestor grupuri sunt operator și date. În abordarea procedurală, operatorii sunt combinați în grupuri - proceduri. Programarea structurată în ansamblu nu depășește această direcție, ea captează doar câteva tehnici utile ale tehnologiei de programare.

O direcție fundamental diferită în programare este asociată cu metodologiile (numite uneori „paradigme”) ale programării non-procedurale. Acestea includ programarea orientată pe obiecte și declarativă. Un limbaj orientat pe obiecte creează un mediu sub forma multor obiecte independente. Fiecare obiect se comportă ca un computer separat, ele pot fi folosite pentru a rezolva probleme ca „cutii negre” fără a se adânci în mecanismele interne ale funcționării lor. Dintre limbajele de programare obiect populare în rândul profesioniștilor, C++ ar trebui menționat mai întâi pentru o gamă mai largă de programatori, sunt preferate mediile precum Delphi și Visual Basic

Când folosește un limbaj declarativ, programatorul specifică structurile de informații inițiale, relațiile dintre ele și ce proprietăți ar trebui să aibă rezultatul. În același timp, programatorul nu construiește o procedură pentru obținerea acestuia („algoritm”) (cel puțin, în mod ideal). Aceste limbi nu au conceptul de „operator” („comandă”). Limbile declarative pot fi împărțite în două familii - logice (un reprezentant tipic este Prolog) și funcționale (Lisp).

Să caracterizăm cele mai cunoscute limbaje de programare.

    Fortran(Sistem de traducere a formulelor - sistem de traducere a formulelor); cel mai vechi limbaj care este încă folosit activ în rezolvarea problemelor de orientare matematică. Este un limbaj clasic pentru programarea pe calculator a problemelor de matematică și inginerie.

    DE BAZĂ(Codul de instrucțiuni simbolice universale pentru începători - cod de instrucțiuni simbolice universale pentru începători, în ciuda multor deficiențe și a abundenței de versiuni slab compatibile, este cel mai popular în ceea ce privește numărul de utilizatori.

    ALGOL(ALGOrithmic Language - limbaj algoritmic); a jucat un rol important în teorie, dar acum nu este folosit aproape niciodată pentru programarea practică.

    PL/1(PL/1 Programming Language - primul limbaj de programare); limbaj polivalent; acum aproape niciodată folosit.

    Pascal(Pascal - numit după omul de știință Blaise Pascal); extrem de popular atât atunci când învață programare, cât și printre profesioniști. Creat la începutul anilor '70 de omul de știință elvețian Niklaus Wirth. Limbajul Pascal a fost dezvoltat inițial ca un limbaj educațional și, într-adevăr, acum este unul dintre principalele limbaje pentru predarea programării în școli și universități. Cu toate acestea, calitățile sale generale s-au dovedit a fi atât de înalte încât programatorii profesioniști îl folosesc de bunăvoie. Succesul nu mai puțin impresionant, inclusiv financiar, a fost obținut de Philip Kahn, francezul care a dezvoltat sistemul Turbo-Pascal. Esența ideii sale a fost de a combina etapele succesive de procesare a programului - compilare, editare de linkuri, depanare și diagnosticare a erorilor - într-o singură interfață. Versiunile Turbo Pascal au umplut aproape toate instituțiile de învățământ, centrele de programare și companiile private. Au fost create mai multe limbi mai puternice pe baza limbajului Pascal (Modula, Ada, Delphi).

    COBOL(Common Business Oriented Language - un limbaj orientat spre afaceri generale); a căzut în mare parte din uz. A fost conceput ca limba principală pentru prelucrarea în masă a datelor în domeniile managementului și afacerilor.

    ADA;este limbajul care a câștigat (mai 1979) un concurs de dezvoltare a unui limbaj universal susținut de Pentagon din 1975. Dezvoltatorii au fost un grup de oameni de știință condus de Jean Ihbia. Limba câștigătoare a fost numită ADA, în onoarea Augustei Ada Lovelace. Limba ADA este un descendent direct al limbajului Pascal. Acest limbaj este destinat creării și întreținerii pe termen lung (pe termen lung) a sistemelor software mari, permite procesarea în paralel, controlul procesului în timp real și multe altele, ceea ce este dificil sau imposibil de realizat folosind limbaje mai simple;

    Si(C - „si”); utilizat pe scară largă în crearea de software de sistem. A lăsat o amprentă mare asupra programării moderne (prima versiune - 1972) și este foarte popular printre dezvoltatorii de sisteme software (inclusiv sisteme de operare). C combină atât caracteristicile unui limbaj de nivel înalt, cât și ale unui limbaj orientat pe mașină, permițând programatorului accesul la toate resursele mașinii, pe care limbaje precum BASIC și Pascal nu le oferă.

    C++(C++); o extensie orientată pe obiecte a limbajului C creată de Bjarne Stroustrup în 1980. Multe caracteristici noi puternice care au crescut dramatic productivitatea programatorului au fost suprapuse unei anumite naturi de nivel scăzut moștenit din limbajul C.

    Delphi(Delphi); limbaj de programare „vizual” orientat pe obiecte; extrem de popular în acest moment. Creat pe baza limbajului Pascal de specialiștii Borland, limbajul Delphi, având puterea și flexibilitatea limbajelor C și C++, le depășește prin comoditatea și simplitatea interfeței atunci când se dezvoltă aplicații care oferă interacțiune cu baze de date și suport pentru diverse tipuri de lucru în cadrul rețelelor corporative și pe internet.

    Java(Java); Un limbaj de programare orientat pe obiecte independent de platformă, care este extrem de eficient pentru crearea de pagini web interactive. Acest limbaj a fost creat de Sun la începutul anilor 90 pe baza SI++. Este conceput pentru a simplifica dezvoltarea aplicațiilor bazate pe C++, eliminând toate caracteristicile de nivel scăzut din acesta.

    Lisp(Lisp) este un limbaj de programare funcțional. Este axat pe o structură de date sub forma unei liste și vă permite să organizați procesarea eficientă a unor volume mari de informații text.

    Prolog(Programare in LOGic - programare logica). Scopul principal al limbajului este dezvoltarea de programe și sisteme inteligente. Prolog este un limbaj de programare creat special pentru lucrul cu baze de cunoștințe bazate pe fapte și reguli (unul dintre elementele sistemelor de inteligență artificială). Limbajul implementează un mecanism de backtracking pentru a efectua un lanț înapoi de raționament, în care anumite inferențe sau concluzii sunt presupuse a fi adevărate, iar apoi aceste ipoteze sunt verificate cu o bază de cunoștințe care conține fapte și reguli de inferență. Dacă ipoteza nu este confirmată, se face o returnare și se face o nouă ipoteză. Limbajul se bazează pe un model matematic al teoriei calculului predicatului.

Limbaje de programare pentru internet:

    HTML. O limbă binecunoscută pentru pregătirea documentelor. 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.

    PERL. A fost conceput ca un mijloc de a procesa eficient fișiere text mari, de a genera rapoarte de text și de a gestiona sarcini. Perl este semnificativ mai puternic decât limbaje precum C. Include multe funcții utilizate frecvent pentru lucrul cu șiruri de caractere, matrice, gestionarea procesoarelor și lucrul cu informații de sistem.

    Tcl/ Tk. Acest limbaj este axat pe automatizarea proceselor de rutină și constă din comenzi puternice. Este independent de sistem și încă vă permite să creați programe cu o interfață grafică.

    VRML. Creat pentru a organiza interfețe virtuale tridimensionale pe Internet. Vă permite să descrieți diferite scene tridimensionale, lumini și umbre și texturi sub formă de text.

Cele mai populare limbaje de programare universale astăzi sunt:

    BASIC - necesită pregătire inițială pentru a stăpâni;

    Pascal – necesită pregătire specială;

    C++, Java - necesită pregătire profesională.

Pentru fiecare dintre aceste limbaje de programare astăzi există multe sisteme de programare produse de diverse companii și care vizează diferite modele de PC și sisteme de operare. Următoarele medii vizuale pentru proiectarea rapidă a programelor pentru Windows sunt cele mai populare:

      De bază: Microsoft Visual Basic

      Pascal: Borland Delphi

      C++: Borland C++Bulder

      Java: Symantec Cafe

Pentru a dezvolta aplicatii server si distribuite puteti folosi sistemul de programare Microsoft VisualC++, produse de la Inprise sub marca Borland. Aproape orice instrument de programare în Java.

Alegerea unui limbaj de programare depinde de mulți factori: scop, ușurința în scrierea programelor sursă, eficiența programelor obiect rezultate etc. Varietatea problemelor rezolvate de un calculator determină varietatea limbajelor de programare. Aparent, în programare cele mai bune rezultate sunt obținute cu o abordare individuală bazată pe clasa problemei, nivelul și interesele programatorului.

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

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

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

2.1 Limbaje orientate pe 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 C++…………………………………………………………………………...18

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

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

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

Introducere

Progresul tehnologiei informatice a determinat procesul de apariție a unor noi și diverse sisteme de semne pentru algoritmi de înregistrare - limbaje de programare. Semnificația apariției unui astfel de limbaj este un set echipat de formule de calcul cu informații suplimentare care transformă acest set într-un algoritm. Un limbaj de programare servește două scopuri legate: oferă programatorului un aparat pentru specificarea acțiunilor care trebuie efectuate și formează conceptele pe care programatorul le folosește atunci când se gândește la ce să facă. Primul obiectiv este în mod ideal îndeplinit de un limbaj care este atât de „aproape de mașină” încât toate aspectele de bază ale mașinii pot fi operate ușor și simplu într-un mod suficient de evident pentru programator. Cel de-al doilea obiectiv este în mod ideal îndeplinit de un limbaj atât de „apropiat de problema în cauză” încât conceptele pentru rezolvarea acesteia 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 mintea noastră este foarte strânsă. Din acest motiv, limitarea proprietăților unui limbaj la unicul scop de a elimina erorile programatorului este periculoasă în cel mai bun caz. Ca și în cazul limbilor naturale, există avantaje uriașe 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. Designul bun și lipsa erorilor nu pot fi garantate doar prin intermediul limbajului. Poate părea surprinzător, dar un anumit computer este capabil să ruleze programe scrise în limbajul său nativ. Există aproape la fel de multe limbaje de mașină diferite câte computere, dar toate sunt variații ale aceleiași idei: operații simple efectuate cu viteza fulgerului pe numere binare. Calculatoarele personale IBM folosesc limbajul mașină al familiei de microprocesoare 8086 deoarece hardware-ul lor se bazează în mod special 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șinilor era singurul limbaj pe care omul nu mai inventase nimic în acel moment. Pentru a salva programatorii de rigorile limbajului de programare a mașinilor, au fost create limbaje de nivel înalt (adică limbaje non-mașină), care au devenit un fel de punte de legătură între oameni și limbajul mașină al computerului. Limbile de nivel înalt funcționează prin programe de traducere care introduc „codul sursă” (un hibrid de cuvinte englezești și expresii matematice care este citit de o mașină) și în cele din urmă determină computerul să execute comenzile 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 text de program în limbajul mașinii, care este apoi executat separat.

1 Limbaj și sistem de programare - concept, esență

În prezent, există o dezvoltare rapidă a disciplinei științifice numite programare. În același timp, nu apar doar limbi noi, apar idei noi care măresc puterea și eficiența limbilor. Fără a intra în detalii despre vreuna dintre limbile existente sau nou dezvoltate, putem observa următoarea tendință: dezvoltarea limbilor se îndreaptă spre creșterea 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 condiție prealabilă pentru orice limbaj de programare modern. În acest caz, baza limbajului (setul de posibilități și construcții semantice oferite de limbaj) trebuie să aibă o putere minimă.

Cele mai generale concepte cu care operează un programator atunci când folosește un anumit limbaj de programare includ conceptele de program și mașină virtuală. Programul trebuie să îndeplinească 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 pentru care programul poate exista. Toate celelalte abstracții discutate în articol sunt grupate în jurul acestor abstracții de bază.

În unele cazuri, procesul de programare poate fi considerat un proces de modelare. În acest caz, este creat un program model care este capabil să implementeze comportamentul originalului descris în enunțul problemei. Prin urmare, în viitor, conceptul de model va servi ca 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 către mașină

Limbile orientate către mașină sunt limbaje ale căror seturi de operatori și mijloace vizuale depind în mod semnificativ de caracteristicile computerului (limbaj intern, structura memoriei etc.). Limbile orientate pe mașină vă permit să utilizați toate capabilităț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;

Previzibilitatea codului obiect și a ordinelor de memorie;

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

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

Complexitatea procesului de dezvoltare a programului (în special pentru

limbaje mașină și JSC), prost protejate de aspect

Viteză mică de programare;

Incapacitatea de a utiliza direct programe

compilate în aceste limbi pe alte tipuri de computere.

Limbile orientate către mașină sunt împărțite î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 individual are propriul limbaj de mașină specific (denumit în continuare ML), este instruit să efectueze operații specificate pe operanzii pe care îi definesc, deci ML este unul de comandă. Cu toate acestea, unele familii de calculatoare (de exemplu, ES Computers, IBM/370/ etc.) au un singur ME pentru calculatoare cu putere diferită. Comanda oricăruia dintre ele raportează informații despre locația operanzilor și tipul de operație care se efectuează.

În noile modele de computer, există tendința de a îmbunătăți limbajele interne prin mijloace mașină-hardware pentru a implementa comenzi mai complexe, care sunt mai aproape în acțiunile lor funcționale de operatorii limbajelor de programare algoritmică.

2.1.2 Limbaje de codare simbolică

Să continuăm povestea despre limbajele de comandă Limbajele de codare simbolică (denumite în continuare YSC), la fel ca 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 YSC cu simboluri (identificatori), a căror formă de scriere ajută programatorul reţine mai uşor conţinutul semantic al operaţiei. Acest lucru asigură o reducere semnificativă a numărului de erori la compilarea programelor.

Utilizarea adreselor simbolice este primul pas pentru crearea unui YASK. 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, limbaje care includ toate capacitățile YSC, prin introducerea extinsă a comenzilor macro - acestea se numesc Autocodes.

În diverse programe există câteva secvențe de comenzi destul de frecvent 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 macrocomenzi speciale și includerea acestora din urmă într-un limbaj de programare accesibil programatorului. Comenzile macro sunt traduse în comenzi de mașină în două moduri - aranjare și generare. Sistemul de organizare conține „schelete” - o serie de comenzi care implementează funcția necesară, indicată de o comandă macro. Instrucțiunile macro asigură transferul parametrilor actuali, care, în timpul procesului de traducere, sunt inserați în „scheletul” programului, transformându-l într-un adevărat program de mașină.

Un limbaj de programare este un limbaj formal conceput pentru a comunica între o persoană și un computer. Informațiile și algoritmul de procesare a datelor sunt specificate într-un limbaj de programare. Un computer electronic (calculator) percepe direct un program prezentat în 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 alcătuirea programelor, adică. un limbaj în care este scris un algoritm pentru a rezolva o problemă pe un computer.

Programarea pentru calculatoarele de prima generație a fost realizată exclusiv în limbajul mașinii. Limbajul mașină este un set de reguli pentru codificarea sub formă numerică a anumitor operații (în mare parte aritmetice). Pentru toate mașinile, este de înțeles doar sistemul de numere binar, care, totuși, pentru a scurta notația, programatorii l-au înlocuit cu octal.

Un sistem numeric este de obicei înțeles ca un set de tehnici de denumire și desemnare a numerelor. Sistemul obișnuit de scriere 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 prin faptul că baza sa, și anume valoarea numerică 8, este o putere a bazei sistemului de numere binar 2. De exemplu, se poate introduce numărul zecimal 65

· în sistemul numeric zecimal:

6 × 101 + 5 × 100 = 65;

în sistem octal ca

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

· iar în sistemul de numere binar în forma

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 permite introducerea acesteia într-o mașină și determină acțiunile computerului 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ă, de 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.

În cazul general, comanda trebuie să indice tipul de acțiune, 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 trebuie să fie executat după acesta. Pentru operații (sau operații) aritmetice, informațiile inițiale sunt date, de regulă, sub formă de două numere, prin urmare, în comandă trebuie specificate două adrese; Astfel, instrucțiunea trebuie să conțină un cod operațional care specifică tipul de operare a mașinii care trebuie efectuată și patru adrese: două adrese de operanzi, o adresă de rezultat și adresa următoarei instrucțiuni. De regulă, 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 (cu un număr cu unu mai mare, care este adresa comenzii următoare) este executată automat. De exemplu, dacă luăm codul 01 pentru operația de adăugare, atunci pentru a adăuga două numere din celulele numerotate 2051 și 2052 cu rezultatul plasat în celula numerotată 2345, într-o mașină cu trei adrese comanda ar 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 instrucțiunilor și alocarea separată a memoriei. Esența acestei tehnici este î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 specificate prin notații 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 limbajul mașinii numai prin aceea că, în loc de valori numerice care exprimă codul de operare a comenzii și adresele sale, sunt utilizate notații simbolice (litere). Prin urmare, în primele autocoduri, a existat o corespondență unu-la-unu între operațiile scrise într-un limbaj de programare (sau codare) simbolică și comenzile în limbajul mașinii, așa cum este indicat de simbolul 1:1 care a fost scris după numele codului. limba. De exemplu, AUTOCODE 1:1 – AUTOCODE unu la unu.

Îmbunătățirea ulterioară a autocodurilor s-a exprimat în apariția unor instrumente suplimentare care stabileau, conform regulilor uzuale, ordinea acțiunilor în formule aritmetice sau asigurau, în condițiile necesare, ramificarea procesului de calcul, repetarea ciclică a secțiunilor de program și alte operații. care decurg din condiţiile problemei. Astfel, codurile automate au pierdut treptat prefixul 1:1, iar limbajele lor de intrare nu au devenit pur mașină, ci orientate către mașină. Orientat către mașină înseamnă că aceste limbi au continuat să se bazeze pe sistemul de comandă al unui anumit computer. Primele limbaje orientate spre mașină au fost în general imperfecte. În unele limbi, descrierea secvenței de calcule era separată de formulele în sine, altele aveau simboluri complexe, care nu erau prea vizuale sau prea specializate, în timp ce 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 de a doua generație, a apărut nevoia de a crea limbaje care să fie în întregime concentrate pe specificul sarcinilor și să nu depindă de o anumită mașină. Această cerință a fost agravată și mai mult 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, mai degrabă decât de caracteristicile mașinilor. Ceea ce a ieșit în prim-plan a fost ceea ce era comun în diferite sarcini, iar acest lucru a reunit diferite limbi create în epoca dominației sarcinilor de calcul. Aceste limbaje sunt de obicei numite limbaje algoritmice formale sau pur și simplu algoritmice.

Este nevoie de multe de la un limbaj algoritmic formal. În primul rând, trebuie să fie vizual, care poate fi realizat folosind simboluri matematice existente și alte mijloace vizuale ușor de înțeles. În al doilea rând, ar trebui să fie flexibil, astfel încât orice algoritm să poată fi descris fără complicații inutile din cauza mijloacelor vizuale insuficiente. Î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, în mai multe etape - un algoritm complex poate fi descris ca o combinație de algoritmi mai simpli. Și, în sfârșit, limbajul trebuie să fie unificat - pe de o parte, numărul de mijloace vizuale 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. Acest 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 folosind limbajul algoritmic;

· un mijloc de comunicare între oameni - o descriere a procesului încheiat de o persoană ar trebui să fie accesibilă celorlalți;

· un intermediar între o persoană și o mașină - în acest caz, traducerea dintr-un limbaj algoritmic într-un limbaj mașină 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 experți americani în programare a publicat primul raport despre limbajul Fortran. Denumirea limbajului provine de la expresia formule TRANslation - transformarea formulelor. Limba Fortran nu numai că a supraviețuit până în prezent, dar deține cu încredere primul loc în lume în ceea ce privește prevalența. Printre motivele unei astfel de longevitate, se remarcă structura simplă atât a Fortranului însuși, cât și a traducătorilor destinați acestuia. Un program Fortran este scris ca o secvență de propoziții sau operatori (un operator este o descriere a unei transformări a informațiilor) și este formatat conform anumitor reguli. Aceste reguli impun restricții, în special, asupra formei de înregistrare și a locației părților operatorului în linia formularului pentru operatorii de înregistrare. Un program scris în Fortran este format din 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 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 (alcătuire 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 comune pentru a asigura comunicarea între segmente.

Până în 1962, apariția limbajului cunoscut sub numele de Fortran IV, care a devenit cel mai des folosit în prezent, datează de la început. Activitatea comisiei de la Asociația Americană de Standarde (ASA) datează din aceeași perioadă, care a dezvoltat (până în 1966) două standarde - limbile FORTRAN și 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 un subset al Fortran IV.

Limba Fortran continuă să se dezvolte și să se îmbunătățească până în prezent, influențând crearea și dezvoltarea altor limbi. De exemplu, Fortran stă la baza limbajului interactiv 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 lui Fortran (1957), a apărut Limbajul ALGOritmic (un limbaj algoritmic), creat pe baza unei cooperări internaționale extinse. În 1960, a fost publicată o comunicare oficială despre un limbaj algoritmic numit ALGOL-60, unde numărul 60 indică anul în care limba a fost aprobată.

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

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ă care utilizează numai operații algebrice și funcții elementare. Cele mai simple obiecte din care sunt compuse expresiile sunt numerele întregi și aproximative reale și valorile booleene.

ALGOL este recunoscut pe scară largă ca un instrument foarte convenabil 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 au oferit programare pentru cea mai mare parte a problemelor științifice și tehnice (în principal cele de calcul). Dar niciuna dintre aceste limbi, desigur, nu a făcut posibilă descrierea tuturor problemelor care apar fără excepție. Prin urmare, cam în același timp, au apărut limbaje algoritmice cu o orientare diferită, răspunzând nevoilor acelor noi domenii ale științei și tehnologiei care au început să se dezvolte intens în anii următori.

Un exemplu sunt sarcinile economice - sarcini de contabilitate pentru active materiale, produse manufacturate, personal, finante etc. întreprinderi sau industrii. Pentru astfel de sarcini, acțiunile principale sunt operațiunile de intrare și ieșire cu un număr relativ mic de calcule simple, precum și procesarea secvențială a matricelor de date. Descrierea acțiunilor de acest gen poate fi realizată în COBOL (COMmmon Business Oriented Language), propus de IBM în 1959.

Problemele de prelucrare a informației simbolice apar în primul rând în domeniul cercetării științifice. Aceasta este, de exemplu, transformarea formulelor, rezolvarea ecuațiilor (nu numeric, ci sub formă analitică), analiza și sinteza de texte în limbaj artificial sau natural (în special, programare automată și traducere automată) etc.

Printre limbajele 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 un element primar (o literă sau un număr) sau, la rândul său, o listă. În acest fel pot apărea structuri arbitrar complexe.

Un alt limbaj, Snobol, este folosit în principal pentru analiza automată a textelor scrise în limbi naturale. Conceptul principal al acestuia este un șir - o secvență arbitrară de litere, numere și alte caractere. Operația principală este de a căuta într-un șir o parte dintr-un șir construit conform unei imagini date și de a înlocui această parte cu un alt șir. Atât imaginea, cât și liniile care o înlocuiesc sunt compuse din elemente individuale de tip simplu. Rezultatul căutării determină succesiunea acțiunilor ulterioare. Limba Snoball 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ă ideea umană, dacă nu despre esență, atunci despre forma problemei care se rezolvă, cu o aproximare maximă la forma din pe care oamenii sunt obișnuiți să descrie aceste probleme și ținând cont de conexiunile logice pe care a învățat să le identifice î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 un limbaj mașină decât de un limbaj uman. Lisp se caracterizează prin utilizarea aparatului așa-numitelor descrieri recursive, utilizat pe scară largă în logica matematică, în cercetările asupra fundamentelor matematicii etc.

Abundența limbajelor algoritmice care a apărut în timpul celei de-a doua generații de computere, pe de o parte, este explicată în mare măsură de modă și, pe de altă parte, de incapacitatea oricăruia dintre limbajele propuse de a descrie convenabil toate problemele. care a apărut. A treia generație de computere a pus pe ordinea de zi dezvoltarea unei noi abordări pentru crearea 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 (Programming Language/1 - one Programming Language). Se bazează pe limbajele Fortran și Cobol, o serie de instrumente și concepte vizuale sunt preluate din Algol și din alte limbi, în special limbaje pentru procesarea informațiilor simbolice. Apoi au fost publicate succesiv 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 sursă 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 în linii mari pe conceptele 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 subliniază bazele unui nou limbaj algoritmic universal, numit ALGOL-68. În acest limbaj, numărul de concepte de bază este redus la un minim rezonabil pentru a obține o putere figurativă ridicată a limbajului, asigurând libertatea de combinare și interacțiune a acestor concepte între ele.

Limbajul ALGOL-68 este tradițional, deoarece se străduiește să ofere tuturor utilizatorilor instrumente gata făcute pentru a-și descrie algoritmii. Până acum, această abordare nu a putut împiedica apariția unor limbi din ce în ce mai specializate. Astfel, î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 structuri similare celor existente în PL/l și Algol-68, dar Pascal este mai concis. Limbajul Pascal este aproape la fel de simplu ca BASIC, dar Pascal contribuie la introducerea tehnologiei moderne de programare bazată pe construirea treptată a unui program format din proceduri mici, bine definite, adică. 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, împreună cu conceptul de algoritm, stau la baza programării.

Bazat pe limbajul Pascal, limbajul Ada a fost creat la sfârșitul anilor 70, care are un domeniu de aplicare foarte larg. Limbajul este numit după prima femeie programatoare, Ada Lovelace. Limbajul algoritmic al Iadului a suferit anumite schimbări în procesul de evoluție și acum are toate trăsăturile distinctive ale unui limbaj standard. Este un limbaj foarte structurat și este deosebit de potrivit 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ă limbajul 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 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ă designurilor simple, secvențiale ale fluxului 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 direcții nu este evitarea limbilor dialectale specializate, ci crearea unei baze comune pentru „programarea dialectelor”.

Limba care se extinde trebuie să aibă mijloacele de a analiza textele oricărei extensii pentru a afla ce texte sunt corecte din punct de vedere gramatical pentru un anumit dialect și ce structură au acestea. Un astfel de limbaj ar trebui să ofere viitorilor săi consumatori o serie de capabilități importante: de exemplu, să construiască modele semantice (adică să introducă termeni noi pentru a descrie conceptele pe care le exprimă, relația lor cu unele concepte de bază, inițiale și cu conceptele introduse mai devreme), să descrie implementarea extensiilor – modalități de prezentare cea mai adecvată a acestora folosind instrumentele disponibile calculatoarelor moderne. Se pot observa și alte trăsături caracteristice ale limbilor extensibile.

Buna ziua, o sa raspund la o parte din intrebare:
Nu am fost niciodată implicat în programare, așa că aș dori să obțin un răspuns detaliat despre unde este mai bine să încep și ce să studiez pentru a fi mai ușor, mulțumesc anticipat.

Am scris repede, pot fi erori.
Sau, ce limbi să alegeți, astfel încât mai târziu să puteți scrie cu ușurință în 10 limbi. (important, verifica, nu se pierde timpul).

************************************************************************************************************

Predau un limbaj de programare de câțiva ani.
Am urmărit diferiți oameni. De regulă, subiectul ales conduce o persoană la limbă.
Unora le plac jocurile, altora le plac programele. cineva vrea să scrie roboți etc.

De regulă, după ce a început să învețe o limbă Vine un moment în care o persoană învață mai multe despre limbă și își dorește deja să scrie aplicații complet diferite.
Asta nu înseamnă că s-a răzgândit, abia începe să înțeleagă posibilitățile.

Apoi încep îndoielile dacă ați ales limbajul de programare potrivit, etc.

M-am gândit câțiva ani la această întrebare și am ajuns la această concluzie.

1. Eroare. Nu puteți alege o limbă cu profil îngust.
Mai întâi trebuie să alegeți o limbă de uz general pentru a studia. Python este mai potrivit pentru asta.
Python va deschide calea către orice software, deoarece conține un număr mare de biblioteci.
De exemplu, puteți scrie site-uri web folosind Django. Sau puteți scrie programe grafice, de exemplu, folosind PyQt (o bibliotecă scrisă în C++, care rulează Python).
Puteți face teste sau învățare automată (adică faceți site-uri web și programe inteligente care sunt capabile să ia singure decizii. Toate aceste pachete folosesc biblioteca NumPy scrisă în C. Și există un număr mare de ele.
Skipy este un pachet care conține o colecție de programe pentru orice procesare, indiferent cât de complexă.

Sper că posibilitățile sunt clare.

Python este un limbaj tipizat dinamic. adică jumătate din muncă este făcută pentru tine.
După ce ați studiat Python, veți intra în general în programare și veți face deja software și, eventual, veți câștiga bani.

Dacă îți dai seama că ești interesat, atunci poți merge mai departe.
Amintiți-vă că am spus la început că este important să alegeți un limbaj de uz general.

Deci, iată a doua regulă, Dacă totuși decideți să deveniți un profesionist de nivel înalt, trebuie să alegeți o a doua limbă, care stă la baza majorității celorlalte limbi.

Acesta este limbajul C.
C este destul de simplu, un limbaj clar, foarte concis și rapid.
Este necesar pentru a deschide calea către toate celelalte limbaje asemănătoare C.
De fapt, de exemplu, pentru a înțelege C++, trebuie doar să te uiți la diferențe.

Am ajuns la asta de mulți ani, nu cu mult timp în urmă am dat peste un videoclip de la Harvard, am fost foarte mulțumit că am avut dreptate.
Multe universități folosesc această abordare.

De ce funcționează această schemă?

1. Python ca limbaj de uz general vă va oferi o introducere în diferite programe software.
Îți vei da seama ce vrei fără să treci dincolo de limbaj. Vorbesc în special despre timp, pentru că pierderea lui este prea scumpă.

2. Te vei familiariza cu paradigmele care sunt în fiecare limbă, tipul de obiect (de exemplu, listă, șir etc.).
Te vei familiariza cu variabilele. cu operatii pe obiecte si vei intelege ca exista un limbaj din interior.

O să explic mai simplu.În fiecare zi ne folosim capul ca pe un computer.
De exemplu, soția mea m-a trimis la magazin pentru că avea de gând să gătească borș.
De regulă, majoritatea oamenilor notează, cumpără sfeclă, morcovi etc.
Adică ai aranjat rapid toate acțiunile din cap.
Du-te la un magazin. Ia lista, citește-o, găsește contoare de mâncare, pune-o în cărucior, plătește-o, adu-o acasă. dă-i soției tale.

Au fost multe operații în capul tău.

Este la fel cu un computer, doar computerul trebuie explicat.
De exemplu, dacă am scrie un program. mergând la magazin, am avea nevoie de ceva care să-i spună computerului ce să facă.

Tocmai de aceea au fost inventate limbajele de programare.

Le spun adesea elevilor mei: că toată lumea este deja programator, deoarece efectuează anumite acțiuni în fiecare zi.
Pentru program a existat aceeași listă, sau mai degrabă un tip de date, sau un tip de obiect, care se numește listă.
Este doar notat în limbaj, de exemplu, în Python prin două paranteze pătrate [„sfecla”, „morcovi”]

Vă rugăm să rețineți că un limbaj de programare, de regulă, a fost deja inventat pentru a se potrivi nevoilor oamenilor.
Puteți adăuga orice pe listă, cum ar fi sare.
Această zonă se numește operații cu obiecte.
Dacă am calculat rapid în cap, ne-am urcat la tejghea, am întins mâna și am pus, de exemplu, morcovi în coș.
Ei bine, computerul trebuie explicat. Adică înțelegem. că trebuie să adăugați aceiași morcovi în coș, dar computerul va înțelege doar comanda sa, de exemplu, ar suna adăugarea în Python adăuga.

Cred că procesul este clar.

Apoi voi reveni la afirmațiile de mai sus.
Deci, Python vă va oferi posibilitatea de a începe să scrieți orice, programe. jocuri, programe pentru Android, site-uri web.
Dacă cineva vă spune (repet) că Python este lent, nu credeți.
Folosești YouTube? Deci, cea mai mare parte este scrisă în Python. (sursa M. Lutz).
În al doilea rând, așa cum am spus mai devreme, Python are un număr mare de biblioteci, de exemplu, luați PyQt, scriind programe grafice. Biblioteca în sine este scrisă în C++ (cel mai rapid limbaj de astăzi). Și îl gestionăm folosind Python.
Esența programării este simplă. Am luat un widget care avea deja o mulțime de acțiuni incluse și programul era gata.

Dar mai este un lucru important de care ai nevoie.
Înainte de a începe programarea, ai doar o dorință, dar înăuntru rămân întrebări, ce limbă să alegi, apoi îndoieli, este limbajul potrivit?
Acesta este motivul pentru care este important să luați primul Python. Acesta va fi exact același limbaj, deoarece vă va conduce să înțelegeți ce veți programa de fapt.

După ce ai scris aplicații în Python, după aproximativ 1-1,5 ani, vei începe să te înțelegi pe tine însuți, adică să înțelegi ce vrei cu adevărat.

Veți începe să dezvoltați dorințe reale, specifice.
Adică, de exemplu, veți înțelege cu siguranță că veți scrie site-uri web. Cadrul Django va fi mai mult decât suficient pentru tine.

Mă opresc aici.
Conectarea Django Python este o abordare foarte periculoasă.
întrucât Django este o lume atât de mare încât, atunci când este purtată de ea, o persoană începe să dobândească o astfel de dependență ca dependența de cadru. Ce este?
O persoană începe să-și piardă capacitatea de a scrie în Python, deoarece Django este un cadru complet autonom, care are propriile module, clase, arhitectură și structură.

Și Python însuși începe să fie uitat.

Important. Studiați, de exemplu, Django și PyQt. Care e ideea?
Asigurați-vă că studiați ce vă va dezvolta în Python pur. Recomand Android pentru că nu este doar util, ci și promițător.

Apropo, în treacăt, voi răspunde la întrebarea, este necesar să înveți Python pentru Django?
Da nevoie. Ce ar trebui să studiezi? Cel puțin, tipuri de obiecte și o înțelegere inițială a POO.
Tipurile de obiecte sunt necesare pentru a minimiza pierderea de timp.
De exemplu, am urmărit un nou venit luptându-se timp de o săptămână. iar apoi a declarat că nu a pus nici măcar un ghilimeleu.

Dacă ar fi studiat tipurile de obiecte, ar fi văzut imediat că în fragmentul de cod șiruri de caractere (tip obiect), sunt notate prin ghilimele simple sau duble.

În al doilea rând, ajutorul Django nu va fi clar, deoarece explică tipurile de date.

Și în sfârșit voi termina. Deoarece am eșuat deja VK C de mai multe ori, dar tot amân.

Până când scrieți Python, veți avea o idee despre ceea ce doriți.
Prin urmare, veți alege în mod conștient următorul limbaj de programare.

Pentru a nu face o greșeală după Python, trebuie să studiați C.
Pentru că astfel de limbi. precum PHP, Java. C++, C Sharp și multe altele au o sintaxă C similară.
Însuși studiul următoarei limbi este pur și simplu vizualizarea și aplicarea imediată a diferențelor.

Acesta este modul în care învățarea doar a două limbi vă va oferi acces la o duzină de limbi.

Repet, importantul în această abordare este progresul fără a pierde timpul.

Puteți începe prin a urmări cursul gratuit,
o tehnică pentru înțelegerea instantanee a pitonului.
Citiți în imagine ce este

Mai sus am descris procesul de mers la magazin. Și pentru un motiv. Mulți oameni nu înțeleg că limbajul a fost inventat pentru a face viața mai ușoară. (așa a scris fata Anna, așa cum a spus ea, i-a scăpat.).

Dar neînțelegerea acestui punct simplu îi împiedică pe cei mai mulți oameni să învețe o limbă. Au o tulburare în cap, limbajul este de la sine, iar gândirea elevului este de la sine. Și omul începe să se gândească, cum poate să gândească ca un programator în acel moment? cum gândește deja ca un programator.

Mi-am exprimat parerea, ramane la latitudinea ta sa hotarasti.
Ți-am arătat mulți factori. pe care nu le-ați luat în considerare anterior..
Dar cel puțin la mine funcționează.

Sper că articolul s-a dovedit a fi simplu și cuprinzător.

Inca un detaliu.
Este important să facem limbajul o parte a vieții.
Cum înțelegem un limbaj de la zero la programarea industrială? ()

Vă doresc succes.

Multumesc pentru incredere.

Acasă > Prelegere

Lectura7 . Limbaje și sisteme de programare.
Structură de date.

Limbaje de programare și clasificările lor. Conceptul de sistem de programare, principalele sale funcții și componente. Principii de funcționare ale mediilor de programare. Medii de programare „operaționale” și „modulare”: avantaje și dezavantaje. Interpreți și compilatori. Difuzarea de programe și procese aferente.

Datele și prelucrarea acestora. Simplu (tipuri de date nestructurate). Tipuri de date structurate.

Limbaje de programare și clasificările lor.

Limbaj de programare- un sistem formal de semne conceput pentru a descrie algoritmi într-o formă convenabilă pentru executant (de exemplu, un computer). Un limbaj de programare definește un set de reguli lexicale, sintactice și semantice utilizate pentru alcătuirea unui program de calculator. Acesta permite programatorului să determine exact la ce evenimente va reacționa computerul, cum vor fi stocate și transmise datele și ce acțiuni ar trebui efectuate asupra acestuia în diferite circumstanțe.

De la crearea primelor mașini programabile, omenirea a venit deja cu mai mult de două mii și jumătate de limbaje de programare. În fiecare an numărul lor este completat cu altele noi. Unele limbi sunt folosite doar de un număr mic de proprii dezvoltatori, în timp ce altele devin cunoscute de milioane de oameni. Programatorii profesioniști folosesc uneori mai mult de o duzină de limbaje de programare diferite în munca lor.

Creatorii de limbaj interpretează conceptul diferit limbaj de programare. Printre comunitățile de locuri recunoscute de majoritatea dezvoltatorilor se numără următoarele:

    Funcţie: Un limbaj de programare este destinat scrierii de programe de calculator care sunt utilizate pentru a transmite instrucțiuni către un computer pentru a efectua un anumit proces de calcul și pentru a organiza controlul dispozitivelor individuale.

    Sarcină: Un limbaj de programare diferă de limbajele naturale prin faptul că este conceput pentru a transmite comenzi și date de la o persoană la un computer, în timp ce limbajele naturale sunt folosite numai pentru ca oamenii să comunice între ei. În principiu, putem generaliza definiția „limbajelor de programare” - aceasta este o modalitate de transmitere a comenzilor, comenzilor, îndrumări clare pentru acțiune; întrucât limbile umane servesc și la schimbul de informații.

    Execuţie: Un limbaj de programare poate folosi constructe speciale pentru a defini și manipula structurile de date și pentru a controla procesul de calcul.

Primele limbaje de programare au fost foarte primitive și diferă puțin de secvențele formalizate, ordonate de uni și zerouri pe care le putea înțelege un computer. Utilizarea unor astfel de limbaje a fost extrem de incomod din punctul de vedere al programatorului, deoarece acesta trebuia să cunoască codurile numerice ale tuturor comenzilor mașinii și trebuia să aloce el însuși memorie pentru comenzile și datele programului.

Pentru a facilita comunicarea între o persoană și un computer, limbaje de programare precum Asamblator. Mărimile variabile au început să fie reprezentate prin nume simbolice. Codurile de operare numerice au fost înlocuite cu mnemonice care sunt mai ușor de reținut. Limbajul de programare s-a apropiat de limbajul uman și s-a îndepărtat de limbajul comenzilor mașinii.

Limbajele de programare au început să apară la mijlocul anilor '50. Una dintre primele limbi de acest tip a fost limba Fortran(Engleză FORTRAN din FORmula TRANslator - traducător de formule), dezvoltat în 1957. Fortran este folosit pentru a descrie un algoritm pentru rezolvarea problemelor științifice și tehnice folosind un computer digital. La fel ca și primele calculatoare, acest limbaj a fost destinat în principal realizării de științe naturale și calcule matematice. Într-o formă îmbunătățită, această limbă a supraviețuit până în zilele noastre. Dintre limbile moderne de nivel înalt, este una dintre cele mai utilizate în cercetarea științifică. Cele mai comune variante sunt Fortran II, Fortran IV, EASIC Fortran și generalizările acestora.

După Fortran, limba a apărut în 1958-1960 ALGOL(Algol-58, Algol-60) (ALGOL engleză din ALGOrithmic Language - limbaj algoritmic). ALGOL a fost îmbunătățit în 1964-1968 - ALGOL-68. ALGOL a fost dezvoltat de un comitet care includea oameni de știință europeni și americani. Aparține limbilor de nivel înalt și vă permite să traduceți cu ușurință formule algebrice în comenzi de program. Algol era popular în Europa, inclusiv în URSS, în timp ce Fortranul comparabil era comun în SUA și Canada. Algol a avut o influență semnificativă asupra tuturor limbajelor de programare dezvoltate ulterior și, în special, asupra limbajului Pascal. Acest limbaj, ca și Fortran, a fost destinat rezolvării problemelor științifice și tehnice. În plus, acest limbaj a fost folosit ca mijloc de predare a elementelor de bază ale programării - arta de a scrie programe.

De obicei, termenul ALGOL înseamnă limba ALGOL-60, in timp ce ALGOL-68 considerată ca o limbă independentă. Chiar și atunci când Algol aproape că a încetat să fie folosit pentru programare, a rămas limba oficială pentru publicarea algoritmilor.

În 1959 – 1960 limba a fost dezvoltată COBOL(Engleză COBOL de la COMmmom Business Oriented Language - o limbă comună orientată spre afaceri). Acesta este un limbaj de programare de a treia generație destinat în principal dezvoltării de aplicații de afaceri. Cobol a fost destinat și soluționării problemelor economice, prelucrării datelor pentru bănci, companii de asigurări și alte instituții de acest gen. Dezvoltatorul primului standard Cobol unificat a fost Grace Hopper ( bunica Cobola).

COBOL este de obicei criticat pentru că este verbos și greoi, deoarece unul dintre scopurile creatorilor limbii a fost acela de a face structurile cât mai aproape de limba engleză. (Cobol este încă considerat limbajul de programare în care au fost scrise cele mai multe linii de cod). În același timp, COBOL dispunea de facilități excelente de lucru cu structuri de date și fișiere pentru vremea sa, ceea ce îi asigura o viață lungă în aplicațiile de afaceri, cel puțin în Statele Unite.

Aproape simultan cu Cobol (1959 - 1960), limba a fost creată la Institutul de Tehnologie din Massachusetts Lisp(LISP engleză de la LISt Processing - list processing). Lisp se bazează pe reprezentarea unui program ca un sistem de liste liniare de simboluri, care sunt, de asemenea, principala structură de date a limbajului. Lisp este considerat al doilea cel mai vechi limbaj de programare de nivel înalt după Fortran. Acest limbaj este utilizat pe scară largă pentru procesarea informațiilor simbolice și este folosit pentru a crea software care simulează activitățile creierului uman.

Orice program Lisp constă dintr-o secvență expresii(forme). Rezultatul programului este evaluarea acestor expresii. Toate expresiile sunt scrise sub formă liste- una dintre structurile de bază ale Lisp, astfel încât acestea să poată fi create cu ușurință prin limbajul în sine. Acest lucru vă permite să creați programe care modifică alte programe sau macrocomenzi, permițându-vă să extindeți semnificativ capacitățile limbajului.

Sensul principal al unui program Lisp este „viața” în spațiu simbolic: mișcare, creativitate, amintire, creare de lumi noi etc. Lisp ca metaforă pentru creier, simbol, metaforă pentru semnal: „Cum are loc analiza biologică a semnalelor de către creier, cum se transformă un factor extern - un efect fizic și chimic, care este un iritant pentru organism. un semnal semnificativ din punct de vedere biologic, deseori vital, determinând tot comportamentul unei persoane sau al unui animal și cum există o împărțire a diferitelor semnale în pozitive, negative și indiferente Semnalul este deja un semn de identificare un grup de stimuli complexi, interconectati printr-o istorie comuna si relatii cauza-efect In acest complex, un sistem de stimuli, stimulul semnal in sine este un element constitutiv si, in alte circumstante, rolul sau poate apartine altuia stimulul din complex Semnalul concentrează întreaga experiență trecută a animalului sau a persoanei.”

La mijlocul anilor '60 (1963) limba a fost creată la Dartmouth College (SUA) DE BAZĂ(Engleză BASIC din Beginner’s Allpurpose Instruction Code - cod de instrucțiuni simbolice universale pentru începători). De-a lungul timpului, pe măsură ce au început să apară și alte dialecte, acest dialect „original” a devenit cunoscut sub numele de Dartmouth BASIC. Limbajul s-a bazat parțial pe Fortran II și parțial pe Algol-60, cu adăugiri pentru a-l face potrivit pentru partajarea timpului și, mai târziu, pentru procesarea textului și aritmetica matriceală. BASIC a fost implementat inițial pe mainframe-ul GE-265 cu suport pentru mai multe terminale. Contrar credinței populare, la momentul înființării era un limbaj compilat.

BASIC a fost conceput astfel încât studenții să poată scrie programe folosind terminale de partajare a timpului. A fost creat ca o soluție la problemele asociate cu complexitatea limbilor mai vechi. A fost destinat utilizatorilor mai „simpli”, nu atât de interesați de viteza programelor, ci pur și simplu de capacitatea de a folosi computerul pentru a-și rezolva problemele. Datorită simplității limbajului BASIC, mulți programatori începători își încep călătoria de programare cu acesta.

La sfârșitul anilor 60 - începutul anilor 70 a apărut limbajul Fort(Engleză A PATRA - a patra). Acest limbaj a început să fie folosit în problemele de control al diferitelor sisteme după ce autorul său, Charles Moore, a scris în el un program menit să controleze radiotelescopul Observatorului Arizona.

O serie de proprietăți, și anume interactivitate, flexibilitate și ușurință în dezvoltare, fac din Forth un limbaj foarte atractiv și eficient în cercetarea aplicată și în crearea de instrumente. Domeniile evidente de aplicare pentru acest limbaj sunt sistemele de control încorporate. De asemenea, este folosit în programarea computerelor care rulează diverse sisteme de operare.

Limba a apărut în 1972 Pascal a fost numit după marele matematician francez al secolului al XVII-lea, inventatorul primei mașini aritmetice din lume, Blaise Pascal. Acest limbaj a fost creat de informaticianul elvețian Niklaus Wirth ca limbaj pentru predarea metodelor de programare. Pascal este un limbaj de programare de uz general.

Caracteristicile limbajului sunt tastarea strictă și prezența instrumentelor de programare structurale (procedurale). Pascal a fost una dintre primele astfel de limbi. Potrivit lui N. Wirth, limbajul ar trebui să contribuie la disciplina programării, prin urmare, alături de tastarea strictă, în Pascal posibilele ambiguități sintactice sunt minimizate, iar sintaxa în sine este intuitivă chiar și atunci când te familiarizezi cu limbajul.

Limbajul Pascal învață nu numai cum să scrieți corect un program, ci și cum să dezvoltați corect o metodă de rezolvare a unei probleme și să alegeți modalități de reprezentare și organizare a datelor utilizate în problemă. Din 1983, Pascal a fost introdus în cursurile de informatică din liceele din SUA.

Samuel Peipert a dezvoltat un limbaj pentru predarea copiilor de școală primară Siglă. Este simplu și bogat în capacități.

Bazat pe limbajul Pascal, limba a fost creată la sfârșitul anilor '70 Ada, numit după talentata matematiciană Ada Lovelace (Augusta Ada Byron - fiica poetului Byron). Ea a fost cea care, în 1843, a fost capabilă să explice lumii capabilitățile motorului analitic al lui Charles Babbage. Limbajul Ada a fost dezvoltat la ordin al Departamentului de Apărare al SUA și a fost inițial destinat să rezolve problemele de control al zborului spațial. Acest limbaj este folosit în problemele de control al sistemelor de bord ale navelor spațiale, sistemele de susținere a vieții pentru astronauți în zbor și procese tehnice complexe.

Ada este un limbaj de programare structurat, modular, orientat pe obiecte, care conține facilități de nivel înalt pentru programarea proceselor paralele. Sintaxa lui Ada este moștenită din limbi precum Algol sau Pascal, dar extinsă și, de asemenea, făcută mai strictă și mai logică. Ada este un limbaj puternic tipizat, exclude lucrul cu obiecte care nu au tipuri, iar conversiile automate ale tipurilor sunt reduse la un minim absolut.

Potrivit lui Stephen Zeigler, dezvoltarea de software în Ada este în general cu 60% mai ieftină, iar programul dezvoltat are de 9 ori mai puține defecte decât atunci când se folosește limbajul C.

În prezent, un limbaj popular printre programatori este Si(C este o literă din alfabetul englez). Limbajul C provine din două limbi - BCPLȘi B. În 1967, Martin Richards a dezvoltat BCPL ca limbaj pentru scrierea de software și compilatoare de sisteme. În 1970, Ken Thompson a folosit B pentru a crea versiuni timpurii ale sistemului de operare UNIX pe computerul DEC PDP-7. Atât în ​​BCPL, cât și în B, variabilele nu au fost împărțite în tipuri - fiecare valoare de date ocupa un cuvânt în memorie și responsabilitatea de a distinge, de exemplu, între numere întregi și numere reale a căzut în întregime pe umerii programatorului.

Limbajul C a fost dezvoltat (pe baza B) de Dennis Ritchie de la Bell Laboratories și a fost implementat pentru prima dată în 1972 pe un computer DEC PDP-11. C a câștigat faima ca limbaj al sistemului de operare UNIX. Astăzi, aproape toate sistemele de operare majore au fost scrise în C sau C++. Două decenii mai târziu, C este disponibil pe majoritatea computerelor. Este independent de hardware.

La sfârșitul anilor 70, Xi a evoluat în ceea ce numim „Xi tradițional”. În 1983, Comitetul național american pentru standarde de procesare a computerelor și informațiilor a stabilit un standard unificat pentru această limbă.

Este unul dintre limbajele de programare universale. Spre deosebire de Pascal, acesta conține capacitatea de a accesa direct anumite instrucțiuni ale mașinii și anumite zone ale memoriei computerului. Si este utilizat pe scară largă ca limbaj instrumental pentru dezvoltarea sistemelor de operare, traducătorilor, bazelor de date și a altor programe de sistem și aplicații. Si este un limbaj de programare de uz general bine cunoscut pentru eficiența, economia și portabilitatea sa. În multe cazuri, programele scrise în Si, comparabil ca viteză cu programele scrise în limbaj asamblator. În același timp, au o vizibilitate mai bună și sunt mai ușor de întreținut. Si combină eficiența și puterea într-un limbaj relativ mic.

O altă limbă, care este considerată limba viitorului, a fost creată la începutul anilor '70 de un grup de specialiști de la Universitatea din Marsilia. Aceasta este limba Prolog. Și-a luat numele de la cuvintele „Programare în limbajul LOGIC”. Acest limbaj se bazează pe legile logicii matematice. La fel ca limbajul Lisp, Prolog este folosit în principal în cercetarea în domeniul simulării software a activității creierului uman. Spre deosebire de limbile descrise mai sus, acest limbaj nu este algoritmic. Aparține așa-numitului descriptiv (din engleza descriptive - descriptive) - limbi descriptive. Un limbaj descriptiv nu necesită programatorului să dezvolte toate etapele unei sarcini. În schimb, conform regulilor unui astfel de limbaj, programatorul trebuie să descrie o bază de date corespunzătoare problemei care se rezolvă și un set de întrebări la care trebuie să se răspundă folosind datele din această bază de date.

În ultimele decenii, programarea a apărut și a primit o dezvoltare semnificativă. orientat pe obiecte o abordare. Aceasta este o metodă de programare care imită lumea reală: informația folosită pentru a rezolva o problemă este reprezentată ca un set de obiecte care interacționează. Fiecare dintre obiecte are propriile sale proprietăți și moduri de comportament. Interacțiunea obiectelor se realizează prin transmiterea mesajelor: fiecare obiect poate primi mesaje de la alte obiecte, își poate aminti informații și le poate procesa într-un anumit mod și, la rândul său, poate trimite mesaje. La fel ca în lumea reală, obiectele își stochează proprietățile și comportamentul împreună, moștenind unele dintre ele de la obiectele părinte.

Ideologia orientată pe obiect este utilizată în toate produsele software moderne, inclusiv în sistemele de operare.

Primul limbaj orientat pe obiecte Simulare - 67 a fost creat ca mijloc de simulare a funcționării diverselor dispozitive și mecanisme. Majoritatea limbajelor de programare moderne sunt orientate pe obiecte. Printre acestea se numără cele mai recente versiuni ale limbii Turbo - Pascal , C ++ , Ada si altii.

În prezent, sistemele sunt utilizate pe scară largă programare vizuală Vizual De bază , Vizual C ++ , Delphi si altii. Acestea vă permit să creați pachete de aplicații complexe cu o interfață de utilizator simplă și convenabilă.

Exista variat clasificări ale limbajelor de programare . Conform celei mai comune clasificări, toate limbajele de programare sunt împărțite în limbi scăzut, înaltȘi super înalt nivel.

Pentru grup limbi nivel scăzut include limbaje de mașină și limbaje de codare simbolică: (Autocode, Assembler). Operatorii acestui limbaj sunt aceleași instrucțiuni de mașină, dar scrise în coduri mnemonice, și nu adrese specifice, ci nume simbolice sunt folosite ca operanzi. Toate limbile de nivel scăzut sunt direcționate către un anumit tip de computer, adică sunt dependente de mașină. Limbile orientate către mașină sunt limbaje ale căror seturi de operatori și mijloace grafice depind în mod semnificativ de caracteristicile computerului (limbaj intern, structura memoriei etc.).

Următorul grup, semnificativ mai mare, este format din limbaje de programare nivel inalt . Acestea sunt Fortran, Algol, Cobol, Pascal, BASIC, C, Prolog etc. Aceste limbi sunt independente de mașină deoarece ele sunt concentrate nu pe sistemul de comandă al unui anumit computer, ci pe sistemul de operanzi caracteristici înregistrării unei anumite clase de algoritmi. Cu toate acestea, programele scrise în limbaje de nivel înalt ocupă mai multă memorie și sunt mai lent de executat decât programele scrise în limbaje de mașină.

LA limbi nivel ultra-înalt numai ALGOL-68 și APL pot fi atribuite. Avansarea acestor limbi s-a datorat introducerii de operațiuni și operatori super-puternici.

ALGOL-68, pe parcursul dezvoltării căruia s-a încercat oficializarea descrierii limbajului, ceea ce a dus la apariția unor programe abstracte și concrete. Un program abstract este creat de un programator, un program concret este derivat din primul. Se presupune că prin această abordare este fundamental imposibil să se genereze un program specific incorect din punct de vedere sintactic (și ideal semantic). Limbajul APL este clasificat ca un limbaj de nivel ultra-înalt datorită introducerii operațiunilor și operatorilor super-puternici. Scrierea de programe în acest limbaj este compactă.

Altă clasificare împarte limbajele în limbaje de procesare computațională și simbolică. Primul tip include Fortran, Pascal, Algol, BASIC, C, al doilea tip include Lisp, Prolog, Snoball etc.

În informatica modernă, se pot distinge două direcții principale de dezvoltare a limbajelor de programare: procedurală și non-procedurală.

Programare procedurală a apărut în zorii tehnologiei informatice și s-a răspândit. În limbajele procedurale, programul descrie în mod explicit acțiunile care trebuie efectuate, iar rezultatul este specificat doar prin modul în care este obținut folosind o anumită procedură, care este o anumită secvență de acțiuni.

Printre limbile procedurale, ele disting pe rând structuralȘi săli de operație limbi. ÎN structuralÎn limbi, structuri algoritmice întregi sunt scrise cu un singur operator: ramuri, cicluri etc. ÎN săli de operațieÎn limbi, se folosesc mai multe operațiuni pentru aceasta. Următoarele sunt utilizate pe scară largă limbaje structurale: Pascal, C, Ada, PL/1. Printre săli de operație Sunt cunoscute Fortran, BASIC, Focal.

Non-procedural (declarativ) programare a apărut la începutul anilor 70 ai secolului XX, dar dezvoltarea sa rapidă a început în anii 80, când a fost dezvoltat un proiect japonez pentru a crea un computer de generația a cincea, al cărui scop a fost să pregătească terenul pentru crearea de mașini inteligente. LA neprocedurale programarea include funcţionalȘi joc de inteligență limbi.

ÎN funcţionalÎn limbi, un program descrie calculul unei anumite funcții. De obicei, această funcție este specificată ca o compunere a altora, mai simple, care la rândul lor sunt descompuse în altele și mai simple etc. Unul dintre elementele principale în limbajele funcționale este recursiunea, adică calcularea valorii unei funcții prin valoarea aceleiași funcții din alte elemente. Nu există asignări sau bucle în limbajele funcționale clasice.

ÎN logicÎn limbi, programul nu descrie deloc acțiuni. Definește datele și relațiile dintre ele. După aceasta, puteți adresa întrebări sistemului. Aparatul parcurge datele cunoscute și datele specificate în program și găsește răspunsul la întrebare. Ordinea de căutare nu este descrisă în program, dar este implicit specificată de limbajul însuși. Se are în vedere limbajul clasic al programării logice Prolog. Construcția unui program logic nu necesită deloc gândire algoritmică, programul descrie relațiile statice ale obiectelor, iar dinamica se află în mecanismul de enumerare și este ascunsă de programator.

Puteți selecta o altă clasă de limbaje de programare - obiectiv- orientatlimbiînaltnivel. Astfel de limbaje nu descriu o secvență detaliată de acțiuni pentru a rezolva o problemă, deși conțin elemente de programare procedurală. Limbile orientate pe obiecte, datorită unei interfețe bogate de utilizator, oferă unei persoane să rezolve o problemă într-o formă convenabilă pentru el. Un exemplu de astfel de limbaj este limbajul de programare pentru comunicare vizuală Object Pascal.

Limbaje de scripting limbaje precum Perl, Python, Rexx, Tcl și limbajele shell UNIX necesită un stil de programare foarte diferit de limbajele la nivel de sistem. Ele nu sunt destinate scrierii unei aplicații de la zero, ci combinării componentelor, al căror set este creat în prealabil folosind alte limbi. Dezvoltarea și popularitatea în creștere a internetului au contribuit, de asemenea, la răspândirea limbajelor de scripting. Astfel, limbajul este utilizat pe scară largă pentru scrierea de scenarii Perlși este popular printre dezvoltatorii de pagini web JavaScript.

Conceptul de sistem de programare, principalele sale funcții și componente.

Sistem de programare (SP) - un set de instrumente software care facilitează scrierea și depanarea unui program de dialog și automatizează conversia acestuia în mai multe etape într-un program executabil și încărcarea în memorie pentru execuție. În zilele noastre, întreprinderile mixte s-au transformat în medii integrate de dezvoltare software (Integrat Dezvoltare Mediu inconjurator, IDE) care vă permit să dezvoltați vizual o interfață cu utilizatorul și să organizați conexiuni cu baze de date.

Crearea unui instrument software complex se realizează într-un mediu de inginerie software. Conform GOST R ISO/IEC 14764-2002, acesta este „un set de instrumente automate, software, hardware și mijloace tehnice necesare pentru a îndeplini domeniul de aplicare al lucrărilor de inginerie software”. Instrumentele automate includ, dar nu se limitează la, compilatoare, linkere de sistem de operare de pornire, depanare, instrumente de modelare, instrumente de documentare și sisteme de gestionare a bazelor de date.

Un sistem de programare eliberează utilizatorul cu probleme sau programatorul de aplicații de nevoia de a scrie programe pentru a-și rezolva problemele într-un limbaj de comandă incomod și le oferă posibilitatea de a folosi limbaje speciale de nivel superior. Pentru fiecare dintre aceste limbi, numite intrare sau sursă, sistemul de programare are un program care traduce (traduce) automat textele programului din limba 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 limbi, precum și o bibliotecă dezvoltată de subrutine standard. Este important să se facă distincția între un limbaj de programare și o implementare a unui limbaj.

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

Implementarea limbajului este un program de sistem care traduce (conversie) înregistrările într-un limbaj de nivel înalt într-o secvență de comenzi de mașină.

Pe baza setului de limbi de intrare, sistemele de programare se disting între limbă unică și multilingvă. O caracteristică distinctivă a sistemelor multilingve este că părțile individuale ale unui program pot fi compilate în diferite limbi și, folosind programe speciale de procesare, combinate într-un program gata de execuție pe computer.

Pentru a construi limbaje de programare se folosește un set de simboluri și reguli general acceptate care fac posibilă descrierea algoritmilor problemelor care se rezolvă și interpretarea fără ambiguitate a semnificației scrisului creat. Principala tendință în dezvoltarea limbajelor de programare este creșterea nivelului semantic al acestora pentru a facilita procesul de dezvoltare a programelor și a crește productivitatea compilatoarelor lor.

În funcție de structura, nivelul de formalizare a limbajului de intrare și scopul propus, se disting sistemele de programareorientat spre mașină Șiindependent de mașină .

Sisteme orientate pe mașină programarea are un limbaj de intrare, ale cărui seturi de operatori și mijloace vizuale depind semnificativ de caracteristicile calculatorului (limbaj intern, structura memoriei etc.). Sistemele orientate către mașină vă permit să utilizați toate capabilitățile și caracteristicile limbajelor dependente de mașină:

    calitate înaltă a programelor create;

    capacitatea de a utiliza resurse hardware specifice;

    predictibilitatea codului obiect și a ordinelor de memorie;

    Pentru a crea programe eficiente, trebuie să cunoașteți sistemul de comandă și caracteristicile de operare ale unui anumit computer;

    procesul intensiv de scriere a programelor (în special în limbaje mașină și JSC), care este slab protejat de erori;

    viteza de programare redusa;

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

Sistemele orientate către mașină 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 (denumit în continuare ML), este prescris să efectueze operații specificate pe operanzii pe care îi definesc, prin urmare ML este unul de comandă. Cu toate acestea, unele familii de calculatoare (de exemplu, ES Computers, IBM/370/ etc.) au un singur ME pentru calculatoare cu putere diferită.

Comanda oricăruia dintre ele raportează informații despre locația operanzilor și tipul de operație care se efectuează. În noile modele de computer, există tendința de a îmbunătăți limbajele interne prin mijloace mașină-hardware pentru a implementa comenzi mai complexe, care sunt mai aproape în acțiunile lor funcționale de operatorii limbajelor de programare algoritmică.

2. Sistem de codificare simbolică. Aceste sisteme folosesc limbaje de codare simbolică (denumite în continuare SCL), care, la fel ca 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 YSC cu simboluri (identificatori), a căror formă de scriere ajută programatorul reţine mai uşor conţinutul semantic al operaţiei. Acest lucru asigură o reducere semnificativă a numărului de erori la compilarea programelor.

Utilizarea adreselor simbolice este primul pas pentru crearea unui YASK. 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 folosesc limbaje care includ toate capacitățile YSC, prin introducerea extinsă a comenzilor macro - acestea se numesc Autocodes. În diverse programe există câteva secvențe de comenzi destul de frecvent 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 macrocomenzi speciale și includerea acestora din urmă într-un limbaj de programare accesibil programatorului. Comenzile macro sunt traduse în comenzi de mașină în două moduri - aranjare și generare. Sistemul de organizare conține „schelete” - o serie de comenzi care implementează funcția necesară, indicată de o comandă macro. Instrucțiunile macro asigură transferul parametrilor actuali, care, în timpul procesului de traducere, sunt inserați în „scheletul” programului, transformându-l într-un adevărat program de mașină. Într-un sistem de generare, există programe speciale care analizează comanda macro, determină ce funcție trebuie executată și formează secvența necesară de comenzi care implementează această funcție. Ambele sisteme folosesc traducători JSC și un set de comenzi macro, care sunt, de asemenea, operatori de codare automată. Autocodurile dezvoltate se numesc Assembleri. Programele de service etc., de regulă, sunt scrise în limbi precum Assembly.

4. Macro. În astfel de sisteme, un limbaj care este un mijloc de înlocuire a unei secvențe de simboluri care descriu execuția acțiunilor computerului necesare cu o formă mai comprimată se numește Macro (instrument de înlocuire). Practic, o macrocomandă este concepută pentru a scurta intrarea inițială a programului.

Componenta software care permite macrocomenzilor să funcționeze se numește procesor macro. Macroprocesorul primește macro-definirea și textul sursă. Răspunsul macroprocesorului la un apel este să emită un text de ieșire. Macro-urile pot funcționa în mod egal atât cu programe, cât și cu date.

Sisteme de programare independente de mașină este un mijloc de descriere a algoritmilor de rezolvare a problemelor și a informațiilor de prelucrat. Sunt ușor de utilizat pentru o gamă largă de utilizatori și nu necesită ca aceștia să cunoască specificul organizării funcționării unui computer. În astfel de sisteme, programele compilate în limbaje numite limbaje de programare de nivel înalt sunt secvențe de instrucțiuni structurate conform regulilor de luare în considerare a limbajului (sarcini, segmente, blocuri etc.). Operatorii de limbaj descriu acțiunile pe care sistemul trebuie să le efectueze după traducerea programului în ML. Astfel, secvențele de comenzi (proceduri, subrutine), folosite adesea în programele mașinii, sunt reprezentate în limbaje de nivel înalt prin instrucțiuni individuale.

Programatorul a putut 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 evidențiate următoarele:

1. Sisteme orientate pe procedura. Limbajele de programare de intrare în astfel de sisteme sunt folosite pentru a scrie algoritmi (proceduri) de procesare a informațiilor caracteristici pentru rezolvarea problemelor unei anumite clase. Aceste limbaje ar trebui să ofere programatorului instrumentele pentru a formula pe scurt și clar problema și pentru a obține rezultate în forma necesară. Există o mulțime de limbaje procedurale, de exemplu: Fortran, Algol - limbaje create pentru rezolvarea problemelor matematice; Simula, Slang - pentru modelare; Lisp, Snoball - pentru lucrul cu structuri de liste.

2. Sisteme orientate spre probleme Un limbaj de programare orientat spre probleme este folosit ca limbaj de intrare. Odată cu extinderea domeniilor de aplicare a tehnologiei informatice, a apărut necesitatea formalizării prezentării formulării și soluționării unor noi clase de probleme.

A fost necesar să se creeze limbaje de programare care, folosind notații și terminologie în acest domeniu, să permită descrierea algoritmilor de soluție necesari pentru problemele atribuite. Aceste limbaje orientate către probleme ar trebui să ofere programatorului instrumentele pentru a formula pe scurt și clar problema și pentru a obține rezultate în forma necesară. Programele compilate pe baza acestor limbaje de programare sunt scrise în ceea ce privește problema rezolvată și sunt implementate prin executarea unor proceduri adecvate.

3. Limbi conversaționale. Apariția de noi capacități tehnice a pus o sarcină pentru programatorii de sistem - să creeze instrumente software care să asigure o interacțiune rapidă între o persoană și un computer, acestea au fost numite limbaje interactive; Au fost create limbaje de control speciale pentru a oferi un impact operațional asupra îndeplinirii sarcinilor, care au fost compilate în orice limbă nedezvoltată anterior (non-dialog).

Au fost dezvoltate și limbaje care, pe lângă scopurile de management, ar oferi o descriere a algoritmilor pentru rezolvarea problemelor. Necesitatea asigurării unei interacțiuni prompte cu utilizatorul a necesitat stocarea unei copii a programului sursă în memoria computerului chiar și după primirea programului obiect în codul mașinii. La efectuarea modificărilor unui program, sistemul de programare, folosind tabele speciale, stabilește relația dintre structurile programelor sursă și obiect. Acest lucru vă permite să faceți modificările editoriale necesare în programul obiect.

4. Limbi non-procedurale. Limbile non-procedurale alcătuiesc un grup de limbi care descriu organizarea datelor prelucrate utilizând algoritmi fixați (limbaje tabulare și generatoare de rapoarte) și limbaje pentru comunicarea cu sistemele de operare. Permițându-vă să descrieți în mod clar atât problema, cât și acțiunile necesare pentru a o rezolva, tabelele de decizie fac posibilă 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 ale implementărilor algoritmilor de soluție. Metodele tabelare sunt ușor de stăpânit de specialiștii oricărei profesii. Programele scrise în limbaj tabelar descriu convenabil situații complexe care apar în timpul analizei 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. Pentru a obține un fișier cu textul sursă al programului, care conține un set de caractere standard pentru scrierea algoritmului, sunt necesare editori de text specializați axați pe un anumit limbaj de programare.

2. Textul sursă folosind program compilator tradus în codul mașinii. Codul sursă al unui program constă de obicei 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-unul singur. În plus, sistemele de programare includ de obicei biblioteci de rutine standard. Subrutinele standard au o singură formă de referință, ceea ce face posibilă includerea automată a unor astfel de subrutine în programul apelant și configurarea parametrilor acestora.

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

4. Sistemele moderne de programare au încă o componentă - depanator, care vă permite să analizați funcționarea programului în timpul execuției acestuia. Cu ajutorul acestuia, puteți executa secvențial instrucțiuni individuale în textul sursă, observând în același timp cum se schimbă valorile diferitelor variabile.

De-a lungul timpului, dezvoltatorii de compilatoare au încercat să ușureze munca utilizatorilor, oferindu-le tot setul necesar de module software ca parte a unui pachet de compilator. Acum compilatoarele au fost furnizate împreună cu toate mijloacele tehnice necesare însoțitoare. În plus, formatele fișierelor obiect și fișierele bibliotecii de subrutine au fost unificate. Acum, dezvoltatorii, având un compilator de la un producător, ar putea, în principiu, să folosească biblioteci și fișiere obiect obținute de la un alt producător de compilator.

Pentru a scrie fișiere de comandă de compilare, a fost propus un limbaj de comandă special, limbajul Makefile. A făcut posibilă descrierea într-o formă destul de flexibilă și convenabilă a întregului proces de creare a unui program, de la generarea codurilor sursă până la pregătirea lui pentru execuție. Era un instrument tehnic convenabil, dar destul de complex, care necesita un grad ridicat de pregătire și cunoștințe profesionale din partea dezvoltatorului, 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 destul de mult timp și, în unele cazuri, este încă folosită până în prezent (mai ales atunci când se creează programe de sistem). Utilizarea sa pe scară largă s-a datorat faptului că întreaga structură a instrumentelor de dezvoltare în sine era foarte convenabilă pentru execuția în serie a programelor pe un computer, ceea ce a contribuit la utilizarea pe scară largă în epoca mainframe-urilor.

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 pentru codurile sursă ale programului și un limbaj de compilare a comenzilor. Utilizatorul (dezvoltatorul programului sursă) nu mai trebuia să efectueze întreaga secvență de acțiuni de la generarea codului sursă până la execuția acestuia și nici nu era obligat să descrie acest proces folosind sistemul de comandă din Makefile. Acum trebuia doar să indice într-o interfață convenabilă compoziția modulelor sursă și a bibliotecilor necesare creării programului. Cheile cerute de compilator și alte mijloace tehnice au fost specificate și sub formă de formulare de configurare a interfeței.

După aceasta, mediul de dezvoltare integrat însuși a pregătit automat întreaga secvență necesară de comenzi Makefile, le-a executat, a primit rezultatul și a raportat erori, dacă există. Mai mult decât atât, utilizatorul ar putea modifica aici textul modulelor sursă, fără a întrerupe lucrul cu mediul integrat, iar apoi, dacă este necesar, pur și simplu repeta întregul proces de compilare.

Crearea unor medii de dezvoltare integrate a devenit posibilă datorită dezvoltării rapide a computerelor personale și apariției instrumentelor dezvoltate de interfață cu utilizatorul (întâi text, apoi grafic). Apariția lor pe piață a determinat dezvoltarea în continuare a acestui tip de mijloace tehnice. Poate primul mediu de succes de acest gen poate fi considerat mediul de programare integrat Turbo Pascal bazat pe limbajul Pascal produs de Borland. Popularitatea sa largă a fost determinată de faptul că, de-a lungul timpului, toți dezvoltatorii de compilatoare s-au orientat către crearea de 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 cere doar să cunoască limba sursă (sintaxa și semantica acestuia). La crearea unui program de aplicație, dezvoltatorul acestuia ar putea, în cel mai simplu caz, să nu înțeleagă nici măcar arhitectura sistemului informatic țintă.

Dezvoltarea în continuare a instrumentelor de dezvoltare este, de asemenea, strâns legată de răspândirea pe scară largă a instrumentelor avansate de interfață grafică cu utilizatorul. Această interfață a devenit parte integrantă a multor sisteme de operare moderne și așa-numitele shell-uri grafice. De-a lungul timpului, a devenit standardul de facto în aproape toate programele de aplicații moderne.

Acest lucru nu a putut decât să afecteze cerințele pentru instrumentele de dezvoltare software. Ei au inclus mai întâi biblioteci adecvate care au oferit suport pentru o interfață grafică dezvoltată de utilizator și interacțiune cu funcțiile API (interfața programului de aplicație, interfața programului de aplicație a sistemelor de operare). Și apoi, pentru a lucra cu ei, au fost necesare instrumente suplimentare pentru a asigura dezvoltarea aspectului modulelor de interfață. O astfel de muncă era deja mai tipică pentru un designer decât pentru un programator.

Pentru a descrie elementele grafice ale programelor, au fost necesare limbaje adecvate. Pe baza lor a apărut conceptul resurse(resurse) programe de aplicație.

Resursele programului de aplicație vom suna multe date, oferind aspectul interfeței utilizator a acestui program și nu este direct legat de logica de execuție a programului. Exemple tipice de resurse sunt: ​​textele mesajelor emise de program; schema de culori a elementelor de interfață; etichete pe elemente precum butoanele și titlurile ferestrelor etc.

Pentru a forma structura resurselor, au fost la rândul lor necesari editori de resurse și apoi compilatori de resurse care procesau rezultatul muncii lor. Resursele obținute din rezultatul compilatorilor de resurse au început să fie procesate de către linkeri și încărcătoare.

În ultimii ani, programarea (în special pentru mediul de operare Windows) a văzut așa-numitavizual o abordare.

Acest proces este automatizat în medii de proiectare rapidă. În acest caz, sunt utilizate 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 scripting.

Aceste limbi au fost create în scopuri diferite, ceea ce a condus la o serie de diferențe fundamentale între ele. Cele de sistem au fost dezvoltate pentru a construi structuri de date și algoritmi de la zero, pornind de la elemente primitive precum un cuvânt din memoria computerului. În schimb, limbaje de scripting au fost create pentru a lega programe gata făcute. Utilizarea lor implică prezența unei game suficiente de componente puternice care trebuie doar combinate între ele. Limbile la nivel de sistem folosesc un control strict al tipului de date, care îi ajută pe dezvoltatorii de aplicații să facă față problemelor complexe. Limbajele de scripting nu folosesc conceptul de tip, care simplifică stabilirea conexiunilor între componente și, de asemenea, accelerează dezvoltarea sistemelor de aplicații.

Limbajele de scriptare se bazează pe un set ușor diferit de compromisuri față de limbajele la nivel de sistem. Aceștia acordă prioritate vitezei de execuție și rigoarei controlului tipului mai jos pe scara de priorități, dar productivitatea programatorului și reutilizarea sunt evaluate mai mult. Acest echilibru de valori este din ce în ce mai justificat 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 crearea de componente, unde principala complexitate constă în implementarea algoritmilor și structurilor de date, în timp ce limbajele de scripting sunt mai potrivite pentru construirea unei aplicații din componente gata făcute, unde complexitatea constă în stabilirea conexiuni între componente. Problemele de acest ultim tip devin din ce în ce mai răspândite, astfel încât rolul limbajelor de scripting va crește.

Interpreți și compilatori.
Difuzarea de programe și procese aferente.

Trebuie remarcat faptul că orice limbaj de programare poate fi fie interpretat, fie compilat, dar în cele mai multe cazuri fiecare limbaj are propria sa metodă de implementare preferată. Limbile Fortran și Pascal sunt în mare parte compilate; Limbajul de asamblare interpretează aproape întotdeauna; Limbile BASIC și Lisp folosesc pe scară largă ambele metode.

Principalul avantaj al compilației este viteza de execuție a programului terminat. Un program interpretat rulează inevitabil mai lent decât unul compilat, deoarece interpretul trebuie să construiască secvența adecvată de comenzi în momentul în care instrucțiunea comandă executarea comenzilor.

Î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ții. Acest limbaj este deosebit de potrivit 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 opri interpretul.

Traducător este un program care traduce un program sursă într-un program obiect echivalent. Programul sursă este scris într-un limbaj sursă, programul obiect este generat în limbajul obiect. Programul traducătorului însuși este executat în timpul difuzării.

Dacă limbajul sursă este un limbaj de nivel înalt, cum ar fi FORTRAN, C și Pascal, și dacă limbajul obiect este asamblare sau un limbaj de mașină, atunci traducătorul este numit compilator. Limbajul mașină este uneori numit cod mașină, motiv pentru care un program obiect este uneori numit cod obiect.

Traducerea programului sursă într-un program obiect are loc în momentul compilării, iar execuția efectivă a programului obiect are loc în timpul execuției programului terminat.

Asamblator este un program care traduce un program sursă scris în limbaj de codare automată sau de asamblare în limbaj de calculator. Cod automat(asamblatorul) este foarte aproape de limbajul mașinii; într-adevăr, majoritatea instrucțiunilor de codificare automată sunt reprezentări simbolice precise ale comenzilor mașinii. În plus, instrucțiunile de codificare automată au de obicei un format fix, ceea ce le face ușor de analizat. Autocode, de regulă, nu conține instrucțiuni imbricate, blocuri etc.

Interpret pentru o anumită limbă sursă, ia ca 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ă direct însuși. Pentru a-și da seama cum să efectueze execuția instrucțiunilor programului sursă, interpretul pur îl analizează ori de câte ori trebuie să fie executat. Desigur, acest lucru nu este eficient și nu este folosit foarte des.

La programare, interpretul este de obicei împărțit în doua faze. Pe primul faza, interpretul analizează întregul program sursă, la fel ca un compilator, ș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 sursă este concepută pentru a minimiza timpul necesar pentru descifrarea sau analizarea fiecărei instrucțiuni pe măsură ce este executată.

După cum sa spus mai sus, el compilator nu este altceva decât un program scris într-o anumită limbă, pentru care informația de intrare este programul sursă, iar rezultatul este un program obiect echivalent. Din punct de vedere istoric, compilatoarele au fost scrise manual în codare automată. În multe cazuri, a fost singura limbă disponibilă. Cu toate acestea, compilatoarele sunt acum dezvoltate în limbaje de nivel înalt (deoarece acest lucru reduce timpul petrecut cu programare și depanare și, de asemenea, asigură că programul compilatorului este lizibil când munca este finalizată).

În plus, acum avem multe limbaje concepute special pentru compilarea compilatoarelor. Aceste așa-zise compilatoare compilatoare" sunt un subset de " sisteme de construcție a traducătorilor" (SPT).

Procesul de compilare, structura compilatorului, trecerile compilatorului.

Procesul de compilare este împărțit în mai multe etape:

    Preprocesor. Programul sursă este procesat prin înlocuirea macrocomenzilor și fișierelor antet existente.

    Analiza lexicală și sintactică. Programul este convertit într-un lanț de jetoane și apoi într-o reprezentare internă de arbore.

    Optimizare globală. Reprezentarea internă a programului este transformată în mod repetat pentru a reduce dimensiunea și timpul de execuție a programului.

    Generarea codului. Reprezentarea internă este convertită în blocuri de instrucțiuni ale procesorului, care sunt convertite în text de asamblare sau cod obiect.

    Asamblare. Dacă este generat textul de asamblare, acesta este asamblat pentru a obține codul obiect.

    Asamblare. Un asamblator combină mai multe fișiere obiect într-un fișier executabil sau bibliotecă.

În faza de analiză lexicală (LA), programul de intrare, care este un flux de caractere, este împărțit în lexeme - cuvinte în conformitate cu definițiile limbajului. Principalul formalism care stă la baza implementării analizatoarelor lexicale este mașinile cu stări finite și expresiile regulate. Analizatorul lexical poate funcționa în două moduri principale: fie ca subrutină numită de parser după fiecare token, fie ca trecere completă, al cărei rezultat este un fișier de token-uri. În procesul de selectare a lexemelor, LA poate construi independent tabele de nume și constante și poate furniza valori pentru fiecare lexem data viitoare când este accesat. În acest caz, tabelul de nume este construit în fazele ulterioare (de exemplu, în timpul procesului de analiză).

În stadiul LA sunt detectate unele erori (simple) (caractere nevalide, înregistrare incorectă a numerelor, identificatoare etc.).

Sarcina principală a parsării este de a analiza structura programului. De regulă, structura este înțeleasă ca un arbore care corespunde analizei în gramatica fără context a limbii. În prezent, fie analiza LL(1) (și varianta sa - coborâre recursivă), fie analiza LR(1) și variantele sale (LR(0), SLR(1), LALR(1) și altele) sunt utilizate cel mai des. Coborârea recursiv este mai des folosită la programarea manuală a unui parser, LR(1) - atunci când se utilizează sisteme de automatizare pentru construirea parserelor.

Rezultatul analizei este un arbore de sintaxă cu legături către un tabel de nume. Procesul de analiză dezvăluie și erori legate de structura programului.

La scenă analiza contextuală dependențele sunt identificate între părți ale programului care nu pot fi descrise prin sintaxa fără context. Acestea sunt în principal conexiuni „descriere-utilizare”, în special analiza tipurilor de obiecte, analiza scopurilor, corespondența parametrilor, etichetele și altele. În procesul de analiză contextuală se construiește un tabel de simboluri, care poate fi considerat ca un tabel de nume, completat cu informații despre descrierile (proprietățile) obiectelor.

Principalul formalism utilizat în analiza contextuală este gramaticile atributelor. Rezultatul fazei de analiză a contextului este un arbore de program atribuit. Informațiile despre obiecte pot fi fie dispersate în arbore în sine, fie concentrate în tabele separate de simboluri. În timpul procesului de analiză a contextului pot fi detectate și erori legate de utilizarea incorectă a obiectelor.

Programul poate fi apoi tradus în reprezentare internă. Acest lucru se face în scopuri de optimizare și/sau ușurință în generarea codului. Un alt scop al conversiei unui program într-o reprezentare internă este dorința de a avea compilator portabil. Atunci numai ultima fază (generarea codului) depinde de mașină. Notația de prefix sau postfix, graficul direcționat, triple, cvadruple și altele pot fi folosite ca reprezentare internă.

Faze de optimizare poate mai multe. Optimizări de obicei împărțit în dependent de mașină și independent de mașină, local și global. Unele optimizări dependente de mașină sunt efectuate în timpul fazei de generare a codului. Optimizare globalăîncearcă să ia în considerare structura întregului program, local - doar micile sale fragmente. Optimizarea globală se bazează pe analiza globală a fluxului, care este efectuată pe graficul programului și reprezintă în esență o transformare a acestui grafic. În acest caz, pot fi luate în considerare proprietățile programului precum analiza interprocedurală, analiza intermodulară, analiza zonelor de viață a variabilelor etc.

In cele din urma, generarea codului- ultima fază a emisiunii. Rezultatul este fie un modul de asamblare, fie un modul de obiect (sau încărcare). În timpul procesului de generare a codului, pot fi efectuate unele optimizări locale, cum ar fi alocarea registrului, selectarea ramurilor lungi sau scurte și luarea în considerare a costurilor de instrucțiuni atunci când alegeți o anumită secvență de instrucțiuni. Au fost dezvoltate diferite tehnici pentru generarea codului, cum ar fi tabelele de decizie, potrivirea modelelor, inclusiv programarea dinamică, diverse tehnici sintactice.

Desigur, anumite faze ale traducătorului pot fi fie complet absente, fie combinate. În cel mai simplu caz al unui traducător cu o singură trecere, nu există o fază explicită de generare a unei reprezentări intermediare și de optimizare, fazele rămase sunt combinate într-una singură și nu există un arbore de sintaxă construit în mod explicit.

Principii de funcționare ale mediilor de programare

Ar trebui să se distingă limbaj de programare din implementarea sa, care este de obicei prezentată în compoziție medii de programare(Quick Basic, Virtual Pascal) - un set de instrumente pentru editarea textelor sursă, generarea de cod executabil, depanare, managementul proiectelor etc. Fiecare mediu de programare oferă propriul interpret sau compilator pentru acest limbaj, care permite adesea utilizarea de constructe care nu sunt fixate în standard.

Utilizarea mediului de programare Turbo Pascal

Dezvoltarea programului în Pascal include următoarele acțiuni (etape de dezvoltare a programului): introducerea și editarea textului programului în limbajul de programare Pascal, traducerea acestuia, depanarea.

Pentru a efectua fiecare etapă, se folosesc instrumente speciale: pentru a introduce și edita text, utilizați editor de text, pentru a difuza programul - compilator, pentru a construi un modul software executabil de computer care combină module compilate disparate și o bibliotecă de proceduri standard Pascal - linker(linker), pentru depanarea programelor cu analizarea comportamentului acestuia, găsirea erorilor, vizualizarea și modificarea conținutului celulelor de memorie ale computerului - depanator(depanator).

Pentru a îmbunătăți calitatea și viteza dezvoltării programelor la mijlocul anilor 80. A fost creat sistemul de programare Turbo Pascal. Cuvântul Turbo din numele sistemului de programare este o reflectare a mărcii înregistrate a dezvoltatorului Borland International, Inc. (STATELE UNITE ALE AMERICII).

Se numește sistemul de programare Turbo Pascal integrat(integrare - combinarea elementelor individuale într-un singur întreg) mediu de programare, deoarece combină capabilitățile instrumentelor separate anterior utilizate în dezvoltarea programelor: editor de text, compilator, linker, depanator și, în același timp, oferă programatorului capabilități excelente de servicii. Este adesea numit pe scurt IDE(Integrated Development Environment - mediu de dezvoltare integrat).

Mediul de programare integrat Turbo Pascal versiunile 6.0 și 7.0 are următoarele caracteristici:

    multe ferestre suprapuse;

    suport pentru mouse, meniu, casete de dialog;

    editor cu mai multe fișiere care poate edita fișiere de până la 1 MB;

    capabilități avansate de depanare;

    conservarea și restaurarea completă a mediului de dezvoltare.

Fișierele principale ale pachetului Turbo Pascal

Dacă presupunem că sistemul de programare Turbo Pascal este instalat pe unitatea D: în directorul D:\BORLAND\BP, atunci următoarele fișiere principale Turbo Pascal se află în directorul ..\BP:

TURBO. EXE- mediu de programare integrat;

TURBO. HLP- un fisier ce contine date pentru ajutor operational;

TURBO. TP- fisier de configurare a sistemului;

TURBO. TPL- biblioteca de module standard Turbo Pascal.

Directorul D:\BORLAND\BP\BGI conține fișierele necesare lucrului în modul grafic: GRAFIC. TPU- un modul cu proceduri grafice și funcții Turbo Pascal, mai multe fișiere cu extensia .BGI - drivere pentru diverse tipuri de sisteme video pe computer, mai multe fișiere cu extensia .CHR care conțin fonturi vectoriale.

Pentru a apela Turbo Pascal, trebuie să găsiți acest director și fișierul din el în structura arborescentă a directoarelor PC TURBO.EXE. Acest fișier conține un sistem de programare de dialog Turbo Pascal gata de utilizat.

ferestre Turbo Pascal

Aproape tot ce vezi și faci în Turbo Pascal se întâmplă în Windows. Fereastră este o zonă a ecranului care poate fi mutată, redimensionată, acoperită, închisă și deschisă.

Mediul de programare integrat Turbo Pascal 6.0,7.0 vă permite să aveți orice număr de ferestre deschise, dar o singură fereastră poate fi activă în orice moment. Fereastra activă- aceasta este fereastra cu care lucrați în prezent. Orice comandă pe care o alegeți sau textul pe care îl introduceți se aplică numai ferestrei active. (Dacă același fișier este deschis în mai multe ferestre, acțiunea va fi aplicată fișierului peste tot).

Sistemul de ajutor Turbo Pascal

Mediul de programare integrat Turbo Pascal 6.0, 7.0 se distinge prin capacitățile extinse ale sistemului de ajutor încorporat, care permite programatorului nu numai să obțină informații de ajutor orientate spre context, ci și să taie și să lipească cod exemplu pentru fiecare procedură de bibliotecă și funcționați în textul programului său și reveniți la alte ecrane de ajutor (tastele Alt+Fl), utilizați indicația de informații de ajutor (tasta F1 dacă vă aflați deja în sistemul de informații de ajutor).

Notă . Sistemul de ajutor orientat pe context Turbo Pascal și-a primit numele pentru capacitatea de a obține informații de referință legate de starea curentă a mediului de programare pentru un element specificat al limbajului de programare. De exemplu, pentru a obține informații de ajutor despre orice element de meniu din mediul de programare integrat, activați acest articol și apăsați tasta F1; Pentru a obține ajutor pentru un element de limbă din fereastra de editare (operator, funcție etc.), plasați cursorul pe elementul dorit și apăsați Ctrl+F1.

Pentru a obține informații de ajutor (cu excepția cazului în care controlul trece la programul dvs.), trebuie să apăsați tasta F1 sau să selectați elementul de meniu Ajutor dorit cu mouse-ul. Meniul Ajutor (tasta Alt+H) vă oferă un cuprins al sistemului de informații de ajutor, un cuprins detaliat și capabilități de căutare (Ctrl+F1). Orice ecran de ajutor poate conține un cuvânt cheie sau mai multe cuvinte cheie (elementele evidențiate) care oferă informații suplimentare de ajutor.

Editor de mediu

O parte integrantă a mediului de dezvoltare a programelor integrate este editor Turbo Pascal, care are următoarele caracteristici:

    suport mouse;

    suport pentru fișiere mari (până la 1 MB; limită de 2 MB pentru toate combinațiile de editor);

    Shift + tastele săgeți - pentru a selecta text;

    ferestre editor care pot fi mutate, suprapuse și redimensionate;

    capabilități multi-fișier, care vă permit să deschideți mai multe fișiere în același timp;

    ferestre multiple care vă permit să aveți mai multe vizualizări ale aceluiași fișier sau fișiere diferite;

    un limbaj macro inteligent care vă permite să vă creați propriile comenzi de editare;

    luați text sau exemple din fereastra de ajutor;

    un buzunar editabil care permite tăierea, copierea și transferul între ferestre.

Pentru a controla editorul, utilizați tastele descrise în sistemul de ajutor și în linia de ajutor.

Instrumente pentru difuzarea programelor și depanarea acestora

Sistemul de programare integrat Turbo Pascal include instrumente pentru traducerea programelor și depanarea acestora (compiler, linker, debugger). Controlați rapid aceste instrumente folosind tastele rapide descrise în sistemul de ajutor și elementele din submeniu.

Introducerea textului programului în fereastra editorului

Pentru a porni mediul de programare Turbo Pascal, introduceți comanda TURBOși apăsați introduce. După pornirea programului, pe ecran se va deschide o fereastră de editare. Introduceți textul programului. Pentru a elimina caracterele introduse incorect, utilizați BackspaceȘi Șterge, și utilizați tastele săgeți pentru a vă deplasa în interiorul ferestrei editorului. Pentru a finaliza introducerea, apăsați introduce la sfârșitul fiecărei rânduri. Pentru a utiliza funcții suplimentare, apăsați Alt+Fl pentru a apela meniul local.

Compilarea unui program

Compilați programul făcând clic Alt+ F9 . Dacă ați introdus corect textul, va fi afișat un mesaj care indică succesul compilației.

Crearea unui fișier .exe

Ca răspuns la mesajul „ Compila de succes" (compilare reușită) apăsați orice tastă.

Dacă trebuie să inscripționați programul ca fișier executabil (cu extensia .exe) pe un disc magnetic, atunci selectați elementul din meniul principal Compila, în care selectați opțiunea Destinaţie (scop), și dacă există un cuvânt în dreapta acestuia Memorie (memorie), indicând că codul în curs de executare va fi stocat în memorie, apăsați tasta introduce sau faceți clic stânga butonul mouse-ului (setarea destinației se va schimba și deveni Disc (disc).

Dacă opțiunea Destinaţie instalat în Disc , care indică faptul că codul executabil este scris pe un disc magnetic ca fișier cu extensia .exe, apoi accesați opțiunea Face acest element de meniu.

După setarea destinației pentru crearea unui fișier .exe pe un disc magnetic, selectați din meniu Compila opțiune Face (asamblare) sau apăsați tasta F9 . Aceasta creează un fișier .exe pe disc.

Executarea programului

Ca răspuns la mesajul „Compilare reușită”, apăsați orice tastă. Rulați programul pentru a-l executa folosind tastele Ctrl+ F9 . După aceasta, ecranul utilizatorului se va deschide și rezultatul programului va apărea pe el.

Vizualizarea execuției programului pe ecranul utilizatorului

Pentru a vizualiza rezultatul execuției programului pe ecranul utilizatorului, selectați Fereastră/ UtilizatorEcran(sau faceți clic Alt+ F5 ).

Studiați informațiile afișate de program pe ecranul utilizatorului, comparați-le cu ceea ce este așteptat și evaluați execuția corectă a programului. Pentru a reveni la mediul Turbo Pascal din nou apăsați tastele Alt+ F5 .

Salvarea programului pe disc

Deocamdată, fișierul text al primului program se numește NONAMEOO, adică nu i s-a atribuit un nume specific. Salvați textul programului pe disc. Numele fișierului programului trebuie să reflecte scopul programului și să fie unic.

Notă , Numele programului este setat în conformitate cu regulile DOS (nu mai mult de 8 caractere latine).

Scrieți programul pe disc sub numele dorit folosind tastele Alt+ F Salvațila fel de ... " (scrieți sub un nume nou).

Părăsirea IDE-ului

Ieșiți din mediul de programare integrat Turbo Pascal apăsând Alt+ F accesați meniul Fișier, în acest meniu selectați „ Ieșire" sau faceți clic Alt+ X.

Deschiderea unui fișier text de program

Lansați mediul de programare integrat Turbo Pascal și citiți fișierul cu textul programului folosind tastele Alt+ F accesați meniul Fișier, selectați „ Deschis" (deschideți fișierul) sau apăsați tasta F3 . Pe ecranul computerului va fi afișată o fereastră pentru selectarea fișierului de deschis din listă.

Apăsând tastele Tab sau Shift+Tab pentru a trece de la un element la altul (fiecare element este evidențiat atunci când devine activ), accesați fereastra Listă fișiere și setați directorul curent la D:\BORLAND\BPVTUTOR, din care doriți să citiți fișierul text al programului. Plasați cursorul (evidențiați) pe fișierul .PAS, apoi apăsați tasta Tab pentru a selecta butonul [ Deschis]. Dacă vă răzgândiți, selectați butonul [ Anulare] sau apăsați tasta Esc.

Obținerea de informații de ajutor despre editor

Pentru ajutor cu operațiunile de editare cheie F1 apelați ecranul de ajutor; apăsând o tastă In josul paginii, accesați lista de sfaturi despre funcțiile de editare.

Erori găsite în timpul compilării

Adesea, pe baza rezultatelor compilarii, pe ecranul computerului este afișat un mesaj de eroare. Acest lucru se datorează faptului că limbajul de programare Pascal are reguli gramaticale care trebuie respectate. Cele mai frecvente greșeli făcute de programatorii începători Pascal sunt:

Necunoscutidentificator(identificator necunoscut)

";" așteptat(așteptat ";")

si altii.

Tipuri de date

Date sunt fapte, idei, informații prezentate într-o formă de semn (simbolică) care permite transmiterea, prelucrarea și interpretarea lor (adică interpretarea, explicația, dezvăluirea semnificației) și informație- acesta este sensul pe care o persoană îl atribuie datelor pe baza regulilor cunoscute de el pentru a reprezenta fapte, idei, mesaje în ele. Această înțelegere a informațiilor corespunde și etimologiei cuvântului care o denotă (din latinescul informație - explicație, prezentare).

Strâns legat de caracterul discret al informației semantice este ea structura, care are un caracter ierarhic clar exprimat. În această structură se mai poate distinge plin de înțelesȘi formal Aspecte. Luând în considerare ambele aspecte, este clar că cu cât nivelul ierarhiei este mai înalt, cu atât clasa de informații este mai specifică. În structura conținutului, aceasta este asociată cu o creștere a cumulativității informațiilor. Aceste clase sunt:

  • ipoteze, teorii și concepte;

    bazele domeniilor de cunoaștere;

    viziunea asupra lumii.

Structura formală date informaționale semantice este pe cât de ierarhică, pe atât de substanțială. Nivelurile cele mai de jos ale acestei ierarhii sunt comune tuturor date informaționale semantice,în care poți evidenția sunete sau litere, cuvinte, fraze, fragmente semantice, lucrări. La cele mai înalte niveluri ale ierarhiei, atunci când ne referim la documentele științifice și, mai ales, la fluxurile acestora, ne confruntăm cu specificul inerent doar informației științifice. Motivele creării documentelor științifice, modalitățile și mijloacele de difuzare și utilizare a acestora sunt supuse unor legi speciale.

Informații structurate, adică legate prin relații cauză-efect și alte relații și formând un sistem, constituie cunoştinţe. Din aceste interpretări rezultă că, dacă datele sunt percepute și interpretate de o persoană, atunci acestea devin informații pentru ea. Datele sunt într-o oarecare măsură similare cu un mesaj scris care transmite unele informații unei persoane alfabetizate și rămân un set de semne de neînțeles pentru o persoană analfabetă.

Tipdate caracterizează sfera de definire a valorilor datelor.

Să ne amintim că de bază tipurile includ:

    tipul întreg;

    tip valabil;

    tip boolean;

    tip de caracter;

    tip șir.

LA simplu tipurile includ:

    tipul ordinal;

    tip enumerat.

LA structurat tipurile includ:

    mulţimi;

Simplutipuri(tipuri simple) includ transferabil(tipuri ordinale) și valabil(tipuri reale) tipuri care definesc ordonat seturi de valori. LA transferabil tipurile sunt date pentru care următoarea regulă este adevărată: fiecare valoare, cu excepția primei, are un predecesor unic și fiecare valoare, cu excepția ultimei, are un succesor unic.

Structurattipuri(tipuri de date structurate) vă permit să definiți variabile care pot stoca seturi de date de același tip sau diferite. Tipurile structurate includ seturi, matrice, înregistrări, precum și tipuri de fișiere, clase și interfețe.

Spre deosebire de simplu tipuri care sunt definite liniar, structurat tipurile pot avea o structură complexă, adică pot include și alte tipuri.