O scurtă prezentare a limbajelor de programare binecunoscute. Tipuri de limbaje de programare Trei specialiști și trei tipuri de domenii de programare

04.03.2021 Programe

Dacă luăm sintaxa formării construcțiilor sale ca semn de clasificare, o putem împărți condiționat în următoarele tipuri:

    procedural,

    funcţional,

    logic,

    orientat pe obiecte.

3.1. Limbajul procedural (algoritmic).

Un limbaj de programare procedural permite programatorului să definească fiecare pas în procesul de rezolvare a unei probleme. Particularitatea unor astfel de limbaje de programare este că sarcinile sunt împărțite în pași și rezolvate pas cu pas. Folosind un limbaj procedural, programatorul definește constructe de limbaj pentru a efectua o secvență de pași algoritmici.

Limbile procedurale se caracterizează prin următoarele caracteristici:

    necesitatea unei gestionări explicite a memoriei, în special, descrierea variabilelor;

    adecvare scăzută pentru calcule simbolice;

    lipsa unei baze matematice stricte;

    eficienta ridicata a implementarii pe calculatoare traditionale.

Una dintre cele mai importante caracteristici de clasificare ale unui limbaj procedural este nivelul acestuia. Nivelul unui limbaj de programare este determinat de capacitatea semantică a construcțiilor sale și de gradul de orientare a acestuia către programator. Cu cât o limbă este mai orientată spre om, cu atât nivelul ei este mai ridicat.

Limbile procedurale includ: limbaj de asamblare, C, Basic, Pascal.

3.2 Limbajul funcțional (aplicativ).

Primul astfel de limbaj a fost LISP.

Rolul construcției principale în limbaje funcționale (aplicative) este jucat de expresie. Expresiile includ constante scalare, obiecte structurate, funcții, corpuri de funcții și apeluri de funcții.

Limbajul de programare aplicativ include următoarele elemente:

    clase de constante pe care funcțiile le pot manipula;

    un set de funcții de bază pe care un programator le poate folosi fără declarație sau descriere prealabilă;

    reguli pentru construirea de noi funcții din cele de bază;

    reguli pentru formarea expresiilor pe baza apelurilor de funcții.

Proprietățile enumerate caracterizează limbaje aplicative ca limbaje de programare care sunt foarte nivel inalt.

3.3 Limbajul logic (relațional).

Limba PROLOG a fost creată de omul de știință francez A. Colmeroe în 1973. În prezent, sunt cunoscute alte limbaje, dar cel mai dezvoltat și răspândit limbaj de programare logică este Prolog. Limbajele de programare logică sunt utilizate pe scară largă în sistemele de inteligență artificială.

Limbajele de programare logică se caracterizează prin:

    nivel inalt;

    concentrare strictă asupra calculelor simbolice;

    posibilitatea calculelor inverse, adică variabilele din proceduri nu sunt împărțite în intrare și ieșire;

    posibilă incompletitudine logică, deoarece este adesea imposibil să se exprime anumite relații logice într-un program și, de asemenea, este imposibil să se obțină toate concluziile corecte din program.

Constructele limbajului nu corespund unor formule matematice, ci definesc relații dintre obiecte și cantități; ele precizează ce rezultat este dorit de utilizator, fără a indica cum se face.

Limbajele logice și funcționale sunt limbaje declarative. Aceste limbi nu au conceptul de „operator” („comandă”).

3.4 Limbajul orientat pe obiecte

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.

Limbajele de programare orientate pe obiecte au devenit recent foarte populare în rândul programatorilor, deoarece fac posibilă utilizarea avantajelor abordării orientate pe obiecte nu numai în etapele de proiectare și construcție a sistemelor software, ci și în etapele lor. implementare, testare și întreținere.

Limbile moderne orientate pe obiecte (OO) folosesc următoarele metode: moștenire, încapsulare, polimorfism.

În unele limbaje orientate pe obiecte, toate metodele de clasă sunt virtuale.

Multe limbaje moderne sunt concepute special pentru a facilita programarea orientată pe obiecte. Cu toate acestea, trebuie remarcat faptul că puteți aplica tehnici OOP unui limbaj neorientat pe obiect și invers; folosirea unui limbaj orientat pe obiect nu înseamnă că codul devine automat orientat pe obiect.

Unele limbaje (uneori numite „pur obiect” - Java sau Ruby) sunt construite în întregime în jurul instrumentelor obiect - în ele orice date este un obiect, orice cod este o metodă de o anumită clasă și este imposibil să scrieți un program care nu nu folosiți obiecte. Alte limbi ("hibrid") includ un subsistem OOP într-un limbaj inițial procedural. Acestea vă permit să programați fără a accesa facilitățile obiectului. Exemple clasice sunt C++ și Delphi (Object Pascal).

Manualul este format din două secțiuni: teoretică și practică. Partea teoretică a manualului conturează bazele informaticii moderne ca disciplină științifică și tehnică complexă, inclusiv studiul structurii și proprietăților generale ale informațiilor și procesele informaţionale, principii generale construcția dispozitivelor de calcul, problemele de organizare și funcționare a rețelelor informaționale și de calculatoare, securitatea computerelor, sunt prezentate concepte cheie de algoritmizare și programare, baze de date și SGBD. Pentru controlul cunoștințelor teoretice dobândite, sunt oferite întrebări și teste de autotestare. Partea practică acoperă algoritmi pentru acțiunile de bază atunci când lucrați cu un procesor de text Microsoft Word, editor de tabele Microsoft Excel, un program pentru crearea de prezentări Microsoft Power Point, arhivarea programelor și programe antivirus. Pentru consolidarea cursului practic finalizat, la finalul fiecărei secțiuni se propune finalizarea unei lucrări independente.

Carte:

Secțiuni de pe această pagină:

8.2. Limbaje de programare

Tipuri de programare

Progres tehnologia calculatoarelor a determinat procesul de apariţie a unor noi sisteme de semne diverse pentru algoritmi de înregistrare – limbaje de programare. Sensul apariției unui astfel de limbaj este un set echipat de formule de calcul Informații suplimentare, care transformă acest set într-un algoritm.

Limbajele de programare sunt limbaje create artificial. Ele diferă de cele naturale prin numărul limitat de „cuvinte” și reguli foarte stricte pentru scrierea comenzilor (operatori). Totalitatea acestor cerințe formează sintaxa unui limbaj de programare, iar semnificația fiecărei comenzi și alte constructe de limbaj formează semantica acestuia.

Limbajele de programare sunt limbaje formale pentru comunicarea umană cu un computer, concepute pentru a descrie un set de instrucțiuni, a căror execuție asigură rezolvarea corectă a sarcinii solicitate. Rolul lor principal este de a planifica activitățile de prelucrare a informațiilor. Orice limbaj de programare se bazează pe un sistem de concepte, iar cu ajutorul lui o persoană își poate exprima gândurile.

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 exclusiv în scopul eliminării erorilor 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 aritmetică întreagă pentru a implementa structuri, pointeri etc. Designul bun și lipsa de erori nu pot fi garantate doar prin mijloace de limbaj.

Poate părea surprinzător, dar un anumit computer este capabil să ruleze programe scrise în limbajul său nativ. Există aproape la fel de multe limbaje de mașină diferite ca și computere, dar toate sunt variații ale aceleiași idei: operatii simple sunt produse cu viteza fulgerului pe numere binare.

Limbaje de programare dependente de mașină

Limbile dependente de 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.). Aceste limbaje sunt numite limbaje de programare de nivel scăzut. Acestea sunt concentrate pe un anumit tip de procesor și iau în considerare caracteristicile acestuia. Operatorii unui astfel de limbaj sunt aproape de codul mașinii și sunt concentrați pe comenzi specifice procesorului, adică acest limbaj este dependent de mașină. Limbajul de nivel scăzut este limbajul de asamblare. Cu ajutorul acestuia, sunt create programe foarte eficiente și compacte, deoarece dezvoltatorul are acces la toate capacitățile procesorului. Limbi similare sunt folosite pentru a scrie mic aplicații de sistem, drivere de dispozitiv, biblioteci. În cazurile în care cantitatea de RAM și ROM este mică (în regiunea de câțiva kiloocteți), nu există alternativă la asamblare. Aceste limbaje de programare vă permit să obțineți cel mai scurt și mai rapid cod de program.

Limbaje de programare independente de mașină

Limbajele independente de mașină sunt un mijloc de descriere a algoritmilor de rezolvare a problemelor și a informațiilor care trebuie procesate. 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 și a unui sistem de calcul.

Astfel de limbaje sunt numite limbaje de programare de nivel înalt. Programele compilate în astfel de limbaje sunt secvențe de declarații structurate conform regulilor de vizualizare a limbajului (sarcini, segmente, blocuri etc.). Declarațiile de limbaj descriu acțiunile pe care sistemul trebuie să le efectueze după traducerea unui program în limbajul mașinii.

Secvențele de comenzi (proceduri, subrutine), adesea folosite î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.

Limbajele de programare de nivel înalt sunt mult mai apropiate și mai ușor de înțeles de oameni. Ele nu iau în considerare caracteristicile arhitecturilor specifice computerelor, adică aceste limbaje sunt independente de mașină. Acest lucru permite ca un program odată scris într-un astfel de limbaj să fie folosit pe diferite computere.

Este posibil să scrieți programe direct în limbajul mașinii, deși acest lucru este dificil. În zorii computerizării (la începutul anilor 1950), limbajul mașinii era singurul limbaj; omul nu inventase nimic altceva până atunci. Pentru a salva programatorii de rigorile limbajului de programare al mașinii, au fost create limbaje de nivel înalt (adică limbaje non-mașină), care au devenit un fel de punte de legătură între 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.

Limbajele de programare de nivel înalt includ următoarele: Fortran, Cobol, Algol, Pascal, Basic, C, C++, Java, HTML, Perl și altele.

Folosind un limbaj de programare, nu este creat un program finit, ci doar textul acestuia, care descrie un algoritm dezvoltat anterior. Pentru a obține un program de lucru, trebuie fie să traduceți automat acest text în codul mașinii și apoi să îl utilizați separat de text sursă, sau executați imediat comenzile de limbă specificate în textul programului. Pentru aceasta se folosesc programe de traducere.

Există două tipuri principale de traducători (Figura 8.4): 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.


Figura 8.4. Tipuri de traducători

Când se utilizează compilatoare, întregul text sursă al programului este convertit în coduri de mașină, iar aceste coduri sunt scrise în memoria microprocesorului. Când se folosește un interpret, textul sursă al programului este scris în memoria microprocesorului, iar traducerea este efectuată atunci când este citită următoarea instrucțiune. Desigur, performanța interpreților este mult mai scăzută în comparație cu compilatoarele, deoarece atunci când se folosește un operator într-o buclă, acesta este tradus de multe ori. Cu toate acestea, atunci când programați într-un limbaj de nivel înalt, cantitatea de cod care trebuie stocată memorie interna, poate fi semnificativ mai mic în comparație cu codul executabil. Un alt avantaj al folosirii interpreților este portabilitatea ușoară a programelor de la un procesor la altul.

Un avantaj adesea citat al implementării interpretative este că permite un „mod imediat”. Modul Direct vă permite să cereți computerului o sarcină și vă returnează răspunsul imediat ce apăsați ENTER. În plus, interpreții au atribute speciale care facilitează depanarea. Puteți, de exemplu, să întrerupeți procesarea unui program interpret, să afișați conținutul anumitor variabile, să parcurgeți programul și apoi să continuați execuția. Cu toate acestea, limbile interpreților au dezavantaje. Este necesar, de exemplu, să aveți o copie a interpretului în memorie în orice moment, în timp ce multe dintre capacitățile interpretului și, prin urmare, capacitățile acestuia, pot să nu fie necesare pentru execuția unui anumit program. La executarea instrucțiunilor de program, interpretul trebuie mai întâi să scaneze fiecare instrucțiune pentru a-i citi conținutul (ce îmi cere această persoană să fac?) și apoi să efectueze operația solicitată. Operatorii din bucle sunt scanați excesiv.

Un compilator este un traducător de text în limbaj automat care citește textul sursă. Îl evaluează în funcție de structura sintactică a limbajului și îl traduce în limbajul mașinii. Cu alte cuvinte, compilatorul nu execută programe, le construiește. Interpreții nu pot fi separați de programele pe care le rulează; compilatorii își fac treaba și părăsesc scena. Când lucrați cu un limbaj compilat, cum ar fi Turbo BASIC, veți găsi necesar să vă gândiți la programele dvs. în termeni de două faze principale ale vieții lor: perioada de compilare și perioada de rulare. Majoritatea programelor vor rula de patru până la zece ori mai repede decât echivalentele lor de interpret. Dacă lucrați la îmbunătățirea acestuia, puteți obține o îmbunătățire de 100 de ori a performanței. Partea inversă a monedei este că programele care își petrec cea mai mare parte a timpului jucându-se cu fișierele de pe disc sau așteptând intrarea nu vor putea să arate câștiguri impresionante de viteză.

Procesul de creare a unui program se numește programare.

Există mai multe tipuri de programare.

Algoritmic sau modular

Ideea de bază a programării algoritmice este de a împărți un program într-o secvență de module, fiecare dintre ele efectuând una sau mai multe acțiuni. Singura cerință pentru un modul este ca execuția sa să înceapă întotdeauna cu prima comandă și să se termine întotdeauna cu ultima (adică, astfel încât să fie imposibil să accesezi comenzile modulului din exterior și să transferi controlul de la modul la alte comenzi, ocolindu-l pe cel final).

Algoritmul în limbajul de programare selectat este scris folosind comenzi pentru descrierea datelor, calcularea valorilor și controlul secvenței de execuție a programului.

Textul programului este o secvență liniară de atribuire, buclă și instrucțiuni condiționale. În acest fel, puteți rezolva probleme nu foarte complexe și puteți crea programe care conțin câteva sute de linii de cod. După aceasta, înțelegerea textului sursă scade brusc din cauza faptului că structura generală a algoritmului se pierde în spatele operatorilor specifici de limbaj care efectuează acțiuni prea detaliate, elementare. Apar numeroase instrucțiuni condiționale imbricate și operatori de buclă, logica devine complet confuză și, atunci când se încearcă corectarea unei declarații eronate, sunt introduse mai multe erori noi legate de particularitățile funcționării acestui operator, ale căror rezultate sunt adesea luate în considerare în diverse locuri din program.

Programare structurată

La crearea aplicațiilor de dimensiuni medii (câteva mii de linii cod sursa) se folosește programarea structurată, ideea căreia este ca structura programului să reflecte structura problemei care se rezolvă, astfel încât algoritmul de soluție să fie clar vizibil din textul sursă. Pentru a face acest lucru, trebuie să aveți mijloacele pentru a crea un program nu numai folosind trei operatori simpli, dar și folosind mijloace care reflectă mai exact structura specifică a algoritmului. În acest scop, a fost introdus în programare conceptul de subrutină - un set de operatori care efectuează acțiunea dorită și sunt independenți de alte părți ale codului sursă. Programul este împărțit în multe subrutine mici (luând până la 50 de instrucțiuni - un prag critic pentru înțelegerea rapidă a scopului subrutinei), fiecare dintre ele efectuând una dintre acțiunile specificate în sarcina originală. Prin combinarea acestor subrutine, este posibil să se formeze algoritmul final nu din operatori simpli, ci din blocuri complete de cod care au o anumită semnificație semantică, iar astfel de blocuri pot fi denumite prin nume. Se pare că subrutinele sunt noi operatori sau operații de limbaj definite de programator.

Abilitatea de a utiliza subrutine clasifică un limbaj de programare ca un limbaj procedural.

Prezența rutinelor vă permite să proiectați și să dezvoltați o aplicație de sus în jos - această abordare se numește design de sus în jos. În primul rând, sunt selectate mai multe subrutine care rezolvă cele mai globale probleme (de exemplu, inițializarea datelor, parte principalăși finalizare), apoi fiecare dintre aceste module este detaliat la un nivel inferior, împărțindu-se, la rândul său, într-un număr mic de alte subrutine și așa mai departe până când întreaga sarcină este finalizată.

Această abordare este convenabilă deoarece permite unei persoane să gândească în mod constant la nivel de subiect, fără a coborî la operatori și variabile specifice. În plus, devine posibil ca unii să nu implementeze subrutinele imediat, ci să le amâne temporar până la finalizarea altor părți. De exemplu, dacă este nevoie de a calcula o funcție matematică complexă, atunci este alocată o subrutină separată pentru un astfel de calcul, dar este implementată temporar de un operator, care atribuie pur și simplu o valoare preselectată. Odată ce întreaga aplicație este scrisă și depanată, atunci puteți începe să implementați această funcție.

De asemenea, este important ca subrutinele mici să fie mult mai ușor de depanat, ceea ce crește semnificativ fiabilitatea generală a întregului program.

Foarte caracteristică importantă subrutine - aceasta este posibilitatea acestora reutilizare. Sistemele de programare integrate vin cu biblioteci mari de rutine standard care pot crește semnificativ productivitatea prin valorificarea muncii altcuiva pentru a crea rutine utilizate în mod obișnuit.

Există două tipuri de subrutine - proceduri și funcții. Ele diferă prin faptul că procedura execută pur și simplu un grup de operatori, iar funcția calculează în plus o anumită valoare și o transmite înapoi către programul principal(returnează valoarea). Această valoare are un anumit tip (se spune că funcția are un tip sau altul).

Subrutinele îndeplinesc trei sarcini importante:

Elimină necesitatea de a repeta în mod repetat fragmente similare în textul programului;

Îmbunătățiți structura programului, făcându-l mai ușor de înțeles;

Crește rezistența la erorile de programare și consecințele neprevăzute în timpul modificărilor programului.

Programare orientată pe obiecte

La mijlocul anilor 80, a apărut o nouă direcție în programare bazată pe conceptul de obiect. Până în acel moment, principalele limitări ale capacității de a crea sisteme mari au fost impuse de dezbinarea în programul de date și a metodelor de prelucrare a acestora.

Obiectele reale ale lumii înconjurătoare au trei caracteristici de bază: au un set de proprietăți, de care sunt capabile metode diferite schimba aceste proprietăți și răspunde la evenimente care apar atât în ​​lumea înconjurătoare, cât și în interiorul obiectului însuși. În această formă, conceptul de obiect este implementat în limbaje de programare ca un set de proprietăți (structuri de date caracteristice acestui obiect), metode de procesare a acestora (rutine pentru modificarea proprietăților) și evenimente la care acest obiect poate reacționa și care, de regulă, duc la o modificare a proprietăților obiectului.

Apariția capacității de a crea obiecte în programe a avut un impact calitativ asupra productivității programatorilor. Volumul maxim de aplicații care au devenit disponibile pentru crearea de către un grup de programatori de 10 persoane a crescut de-a lungul mai multor ani la milioane de linii de cod, în timp ce în același timp a fost posibil să se realizeze fiabilitate ridicată programe și, cel mai important, reutilizați obiectele create anterior în alte sarcini.

Obiectele pot avea o structură identică și pot diferi doar prin valorile proprietăților. În astfel de cazuri, programul creează un tip nou bazat pe o singură structură de obiect. Se numește clasă, iar fiecare obiect concret care are structura acestei clase se numește o instanță a clasei.

Un limbaj de programare orientat pe obiecte este caracterizat de trei proprietăți principale:

1. Încapsulare - combinarea datelor cu metode într-o singură clasă;

Nu știu cum stau lucrurile în educație acum, dar acum 10-15 ani, nici la școală, nici la universitate, nimeni nu a explicat serios că programarea are propriile tipuri, fiecare dintre ele necesită un tip special de gândire. Nu că acest lucru va paraliza destinele nimănui, dar studiul disciplinelor software ar putea merge mult mai repede dacă, în stadiul punerii bazei, am prezenta o varietate de limbaje și abordări și nu am preda C++ zombie în manifestările sale din consolă. .

Mulți oameni, confruntați cu nevoia de a scrie cod funcțional, regretă adesea că modul procedural de gândire este atât de adânc înrădăcinat în creier încât nu este ușor să se schimbe de la el. Prin urmare, este mai bine să vă începeți calea spre a deveni programator nu alegând un limbaj, ci alegând un tip de programare.

Tipuri de programare

Să fim de acord imediat: vor fi șase tipuri. Aceasta este o diviziune destul de detaliată. De obicei, sunt alocate 3-4, dar din moment ce ne confruntăm cu sarcina de a alege o cale pentru începători, este complet justificată.

Programarea procedurală este, de asemenea, imperativă.

Își pune sarcina de a crea cod într-un limbaj pe care mașina folosită o poate înțelege. Cel mai faimos caz este mașina Turing; printre limbajele de programare cunoscute - C/C++, Ada, Pascal, Go. Sarcinile de aici sunt rezolvate sistematic: mai întâi, un obiect este declarat, apoi este definit și apoi este efectuată o acțiune asupra acestuia:

var
S: șir;

S:= ‘Bună ziua!’;

Programare declarativă.

În cazul procedural, vectorul de optimizare a limbajului este direcționat de la nivelul mașinii la limbajul utilizatorului folosind principiile de bază ale POO, clase, metode etc. Aici, sarcina în sine este în prim-plan, iar metoda de executare a acesteia este secundar. Un exemplu izbitor este limbajul de marcare HTML. Dacă doriți să plasați un buton, nu trebuie să creați în mod oficial un obiect și să îi atribuiți atribute:

Programare functionala.

După cum știți de la cursul de matematică, rezultatul executării oricărei funcții poate fi prezentat sub formă de date tabelare, singura întrebare este frecvența de eșantionare și intervalul de valori. Adică, indiferent de câte ori este executată funcția, indiferent de locul ei în problemă, rezultatul pentru aceleași valori va rămâne același. În programarea imperativă, acest lucru nu se face întotdeauna, deoarece valorile variabilelor se pot schimba pe parcursul programului, ceea ce va face ca rezultatul să fie dependent de condiții specifice.

Programarea funcțională nu are acest dezavantaj: aici se operează cu funcții - inițiale, incrementale și rezultante - dar nu cu valori specifice. Reprezentanții populari includ Lisp, Clojure, Haskell. Programarea funcțională este considerată complexă și redundantă pentru majoritatea aplicațiilor. De aici și cererea scăzută de specialiști, dar asta are ca rezultat și salarii mari și muncă cu adevărat interesantă.

Programare logica.

După cum sugerează și numele, funcționează pe o logică matematică simplă. Reprezentanții importanți sunt Planner și Prolog. Un set destul de limitat de acțiuni poate fi cu adevărat util pentru a crea cea mai simplă inteligență artificială sau antrenament cerebral, dar în viata reala Programarea logică în sine este rar folosită.

Programare dinamică.

Este cazul când, pentru a rezolva o problemă complexă complexă, este necesară descompunerea ei în câteva mai simple, minimizând numărul de cicluri de execuție. În mod ideal, fiecare sarcină simplă ar trebui efectuată o dată, dar în practică acest lucru este destul de rar. Programarea dinamică este mai degrabă un concept aplicabil tuturor limbilor, deci nu există reprezentanți ai acestei direcții. Dar va necesita un mod special de a gândi de la tine în același mod.

Programarea grafică este și vizuală.

Acesta invită dezvoltatorul să lucreze cu imagini grafice, nu text. Acest lucru poate fi exprimat în diferite moduri - există limbaje speciale, cum ar fi Scratch sau BluePrint, există limbaje de diagrame sau diagrame (LD sau FBD), există pur și simplu secțiuni de programare legate de interacțiunea cu formele și graficele. În acest din urmă caz, poate fi orice limbaj; vizualizarea este realizată de instrumente de dezvoltare (Borland Delphi/C++, Studio vizual, Adobe Dreamweaver etc.). O astfel de programare grafică în forma sa pură este extrem de rară; fără a înțelege limbajul și structura codului, este imposibil să creați ceva serios.

Odihnă

Programarea este împărțită în mai multe tipuri, iar începătorii nici măcar nu știu despre unele dintre ele: sincronă/asincronă/bazată pe evenimente, secvențială/paralelă, diferite în sarcinile pe care le rezolvă și implicarea AI și a statisticilor.

Alegerea unei paradigme de programare de pornire nu înseamnă alegerea unei singure căi. Dimpotrivă, fără a fi legat de anumite limbi, profesii și medii software, incepand cu modul tau de gandire, te vei pregati initial pentru intelegere corecta in esenta. Un specialist IT de succes, fericit și bogat nu este cel care intră în fluxul potrivit, ci cel pentru care orice flux este o oportunitate de a-și realiza potențialul.

1. Introducere

Introducerea computerelor în toate sferele activității umane necesită specialiști de diverse profiluri care să stăpânească abilitățile de utilizare a tehnologiei informatice. Este în creștere nivelul de pregătire al studenților universitari, care din primul an sunt introduși în utilizarea computerelor și a metodelor numerice simple, ca să nu mai vorbim de faptul că la finalizarea cursurilor și a proiectelor de diplomă, utilizarea tehnologiei informatice devine norma în marea majoritate a universităților.

Tehnologia calculatoarelor este acum folosită nu numai în calculele inginerești și științele economice, ci și în specialități tradiționale non-matematice precum medicina, lingvistica și psihologia. În acest sens, se poate afirma că utilizarea computerelor a devenit larg răspândită. A apărut o mare categorie de specialiști - utilizatori de computere care au nevoie de cunoștințe privind utilizarea computerelor în industria lor - abilități de lucru cu software-ul existent, precum și de a crea propriul software adaptat pentru a rezolva o problemă specifică. Și aici descrierile limbajelor de programare vin în ajutorul utilizatorului.

2. Ce este un limbaj de programare

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 punctele comune recunoscute de majoritatea dezvoltatorilor se numără următoarele:

· Funcţie: un limbaj de programare conceput pentru a scrie programe de calculator, care sunt utilizate pentru a transmite instrucțiuni către 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.

3. Etape ale rezolvării unei probleme pe calculator.

VT și-a găsit cea mai eficientă aplicație atunci când efectuează calcule intensive în muncă în cercetarea științifică și calculele de inginerie. Atunci când rezolvați o problemă pe un computer, rolul principal îi revine în continuare persoanei. Mașina își îndeplinește sarcinile numai conform programului dezvoltat. Rolul omului și al mașinii este ușor de înțeles dacă procesul de rezolvare a unei probleme este împărțit în etapele enumerate mai jos.

Formularea problemei. Această etapă constă într-o formulare semnificativă (fizică) a problemei și determinarea soluțiilor finale.

Construirea unui model matematic. Modelul trebuie să descrie corect (adecvat) legile de bază ale procesului fizic. Construirea sau selectarea unui model matematic dintre cele existente necesită o înțelegere profundă a problemei și cunoașterea ramurilor relevante ale matematicii.

Dezvoltarea Cupei Mondiale.Întrucât un computer poate efectua doar cele mai simple operații, nu „înțelege” formularea problemei, nici măcar într-o formulare matematică. Pentru a o rezolva, trebuie găsită o metodă numerică care să facă posibilă reducerea problemei la un algoritm de calcul. În fiecare caz specific, este necesar să selectați o soluție adecvată dintre cele standard deja dezvoltate.

Dezvoltarea algoritmului. Procesul de rezolvare a unei probleme (proces de calcul) este scris ca o succesiune de operații aritmetice și logice elementare care conduc la rezultatul final și se numește algoritm de rezolvare a problemelor.

Programare. Algoritmul pentru rezolvarea problemei este scris într-un limbaj ușor de înțeles de mașină în forma exactă o anumită secvență operațiuni – programe. Procesul se face de obicei folosind unele limbaj intermediar, iar difuzarea sa este efectuată de mașină în sine și de sistemul său.

Ajustarea programului. Programul compilat conține diverse tipuri de erori, inexactități și erori de scris. Depanarea include monitorizarea programului, diagnosticarea (căutarea și determinarea conținutului) erorilor și eliminarea acestora. Programul este testat prin rezolvarea problemelor de control (test) pentru a obține încredere în fiabilitatea rezultatelor.

Efectuarea calculelor.În această etapă, datele inițiale pentru calcule sunt pregătite și calculele sunt efectuate folosind un program bine stabilit. în același timp, pentru a reduce munca manuală în procesarea rezultatelor, puteți utiliza pe scară largă formulare convenabile pentru eliberarea rezultatelor sub formă de text și informatii grafice, într-o formă pe înțelesul oamenilor.

Analiza rezultatelor. Rezultatele calculelor sunt analizate cu atenție, și se întocmește documentația științifică și tehnică.

4. Pentru ce sunt limbajele de programare?

Procesul de funcționare a computerului constă în executarea unui program, adică a unui set de comenzi foarte specifice într-o ordine foarte specifică. Forma de mașină a instrucțiunii, constând din zerouri și unu, indică exact ce acțiune ar trebui să efectueze procesorul central. Aceasta înseamnă că, pentru a oferi computerului o secvență de acțiuni pe care trebuie să le efectueze, trebuie să specificați o secvență de coduri binare pentru comenzile corespunzătoare. Programele de cod de mașină constau din mii de instrucțiuni. Scrierea unor astfel de programe este o sarcină dificilă și plictisitoare. Programatorul trebuie să-și amintească combinația de zerouri și unu din codul binar al fiecărui program, precum și codurile binare ale adreselor de date utilizate în execuția acestuia. Este mult mai ușor să scrieți un program într-o limbă care este mai apropiată de limbajul uman natural și să încredințați unui computer munca de traducere a acestui program în coduri de mașină. Așa au apărut limbaje concepute special pentru scrierea programelor - limbaje de programare.

Există multe limbaje de programare diferite disponibile. De fapt, puteți folosi oricare dintre ele pentru a rezolva majoritatea problemelor. Programatorii cu experiență știu ce limbaj este cel mai bine să folosească pentru a rezolva fiecare problemă specifică, deoarece fiecare limbă are propriile sale capacități, orientare către anumite tipuri de probleme și propriul mod de a descrie concepte și obiecte utilizate în rezolvarea problemelor.

Toate numeroasele limbaje de programare pot fi împărțite în două grupuri: limbi de nivel scăzutȘi limbi de nivel înalt.

Limbile de nivel scăzut includ limbaje de asamblare (din engleză toassemble - assemble, assemble). Limbajul de asamblare folosește comenzi simbolice ușor de înțeles și rapid de reținut. În loc de o secvență de coduri binare de comenzi, sunt scrise denumirile lor simbolice, iar în loc de adrese binare ale datelor utilizate la executarea unei comenzi, sunt scrise nume simbolice ale acestor date alese de programator. Limbajul de asamblare este uneori numit cod mnemonic sau cod automat.

Majoritatea programatorilor folosesc limbaje de nivel înalt pentru a scrie programe. La fel ca limbajul uman obișnuit, o astfel de limbă are propriul alfabet - un set de simboluri folosite în limbă. Aceste simboluri sunt folosite pentru a alcătui așa-numitele cuvinte cheie ale limbii. Fiecare dintre cuvintele cheie îndeplinește propria funcție, la fel ca în limba noastră familiară, cuvinte formate din litere ale alfabetului a acestei limbi, poate îndeplini funcțiile diferitelor părți de vorbire. Cuvinte cheie sunt legate între ele în propoziții conform anumitor reguli sintactice ale limbii. Fiecare propoziție definește o anumită secvență de acțiuni pe care computerul trebuie să le efectueze.

Un limbaj de nivel înalt acționează ca un intermediar între o persoană și un computer, permițând unei persoane să comunice cu un computer într-un mod mai familiar oamenilor. Adesea, această limbă ajută la alegere metoda corecta rezolvarea problemei.

Înainte de a scrie un program într-un limbaj de nivel înalt, programatorul trebuie să scrie algoritm rezolvarea problemei, adică plan pas cu pas acțiunile care trebuie efectuate pentru a rezolva această problemă. Prin urmare, limbile care necesită o compilare preliminară a unui algoritm sunt adesea numite limbaje algoritmice.

Programare procedurală (imperativă). este o reflectare a arhitecturii computerelor tradiționale. Un program într-un limbaj de programare procedural constă dintr-o secvență de operatori (instrucțiuni) care specifică procedura de rezolvare a unei probleme. Principalul este operatorul de atribuire, care este folosit pentru a modifica conținutul zonelor de memorie. Conceptul de memorie ca depozit de valori al căror conținut poate fi actualizat prin instrucțiuni de program este fundamental pentru programarea imperativă. Un limbaj de programare procedural permite programatorului să definească fiecare pas în procesul de rezolvare a unei probleme. Particularitatea unor astfel de limbaje de programare este că sarcinile sunt împărțite în pași și rezolvate pas cu pas. Programarea imperativă este cea mai potrivită pentru implementarea subsarcinilor mici, unde viteza de execuție pe computerele moderne este foarte importantă.

Limbajele de programare procedurale includ: Ada, Basic (versiuni care încep de la Quick Basic înainte de apariția Visual Basic), C, COBOL, Fortran, modula- 2, Pascal, PL/1, Rapier, REXX.

Programare structurată- metodologia de dezvoltare software care se bazează pe reprezentarea programului în formă structura ierarhica blocuri construite din trei tipuri de structuri de bază: execuție secvențială, ramificare și buclă.

Programare orientată pe obiecte este o metodologie de programare care se bazează pe reprezentarea unui program ca o colecție de obiecte, fiecare dintre acestea fiind o implementare a unei clase specifice (un tip special de date), iar clasele formează o ierarhie bazată pe principiile moștenirii.

Obiectele înseamnă combinația de date și procedurile care le procesează într-un singur întreg. Obiectele pot face schimb de mesaje între ele. Când un obiect primește un mesaj, handlerul corespunzător, altfel numit metodă. Un obiect are un container asociativ care permite preluarea mesajului său printr-o metodă de procesare. În plus, un obiect are un obiect strămoș. Dacă nu se găsește nicio metodă de a gestiona mesajul, mesajul va fi redirecționat către obiectul strămoș. Această structură în ansamblu (masa manipulatorului + strămoși), din motive de eficiență, este separată într-un obiect separat numit clasă a acestui obiect. Obiectul însuși va avea o referință la obiectul reprezentând clasa sa. Obiectele interacționează exclusiv prin trimiterea de mesaje unul altuia.

Este important să evidențiem următoarele trei proprietăți principale ale obiectelor.

Încapsulare (protecția datelor)- un mecanism care combină datele și metodele care manipulează aceste date și le protejează pe ambele de interferențele externe.


Moştenire este procesul prin care un obiect poate moșteni proprietățile altui obiect și poate adăuga acestora trăsături caracteristice numai acestuia. Relația „descendent-strămoș” în clase este de obicei numită moștenire.

Polimorfismul este o proprietate care face posibilă înlocuirea unui obiect cu un alt obiect cu o structură de clasă similară. Prin urmare, dacă în orice scenariu de interacțiune cu obiect înlocuiți un obiect arbitrar cu altul capabil să proceseze aceleași mesaje, scenariul va fi și implementabil.

Programare declarativă. Accentul în programarea declarativă este pus pe ceea ce trebuie făcut mai degrabă decât pe modul în care ar trebui făcut (în limbaje imperative). Principalul lucru aici este formularea exactă a problemei, iar selectarea și aplicarea algoritmului necesar pentru a o rezolva este problema sistemului de execuție, dar nu a programatorului. De exemplu, pagini web activate limbaj HTML sunt declarative deoarece descriu ce ar trebui să conțină pagina, nu cum ar trebui afișată pagina pe ecran. Această abordare diferă de limbajele de programare imperative, care impun programatorului să specifice un algoritm care urmează să fie executat.

Există două ramuri ale programării declarative: funcțională, bazată pe conceptul matematic al unei funcții care nu își schimbă mediul, spre deosebire de funcțiile din limbajele procedurale care permit efecte secundare, și logică, în care programele sunt exprimate ca formule logice matematice și un computer pentru a rezolva problema încearcă să tragă consecințe logice din ele.

Programare logica bazată pe logica matematică. Dar cel mai faimos limbaj de programare logica este PROLOG. Un program PROLOG conține două componente: fapte și reguli. Faptele reprezintă datele pe care programul operează, iar colecția de fapte alcătuiește baza de date PROLOG, care este în esență o bază de date relațională. Operația principală efectuată asupra datelor este operația de potrivire, numită și operațiune de unificare sau reconciliere.

Ca și în cazul altor limbaje declarative, atunci când lucrează cu el, programatorul descrie situația (reguli și fapte) și formulează un scop (interogare), permițând interpretului PROLOG să găsească o soluție la problemă pentru el. Interpretul PROLOG este un mecanism pentru rezolvarea unei probleme folosind limbajul PROLOG. Un program PROLOG este un set de fapte și (eventual) reguli. Dacă un program conține doar fapte, atunci se numește bază de date. Dacă conține și reguli, atunci termenul bază de cunoștințe este adesea folosit.

Spre deosebire de programele scrise în limbaje procedurale, care prescriu o succesiune de pași pe care un computer trebuie să îi efectueze pentru a rezolva o problemă, în PROLOG programatorul descrie faptele, regulile, relațiile dintre ele și întrebările despre problemă. Cea mai tipică aplicație a PROLOG este în sistemele expert.

Întrebări de autotest

1. Care este programul? Ce vrei să spui prin interpret?

2. Ce este codul mașinii?

3. Ce este un traducător? Enumerați tipurile de traducători.

4. Cum lucrează interpretul? Care sunt avantajele sale?

5. Care este avantajul compilatorilor?

6. Ce componente sunt incluse în sistemul de programare integrat?

7. Ce se înțelege prin structură de date, care este clasificarea structurii datelor?

8. Ce se înțelege prin matrice de date și ce operații pot fi efectuate cu acestea?

9. Ce algoritmi există pentru sortarea tablourilor?

10. Care este scopul subrutinelor?

11. De ce avem nevoie de o bibliotecă de subrutine?

12. Ce tipuri de programare există?

Literatură

1. Stavrovsky A.B., Karnaukh T.A. Primii pași către programare. Manual de autoinstruire. - M.: Williams, 2006. - 400 p.

2. Okulov S. Fundamentele programarii Editura: Binom. Laboratorul de cunoștințe, 2008. - 383 p.

3. Kansedal S.A. Bazele algoritmizării și programării. - M.: Forum, 2008. - 351 p.

4. httn//www myfreesoft ru/default-windows-nroprams html - standard programe Windows

5. httn//khni-iin mink kharkiv edu/lihrary/datastr/hook/nrt01 html#lb11 - modele și structuri de date

6. httn://www.intuit.ru/denartment/se/nhmsu/11/3.html#sect5 - modele și structuri de date

7. http://inf.1sentemher.ru/2007/15/00.htm - enciclopedia profesorilor de informatică

8. http://www.delnhi.int.ru/articles/119/ - subrutine.

9. httn//inroc ru/naralel-nroPramminP/lection-5/ - sortare heap.