Limbaje de programare și cum diferă. Limbaje de programare: de ce au apărut, reprezentanți de seamă, cum să alegeți o limbă. Ce limbaje de programare există?

Oricât de perfect este un computer, fără software este doar o grămadă de metal și plastic. Programele sunt cele care determină ce și cum, în ce secvență efectuează anumite operații. Primele limbaje de programare au început să apară la începutul anilor cincizeci și au fost folosite pentru a converti expresii aritmetice simple în cod de mașină. Codul mașinii este un sistem de instrucțiuni de calculator interpretate direct de microprocesor. Dar este foarte incomod pentru o persoană să scrie un program în codul mașinii. Pentru a ușura munca programatorului, au început să fie create limbaje de programare sunt împărțite în limbaje de nivel înalt și de nivel scăzut. Cu cât este mai mare nivelul unui limbaj, cu atât este mai ușor pentru un programator să scrie în el. Un astfel de limbaj este mai ușor de înțeles pentru oameni, deoarece permite să specifice succesiunea necesară de acțiuni folosind construcții semantice simple. După crearea unui program, acesta este compilat - adică automat într-un limbaj de cod de mașină ușor de înțeles de procesor. Limbile de nivel scăzut sunt mult mai apropiate de codul mașinii, ceea ce le face mai dificil de scris. Dar au avantajul lor - programele scrise în acest limbaj sunt foarte rapide și compacte. Cel mai popular limbaj de nivel scăzut este Assembler. Unele dintre avantajele sale sunt atât de evidente încât chiar și în programele complexe scrise în limbaje de nivel înalt, inserțiile în Assembly sunt adesea folosite. Unul dintre cele mai comune este limbajul C++. Acesta este un limbaj foarte convenabil și destul de simplu pentru un programator, permițându-vă să creați programe de orice nivel de complexitate. Nu cu mult timp în urmă, Microsoft a dezvoltat limbajul C# (a se citi „C sharp”), care are o serie de caracteristici noi și este destinat scrierii de programe pentru sistemul de operare Windows. Microsoft a lansat, de asemenea, foarte popularul mediu de programare Microsoft Visual Studio, care permite programarea în C++, C# și în alte limbaje Limbajul de programare Delphi este foarte faimos. Ea provine din celebrul Pascal cândva, dar datorită eforturilor companiei Borland a dobândit o serie de calități noi, devenind, de fapt, o nouă limbă. Scrierea în acest limbaj este destul de simplă și convenabilă, iar datorită mediului de programare Borland Delphi, a devenit foarte răspândită Fără limbaje de programare, existența Internetului ar fi imposibilă. Limbaje precum Perl și PHP vă permit să creați scripturi care determină executarea acțiunilor necesare pe paginile site-ului. Chiar și crearea celei mai simple pagini de internet este imposibilă fără cunoștințe de HTML, limbajul standard de marcare a documentelor. Dispozitivele de calcul sunt acum peste tot: în telefoane mobileși ATM-uri, mașini computerizate cu control numeric și televizoare. Este dificil să găsești un domeniu al vieții în care să nu fie implicați într-un fel sau altul. Și toate aceste dispozitive funcționează datorită programelor scrise folosind unul sau altul limbaj de programare.

Limbajul de programare- un limbaj artificial (formal) conceput pentru a scrie programe pentru un interpret (de exemplu, un computer sau o mașină controlată numeric). Un limbaj de programare este definit de descrierea acestuia. O descriere a limbajului de programare este un document care specifică capacitățile unui limbaj algoritmic. De obicei, descrierea conține:

· alfabetul de caractere acceptabile și cuvinte de serviciu (cheie);

· reguli sintactice pentru construirea de construcții de limbaj acceptabile din alfabet;

· semantică, care explică sensul și scopul constructelor limbajului.

Limbajele de programare servesc pentru a prezenta soluții la probleme într-o formă care să poată fi executate pe un computer.

Limbajul mașină, care constă din instrucțiuni ale procesorului computerului, este, de asemenea, un limbaj de programare. Dar algoritmii scriși în limbajul mașină sunt greu de citit chiar și pentru un programator-dezvoltator, în plus, lucrul cu un astfel de limbaj necesită cunoașterea arhitecturii unui anumit computer, prin urmare, în programare, de regulă, limbaje de un nivel superior; sunt folosite decât limbajele mașină. Limbaj de nivel înalt este un limbaj de programare ale cărui concepte și structură sunt convenabile pentru percepția umană și nu depind de computerul specific pe care va fi executat programul.

Pentru ca un program scris într-un limbaj de programare de nivel înalt să fie executat pe un computer, acesta trebuie tradus în limbajul mașinii. Software-ul care îndeplinește această funcție se numește traducător.

Traducător este un program care citește textul unui program scris într-o limbă și îl traduce (traduce) în text echivalent într-o altă limbă (de obicei limbaj mașină). Traducătorii vin în două tipuri principale: compilatoareŞi interpreți.

Compilator convertește textul programului sursă într-un set de instrucțiuni pentru un anumit tip de procesor (cod mașină) și apoi îl scrie într-un fișier executabil (fișier exe), care poate fi executat ca un program separat. Cu alte cuvinte, compilatorul traduce un program dintr-un limbaj de nivel înalt într-un limbaj de nivel scăzut.

Interpret Ca urmare a traducerii, efectuează operațiunile specificate în programul sursă. În acest caz, programul rămâne în limba originală și nu poate fi executat fără un interpret.

Împărțirea în limbi compilate și interpretate este oarecum arbitrară. Deci, pentru orice limbaj compilat în mod tradițional, cum ar fi Pascal, puteți scrie un interpret, iar pentru orice limbaj interpretat puteți crea un compilator - de exemplu, limbajul BASIC, care este interpretat inițial, poate fi compilat fără nicio restricție.

Unele limbaje, cum ar fi Java și C#, se încadrează între compilat și interpretat. Și anume, programul nu este compilat în limbajul mașinii, ci într-un cod de nivel scăzut independent de mașină, bytecode. Bytecode-ul este apoi executat de mașina virtuală. Interpretarea este de obicei folosită pentru a executa bytecode. Această abordare, într-un fel, vă permite să utilizați avantajele atât ale interpreților, cât și ale compilatorilor.

De la crearea primelor mașini programabile, omenirea a venit deja cu mai mult de două mii și jumătate de limbaje de programare. Numărul de limbaje de programare este în continuă creștere, deși acest proces a încetinit în mod clar. Unele limbi sunt folosite doar de un număr mic de programatori, în timp ce altele devin cunoscute de milioane de oameni. Unele dintre ele sunt foarte specializate (concepute pentru a rezolva o anumită clasă de probleme), iar altele sunt universale. Programatorii profesioniști folosesc uneori mai mult de o duzină de limbaje de programare diferite în munca lor.

Limbajele de programare pot fi clasificate după mai multe criterii: orientate pe mașină (asambleri) și independente de mașină, specializate și universale.

Limbile specializate includ limba ART ( O automat P programat T ools) este primul limbaj de programare specializat pentru mașini-unelte cu comandă numerică. Limbajul a fost dezvoltat de un grup de specialiști americani în 1956–1959. sub conducerea matematicianului Douglas T. Ross. Limba COBOL ( Co mmon B afaceri– O orientat L limbaj), creată în SUA sub conducerea lui Grace Murray Hopper în 1959, este axată pe prelucrarea informațiilor economice. Matematicianul Grace Murray Hopper a condus proiectul de dezvoltare a COBOL cu gradul de căpitan de gradul doi, ea a devenit ulterior contraamiral. G.M. Hopper este numită „mama și bunica” lui COBOL.


(Grace Murray Hopper)

Limbajele specializate includ limbaje moderne de programare web Perl și PHP. Limbile Rapier, E-language (Rusia), SMR (Marea Britanie), LOGO (SUA) pot fi clasificate ca limbi destinate predării programării.

Cele mai comune limbaje de programare universale astăzi sunt C++, Delphi, Java, Pascal, Visual Basic, Python.

Dar, considerând limbajele de programare ca obiect independent de cercetare, acestea pot fi clasificate în funcție de conceptul de construcție a limbajului.

Clasificarea limbajelor de programare

Limbajele de programare pot fi împărțite în două clase: procedurale și non-procedurale. Procedural (imperativ) limbile sunt limbi de tip operator. Descrierea algoritmului în acest limbaj ia forma unei secvențe de operatori. O trăsătură caracteristică a unui limbaj procedural este prezența unui operator de atribuire (Basic, Pascal, C). Un program scris într-un limbaj imperativ este foarte asemănător cu ordinele imperative din limbaje naturale, adică sunt o secvență de comenzi pe care computerul trebuie să le execute. Când programează într-un stil imperativ, programatorul trebuie să explice computerului Cum trebuie să rezolvi problema.

Non-procedural (declarativ) limbile sunt limbi în care programul precizează în mod explicit ce proprietăți ar trebui să aibă rezultatul, dar nu spune cum ar trebui să fie obținut. Limbile non-procedurale sunt împărțite în două grupe: funcționale și logice.

Limbajele de programare declarative sunt limbaje de programare de nivel înalt în care declarațiile sunt declarații sau enunțuri în logică simbolică. Un exemplu tipic de astfel de limbaje sunt limbajele de programare logică (limbi bazate pe un sistem de reguli și fapte). Trăsătură caracteristică limbajele declarative este semantica lor declarativă. Conceptul de bază al semanticii declarative este că sensul fiecărei declarații este independent de modul în care acea declarație este utilizată în program. Semantica declarativă este mult mai simplă decât semantica limbilor imperative, ceea ce poate fi considerat ca un avantaj al limbajelor declarative față de cele imperative.

Limbaje logice

În programele în limbaje de programare logică, acțiunile corespunzătoare sunt efectuate numai dacă există o condiție necesară de autorizare pentru derivarea de fapte noi din aceste fapte în conformitate cu prevederile specificate. reguli logice. Programarea logică se bazează pe logica matematică (vezi „ Operații logice. Cuantificatori”, “Expresii booleene”).

Primul limbaj de programare logic a fost Planner, a fost dezvoltat de Carl Hewitt la Laborator inteligenţă artificială Massachusetts Institute of Technology în 1969. Acest limbaj conținea posibilitatea de a deduce (obține) automat un rezultat din date și reguli date prin enumerarea opțiunilor (al căror set se numea plan). Dar cel mai faimos limbaj de programare logica este PROLOG, care a fost creat in Franta la Universitatea din Marsilia in 1971 de Alain Colmerauer.

Alain Colmero
(Alain Colmerauer)

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. Regulile constau dintr-un antet și subgoaluri. Execuția unui program scris în PROLOG începe cu o solicitare și constă în demonstrarea adevărului unei anumite afirmații logice în cadrul unui set dat de fapte și reguli. Algoritmul acestei demonstrații (algoritm de inferență logică) determină principiile de execuție a unui program scris în PROLOG.

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ă. De exemplu, să presupunem că avem următoarele fapte cu privire la cine este mama căruia:

mama („Dasha”, „Masha”).

mama („Natasha”, „Dasha”).

În plus, există o regulă care introduce relația cu bunica:

bunica(X,Y):-

Acum putem face întrebări despre cine este bunica acestei sau aceleia persoane sau cine este nepoata (nepotul) unei anumite femei:

bunica ("Natasha",X).

Sistemul PROLOG va răspunde la această întrebare după cum urmează:

Posibilitățile de utilizare a limbajului PROLOG sunt foarte extinse. Printre cele mai cunoscute se numără aplicațiile în matematică simbolică, planificare, proiectare asistată de calculator, construcție de compilatoare, baze de date și procesare de text în limbaj natural. Dar poate cea mai tipică aplicație a PROLOG este în sistemele expert.

Astăzi există o întreagă clasă de limbaje logice; Astfel, limbajele logice de programare QA-4, Popler, Conniver și QLISP au provenit și ele din limbajul Planner. Limbajele de programare Mercury, Visual Prolog, Oz și Fril sunt derivate din limbajul Prolog.

Limbaje funcționale

Primul limbaj de tip funcțional este LISP, creat la Massachusetts Institute of Technology în 1956–1959. John McCarthy, care în 1956 la Conferința de la Darmouth (SUA) a propus pentru prima dată termenul de „inteligență artificială”.

John McCarthy

Și, deși disputele în jurul acestui termen și a direcției științifice dezvoltate în cadrul său încă nu scad, cercetătorii sunt unanimi în utilizarea limbajelor funcționale și logice pentru acest domeniu. Un număr semnificativ de lucrări privind inteligența artificială au fost implementate în LISP.

După apariția sa, LISP a primit numeroase epitete care reflectă caracteristicile sale: limbajul funcțional, limbajul simbolic, limbajul de procesare a listelor, limbajul recursiv. Din punctul de vedere al clasificării de astăzi, LISP este definit ca un limbaj de programare de tip funcțional, care se bazează pe metoda -calculus (metoda -calculus a fost dezvoltată în anii 30 ai secolului trecut de către A. Church ca model matematic riguros pentru funcții calculabile, vezi „Teoria algoritmilor”).

Un program scris într-un limbaj funcțional constă dintr-un set neordonat de ecuații care definesc funcții și valori care sunt specificate ca funcții ale altor valori. Programele și datele LISP există sub formă de expresii simbolice, care sunt stocate ca structuri de listă. LISP se ocupă cu două tipuri de obiecte: atomiŞi liste. Atomii sunt simboluri folosite pentru identificarea obiectelor, care pot fi numerice sau simbolice (concepte, materiale, oameni etc.). O listă este o succesiune de zero sau mai multe elemente incluse în paranteze, fiecare dintre acestea fiind fie un atom, fie o listă. Pe liste se efectuează trei operații primitive: extragerea primului element al listei; obținerea restului listei după eliminarea primului element; concatenarea primului element al listei L și a restului listei Q.

Texte ale programelor numai în limbaje de programare funcționale descrie o modalitate de a rezolva o problemă, dar nu prescrieți o succesiune de acțiuni pentru rezolvarea acesteia.

Următoarele sunt de obicei considerate principalele proprietăți ale limbajelor de programare funcționale: concizie și simplitate; tastare puternică; modularitatea; funcțiile sunt obiecte de calcul; curățenia (lipsa de efecte secundare); calcule amânate (leneși).

Pe lângă LISP, limbajele funcționale includ REFAL (dezvoltat la mijlocul anilor 60 de V.F. Turchin la Universitatea de Stat din Moscova M.V. Lomonosov), Haskell, Clean, ML, OCaml, F#.

Să dăm un exemplu de descriere a unui algoritm binecunoscut sortare rapidă lista în Haskell:

qsort(x:xs) = qsort elts_lt_x++[x]

Qsort elts_greq_x unde

elts_lt_x =

elts_greq_x =

Aici scrie că lista goală este deja sortată. Iar sortarea unei liste nevide constă în împărțirea listei în trei: o listă de elemente mai mică decât capul listei originale, capul listei originale ([x]) și o listă de elemente din coada originalului. listă mai mare sau egală cu x.

Limbaje orientate pe obiecte

Limbaje orientate pe obiecte- acestea sunt limbaje în care conceptele de procedură și date utilizate în sistemele de programare convenționale sunt înlocuite cu conceptul de „obiect” (a se vedea articolul „ Programare orientată pe obiecte"). SmallTalk este considerat a fi limbajul de programare orientată pe obiecte în forma sa pură, capabilitățile de programare orientată pe obiecte se găsesc și în Java, C++ și Delphi.

Dezvoltarea ulterioară a programării moderne este asociată cu așa-numita „programare paralelă”. Pentru a implementa această tehnologie, sunt dezvoltate limbaje specializate orientate pe obiecte. Limbile de acest tip includ, de exemplu, MC# ( mcsharp) este un limbaj de programare la nivel înalt orientat pe obiecte pentru platforma .NET care acceptă crearea de programe care rulează într-un mediu distribuit cu apeluri asincrone.

Structura limbajului de programare

Există diferențe fundamentale între limbajele de programare existente în conceptul de construcție a limbajului, acest lucru este valabil mai ales pentru mai multe limbi timpurii, dar toate aceste limbaje se numesc limbaje de programare deoarece, din punct de vedere al sistemului intern de construcție, au aceeași structură formală.

Orice limbaj de programare este format din propoziții (operatori). Propozițiile (precum cuvintele) sunt definite pe un anumit alfabet C. Sintaxa limbajului descrie un set de propoziții peste alfabetul C, care reprezintă în exterior programe bine formate.

Sintaxă ale unei limbi sunt regulile de obținere a cuvintelor și propozițiilor din acea limbă. Sintaxa este descrisă schematic folosind anumite reguli gramaticale.

Cunoașterea limbajului formal (alfabet + sintaxă), deși suficientă pentru stabilire corectitudinea sintactică programului, dar nu suficient pentru a-i înțelege scopul și metoda de acțiune. Semnificația și modul de funcționare a unui program într-un limbaj de programare sunt clarificate prin specificarea semanticii.

Semantica unei limbi sunt regulile de interpretare a cuvintelor într-un limbaj formal, i.e. stabilirea sensului elementelor lingvistice individuale.

Pentru a defini limbaje formale, inclusiv limbaje de programare, sunt folosite BNF (forme Backus-Naur) și diagrame sintactice. Acestea sunt două moduri interschimbabile de a-l descrie.

Când descrieți un limbaj de programare folosind BNF, sunt utilizate următoarele notații:

1) <..>- cuvânt definit;

2) R - regula din sintaxa pentru formarea cuvintelor;

3) ::= - regula BNF.

Fiecare R consta din cuvinte terminale sau lexem limba și eventual următoarele caractere:

· [..] - acest element este prezent în BNF;

· (..) - această intrare poate fi utilizată în BNF;

· (..)* - această apariție poate fi folosită în BNF de un număr finit de ori.

Exemplul 1. Să dăm un exemplu de regulă BNF care definește un număr întreg.

Această regulă arată după cum urmează: „Un număr întreg este caracterul 0 sau o secvență de caractere care poate începe cu simbolul „–”, urmată de o cifră diferită de zero, care poate fi urmată de orice succesiune finită de cifre.”

O formă specială de descriere a limbajelor formale, similară cu BNF, este reprezentată de diagrame sintactice. Diagramele de sintaxă folosesc trei tipuri de elemente: oval/cerc, dreptunghi, săgeți. Cuvintele terminale sau lexemele sunt plasate în ovale, iar cuvintele definite sunt în dreptunghiuri. Reprezentarea grafică a limbajului prin diagrame sintactice face descrierea limbii clară.

Exemplul 2. Descrierea unui număr întreg folosind o diagramă de sintaxă.

Conform Programului Model, este necesar ca elevii să-și imagineze clasificarea modernă a limbajelor de programare, precum și să fie orientați în domeniile de aplicare ale fiecăruia dintre ele. Cel mai simplu mod de a prezenta acest subiect este după ce v-ați familiarizat deja cu unul dintre limbajele de programare.

Merită să spunem de ce apar limbi noi și cele vechi sunt îmbunătățite: în primul rând, acest lucru se întâmplă atunci când se caută un mijloc de a scrie rapid programe complexe care, de asemenea, nu conțin erori. Există un exemplu binecunoscut când crearea limbajului ADA (numit după prima femeie programatoare Ada Lovelace, fiica lui Byron) a fost inițiată în 1974 la Departamentul de Apărare al SUA. Armata americană și-a dat seama că a pierdut mult timp, efort și bani în dezvoltarea și întreținerea sistemelor informatice încorporate (cum ar fi sistemele de ghidare a rachetelor) și că erorile subtile în limbajele de programare provocau adevărate dezastre.

Limbajele declarative au fost foarte populare la sfârșitul anilor 80 și începutul anilor 90 ai secolului trecut, au fost numite limbaje de programare cu inteligență artificială pentru calculatoarele de generația a cincea. Cu toate acestea, speranțele pentru răspândirea lor pe scară largă nu au fost încă realizate. Poate pentru că sistemele de programare funcționale și logice existente nu permit crearea de programe care rulează rapid pentru sarcini semnificative. Este posibil ca timpul lor pur și simplu să nu fi sosit încă.

Atunci când alegeți o strategie de predare a temei „Algoritmizare și programare”, este necesar să se țină seama de faptul că sarcina unui curs de educație generală este în mare măsură dezvoltarea unui anumit stil de gândire, formarea celor mai generale abilități. , abilități și idei, mai degrabă decât stăpânirea anumitor limbi specifice și mijloace tehnice programare. În același timp, un astfel de curs ar trebui să servească drept bază pentru studiul profesional ulterior al programării în scoala superioara sau liceu (ca parte a formării profesionale).

În prezent, există două abordări cele mai comune pentru predarea programării:

1) predare bazată pe un limbaj educațional special conceput axat pe predarea abilităților de bază de programare;

2) studierea unuia sau mai multor limbaje de programare care sunt utilizate pe scară largă în practică în rezolvarea problemelor științifice și economice (astfel de limbaje pot fi numite standard).

Prima abordare este adesea folosită atunci când se predau elementele de bază ale programării în licee folosind limbi speciale de exemplu, pini, limbă electronică, LOGO. Aceste limbi țin cont de capacitățile elevilor de școală primară. Această abordare este bună pentru studiul aprofundat al informaticii în clasele 5-6.

În ceea ce privește a doua abordare, putem spune că cele mai multe implementari moderne limbi standard încărcate un număr mare detalii tehnice si greu de invatat. Cu toate acestea, cel mai potrivit pentru școală gimnazială, unde cursul de informatică se predă în clasele 8-11, este formare fundamente teoretice programare bazată pe un limbaj standard. Nu este necesar să intri în profunzimile limbii. Elevii care sunt interesați de acest lucru o pot face singuri. Cea mai mare atenție ar trebui acordată trecerii de la structurile algoritmice la implementarea lor software într-un limbaj de programare.

Este demn de remarcat aici că Pascal a fost creat inițial ca limbaj educațional, dar de-a lungul timpului a fost adoptat pe scară largă ca limbaj standard și s-a dezvoltat într-un limbaj orientat pe obiecte cu tehnologie de programare vizuală, Delphi. Puteți lua Pascal sau Basic ca bază pentru un curs în clasele 8-9, iar ca curs extins (opțional) în clasele 10-11, puteți prezenta elevilor extensiile lor orientate pe obiecte (Delphi și Visual Basic). Fiecare limbă are susținătorii și oponenții săi, iar alegerea finală rămâne a profesorului.

Există două abordări principale pentru a învăța un limbaj de programare: formalși „programarea modelelor”. Primul se bazează pe o descriere formală (strictă) a constructelor limbajului de programare ( sintaxă limba și ea semantică) într-un fel sau altul (folosind diagrame de sintaxă, meta-limbaj sau formale descriere verbală, în special, semantică) și utilizarea doar a elementelor de limbaj studiate și, prin urmare, ușor de înțeles atunci când se rezolvă probleme. În cea de-a doua abordare, studenții sunt prima dată programe gata făcute, se spune exact ce fac ei și se propune să se scrie un program similar sau să se schimbe unul existent, fără a explica pe deplin o serie de detalii „tehnice” sau nesemnificative, din punctul de vedere al profesorului, pentru rezolvarea problemei. Se spune că veți afla mai târziu sensul exact al construcțiilor corespunzătoare, dar deocamdată procedați în același mod. A doua abordare permite o așa-numită „pornire rapidă”, dar creează pericolul de a crea utilizatori semi-alfabetizați ai mediului de programare, de exemplu. oameni care folosesc suficient în practica lor desene complexe, dar nu poate explica clar de ce trebuie utilizate într-un anumit caz și cum funcționează. Drept urmare, mai devreme sau mai târziu astfel de „programatori” întâmpină erori pe care pur și simplu nu le pot remedia - le lipsește cunoștințele.

Una dintre sarcinile informaticii școlare este de a preda o abordare formală, în special, atunci când se utilizează definiții diferite. Și studiul formal al unui limbaj de programare contribuie foarte mult la acest lucru. Dar chiar și fără exemple bune(eșantioanele) sunt indispensabile atunci când predați programarea elevilor. Și cu cât studenții sunt mai tineri, cu atât mai multe exemple trebuie date atunci când descriem limba (uneori chiar înlocuind o definiție strictă cu acestea). Un alt lucru este că este necesar să se asigure că, în urma discutării exemplului, toate detaliile acestuia sunt clare pentru școlari (este necesar să se explice cum și de ce funcționează acest lucru, inclusiv bazându-ne pe materialul formal deja studiat). În acest caz, studenții puternici vor avea ocazia să înțeleagă totul în detaliu și vor putea folosi cunoștințele dobândite în viitor, în timp ce restul vor dobândi abilități specifice și vor lăsa posibilitatea de a reveni la definițiile formale ulterior, dacă este necesar.

Î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 limbaje în codul mașinii.

Limbajele de programare existente pot fi împărțite în două grupe: procedurale și non-procedurale (vezi Fig. 4.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 procesoarele au seturi de instrucțiuni diferite. Dacă un limbaj de programare se concentrează 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.

Orez. 4.1. Clasificarea generală a limbajelor de programare

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, deci programele create sunt la nivel textele sursă ușor de portat pe alte platforme pentru care a fost creat un traducător al acestei limbi. 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, deoarece fiecare familie de calculatoare are propriul său limbaj intern specific (mașină) și poate executa doar acele comenzi care sunt scrise în acest limbaj, sunt folosite programe speciale de traducător 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ă să ocupe 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 mare în dezvoltarea unui compilator în comparație cu un interpret din aceeași limbă se explică prin faptul că compilarea unui program include două acțiuni: analiza, adică determinarea corectitudinii programului sursă în conformitate cu regulile de construire a constructelor de limbaj ale intrării. limbaj și sinteză - generarea unui program echivalent în coduri de mașină. Difuzarea folosind metoda de compilare necesită „vizionarea” repetată a programului difuzat, de exemplu. traducători-compilatori sunt multi-pass: la prima trecere, se 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.

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 și depanare a programelor, 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.

Programarea procedurală clasică necesită ca programatorul să ofere o descriere detaliată a modului de rezolvare a problemei, adică formularea algoritmului și notația sa specială. Î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
tehnologii 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 se utilizează un limbaj declarativ, programatorul specifică sursa structurilor informaţionale, 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.

1.Fortran(Formula TRANslating system – 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.

2.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.

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

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

5.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 totul institutii de invatamant, centre de programare și firme private. Au fost create mai multe limbi mai puternice pe baza limbajului Pascal (Modula, Ada, Delphi).

6.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 zonele de management
și afaceri.

7.ADA;este limba câștigătoare (mai 1979) a competiției lingvistice universale a Pentagonului din 1975. Dezvoltatorii sunt un grup de oameni de știință condus de Jean Ikhbia. Limba câștigătoare a fost numită ADA, în onoarea Augustei Ada Lovelace. Limba ADA este un descendent direct al limbii
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;

8.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), 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ă.

9.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.

10.Delphi(Delphi); limbaj de programare „vizual” orientat pe obiecte; V în acest moment extrem de popular. 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.

11.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.

12.Lisp(Lisp) – limbaj funcțional programare. Se concentrează 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.

13.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:

1. HTML. Un limbaj 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.

2. 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.

3. 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ă.

4. 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.

Alegerea unui limbaj de programare depinde de mulți factori: scopul, ușurința în scrierea programelor sursă, eficiența programelor obiect rezultate etc. Varietatea problemelor rezolvate de un calculator determină varietatea limbajelor de programare.

Întrebări de securitate

1. Ce sunt sistemele de programare și cărei clase de programe aparțin?

2. Ce este inclus în sistemele de programare?

3. În ce limbaj de programare au fost create primele programe?

4. În ce limbi sunt împărțite limbile procedurale?

5. Descrieți limbaje de nivel scăzut.

6. Ce limbă este o limbă de nivel scăzut?

7. Avantajele limbajelor de nivel scăzut.

8. Descrieți limbaje de nivel înalt.

9. Avantajele limbilor de nivel înalt.

10. Dați exemple de limbaje de nivel înalt.

11. Pentru ce sunt destinați traducătorii?

12. Cum diferă un compilator de un interpret?

13. Dezavantajele interpretării (ca tip de traducător).

14. Care este procesul de compilare a unui program?

15. Ce acțiuni sunt efectuate în timpul compilării?

16. Cum diferă un modul de încărcare de un modul obiect?

17. Cum diferă programarea procedurală de programarea non-procedurală?

18. Ce tipuri de programare sunt non-procedurale?
programare?

19. Caracteristici ale limbajelor declarative.

20. Descrieți pe scurt limbajele de programare: Fortran, BASIC, Pascal, Cobol.

21. Descrieți pe scurt limbajele de programare: Ada, C, C++, Delphi, Java.

22. Dați exemple de limbaje orientate pe obiecte.

23. Cărei clase de limbi aparține limbajul Lisp?

24. Cărei clase de limbi aparține Prolog?


    Liste de limbaje de programare După categorie Cronologic Genealogic Este furnizată o listă de limbaje de programare grupate pe categorii. Unele limbi se încadrează în mai mult de o categorie. Cuprins... Wikipedia

    Liste de limbaje de programare După categorie Cronologic Genealogic Este furnizată o listă genealogică de limbaje de programare. Limbile sunt clasificate în funcție de limbile antecedente care au avut o influență puternică asupra formării ... Wikipedia

    Cuprins 1 După producător sau platformă 1.1 Flash 1.2 Java 1.3 Microsof ... Wikipedia

    Liste de limbaje de programare Pe categorii Cronologic Genealogic Cronologie a limbajelor de programare ordonate după ordine cronologică lista de limbaje de programare. Cuprins... Wikipedia

    Acest articol ar trebui să fie Wikified. Formatați-l conform regulilor de formatare a articolului. Legendă... Wikipedia

    Această pagină este o listă informativă. Limbaje de programare .NET (CLI-enabled languages ​​sau CLI languages) limbaje de programare pentru computere utilizate pentru a crea biblioteci și programe care îndeplinesc cerințele Comm ... Wikipedia

    Articolul principal: Editor de text Lista editoarelor de text Windows și tabel de comparație. Cuprins 1 Tabel de comparație a editorilor de text celebri... Wikipedia

    Limbajul de programare C# este unul dintre cele mai populare limbaje de programare astăzi. Software deschis Paint.NET pentru procesarea graficelor raster SharpDevelop IDE deschis pentru C#, Visual Basic .NET (VB.NET), Boo ... Wikipedia

    Aceasta este o listă de software dezvoltat de Free Software Foundation ca parte a proiectului GNU UNIX, un sistem de operare similar constând în întregime din software liber. Majoritatea acestor pachete de asemenea... ... Wikipedia

    Acest articol sau secțiune necesită revizuire. Vă rugăm să îmbunătățiți articolul în conformitate cu regulile de scriere a articolelor... Wikipedia

Cărți

  • JavaScript pentru copii. Tutorial de programare, Morgan Nick. Despre carte Această carte vă va permite să vă scufundați în programare și să stăpâniți JavaScipt cu ușurință. Veți scrie mai multe jocuri reale - căutând comori pe hartă, „Hangman” și „Șarpe”. La fiecare...
  • Python pentru copii. Tutorial de programare de Jason Briggs. Despre carte Această carte este un tutorial despre unul dintre cele mai populare limbaje de programare de astăzi - Python. Începând cu cei mai simpli pași, pas cu pas vei scrie...

Când încercați să vă dați seama ce limbaj de programare să începeți să învățați, probabil că veți întâlni termenii „nivel înalt” și „nivel scăzut”. Oamenii vorbesc tot timpul despre limbaje de programare de nivel înalt și de nivel scăzut. Dar ce înseamnă mai exact asta? Și ce înseamnă să înveți să scrii cod? Să începem cu definițiile fiecăruia.


Limbaje de programare „High” și „Low Level”.

În acest articol voi vorbi despre limbile „de nivel înalt” și „de nivel scăzut”. Dar nu există criterii speciale pentru a determina acest lucru. Rețineți că acest lucru depinde în mare măsură de perspectiva dvs. Dacă ești un programator C, Java poate părea la un nivel destul de înalt. Dacă sunteți obișnuit cu Ruby, Java poate părea un limbaj de nivel scăzut.

Cod mașină și limbaje de nivel scăzut

Indiferent dacă o limbă este considerată la nivel înalt sau la nivel scăzut (sau undeva între ele), despre care vorbim despre abstractizare. Codul mașinii nu are abstractizare - conține instrucțiuni individuale care sunt transmise computerului. Și deoarece mașinile se ocupă doar de numere, acestea sunt reprezentate în binar (deși uneori sunt scrise în notație zecimală sau hexazecimală).

Iată un exemplu de cod de mașină:

În codul mașinii, operațiunile trebuie specificate cu precizie. De exemplu, dacă o informație trebuie preluată din memorie, codul mașinii va trebui să spună computerului unde se află în memorie să o găsească.

Scrierea direct în codul mașinii este posibilă, dar foarte dificilă.

Limbajele de programare de nivel scăzut adaugă un pic de abstractizare codurilor de mașină. Această abstractizare ascunde instrucțiuni specifice codului de mașină în spatele declarațiilor care sunt mai ușor de citit de om. Limbile de asamblare sunt limbajele de cel mai jos nivel, lângă codul mașină.

În codul mașinii ați putea scrie ceva de genul „10110000 01100001”, dar limbajul de asamblare poate simplifica acest lucru ca „MOV AL, 61h”. Există încă o corespondență aproape unu-la-unu între ceea ce este scris în limbaj de asamblare și instrucțiunile date mașinii.

Pe măsură ce treceți în limbaje de programare mai populare, ajungeți cu ceva de genul C. Deși acest limbaj nu este la fel de scăzut ca limbajul de asamblare, există încă o corespondență puternică între ceea ce este scris în C și codul mașinii. Majoritatea operațiunilor scrise în C pot fi completate cu un număr mic de instrucțiuni de cod de mașină.

Limbaje de programare la nivel înalt

La fel ca limbajele de nivel inferior, nivelurile superioare acoperă o gamă largă de abstracții. Unele limbaje, cum ar fi Java (mulți îl consideră un limbaj de programare intermediar), vă oferă încă mult control asupra modului în care computerul gestionează memoria și datele.

Altele, precum Ruby și Python, sunt foarte abstracte. Vă oferă mai puțin acces la funcțiile de nivel inferior, dar sintaxa este mult mai ușor de citit și de scris. Puteți grupa lucrurile în clase care moștenesc caracteristici, așa că trebuie să le declarați o singură dată.

Variabilele, obiectele, subrutinele și buclele sunt părți importante ale limbajelor de nivel înalt. Aceste și alte concepte vă vor ajuta să spuneți mașinii o mulțime de lucruri prin declarații scurte și concise.

În timp ce limbajul de asamblare are o mapare aproape uniformă între instrucțiunile sale și instrucțiunile codului de mașină, un limbaj de nivel superior poate trimite zeci de comenzi cu o singură linie de cod.

Este important de reținut că „limbajele de programare de nivel înalt” pot include orice este mai abstract decât limbajul de asamblare.

Ce limbă să studiez: nivel scăzut sau înalt?

Acest lucru este cu siguranță intrebare generala printre programatori noi și aspiranți. Ce limbaje de programare sunt mai bine de învățat: nivel înalt sau nivel scăzut? Ca și în cazul multor întrebări de programare, problema limbajelor de programare la nivel înalt și la nivel scăzut nu este atât de simplă.

Ambele tipuri de limbi au avantaje importante. Limbile de nivel scăzut, deoarece necesită puțină interpretare de către computer, tind să fie foarte rapide. Și oferă programatorilor mult control asupra stocării, memoriei și regăsării datelor.

Cu toate acestea, limbajele de nivel înalt sunt intuitive și permit programatorilor să scrie cod mult mai eficient. Aceste limbi sunt, de asemenea, considerate „mai sigure”, deoarece există mai multe garanții care împiedică codificatorul să emită comenzi prost scrise care ar putea provoca daune. Dar nu le oferă programatorilor același control asupra proceselor de nivel scăzut.

Având în vedere acest lucru, iată o listă de limbi populare pe o scară de la scăzut la mare:

  • JavaScript
  • Piton

Desigur, acest lucru este parțial subiectiv. Și include doar o mică parte din limbile disponibile.

Dar acest lucru ar trebui să vă ofere o idee despre ce nivel sunt limbile care vă interesează.

Ce vreţi să faceţi?

Când decideți ce limbă veți învăța, prima întrebare ar trebui să fie: ce doriți să programați?

Dacă doriți să programați sisteme de operare, nuclee sau orice altceva care trebuie să ruleze la viteză maximă, un limbaj de nivel inferior poate fi o alegere bună. Majoritatea Windows, OS X și Linux sunt scrise în limbaje C și derivate din C, cum ar fi C++ și Objective-C.

Multe aplicații moderne sunt scrise în limbi de nivel superior sau chiar în limbaje specifice domeniului. Python și Ruby sunt deosebit de populare pentru aplicațiile web, deși HTML5 devine din ce în ce mai puternic. Limbi precum Swift, C#, JavaScript și SQL au propriile lor puncte tari și puncte slabe.

Citeam recent un thread pe un forum de programare și am dat peste o sugestie interesantă: studiați ambele niveluri simultan. Veți obține o înțelegere mai profundă a tipurilor de abstracții care fac un limbaj de nivel superior mai eficient.

Desigur, învățarea a două limbi în același timp nu este ușoară, așa că poate doriți să vă extindeți puțin învățarea. Și alegerea a două limbi care sunt cele mai asemănătoare poate fi utilă.

Din nou, ne vom întoarce la ceea ce am spus înainte: alegeți o limbă în funcție de ceea ce doriți să faceți. Faceți câteva cercetări pentru a afla ce limbi folosesc oamenii în domeniul lor. Apoi utilizați aceste informații pentru a alege o limbă de nivel înalt și scăzut și pentru a începe să le învățați.

Veți vedea în curând paralelele și veți obține o înțelegere mult mai profundă a modului în care funcționează programarea.

Concentrați-vă pe scop, nu pe mijloace.

Există multe criterii pe care le puteți folosi pentru a alege un limbaj de programare. Unul dintre criterii este nivelul ridicat și scăzut. Dar în aproape toate cazurile, criteriul pe care ar trebui să-l utilizați este ceea ce doriți să programați.

Proiectul dvs. ar putea beneficia de un limbaj de nivel scăzut. Sau ar putea fi mult mai eficient nivel înalt. Depinde de tine să alegi instrumentul potrivit pentru muncă. Concentrează-te pe obiectivul tău și alege limba potrivită de fiecare dată.

Aveți experiență cu limbi de nivel înalt și scăzut? Preferi una peste alta? Împărtășește-ți gândurile în comentariile de mai jos!



Distribuie