Limbaje de programare ce pentru ce. Alegerea unui limbaj de programare

By Alexandru Corbaru

Programarea este o știință întreagă care vă permite să creați programe pentru computer. Acesta include un număr mare de operații și algoritmi diferiți care formează un singur limbaj de programare. Deci, ce este și ce sunt limbajele de programare? Articolul oferă răspunsuri, precum și o listă generală a limbajelor de programare.

Istoria originii și a schimbării limbaje de programare ar trebui studiat împreună cu istoria dezvoltării tehnologia calculatoarelor, deoarece aceste concepte sunt direct legate. Fără limbaje de programare, ar fi imposibil să se creeze orice program pentru funcționarea unui computer, ceea ce înseamnă că crearea computerelor ar deveni un exercițiu fără sens.

Primul limbaj mașină a fost inventat în 1941 de Konrad Zuse, care este inventatorul motorului analitic. Puțin mai târziu, în 1943, Howard Aiken a creat mașina Mark 1, capabilă să citească instrucțiuni la nivelul codului mașinii.

În anii 1950, exista o cerere activă de dezvoltare software, iar limbajul mașinii nu putea gestiona cantități mari de cod, așa că a fost creat un nou mod de comunicare cu computerele. Assembler este primul limbaj mnemonic care înlocuiește instrucțiunile mașinii. De-a lungul anilor, lista limbajelor de programare crește doar, deoarece domeniul de aplicare a tehnologiilor informatice este din ce în ce mai larg.

Clasificarea limbajelor de programare

În acest moment există peste 300 de limbaje de programare. Fiecare dintre ele are propriile sale caracteristici și este potrivit pentru o sarcină specifică. Toate limbajele de programare pot fi aproximativ împărțite în mai multe grupuri:

Orientat pe aspect (ideea principală este separarea funcționalității pentru a crește eficiența modulelor software).

Structural (bazat pe ideea de a crea o structură ierarhică a blocurilor individuale de programe).

Logică (bazată pe teoria aparatului logicii matematice și regulile de rezoluție).

Orientat pe obiecte (în astfel de programări nu se utilizează algoritmi, ci obiecte care aparțin unei anumite clase).

Multi-paradigmă (combina mai multe paradigme, iar programatorul însuși decide ce limbaj să folosească într-un caz particular).

Funcțional (elementele principale sunt funcții care modifică valoarea în funcție de rezultatele calculelor datelor inițiale).

Programare pentru începători

Mulți oameni pun întrebarea, ce este programarea? Practic, este o modalitate de a comunica cu un computer. Datorită limbajelor de programare, putem seta sarcini specifice pentru diferite dispozitive prin crearea de aplicații sau programe speciale. Când studiați această știință în etapa inițială, cel mai important lucru este să alegeți limbaje de programare adecvate (interesante pentru dvs.). Lista de start este mai jos:

Basic a fost inventat în 1964, aparține familiei de limbaje la nivel înalt și este folosit pentru a scrie programe de aplicații.

Python („Python”) este destul de ușor de învățat datorită sintaxei sale ușor de citit, dar avantajul este că puteți crea atât programe desktop obișnuite, cât și aplicații web.

Pascal („Pascal”) - una dintre cele mai vechi limbi (1969), creată pentru predarea studenților. Modificarea sa modernă este puternic tastată și structurată, dar Pascal este un limbaj complet logic, care este ușor de înțeles.

Nu este lista plina limbaje de programare pentru începători. Există un număr imens de sintaxe care sunt disponibile pentru înțelegere și care vor fi cu siguranță solicitate în următorii ani. Oricine are dreptul să aleagă în mod independent direcția care va fi interesantă pentru el.

Începătorii au posibilitatea de a accelera învățarea programării și a elementelor de bază ale acesteia datorită instrumentelor speciale. Asistentul principal este un mediu de dezvoltare integrat pentru programe și aplicații Visual Basic (Visual Basic este, de asemenea, un limbaj de programare care a moștenit stilul de bază din anii 1970).

Niveluri de limbaj de programare

Toate limbajele formalizate destinate creării, descrierii programelor și algoritmilor pentru rezolvarea problemelor pe computere sunt împărțite în două categorii principale: limbaje de programare de nivel scăzut (lista este prezentată mai jos) și nivel inalt... Să vorbim despre fiecare dintre ele separat.

Limbile de nivel scăzut sunt concepute pentru a crea instrucțiuni de mașină pentru procesoare. Principalul lor avantaj este că folosesc notația mnemonică, adică, în loc de o secvență de zerouri și unii (din sistemul de numere binare), computerul își amintește un cuvânt abreviat semnificativ din limba engleză. Cele mai cunoscute limbi de nivel scăzut sunt „Assembler” (există mai multe subspecii ale acestui limbaj, fiecare dintre acestea având multe în comun, dar diferă doar într-un set de directive și macrocomenzi suplimentare), CIL (disponibil în platforma .Net) și JAVA Bytecode.

Limbaje de programare la nivel înalt: listă

Limbile de nivel înalt sunt concepute pentru confortul și eficiența aplicațiilor, sunt exact opusul limbajelor de nivel scăzut. Trăsătura lor distinctivă este prezența construcțiilor semantice care descriu succint și concis structurile și algoritmii programelor. În limbile de nivel scăzut, descrierea lor în codul mașinii ar fi prea lungă și de neînțeles. Limbile de nivel înalt sunt independente de platformă. În schimb, compilatoarele îndeplinesc funcția de traducător: traduc textul programului în instrucțiuni elementare ale mașinii.

Următoarea listă de limbaje de programare: C ("C"), C # ("C-sharp"), "Fortran", "Pascal", Java ("Java") - sunt printre cele mai utilizate sintaxe la nivel înalt. Are următoarele proprietăți: aceste limbaje funcționează cu structuri complexe, acceptă tipuri de date șir și operații cu fișiere I / O de informații și au, de asemenea, avantajul de a fi mult mai ușor de lucrat, datorită lizibilității și sintaxei lor ușor de înțeles.

Cele mai utilizate limbaje de programare

Practic, puteți scrie un program în orice limbă. Întrebarea este: va funcționa eficient și fără probleme? De aceea, pentru rezolvarea diverselor sarcini, cel mai mult limbi adecvate programare. Lista după popularitate poate fi caracterizată după cum urmează:

limbaje OOP: Java, C ++, Python, PHP, VisualBasic și JavaScript;

un grup de limbaje structurale: Basic, Fortran și Pascal;

multi-paradigmă: C #, Delphi, Curry și Scala.

Domeniul de aplicare al programelor și aplicațiilor

Alegerea limbii în care este scris acest program depinde în mare măsură de domeniul de aplicare al acestuia. Deci, de exemplu, pentru a lucra cu hardware-ul computerului însuși (scrierea de drivere și programe suport), cea mai bună opțiune ar fi C („C”) sau C ++, care sunt incluse în principalele limbaje de programare (vezi lista de mai sus). Și pentru dezvoltarea de aplicații mobile, inclusiv jocuri, ar trebui să alegeți Java sau C # („C-Sharp”).

Dacă nu ați decis încă în ce direcție să lucrați, vă recomandăm să începeți să învățați din limbile C sau C ++. Au o sintaxă foarte clară, o diviziune structurală clară în clase și funcții. În plus, știind C sau C ++, puteți învăța cu ușurință orice alt limbaj de programare.

Problema alegerii unui limbaj de programare se confruntă atât cu începătorii care doresc să se arunce în lumea programării interesante, cât și cu programatorii experimentați care cunosc unul sau mai multe limbaje de programare.

Să aruncăm o privire rapidă la ce limbaje există, la ce servesc și ce limbaj de programare să alegem pentru dvs.

Există un număr mare de limbaje de programare. Fiecare limbă a fost inventată și creată pentru a rezolva un anumit tip de problemă. Majoritatea limbajelor se suprapun în funcționalitate, astfel încât aceeași sarcină poate fi rezolvată cu instrumente diferite. Dar, în același timp, fiecare limbaj de programare are propriile sale avantaje, chiar și atunci când rezolvă un tip de problemă.

Lista principalelor limbaje de programare pe care le folosesc majoritatea programatorilor

Principalele limbaje de programare:

Iad. Submarin nuclear. Asamblator. ActionScript. ABAP / 4. AutoIt. AWK. DE BAZĂ. C. Cobol. C ++. C #. Cω. Clarion. Clojure. Fuziune la rece. Lisp comun. D. dBase. Delphi. Eiffel. Erlang. F #. Mai departe. Fortran. Gambas. Merge. Macabru. HAL / S. Haskell. Pictogramă. Java. JavaScript. Depozit de vechituri. Lua. MATLAB. Obiect Pascal. Obiectiv-C. OCaml. Oz. Oberon. Analizator. Pascal. Perl. PHP. PowerBASIC. PureBasic. Piton. PL / 1. Prolog. Rubin. Scala. Sistem. Convorbire scurtă. SQL. PL / SQL. Tcl. Vala. Visual Basic. VB.NET

Academic:

Curat. Curry. Siglă. ML. Modula-3. REFAL. Simula. IEC61131-3 Listă de instrucțiuni. SF. FBD. Diagrama scării (LD). SFC

Ezoteric:

HQ9 + / HQ9 ++. INTERCAL. Brainfuck. Brainfork. Împreună. Malbolge. Piet. Linguriţă. Unlambda. Spatiu alb. FALS

Alte:

ALGOL. ALGOL 68. Modula-2. Miranda. Speranţă

De exemplu, scrierea unui program într-un limbaj de programare va dura destul de mult, dar rezultatul final va fi un program compact în greutate și rapid. Acest lucru este foarte important atunci când rezolvați probleme de calcul complexe sau cu o cantitate mare de date. Scrierea unui program în altă limbă va fi de multe ori mai rapidă, dar probabil va dura mai mult timp pentru a se executa, dimensiunea fișierului de cod interpretat (executabil) va fi mai mare.

De exemplu, să scriem un program simplu C și Python. Funcționalitatea programului este următoarea: utilizatorul introduce un număr digital care indică luna, programul trebuie să afișeze numele corespunzător al lunii în formă verbală.

Cod C:

#include int main (void) (int month; month u003d 13; while (month! u003d 0) (uses ("Introduceți numărul lunii (pentru a ieși, introduceți 0):"); scanf ("\ n% d", & month ); if ((luna u003du003d 12) || (luna u003du003d 1) || (luna u003du003d 2)) (printf ("Iarna \ n \ n");) if ((luna u003du003d 3) || (lună u003du003d 4) || (lună u003du003d 5)) (printf ("Primăvară \ n \ n");) dacă ((lună u003du003d 6) || (lună u003du003d 7) || (lună u003du003d 8)) (printf ("Vara \ n \ n");) if ((luna u003du003d 9) || (luna u003du003d 10) || (luna u003du003d 11)) (printf ("Toamna \ n \ n ");) if (lunau003e 12) (printf (" Nu există o astfel de lună. \ n \ n ");)) printf (" Programul s-a încheiat. :) \ n "); retur 0; )

Cod Python (opțiunea 1):

# - * - codificare: utf-8 - * - luni u003d 13 în timp ce luni: print ("Introduceți numărul lunii (pentru a ieși, introduceți 0):") luni u003d int (intrare ()) dacă (luni u003du003d 12 sau luni u003du003d 1 sau luni u003du003d 2): print ("Winter") elif (luni u003du003d 3 sau luni u003du003d 4 sau luni u003du003d 5): print ("primăvară") elif (luni u003du003d 6 sau luni u003du003d 7 sau luni u003du003d 8): print ("Vara") elif (luni u003du003d 9 sau luni u003du003d 10 sau luni u003du003d 11): print ("Toamna") altceva: print ("Pentru a ieși, introduceți" 0 " ")

Cod Python (opțiunea 2):

# - * - codare: utf-8 - * - luna u003d (12: "Iarna", 1: "Iarna", 2: "Iarna", 3: "Primăvara", 4: "Primăvara", 5: "Vara" , 6: "Vară", 7: "Vară", 8: "Vară", 9: "Toamnă", 10: "Toamnă", 11: "Toamnă") i u003d 13 în timp ce i: print ("Introduceți numărul lunii ( pentru a ieși, introduceți 0): ") i u003d int (input ()) if ((iu003e 0) și (i< 13)): print(month[i]) elif (i > 12): print ("Această lună nu există. Pentru a ieși din program, introduceți" 0 ".") Altfel: print ("Programul este terminat.")

Cod Python (opțiunea 3):

Print ("Introduceți numărul lunii (pentru a ieși, introduceți 0):") m u003d 13 în timp ce m! u003d 0: m u003d int (input ()) print (["Winter", "Spring", "Summer", "Autumn" "] [((m + 1)% 11) // 3])

Este nevoie de mai mult timp pentru a scrie codul în C, trebuie să vă gândiți la tipurile de variabile utilizate, dar rezultatul este un program compact. Deoarece compilatorul traduce codul C scris în binar.

În Python, puteți scrie același program de multe ori mai repede, dar în cele din urmă obținem un program care durează puțin mai mult pentru a fi executat și are o dimensiune mai mare a fișierului interpretat. Există, desigur, compilatoare speciale care traduc codul Python în binar. Dar acesta este un subiect separat pentru comparație :)

După cum puteți vedea, numărul de limbi este mare și există mai multe dintre ele în fiecare an. Tehnologiile se desfășoară repede și devin rapid depășite și, împreună cu ele, unele limbaje de programare. Din acest motiv, programatorii trebuie să învețe limbi noi cu tehnologii noi. Există limbi care au existat și s-au dezvoltat de 20-25 de ani. De exemplu, C și Python.

Determinați ce parametri afectează alegerea limbajului de programare

Alegerea direcției. Programare aplicată sau web

Programare (sistem) aplicată - Acesta este programarea hardware, sisteme la un nivel destul de scăzut. În această direcție, multe depind de mediu (sistem de operare - sistem de operare). Puteți dezvolta totul, de la sisteme de operare, drivere la programe de utilizator simple și complexe. Cu alte cuvinte, puteți scrie orice doriți. Datorită faptului că există o mulțime de dependențe, este necesar să ne gândim inițial pentru ce sistem de operare va fi dezvoltat software-ul. Principalele limbaje pentru programarea sistemului sunt Assembler, С, С ++, Python, Perl, Java.

Programare web - practic, înseamnă dezvoltarea a tot ceea ce ține de internet. Acestea sunt site-uri, bloguri, scripturi, constructori, sisteme de gestionare a conținutului etc. Practic nu există dependență de sistem de operare, dar există o serie de alte dependențe asociate, de exemplu, cu browserele și alte programe. În majoritatea cazurilor, când vine vorba de programare web, este utilizat sistemul de operare Linux pe care se execută codul programului. Browserele în care este afișat rezultatul programului executat pot fi orice și pe orice sistem de operare care există în prezent. Astfel, este posibil să se dezvolte un cod care să ruleze pe un singur sistem de operare, dar să fie executat și utilizat de orice utilizator pe orice sistem de operare.

Principalele limbaje de programare web sunt Python, PHP, Perl, JS, Ruby, Java. Sintaxă. Cum arată limba Toți oamenii sunt diferiți, au gusturi diferite și este imposibil să-i mulțumești pe toți deodată. Prin urmare, chiar dacă codul este scris în altă limbă mai repede, este posibil să nu fie un avantaj pentru o persoană, deoarece va avea dezgust pentru sintaxă de fiecare dată când scrie cod. Unora le place mai mult sintaxa folosind paranteze și ghilimele, alții nu poartă paranteze. Prin urmare, merită să încercați să scrieți câteva programe simple ca "Hello World!" în diferite limbaje de programare pentru a determina intern ce este mai mult pe placul dumneavoastră. Există posibilitatea de a contacta un guru sau un prieten care programează deja Este foarte dificil să studiezi ceva singur, durează destul de mult timp și, cel mai adesea, duce la un rezultat dezastruos. Pentru a nu fi abandonat în etapa de start, cel mai bine este când există cineva în apropiere care studiază deja sau cunoaște un limbaj de programare. Deoarece în procesul de învățare, apar multe întrebări la care este greu de găsit un răspuns. Când există ajutor, procesul de învățare devine mai interesant și mult mai productiv. Dependența de obiectivul stabilit Învățarea programării este o sarcină de neînțeles care este puțin probabil să dea un rezultat pozitiv. Trebuie să existe un obiectiv pe care doriți să îl atingeți. De exemplu, poate fi un program pentru procesarea fotografiilor, controlul unui robot care conduce printr-un labirint, scrierea unui driver specific, îmbunătățirea unui program existent pe care îl utilizați, crearea propriului site web. Când îți stabilești un obiectiv, înțelegi ce vrei să obții rezultatul. Rămâne să alegeți instrumentele pentru rezolvarea problemei. În același timp, dacă îți propui un obiectiv interesant care trezește interesul, nu te lasă să dormi noaptea, atunci te va motiva pozitiv să implementezi și să obții un rezultat pozitiv. Lucrul pentru o anumită companie Există oameni care știu că vor să lucreze în anumite companii mari, în timp ce sunt specialiști în IT. Puteți vedea lista locurilor de muncă vacante pe site-urile companiilor de interes. Cerințele sunt scrise în posturile vacante, ce tehnologii și instrumente ar trebui să cunoască specialistul relevant. Pentru cei cărora le pasă de numărul de zerouri din salariu;) Nu recomand să vă închideți la anumite locuri de muncă de top. Pe de o parte, acesta este un bun punct de referință. Pe de altă parte, trebuie să încerci să fii un angajat de neînlocuit, să fii un specialist de primă clasă în domeniul tău. Pentru a putea aborda sarcini dificile pe care nimeni altcineva nu le poate face. Mai bine să înveți tot ce poți. De-a lungul timpului, vor veni înțelegere și experiență care vă vor oferi un avantaj față de ceilalți candidați.

Am luat decizia de a învăța un nou limbaj de programare Python

De ce Python? La urma urmei, există multe alte limbi, mai moderne, care sunt acum considerate mainstream. De exemplu - Ruby.

Dacă răspundeți la întrebări conform planului întocmit anterior, alegerea devine evidentă.

Mi-a fost greu să mă decid până nu am făcut un plan. Aveam nevoie de un limbaj care să se potrivească în mod ideal cu mulți parametri simultan. De exemplu, din interes să înveți ceva nou, să conduci un cerc de programare la școală, să conduci un cerc de robotică și programare a robotului la școală, să îți creezi propriul site web, să scrii un joc cu elevii. Ca urmare, programarea de sistem și web este mixtă. Deoarece accentul principal a fost pus pe robotică și informatică la școală, am început să aleg limbaje, cu accent pe programarea aplicațiilor și simplitate. Întrucât primul meu limbaj de programare a fost Pascal, mi-a plăcut tot ce era mai aproape de sintaxa Pascal. Pornind de la faptul că am mai mult de 10 ani de experiență în IT, știu cum să folosesc căutarea, forumurile, apoi nu am subliniat că nu există niciun guru în apropiere. Pot să răspund singur la multe întrebări. Principalul lucru este să aveți la îndemână o referință lingvistică și internetul. Dacă știți bine noțiunile de programare, știți cum să compuneți algoritmi, atunci în practică trebuie doar să luați o referință asupra limbajului și să scrieți codul. Singurul amendament. Am ales o limbă veche de mulți ani. Pentru a avea o mulțime de documentație de înaltă calitate, module gata făcute și a fi interesant din punct de vedere comercial. Obiectivele mele nu erau doar motivante, ci super-motivante și lovite. Creați un robot și programați, creați un site web pe care să încărcați materiale și rezultate, începeți să predați elevii și pregătiți-vă în avans pentru desfășurarea orelor. Se pare că mi-am stabilit un obiectiv cu puncte de întrerupere. Acolo unde sunt obligat să fac o parte din munca mea, altfel voi eșua nu numai eu, ci și studenții. Lucrul în companii de top nu mă interesează acum. Din moment ce am trecut deja de această etapă. Vreau să-mi creez propriile proiecte, să-i învăț pe copii. Sunt mulțumit de ceea ce este. Dar dacă te uiți la companiile de top, există o mulțime de oameni care folosesc Python. Salariile programatorilor Python sunt mari. Aceasta înseamnă că studenții care au învățat Python vor putea obține locuri de muncă excelente în companii mari.

Ca rezultat, după filtrare, mai rămâne un singur Python. Deoarece este ideal pentru rezolvarea tuturor sarcinilor de mai sus, este mai ușor pentru elevi să învețe, poate fi folosit pentru a dezvolta site-uri web, scripturi, programa roboți, dezvolta jucării, scrie coduri compacte, iar sintaxa sa seamănă cu Pascal. Această limbă este veche de peste 20 de ani, are o documentație excelentă și multe biblioteci gata făcute. Dacă în unele cazuri capabilitățile Python nu sunt suficiente, va fi posibil să adăugați funcționalitate în C.

Primul program Python arată astfel:

Print („Bună ziua lume!”) # Nimic mai mult. Acesta este tot codul împreună cu un comentariu.

Comparativ cu Pascal, C, C ++, PHP, foarte succint și expresiv.

Diverse limbaje de programare și domeniile lor de aplicare. Prelegere în Yandex

Am decis să dedicăm prima noastră postare din acest an unui subiect foarte de bază, o prelegere despre care a fost susținută la Small ShAD. Elevii de liceu care sunt interesați de tehnologie sunt implicați în aceasta, de aici specificitatea prezentării - prelegerea va fi deosebit de interesantă pentru cei care abia încep să programeze și se gândesc la direcția în care să se dezvolte. Pentru ei, Yandex are un curs „Introducere în programare (C ++)”, care poate fi urmat pe platforma

Lector Mikhail Gustokashin - Curator de programe academice la Yandex, Director al Centrului pentru Olimpiadele Studenților, Facultatea de Informatică, HSE. Mihail a pregătit zeci de câștigători și câștigători ai olimpiadelor de programare din toată Rusia.

În cadrul prelegerii, se spune despre ce sunt limbajele de programare, cum diferă, cum au apărut și care dintre ele sunt mai bune și care sunt mai rele. La început, vom vorbi puțin despre istoria limbilor - cum au apărut, cum au început oamenii să programeze, cum s-a dezvoltat totul, ce se întâmplă acum. A doua parte va aborda ce fel de sarcini pentru care este potrivită limba, cum să „alegeți limba preferată și să vă bucurați de viață”. De asemenea, lectorul va vorbi puțin despre cum, în opinia sa, să învețe toate acestea și apoi să obțină un loc de muncă.

Ca întotdeauna, sub secțiune este o transcriere detaliată a prelegerii, astfel încât să puteți naviga în conținutul acesteia.

Istoria limbajelor de programare

Ei bine, cum a făcut viața mai ușoară? În loc să ne amintim că există un fel de cod „magic” pentru comandă, au fost folosite tot felul de cuvinte similare englezei „umane” - unele add sau mov - și apoi înregistrează sau zone de memorie, variabile cu care acestea sunt necesare să efectueze operații. Dar este clar că acest lucru, în general, a necesitat și o cantitate suficient de mare de tensiune mentală pentru a ține cont de ce registru avem ce se află, unde ce variabile și ce se întâmplă în general. De ce s-a întâmplat asta? Pentru că computerele erau „proaste” și nu puteau înțelege nimic mai „inteligent”. De fapt, compilarea codului mașinii de la un asamblator necesită, de asemenea, timp, memorie (la acel moment, desigur, nu era suficient).

Treptat, a devenit clar că este foarte dificil să dezvoltăm programe complexe atât de mari. Productivitatea programatorului în aceste comenzi a fost extrem de scăzută - adică a scris mai multe linii pe zi (semnificative) și fiecare linie nu a făcut cu adevărat nimic - câteva operații aritmetice simple. Și oamenii au dorit să facă limbile mult mai asemănătoare cu limba umană, în special cu engleza, pentru a face mai ușoară și mai convenabilă scrierea de programe. Și plecăm!

Limbi vechi și moarte

Alte limbi - acum voi scrie un lucru despre care probabil ați auzit, apoi doar la orice evenimente în care povestesc despre istoria programării - acesta este COBOL. A fost un limbaj pentru scrierea aplicațiilor de afaceri. Ce sunt aplicațiile de afaceri? Orice tranzacție în bănci, altceva, toate acestea au fost scrise în Kobol. Desigur, nu este foarte popular la noi. Cred că cu greu veți găsi un programator pe Kobol, la Moscova. Și undeva nu la Moscova - cu dificultăți și mai mari. Dar, în mod surprinzător, acum 10 ani, mai mult de jumătate din tot codul scris de omenire a fost scris în Cobol. Și până acum, o parte semnificativă a tuturor tranzacțiilor bancare se efectuează folosind programe scrise în acesta (COBOL), iar oamenii încă mai scriu ceva.

Există și un limbaj „amuzant”, s-a numit Algol (versiunea 68, care caracterizează anul creării sale). Este un limbaj algoritmic. În general, au reușit să facă ceva acolo, dar acum nu prea ne interesează ce pot face. Și pe această cale excursia noastră în antichitate și în limbi relativ nefolosite poate fi finalizată și trece la ceea ce este încă viu (și trăiește activ).

Limbi vechi, dar vii

DE BAZĂ. Poate că unii oameni încă mai scriu ceva, cel puțin am văzut că în unele instituții predă pe QBasic - o fereastră albastră unde scrie „1989”. În general, trăiește „cu putere și cu putere”! A fost inventat ca limbaj pentru non-programatori. La acea vreme, programatorul era o profesie atât de specializată. Și aici vă spun: „Aici avem un limbaj de bază rece și orice persoană rezonabilă va lua și scrie un program în el - cu ușurință”. Din nou, acel BASIC și BASIC modern este o diferență uriașă. Toate aceste linii cu numerotare după 10, tot felul de GOTO și alte horror - nu au nimic de-a face cu BASIC-ul modern și chiar nu prea au nimic de-a face cu BASIC din 89.

O altă poveste amuzantă este limba Pascal, cunoscută pe scară largă în cercurile universitare, în principal în Rusia și în țările din fosta Uniune Sovietică. A fost și continuă să fie folosit în mod surprinzător ca predarea limbii... În restul lumii, este mai puțin frecvent, dar este și viu și sănătos. Există o astfel de persoană Wirth - aici este un om de știință, un teoretic. A participat la discuția despre Algol, nu i-a plăcut ce s-a întâmplat și a venit cu propria limbă - Pascal. Și apoi firma Borland (și mai înainte multe alte firme - Apple era angajată, în special) a luat și a distrus totul. Avea o teorie frumoasă, subțire - „totul va fi bine” - și au luat și au umplut acolo ceea ce oamenii au nevoie pentru muncă. Ei bine, nu a ieșit atât de frumos pe cât a vrut.

Și, în sfârșit,. Xi a fost inventat de ingineri. Dacă Pascal a fost inventat de un om de știință, atunci C a fost inventat de Kernighan și Ritchie, au lucrat ca ingineri la Bell. Cum s-a întâmplat asta? La acea vreme, era imposibil să scrii ceva sistemic în aceste limbi (lectorul arată Fortran, COBOL, Algol). Ce este „sistemic”? De exemplu, un sistem de operare, niște drivere, altceva. Aceste limbaje erau pentru calcule matematice, pentru calcule de afaceri, pentru toate acestea. Și orice altceva a fost scris în Assembler. Au existat unele limbi, acum sunt moarte, adică limba C nu a apărut imediat de la Assembler, ci prin unele lucruri intermediare.

Care este esența? Kernighan și Ritchie adorau să joace jucăria Asteroizi - o navă spațială zboară și există asteroizi, el trage asupra lor și aceștia se destramă. Aveau un server pe care se jucau, dar erau mulți oameni acolo, iar jucăria a încetinit. Și au aflat undeva în biroul lor că au un fel de computer pe care nimeni nu îl folosește. Dar a existat o problemă - era de o arhitectură diferită, iar jocul a fost scris în Assembler.

Au rescris-o, desigur, chiar au tăiat unele caracteristici pentru a juca pe ea. Dar acest lucru i-a determinat să creadă că rescrierea pentru o nouă arhitectură de fiecare dată nu este foarte inteligentă. Și au decis să scrie un limbaj de nivel înalt care să fie potrivit pentru programarea sistemelor, adică în care ar fi posibil să gestionați memoria, în care ar fi posibil să înțelegeți unde este ceva și cum să accesați aceste bucăți de memorie. Și astfel a apărut limbajul C, care a avut un impact uriaș asupra tuturor celor de mai târziu. Toți aceștia (lectorul arată Algol, Fortran și alte limbi menționate) au avut o mare influență, dar C - da ...

În consecință, a fost limba principală în Unix - un sistem de operare care era chiar mai popular la acea vreme decât este acum. Și pe la 80, situația era cam așa (lectorul arată în Basic, C și alte limbi menționate). Să spunem că toate acestea au murit deja pe furiș (lectorul șterge referințele la Assembler, Fortran și Algol) ... Și în anii '80 computerele au devenit mai mici, mai inteligente, mai ieftine și oamenii doreau tot felul de ciudățenii, pentru a trăi și mai bine, pentru a trăi chiar mai distractiv.

Limbi native din anii 80

C ++ a fost creat inițial ca un set de adăugiri la limbajul C care ar facilita dezvoltarea. În acel moment, programarea orientată pe obiecte a devenit la modă și oamenii au decis că totul poate fi descris sub forma unei ierarhii, adică ai o minge (abstractă), moștenești din ea o minge de fotbal, un volei, o altă minge abstractă. Era la modă atunci că „acum scriem totul sub forma unui fel de ierarhie și totul va fi bine, viața se va îmbunătăți, totul va fi bine și totul”. Într-un sens, C ++ a implementat această abordare obiect - nu a fost primul limbaj de programare orientat obiect, dar a devenit destul de popular și tot felul de caracteristici au început să apară în el. În același timp, C ++ a păstrat compatibilitatea aproape completă (în acel moment) cu limbajul C, un program scris în C în 99% din cazuri a fost compilat cu succes ca C ++ și chiar a funcționat în același mod. Acest lucru a fost destinat să faciliteze migrarea de la C la C ++.

În plus față de abordarea obiectelor (în C ++), a apărut rapid Biblioteca de șabloane standard (STL). Cred că la școală, cei care încă l-au învățat pe Pascal au descoperit că, în primul rând, nu aveți o triere încorporată acolo (în vechiul Borland Pascal albastru, acum există deja în versiuni moderne) - există un exemplu (sursă) de sortare, îl puteți copia și lipi. Dar dacă doriți să sortați numere întregi aici, aici doriți numere reale și aici sunt șiruri care pot fi comparate între ele, a trebuit să scrieți trei tipuri diferite care fac exact același lucru, au doar tipuri de date diferite. Acest lucru nu este foarte bun, iar șabloanele care nu au apărut imediat în C ++ au făcut această problemă mult mai ușoară. Adică, ați avut un program abstract care a sortat cu succes ceva care poate fi comparat între ele.

Limbaje de script din anii '90

Să le trecem puțin peste ele, pentru că acestea sunt lucruri specifice și acum sunt folosite foarte mult. Care este ideea? Dacă nu compilăm, atunci poate fi permis mult mai mult. De exemplu, un program își poate privi codul și îl poate folosi cumva; știe ce se întâmplă în ea și datorită acestui lucru poate face o mulțime de lucruri interesante.

Perl a fost conceput pentru prelucrarea textului - în acele vremuri exista deja atât de multă memorie în computere încât era posibil să introduci un text acolo și să faci ceva util cu acest text (de exemplu, numără cuvinte, caută câteva). Însă, după părerea mea, a fost conceput de oameni care le-au ieșit puțin din minți, pentru că există o astfel de glumă despre el: „Orice set de personaje scrise este un program corect în Pearl”. După părerea mea, nu puteți scrie decât pe ea, nu o puteți citi. Când mă uit la codul din Perl și încerc să înțeleg ceva, nu înțeleg nimic. Poate dacă l-aș cunoaște mai bine, aș înțelege ceva, dar așa cum am auzit de la acei oameni care încă știu cum, spun că este mai ușor să rescrieți. Adică, programele sunt scurte și cu adevărat mai ușor de rescris decât de a afla ce este acolo și de a remedia problema.

În acea perioadă, la mijlocul anilor 90, a apărut internetul. La început, era vorba de e-mailuri, site-uri cu HTML static, dar oamenii doreau să adauge un fel de dinamică acolo, astfel încât totul să se întâmple dinamic pentru noi, să fie completate unele formulare, cărți de oaspeți de făcut și altceva. În consecință, acest lucru a necesitat un fel de interacțiune, au venit cu un protocol, modul în care interacționează și, cel mai important, generarea acestor pagini statice (condiționate) care vor fi „scuipate” utilizatorului ca răspuns la solicitarea sa.

În general, nimic altceva decât Pearl nu era potrivit în acel moment. A fost o idee proastă să scrii în C sau C ++ pur handlerul. Și din lipsa unui limbaj mai bun la acea vreme (și suficient de lung), Pearl a fost un limbaj popular pentru dezvoltarea web. Desigur, scara nu este comparabilă cu ceea ce se întâmplă acum.

PHP a apărut ca ... din întâmplare. O persoană a încetat rapid să facă acest lucru - și-a făcut propria pagină de un fel cartea de oaspeți unele, altceva, unele lucruri. Și a scris un set de macro-uri de un fel pentru Pearl, care semăna cu C, pentru că știa să-l folosească pe C, doar pentru că era atât de confortabil. Și am numit-o Personal HomePage. Împărtășit și a spus: "Oameni, uitați-vă la ce piesă am scris, totul este mult mai clar aici decât pe Pearl și puteți să-l editați." Și oamenilor le-a plăcut.

Apoi a renunțat la caz. În general, ca rezultat, acest PHP a început să trăiască și în timp a devenit mult mai popular decât Perl. Dar această „traumă a nașterii” lui (o idee ca set de macro-uri pentru Pearl) i-a jucat o glumă destul de crudă. Limba s-a dovedit a fi ciudată. Adică s-a dezvoltat de la sine, nimeni nu l-a proiectat, nimeni nu a administrat procesul de dezvoltare (nici compania, nici vreo persoană), dar au existat multe grupuri, fiecare dintre care a văzut ce le-a plăcut. Ca rezultat, funcțiile de acolo sunt numite diferit, nu există nici măcar un stil, totul se face prin sublinieri, în general, setările sunt ici și colo și modul în care va funcționa nu este foarte clar. Dar poți să stai jos și să scrii în PHP în două ore, pentru că așa a intenționat-o.

Python și Ruby: Ruby este mai puțin popular acum, Python este cumva mai bine „tăiat”, să vorbim despre el mai târziu. Este clar că în acele vremuri acestea erau (lectorul indică Perl, Python, Ruby, PHP) limbaje extrem de specializate în scopuri foarte specializate. În general, în acel moment nu era scrisă nici o programare de sistem, nici o logică de afaceri, iar acum nu prea fac asta.

Limbi compilate din anii '90

În general, C ++ are o mulțime de dezavantaje. Calificările unui programator trebuiau să fie ridicate pentru a scrie în C ++, iar astfel de programatori erau scumpi (atât pregătirea, cât și altceva, adică este dificil să găsești programatori pe piață, trebuie să plătească foarte mult, ei bine, în general, nu este cazul ... ). Iar computerele noastre se numără din ce în ce mai repede, devin din ce în ce mai ieftine, oamenii cumpără computere noi și doresc mai multe aplicații, mai multe jucării pentru telefon, în general - mai multă bucurie.

Așa a apărut Java (Java). Și acolo este legată o poveste destul de amuzantă, cum a apărut numele în această limbă. Există programatori, ei beau cafea tot timpul și în acea perioadă era la modă să bem cafea, care creștea pe insula Java. Limbajul a fost conceput ca un limbaj pentru aparatele încorporate, în special pentru un aparat de cafea. Așa a apărut numele ...

Ce a început cu ea, ce a fost bine la ea și de ce a câștigat atât de multă popularitate? În primul rând, au scăpat complet de moștenirea lui Sishny. Fără indicii, mult mai puține moduri de a împușca orice parte a corpului și de a sparge totul. În al doilea rând, au introdus idei mult mai recente în ceea ce privește modelul obiectului - adică C ++ a apărut mult mai devreme decât Java și a folosit un model de obiect mai arhaic, „sălbatic”. Ei bine, aici (lectorul indică Java), era deja mai bine gândit atunci, iar în teorie oamenii se gândeau, iar în practică aplicau și făceau totul mult mai cool.

Și, în sfârșit, al treilea. Programele noastre Java au fost colectate nu în codul mașinii, ci în codul unei mașini virtuale. Adică, aveați o mașină virtuală JVM (VM) - Javovsky. Programele dvs. au fost colectate într-un fel de reprezentare intermediară și apoi, cu ajutorul acestei mașini, au fost deja executate. Ce a făcut? În primul rând, a încetinit și, în al doilea rând, a mâncat memorie cu o forță teribilă, în al treilea rând a fost portabil oriunde (teoretic) - chiar și la o cafetieră, chiar la o mașină de măcinat cafea, chiar la un computer, chiar la un telefon mobil. Pe de o parte, acest lucru este bun, adică tocmai ați scris o implementare a unei mașini virtuale, apoi rulați programele Java peste tot. Dar, pe de altă parte, este rău că același telefon avea puțină memorie în acel moment, performanțe scăzute și toate acestea au început să se oprească și să încetinească.

Dar nici acesta nu este principalul motiv pentru care limba a fost inventată în general. Limbajul Java a fost inventat pentru a reduce cerințele pentru calificările programatorilor. Adică, programatorii mai săraci pot scrie programe bune în Java, deoarece nu vă permite să scrieți programe proaste - nu există mijloace pentru a scrie programe proaste. Puteți scrie doar programe bine acolo. Bine, în înțelegerea creatorilor limbii.

Adică, dacă în C, în C ++, în Python, pe orice, putem dizolva din proiectul nostru un fel de gunoi înfiorător, unde avem totul amestecat, colectat ore în șir și altceva. În Java, puteți dizolva și coșul de gunoi, dar pentru aceasta trebuie deja să faceți ceva efort. Adică, în mod implicit, nu se dovedește a fi o „grămadă de gunoi”, apar alte probleme, că ceva a fost moștenit sau moștenit acolo - în general, pentru o linie semnificativă, există zece nu foarte semnificative. Pe de altă parte, poate un astfel de programator cu calificare medie poate scrie un cod de înaltă calitate.

Suntem aproape la sfârșit. La noi, următorul lucru care a apărut este .Net (va ajunge), bine, și în special ne interesează C # (aproape la fel [lectorul indică Java], adică există diferențe în detalii, dacă alegeți între ele - vedeți unde plătiți mai mulți bani).

Și încă un lucru este JavaScript. Nu are nimic de-a face limbajul Java, a apărut în același an - cuvântul era la modă, au licențiat marcăa folosi.

Care este principalul lucru la care trebuie să fii atent? (Lectorul desenează săgeți de la C ++ la Java, .Net, C #, JavaScript și PHP). Pentru a scrie un program simplu într-una dintre aceste limbi și în multe altele - dacă știi C ++, în general nu trebuie să știi altceva - iei și scrii în C ++, apoi adaugi dolari la început, altceva faceți lucrurile mici și începe să funcționeze pentru dvs. la orice (lectorul indică limbile la care au fost atribuite săgețile din C ++). Adică sunt extrem de asemănătoare în unele lucruri simple. Dacă rezolvați unele probleme școlare, sarcini educaționale sau altceva (nu proiectați un proiect mare - aveți un fișier care citește numere, afișează numere în consolă, face altceva), atunci nu există aproape nicio diferență între acestea limbi. Este clar că JavaScript și PHP sunt specializate, au totul puțin diferit. Și aici (lectorul indică Java și C #) există o diferență foarte mică în general.

De atunci, au apărut tot felul de alte lucruri interesante, dar nu este clar dacă vor trăi sau vor muri cu succes. Ce folosesc acum, pentru ce sarcini?

Selectarea limbii în funcție de sarcină

Programare la nivel scăzut

Programare web

Pentru partea de scripting - adică ce se va întâmpla din partea clientului - este JavaScript. Mai mult, uneori JavaScript este generat într-o altă limbă și trimis (se întâmplă ca un script să fie generat ... pentru că uneori este mai ușor să gestionați unele modificări ale logicii în acest fel).

În mod surprinzător, este scris în PHP - și Facebook și multe alte proiecte mari. Desigur, a trebuit să-mi scriu propriile lucruri, astfel încât să funcționeze în continuare bine, și nu așa cum s-ar fi făcut „tyap-blooper”, dar au făcut-o. Practic, nu contează în ce scrieți, dar nu vă recomand Perl. Aici și acum, desigur, nimeni nu scrie nimic de la zero pentru web. Toată lumea scrie un fel de cadru sau ceva de genul acesta. Magazin online? Am descărcat un cadru pentru un magazin online - bine, gata, am scris un magazin online.

Programare de afaceri

Programare pentru armată, aerospațială

Poate Java? Se pare că totul este destul de fiabil acolo și arhitectura este bună, fără tipuri sălbatice, fără memorie în exces. Să presupunem că a venit momentul cel mai crucial și Java a decis să strângă gunoiul pentru noi. Trebuie să aterizăm, să încetinim și ea spune: „Nu, gunoiul merge”. În general, nici foarte bine.

Pentru a fi sincer, aș prefera ca acest program să fie scris în Pascal. Desigur, nu-mi place foarte mult Pascal, dar, într-un fel, în astfel de chestiuni, ar fi foarte tare.

Folosirea mai multor limbi simultan pentru dezvoltarea de software

În dezvoltarea unor aplicații, chiar și mari, uneori ce fac oamenii? Ei iau și scriu un prototip în Python (cum va funcționa totul), schițează, gândesc la un fel de arhitectură. Scrisul pe el este foarte rapid - au aruncat un prototip, au experimentat cu el și au spus: „Wo! E atât de mișto! " Și complet rescris. S-ar părea că au făcut treaba de două ori, a durat de două ori mai mult (bine, unul și jumătate). Dar nu! De multe ori se dovedește că această metodă nu este rea, deoarece dacă scrieți imediat în ceva, de exemplu, în Java, și apoi decideți: „Nu, să refactorizăm, schimbăm complet arhitectura și toate astea”, atunci veți petrece de 10 ori mai mult timp ... Astfel de lucruri există și trăiesc.

Condiții pentru succesul oricărui limbaj de programare

Inca un lucru. Armata SUA le-a cerut să dezvolte și un limbaj rece, în care totul funcționează și totul poate fi scris. Rezultatul este un limbaj destul de monstruos numit Ada, în care, totuși, mai scriu ceva, dar din nou - doar pentru militari.

Care este problema? De ce unele limbi precum Python, pe care nicio companie nu l-a susținut la început, au preluat piața. PHP, care este, de asemenea, slab conceput, a preluat piața (cea mai mare parte) de la sine. Și au fost investite tot felul de miliarde de dolari (lectorul îi arată Ada) și nu s-a dus nicăieri, nu s-a întâmplat nimic. Care este motivul pentru aceasta? Acest lucru se datorează faptului că nu există infrastructură în jurul acestor limbi. Adică, limba poate fi excelentă, dar atâta timp cât nu există documentație, atât timp cât nu există o comunitate care să poată răspunde la întrebări (pe Stack Overflow) și, în cele din urmă, cel mai important, atâta timp cât nu există un număr mare de biblioteci, limba nu se declanșează. Adică, de exemplu, ați dorit să scrieți un site web pe Oberon. Și ce este, de ce nu? Și începe confuzia ... Nu vă puteți configura serverul web pe Oberon pentru a testa ușor, nu puteți conecta nicio bibliotecă, deoarece acestea nu sunt pe Oberon. Și toate acestea se fac printr-un fel de cârje, forțele dispar și, în general, scuipi și îți scrii site-ul în C pur în loc de Oberon. Și acele limbi care pot folosi biblioteci din alte limbi trăiesc bine. Același Python în acele locuri în care încetinește. Ei bine, în general, tot felul de lucruri standard precum sortarea și altceva sunt scrise în C, iar el (Python) știe cum să interacționeze cu ele.

Java are, de asemenea, o interfață nativă Java. Acesta este în esență C, adică acolo (în opinia mea, vor să interzică tot timpul, dar se pare că nu au interzis încă) aceste limbi pot interacționa cu bibliotecile deja existente (în principal cele Sishny). Și datorită acestui lucru, ei iau și lucrează. Înțelegeți ideea pe care încerc să vă transmit, nu? Nu scrieți în limbi care nu știu cum să conectați biblioteca C. Ei bine, dacă vrei să te bucuri de ceva mișto. Ei bine, și treptat ei (limbile) își dobândesc propria infrastructură. Și trăiesc cumva bine.

Limbaj de programare și orientare în carieră

Dacă vrei să scrii, poate nu sunt cele mai interesante aplicații din viață, dar îți este grozav să le concepi, să te gândești la toate și să câștigi mulți bani pentru a sta și plictisit de cele mai multe ori (trebuie să plătești pentru asta dacă ești miss), iată-le - Java, .Net. Mergi la muncă într-o bancă, scrii, mergi la muncă cu o cămașă albă până la nouă, primești un salariu bun și scrii conform recomandărilor celor mai bune surse Java, .Net-oaie și toate astea ...

Dacă doriți să scrieți orice aplicație, un browser, niște jucării, altceva, atunci C ++ este minunat. Dacă doriți să scrieți site-uri web, iată-le, limbile la alegere (lectorul arată în Perl, Python, PHP, Ruby), nu există prea multe diferențe. Singurul lucru este că PHP va muri înainte de Python, deci, dacă ți-e lene să înveți lucruri noi, atunci învață Python. Nu veți observa o diferență mare, dar veți rezista mai mult.

Ce se întâmplă cu Ruby este, de asemenea, neclar. Ei bine, puteți, de asemenea, PHP, dacă ați învățat deja, deoarece sunt atât de simple încât nu durează atât de mult să reînvățați acolo.

Și, în cele din urmă, există un alt domeniu de aplicare a limbajelor de programare - acesta este momentul în care un non-programator le folosește. Să presupunem că sunteți matematician, fizician, chimist, analist, oricine și trebuie să calculați rapid ceva, să analizați câteva date (pentru biologi, de exemplu, câte vulpi arctice trăiesc pe Insulele Comandorului). Puteți introduce toate acestea într-un tabel în Excel sau le puteți analiza cu ceva. Python este, de asemenea, o potrivire bună pentru acest lucru, știe cum să lucreze cu text, iar bibliotecile sunt pline de tot felul, statistice și toate acestea. Dacă doriți să faceți un fel de învățare automată, să procesați niște date, să preziceți, atunci acest lucru se face și cel mai rapid în Python acum. Cu toate acestea, trebuie remarcat faptul că sarcinile sunt foarte diferite. De exemplu, dacă doriți să tranzacționați instantaneu într-o bursă în condiții în care cotațiile se schimbă tot timpul, atunci indiferent cât de cool de Machine Learning ați scrie în Python, oamenii care au scris în ceva mai repede vor avea timp să cumpere totul mai devreme, în timp ce vei fi numărat, chiar dacă algoritmii lor sunt mai răi. Deci, chiar și aceste sarcini de învățare automată (unele dintre ele) necesită performanta ridicata (și extrem de ridicat) și, în consecință, alte limbi.

Singura modalitate de a ști ce vrei este să încerci totul. Acum o voi spune ca una dintre viziunile despre cum puteți încerca totul. Cum să devii programator și fericit? Asa de. Începem de la zero. Aici vă studiați matematica, limba rusă și alte discipline obligatorii și opționale la școală, iar cunoștințele dvs. în domeniul programării sunt reflectate pe tablă (lectorul indică un tablou gol) în acest moment. Și vrei să devii o persoană fericită, să faci ceea ce îți place, să câștigi mulți bani și să nu-ți refuzi nimic și să te distrezi.

O modalitate de a face acest lucru. Există, desigur, tot felul de povești inspiratoare despre oameni care nu au mers deloc la universitate, sau au părăsit-o și au devenit miliardari, proprietari de companii și așa mai departe. Dar trebuie remarcat faptul că majoritatea oamenilor care poate nu au devenit miliardari, dar trăiesc și ei bine, au absolvit la un moment dat universitatea.

Care este situația noastră cu admiterea la universitate (acum studiați la școală)? În timp ce sunteți la școală, trebuie să înțelegeți că următorul pas este să vă înscrieți și să aveți grijă de ea. Treci examenul sau câștigă olimpiada. La examen, puteți folosi Pascal, C ++ (inclusiv C pur), Python (nu le voi menționa mai departe). La olimpiadă - același Pascal, același C ++, același Python (vom vorbi despre problemele sale acum) și, cel mai adesea, există Java. În continuare, se poate întâmpla orice, în funcție de olimpiadă, dar nu și esența.

Care este graficul distribuției limbilor la Olimpiada All-Russian în informatică? Oamenii care participă la All-Russian, cea mai tare olimpiadă, pe ce scriu? Arată așa (aici înseamnă Pascal, și aici este aproximativ 2000, și aici aproximativ zero, aici este C ++, și aici este 2015).

În 2000, aproape nimeni nu scria în C ++. Au trecut 15 ani și aproape nimeni nu scrie în Pascal, în ciuda faptului că Pascal este modern. Acesta este un limbaj care poate face aproape totul la fel. Doar că toată lumea a devenit prea leneșă pentru a învăța acest lucru, fiecare nouă tendință, și toată lumea continuă să scrie în Borland Pascal, ceea ce, desigur, nu poate face nimic. În C ++ oamenii scriu niște algoritmi de sortare (STL) - minunat, au scris sort () și atât. Pe Pascal, pe regulat, pe vechi - aceasta este o problemă. Au scris un set (necesar) - minunat, l-au scris în C ++, în Pascal din nou chinul este continuu. Despre noii Pascali, desigur, puteți face acest lucru, dar de fapt costă bani. Poate că nu ați observat acest lucru, dar este.

Există și Java, dar Java are o mulțime de litere. Este pentru proiecte mari, dar pentru programele mici de unică folosință se dovedește a fi destul de rău, deoarece există o mulțime de litere suplimentare. Dar, de asemenea, unii oameni scriu, puteți învăța să scrieți pe ea. Dar la examen, nu este și examenul va trebui totuși susținut în cea mai mare parte.

Ce este cel mai bun pentru examen? Pentru examen, cel mai bine este (dacă nu știi nimic și nu te învață nimic la școală) să înveți Python. Unele sarcini ale examenului sunt perfect rezolvate pe acesta. La olimpiadă, în general, se dovedește că C ++ este (folosit), deoarece Python este foarte lent, nu totul este rezolvat acolo.

Astfel, ați studiat un mic subset al limbajului și câțiva algoritmi (posibil) și multe probleme rezolvate pentru a obține o diplomă de olimpiadă și a merge la universitate pentru a obține studii superioare.

Acum vă voi spune despre modul în care noi, la HSE, construim cursul, în ce ordine sunt limbile, cum sunt studiate în matematică aplicată și informatică la Facultatea de Științe Aplicate, ceea ce facem eu și Yandex. În primul semestru - Python (nu complet, despre cum ar trebui să înveți la școală) și C ++ (mai larg, mult mai larg decât se predă de obicei în școli). Permiteți-mi să vă spun imediat pentru a nu vă speriați, dacă deodată doriți să o faceți, spuneți: „De ce, știu deja toate acestea, de ce urmează să studiez undeva? Aș prefera să merg în altă parte ". Pentru cei care știu deja să programeze bine, există o oportunitate de a merge direct la studiul algoritmilor și la o pregătire destul de teoretică. Nu ne uităm la ele acum, acest lucru (indică tabloul) este pentru cei care programează mediu sau deloc.

În primul semestru, ei studiază elementele de bază ale Python, doar pentru ca oamenii să poată învăța să programeze și pentru ca nimeni să nu fie deosebit de jignit. Python este predat rar în școli, majoritatea oamenilor vin cu cunoștințe despre Pascal sau C ++. Practic chiar Pascal, dacă este o școală de masă. Ei bine, pentru ca nimeni să nu fie jignit, toată lumea învață o limbă nouă (ca și când ar fi în condiții egale). Și C ++ pur și simplu pentru că puteți merge oriunde de la C ++.

Apoi urmează cursul „Algoritmi” și un proiect de curs separat. Algoritmi clasici cu implementare. Nu că, teoretic, am luat ceva, am calculat complexitatea. La prelegere, am luat-o, am calculat complexitatea, la seminar - am luat-o, am implementat algoritmul. Un proiect este despre studenții care fac ceva terminat. De exemplu, unul dintre proiecte a fost: să număr ... Să presupunem că aveți o mulțime de apartamente la Moscova și înțelegeți: „Oh, am o mulțime de lucruri inutile, voi închiria unele. Și au stabilit un preț și nimeni nu vrea să închirieze un apartament de la tine pentru ceva - probabil prea scump. Sau au ridicat un fel de preț, l-au scos imediat și te gândești: „Oh, probabil l-am dat ieftin” și te superi și tu. Adică a fost necesar să se calculeze cât a costat închirierea unui apartament? Conduceți date - vă construiește o estimare. Un astfel de site, care consta în mai multe lucruri: luați sugestii, analizați, aplicați un fel de algoritm de învățare automată (probabil) nepretențios și creați un bot web frumos în care puteți alege ceva, conduce ceva, câțiva metri, orice număr de camere, numărul de saune, numărul de jacuzzi din apartamentul dvs. și estimați aproximativ costul. Adică un fel de lucru terminat, nu foarte complicat. Aici înseamnă (lectorul indică cursul pe algoritmi) un C ++ atât de puternic, cu consola I / O. Ei bine, aici (lectorul indică inscripția „proiect”) este ceva sub îndrumarea unui mentor, posibil cu baze de date, poate cu analiză de text și altceva.

Apoi vine al treilea semestru, un curs numit „Computer Systems”. Există un pic de asamblare de înțeles (foarte puțin) și apoi, ceva similar cu C pur și interacțiunea cu sistemele de operare, programarea sistemului în esență. Și un proiect pentru un seminar este, de asemenea, ceva pe tema tuturor tipurilor de interacțiuni de rețea, destul de scăzut: dezvoltați un anumit utilitar, de exemplu rsync (sincronizare, poate știți. În C pur, mai mult sau mai puțin, scrieți un analog al rsync, pe care îl veți avea prin rețea sincronizați folderele cu toate accesările la fișiere și așa mai departe).

Și, în sfârșit, al patrulea. Nici nu știu cum să-l numesc, este o astfel de vinaigretă de tehnologii necesare dezvoltării reale, de exemplu, pentru dezvoltarea web. Adică, aceasta este o aplicație practică a bazelor de date, din nou ceva similar cu ceea ce s-a făcut în proiect (lectorul indică proiectul cursului 2), dar mai aprofundat. Adică, astfel de lucruri mai mult sau mai puțin concrete sunt deja programări practice. În paralel cu aceasta, există orice teorie, ei bine, aici sunt implicați și în știință.

Și după două cursuri, oamenii se dispersează pentru a face ceea ce îi interesează, deoarece acest lucru acoperă destul de larg astfel de elemente de bază de programare și oamenii în acest moment înțeleg deja că nu vor să facă sisteme informatice în nici un caz (nu le-a plăcut programarea sistemului, de exemplu), dar vor să se ocupe de niște algoritmi teoretici, dificultatea de calcul, venirea unor lucruri noi, distribuite sau altceva. Sau, dimpotrivă, ei cred că nu au prea multe aici ( lectorul indică linia primului curs cu Python și C ++) du-te, apoi ( lectorul indică o a treia linie de curs, cu programare de sistem) - după cum nu vă place, numărați octeți și setați tot felul de restricții privind citirea-scrierea, efectuarea de fluxuri, fire și altceva. Și în conformitate cu acest lucru, oamenii aleg o anumită direcție și învață. Adică, în principiu, astfel încât să nu dezvoltați „sindromul rațelor” - v-ați văzut prima dată Pascalul și acum spuneți „Pascal este putere”; sau mai avansat - ați văzut C ++ și ați început să spuneți despre toată lumea că C ++ este puternic și că orice altceva nu este foarte bun.

Aici trebuie să analizăm acest lucru (lectorul indică lista cursurilor de pe tablă) într-un mod mai larg - aceasta este una dintre metodele alese, în special la HSE (a apărut recent, deci este destul de modernă). Există și alte modalități de întâlnire. În alte universități bune într-o ordine ușor diferită și se pun alte accente. Dar încearcă, de asemenea, să familiarizeze oamenii cu tot ce au.

Cum arată un programator un loc de muncă

Ce ar fi grozav? În primul rând, un proiect open source pe care l-ați scris de la început până la sfârșit. Este de dorit, dacă fac un fel de infrastructură, astfel încât datele să poată fi citite rapid sau altceva, atunci, desigur, aș fi interesat să mi se scrie ceva open source. Nu un site realizat, ci ceva pe această temă. De ce sunt interesat de asta? Pot să văd codul dvs., văd cât de des v-ați angajat, văd cum ați reacționat la bug-uri de la utilizatori, bug-uri de la dezvoltatori care îl folosesc - totul este scris, mă uit și mă gândesc: „Wow, acest bug nu a fost aici de doi ani închis, aici ai răspuns cu neplăcere utilizatorului, iată altceva - nu-l iau ”. Adică acesta este proiectul tău personal.

Apoi, ce altceva ar fi cool? Aș vrea să văd cum ai făcut-o lucru in echipa... Adică, vii la mine pentru un interviu și spui: „Eu și băieții de la universitate am făcut o cerere bună. Am făcut o bază de date acolo, au făcut un fel aplicatie mobilași, de asemenea, un tip a lucrat pentru noi acolo, o fată-designer, un băiat cu asistență tehnică. Eram cinci și am făcut un proiect grozav ". Ei bine, văd care este cu adevărat proiectul tău, spun: „Care este al tău?” Mă uit din nou la cod și înțeleg că știi să lucrezi în echipă cu oameni.

Un programator nu este cel care stă singur (indie așa) în garaj, undeva cu luminile stinse, nu vorbește cu nimeni, își ia barba și scrie. Totuși, există un fel de interacțiune cu oamenii. Cu un șef, de exemplu, care uneori te poate jura (șefii, așa sunt, nu întotdeauna amabili). Și văd că știi să lucrezi cu oamenii și mă bucură dacă ai o echipă bună de un fel. Chiar dacă nu este bine, este mai bine decât să nu-l ai.

Ce mi-aș mai dori personal? Dacă te-ai arătat în proiecte mari. De exemplu, ați angajat ceva pentru nucleul Linux, dacă efectuați programarea sistemului, ați remediat o eroare. Adică au arătat că puteți citi codul altcuiva și că puteți face unele modificări la acesta. Mă uit: "Oh, într-adevăr, ți-ai dat seama de ceva complicat și ai remediat câteva bug-uri!" Și încep să fiu foarte fericit de asta. Pentru că am ... ei bine, nu știu ... programatorul meu a renunțat pentru că concurenții i-au oferit un salariu mai mare și trebuie urgent să închid pe cineva - pe tine. Arăt de parcă ai scris doar de la zero, dar nu știi cum să citești și să editezi codul altcuiva și mă supăr.

Și, în cele din urmă, în funcție de poziția specifică, există diverse alte lucruri. Dacă sunteți analist de locuri de muncă, aș dori să faceți sarcini de analiză a datelor pe Kaggle. Dacă veți obține o slujbă la unele lucruri algoritmice, aș vrea să faceți niște algoritmi în programarea sportivă. Și, în cele din urmă, dacă v-ați gândit la profesie, citiți cum se țin interviurile, ați întâlnit că unii oameni de acolo își exprimă o mare nemulțumire: „Am venit și mă întreabă care este hobby-ul meu. Stau ca o bufniță și nu răspund pentru că nu am un hobby ”și ei cred că HR face asta. De fapt, ei încearcă să-și dea seama cât de prietenos și de adecvat ești. Dacă nu sunteți prietenos și inadecvat, atunci oricât de genial și de muncitor ar fi, un specialist dur, cu cunoștințe mari, va fi dificil pentru echipă să lucreze cu dvs. și nu veți scoate proiectul singur. În plus, chiar dacă vă întindeți, vă puteți imagina ce încărcătură pentru companie. Și că vei veni mâine și vei spune: „Crește-mi salariul de 10 ori, altfel te voi părăsi”. Evident, companiile nu vor să intre în această situație. Prin urmare, educarea adecvării și a bunăvoinței în sine este la fel de importantă (cel puțin) ca dezvoltarea unor abilități profesionale.

Pentru a rezuma, ce puteți spune? Ce limbi sunt bune și care sunt rele? Ei bine, într-un grup de limbi, de exemplu între Ruby, Python și PHP, pe care să le alegeți? Desigur, răspunsul corect este Python, dar de fapt diferența dintre ele constă în numărul de bug-uri permise, în cantitatea de altceva - 5%, bine, poate 10%. Adică, dacă aveți deja un proiect terminat scris în PHP, atunci nimeni în mintea lor nu va spune: „Să rescriem totul în Python”. Vor spune: „Să angajăm mai mulți dezvoltatori PHP și să scriem în continuare în PHP”. Super, nu este o alegere proastă. Este clar că dacă începeți brusc să scrieți un proiect, atunci poate fi înțelept să alegeți acum Python. Deși, depinde și el. Poate aveți pe piață o grămadă de dezvoltatori PHP ieftini, dar cei Python sunt scumpi și vă gândiți: „Da, tehnologia este mai rece, dar voi economisi bani pe dezvoltatorii deja gata”. Și atât, minunat, ai venit deja și lucrezi acolo.

Cum aleg între Java și C ++? Da, se întâmplă același lucru. Cred că până când veți decide în ce limbă să începeți un nou proiect mare, veți dobândi cunoștințe în domeniul dvs. profesional și veți putea face alegerea corectă. În acest moment, nu trebuie să faceți această alegere încă, așa că vă sfătuiesc să faceți ceea ce vă place.

Elementele de bază, așa cum am spus deja, foarte, foarte elementele de bază ale programării (ce este o funcție, ce este dacă, pentru, matrici, altceva) pot fi învățate mai mult sau mai puțin în orice limbă. De exemplu, în C ++, deoarece arată ca o mulțime de lucruri, iar specificul din acesta (la acest nivel) este cel mai mic dintre toate, iar literele sunt cele mai puțin inutile de scris. Ei bine, atunci, când înveți câteva lucruri arhitecturale complexe, învață și nu trebuie să-ți faci griji prea multe despre asta. Adică, principalul lucru este - încercați, căutați ceea ce vă place și când vă dați seama că este deja ora 4 dimineața și vă așezați pentru distracție și scrieți pentru că vă place - probabil că în acest moment ați găsit ...

LIMBAJUL DE PROGRAMARE ȘI TIPURILE LUI

Un limbaj de programare este un sistem formal de semne pentru scrierea de programe de calculator. Un limbaj de programare definește un set de reguli lexicale, sintactice și semantice care definesc aspect programe și acțiuni pe care executorul (computerul) le va efectua sub controlul său.

Un limbaj de programare la nivel înalt este un limbaj de programare conceput pentru viteză și ușurință în utilizare de către programator. Principala caracteristică a limbajelor de nivel înalt este abstractizarea, adică introducerea unor constructe semantice care descriu pe scurt astfel de structuri de date și operații pe ele, ale căror descrieri în codul mașinii (sau în alt limbaj de programare de nivel scăzut) sunt foarte lungi și greu de înțeles.

Limbajul de programare de nivel scăzut (limbaj de programare de nivel scăzut) este un limbaj de programare apropiat de programare direct în codurile mașinii procesorului real sau virtual (de exemplu, Java, Microsoft .NET) folosit. Notarea mnemonică este de obicei utilizată pentru a indica instrucțiunile mașinii. Acest lucru vă permite să memorați comenzile nu sub forma unei secvențe de zerouri binare și unele, ci sub forma abrevierilor semnificative ale cuvintelor în limba umană (de obicei engleza).

LIMBI DE PROGRAMARE LA NIVEL SCAD

Primele computere au trebuit să programeze cu coduri binare ale mașinii. Cu toate acestea, programarea în acest mod este o sarcină destul de laborioasă și complicată. Pentru a simplifica această sarcină, au început să apară limbaje de programare de nivel scăzut, ceea ce a făcut posibilă setarea instrucțiunilor mașinii într-o formă mai ușor de citit de om. Pentru a le converti în cod binar, au fost create programe speciale - traducători.

Fig. 1. Un exemplu de cod al mașinii și reprezentarea acestuia în asamblare

Traducătorii sunt împărțiți în:

compilatoare - transformați textul programului în cod mașină, care poate fi salvat și apoi utilizat fără un compilator (un exemplu sunt fișierele executabile cu extensia *. exe); interpreți - transformați o parte a unui program în cod mașină, executați și apoi treceți la partea următoare. În acest caz, interpretul este utilizat de fiecare dată când programul este executat.

Un exemplu de limbaj de nivel scăzut este asamblarea. Limbajele de nivel scăzut se concentrează pe un anumit tip de procesor și iau în considerare particularitățile sale, prin urmare, pentru a transporta un program în limbaj de asamblare pe o altă platformă hardware, acesta trebuie să fie rescris aproape complet. Există anumite diferențe în sintaxa programelor pentru diferite compilatoare. Adevărat, procesoarele centrale pentru computerele de la AMD și Intel sunt practic compatibile și diferă doar în anumite echipe specifice. Dar procesoarele specializate pentru alte dispozitive, de exemplu, plăcile video, telefoanele, conțin diferențe semnificative.

Beneficii

Limbile de nivel scăzut sunt utilizate pentru a crea programe eficiente și compacte, pe măsură ce dezvoltatorul câștigă acces la toate capacitățile procesorului.

dezavantaje

Un programator care lucrează cu limbaje de nivel scăzut trebuie să fie foarte calificat și să aibă o bună înțelegere a sistemului de microprocesor pentru care este creat programul. Deci, dacă este creat un program pentru un computer, trebuie să cunoașteți structura computerului și, mai ales, dispozitivul și caracteristicile procesorului său; programul rezultat nu poate fi transferat pe un computer sau dispozitiv cu un alt tip de procesor; timp semnificativ de dezvoltare pentru programe mari și complexe.

Limbajele de nivel scăzut, de regulă, sunt utilizate pentru scrierea de programe de sistem mici, drivere de dispozitiv, module pentru interfețe cu echipamente nestandardizate, programarea microprocesoarelor specializate, atunci când cele mai importante cerințe sunt compacitatea, viteza și capacitatea de a accesa direct resursele hardware.

Assembler este un limbaj de nivel scăzut care este încă utilizat pe scară largă astăzi.

LIMBI DE PROGRAMARE LA NIVEL ÎNALT

Se ia în considerare primul limbaj de programare la nivel înalt limbajul computerului Plankalkül, dezvoltat de inginerul german Konrad Zuse în perioada 1942-1946. Cu toate acestea, un traducător pentru acesta nu a existat decât în u200bu200b2000. Primul traducător mondial al unui limbaj la nivel înalt este PP (Programming Program), alias PP-1, testat cu succes în 1954. Traducător PP-2 (1955, locul 4 în lume translator) optimiza deja și conținea propriul încărcător și depanator, o bibliotecă de proceduri standard, iar traducătorul PP pentru computerele Strela-4 conținea deja un linker din module. Cu toate acestea, utilizarea pe scară largă a limbajelor de nivel înalt a început odată cu apariția Fortran și crearea unui compilator pentru acest limbaj (1957).

Limbajele la nivel înalt se străduiesc nu numai să faciliteze soluționarea problemelor software complexe, ci și să simplifice portarea software-ului. Folosirea unei varietăți de traducători și interpreți permite programelor scrise în limbaje de nivel înalt să comunice cu diferite sisteme de operare și hardware, în timp ce codul lor sursă rămâne, în mod ideal, neschimbat.

Acest tip de izolare a limbajelor la nivel înalt de implementarea hardware a unui computer are, pe lângă multe avantaje, și dezavantaje. În special, nu permite crearea de instrucțiuni simple și precise pentru echipamentul utilizat. Programele scrise în limbaje de nivel înalt sunt mai ușor de înțeles de programator, dar mai puțin eficiente decât omologii lor scrise în limbaje de nivel scăzut. Una dintre consecințe a fost adăugarea suportului pentru unul sau alt limbaj de nivel scăzut (limbaj de asamblare) într-un număr de limbaje de programare profesionale moderne de nivel înalt.

Exemple: C, C ++, C #, Java, Python, PHP, Ruby, Perl, Pascal, Delphi, Lisp ... Limbile de nivel înalt au capacitatea de a lucra cu structuri de date complexe. Majoritatea au suport integrat pentru tipuri de șiruri, obiecte, operații de I / O de fișiere și așa mai departe. Dezavantajul limbajelor de nivel înalt este că programele sunt mai mari decât programele în limbaje de nivel scăzut. Prin urmare, limbajele la nivel înalt sunt utilizate în principal pentru dezvoltarea de software a computerelor și dispozitivelor care au o cantitate mare de memorie. Și diferite subtipuri de asamblare sunt utilizate pentru programarea altor dispozitive, unde dimensiunea programului este critică.

Limbajele imperative se bazează pe mai multe idei importante, inclusiv reprezentarea acțiunilor sub formă de formule matematice, conceptul de tip de date și teorema transformării structurale.

Un program într-un limbaj imperativ este construit din funcții (subrutine). Programele de limbaj de asamblare pot consta și din subrutine și acest lucru nu este nimic nou, dar limbajele de nivel înalt vă permit să nu vă gândiți la probleme precum organizarea apelurilor, transmiterea datelor inițiale și returnarea rezultatelor. Descrierea funcției constă dintr-un nume, o listă de parametri (date inițiale), tipul rezultatului și acțiuni care duc la primirea acestui rezultat. Una dintre funcțiile programului este cea principală, executarea acestuia este opera programului.

Un exemplu simplu este o funcție care calculează sinusul unui număr. Poate fi numit sin, datele sale inițiale constând dintr-un număr real, rezultatul este și un număr real obținut prin însumarea unui segment dintr-o serie infinită cunoscută (sau executarea comenzii fsin a unui coprocesor matematic).

Setul de acțiuni care pot fi efectuate în interiorul unei funcții este foarte limitat. Acesta constă în calcularea expresiilor formulei, apeluri ale altor funcții (care nu este o acțiune separată - un apel funcțional este adesea inclus într-o expresie), alocări, ramuri (un grup de acțiuni care se execută numai atunci când o anumită condiție este adevărată) și bucle (un grup de acțiuni efectuate de mai multe ori, numărul repetările depind de o anumită condiție). Acțiunile pot fi cuibărite unul în celălalt. Se poate părea că setul de ramuri și bucle este prea mic, dar nu este. S-a dovedit că orice algoritm compus din blocuri funcționale (la un nivel scăzut - comenzi aritmetice și comenzi de transfer de date), tranziții condiționale și necondiționate poate fi transformat într-un algoritm echivalent compus doar din blocuri condiționale structurate - blocuri funcționale, ramuri și bucle cu Sfârșit. Această afirmație a fost formulată în lucrare de Corrado Bohm și Giuseppe Jacopini „Diagramele de flux, turing mashines și limbaje cu doar două reguli de formare” (Communications of ACM, Volumul 9 / Numărul 5 / Mai, 1965).

Dacă trebuie să stocați rezultatele intermediare undeva pentru a efectua acțiunile necesare, descrieri speciale sunt plasate în interiorul funcției, conținând numele variabilelor și, eventual, alte informații. Adresele celulelor RAM le vor fi atribuite automat. Unele limbi pot conține, de asemenea, definiții constante și de tip în cadrul funcțiilor. În limbajele Pascal, o funcție este ca un program și poate include definiții nu numai ale constantelor, tipurilor și variabilelor, ci și ale altor funcții.

O declarație de date este o listă de obiecte denumite. Aceste obiecte se numesc variabile. În mai multe limbi, trebuie specificat tipul unei variabile, care determină cantitatea de memorie necesară pentru a o plasa și setul de operații la care poate participa. Dar acest lucru nu este neapărat cazul, există limbaje în care tipul variabilei nu este specificat și se poate schimba în timpul executării programului.

De obicei, limbajele de programare oferă un set destul de limitat de tipuri de variabile predefinite și un mijloc de a crea noi tipuri. Unele dintre următoarele tipuri sunt predefinite:

numere naturale și întregi de diferite dimensiuni; numere reale; simboluri - litere, cifre, semne ale operațiilor aritmetice etc; siruri de caractere; valori booleene; indicii

Acțiunile asupra datelor pot fi efectuate folosind funcții și operatori.

În limbajul C, de exemplu, simbolurile, șirurile și booleenii sunt nedefiniți. Tipul său de caracter este de fapt un număr întreg scurt și poate fi aritmetic.

Tipurile noi sunt formate prin combinarea într-un singur întreg mai multe elemente de același tip (matrice, fiecare dintre elementele sale are un număr ordinal) sau elemente de diferite tipuri (structură, fiecare dintre elementele sale are propriul său nume). De exemplu, în majoritatea limbilor, numerele complexe nu sunt definite, dar pot fi definite:

În unele limbi (de exemplu, în C ++), operatorii pot fi de asemenea definiți pentru tipurile create, ceea ce face posibilă utilizarea variabilelor acestor tipuri în același mod ca și variabilele tipurilor predefinite.

Există și alte modalități de a crea noi tipuri. De exemplu, în Pascal este posibil să se creeze:

tipuri de intervale (prin specificarea unui interval de valori); tipuri de enumerare (prin enumerarea valorilor posibile); tipuri de seturi

Variabilele seturilor de tipuri pot fi utilizate pentru a stoca informații despre un set de proprietăți ale unor obiecte. Ceva de genul acesta se poate face folosind variabile întregi, ale căror biți sunt setați pentru a indica prezența proprietăților corespunzătoare. Aparent, utilizarea seturilor este mai robustă împotriva erorilor programatorului.

2) Ce este un limbaj de programare pagina 2

3) Ce sunt limbajele de programare pentru p. 3

4) Ce limbaje de programare există p. 4 - 7

5) Ce este un compilator și interpret pag. 8

6) Lista literaturii folosite p. 9

Introducere

Până la mijlocul anilor 1960, computerele erau mașini prea scumpe, folosite doar pentru sarcini speciale și îndeplineau o singură sarcină odată (așa-numitul. prelucrarea în serie).

Limbajele de programare din această epocă, precum computerele pe care au fost utilizate, au fost dezvoltate pentru sarcini specifice, cum ar fi calculul științific. Deoarece mașinile erau scumpe și se executa o singură sarcină la un moment dat, timpul mașinii era scump, astfel încât viteza programului era în primul rând.

Cu toate acestea, în anii 1960, prețul computerelor a început să scadă, astfel încât chiar și companiile mici să le poată permite; viteza calculatoarelor a crescut și a venit momentul în care adesea au început să rămână în repaus fără sarcini. Pentru a preveni acest lucru, au început să introducă sisteme cu împărțirea timpului (partajarea timpului).

În astfel de sisteme, timpul procesorului a fost „tranșat” și toți utilizatorii au luat perioade scurte din acest timp unul câte unul. Mașinile au fost suficient de rapide încât, ca rezultat, fiecare utilizator de la terminal s-a simțit ca și cum ar fi lucrat sistemul singur. La rândul său, mașina era mai puțin inactivă, deoarece nu îndeplinea una, ci multe sarcini simultan. Partajarea timpului a redus drastic costul timpului mașinii, deoarece o mașină ar putea fi partajată de sute de utilizatori.

În aceste condiții - când puterea a devenit ieftină și disponibilă - creatorii de limbaje de programare au început să se gândească din ce în ce mai mult ușurința scrisului programe, nu doar viteza de execuție a acestora. Operațiunile „mici” (atomice) efectuate direct de dispozitivele mașinii au fost combinate în operații mai mari, la nivel înalt și structuri întregi, cu care este mult mai ușor și mai convenabil pentru o persoană să lucreze.

Ce este un limbaj de programare

Limbaj de programare - un sistem formal de semne conceput pentru a descrie algoritmi într-o formă convenabilă pentru interpret (de exemplu, un computer). Un limbaj de programare definește un set de reguli lexicale, sintactice și semantice utilizate la compunerea unui program de calculator. Permite programatorului să determine exact la ce evenimente va răspunde computerul, cum vor fi stocate și transmise datele și, de asemenea, ce acțiuni ar trebui să fie efectuate în aceste situații în diferite circumstanțe.

De la crearea primelor mașini programabile, omenirea a inventat 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 cunoscute doar de un număr mic de dezvoltatori proprii, 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 limbi interpretează conceptul în mod diferit limbaj de programare ... Printre comunitățile de locuri recunoscute de majoritatea dezvoltatorilor se numără următoarele:

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

un limbaj de programare este destinat scrierii de programe de calculator care sunt utilizate pentru a transmite instrucțiuni către un computer pentru efectuarea unui anumit proces de calcul și organizarea controlului 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 utilizate numai pentru a comunica între oameni. În principiu, este posibilă generalizarea definiției „limbajelor de programare” - este un mod de a transmite comenzi, ordine, îndrumări clare pentru acțiune; în timp ce limbile umane servesc și la schimbul de informații.

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 utilizate numai pentru a comunica între oameni. În principiu, este posibilă generalizarea definiției „limbajelor de programare” - este un mod de a transmite comenzi, ordine, îndrumări clare pentru acțiune; în timp ce limbile umane servesc și la schimbul de informații. Execuţie: un limbaj de programare poate utiliza construcții speciale pentru a defini și manipula structurile de date și pentru a controla procesul de calcul.

Pentru ce sunt limbajele de programare?

Procesul de lucru al unui computer constă în executarea unui program, adică un set de comenzi bine definite într-o ordine bine definită. Forma de mașină a comenzii, formată din zerouri și unele, indică ce acțiune ar trebui să fie efectuată procesor... Aceasta înseamnă că, pentru a spune computerului o succesiune de acțiuni pe care trebuie să le efectueze, trebuie să specificați o secvență de coduri binare ale comenzilor corespunzătoare. Programele de cod pentru mașini constau în mii de instrucțiuni. Scrierea unor astfel de programe este dificilă și plictisitoare. Programatorul trebuie să-și amintească combinația de zerouri și unele din codul binar al fiecărui program, precum și codurile binare ale adreselor de date utilizate la executarea acestuia. Este mult mai ușor să scrieți un program într-un anumit limbaj mai aproape de limbajul uman natural și să încredințați computerului munca de a traduce acest program în coduri de mașini. Acesta este modul în care limbajele s-au dezvoltat special pentru a scrie programe - limbaje de programare.

Sunt multi limbi diferite programare. De fapt, oricare dintre ele poate fi folosită pentru a rezolva majoritatea problemelor. Programatorii cu experiență știu ce limbaj este mai bine să utilizeze pentru rezolvarea fiecărei probleme specifice, deoarece fiecare dintre limbaje are propriile capacități, orientarea către anumite tipuri de probleme, propriul mod de a descrie concepte și obiecte utilizate în rezolvarea problemelor.

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

Limbile de nivel scăzut includ limbile de asamblare (de la engleză la asamblare - a colecta, a asambla). Limbajul asamblării folosește notația simbolică pentru comenzi ușor de înțeles și de reținut rapid. În loc de o secvență de coduri binare de comenzi, sunt scrise denumirile lor simbolice, iar în locul adreselor de date binare utilizate la executarea comenzii, numele simbolice ale acestor date selectate de programator. Limbajul asamblării este uneori denumit mnemocod sau autocod.

Majoritatea programatorilor folosesc limbaje de nivel înalt pentru a-și scrie programele. La fel ca limbajul uman obișnuit, un astfel de limbaj are propriul alfabet - un set de simboluri utilizate în limbă. Așa-numitele cuvinte cheie lingvistice sunt compuse din aceste simboluri. Fiecare dintre cuvintele cheie își îndeplinește funcția, la fel ca în limba cu care suntem obișnuiți în limba noastră, cuvintele compuse din literele alfabetului unei limbi date pot îndeplini funcțiile diferitelor părți ale vorbirii. Cuvintele cheie sunt legate între ele în propoziții conform anumitor reguli sintactice ale limbajului. Fiecare propoziție definește o anumită succesiune de acțiuni care trebuie efectuate de computer.

Limbajul la nivel înalt joacă rolul de intermediar între o persoană și un computer, permițând unei persoane să comunice cu un computer într-un mod mai familiar pentru o persoană. Adesea acest limbaj vă ajută să alegeți metoda potrivită pentru rezolvarea unei probleme.

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

Ce limbaje de programare există

Fortran

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

ALGOL

După Fortran, în 1958-1960, a apărut limba Algol (Algol-58, Algol-60) (engleză ALGOL din ALGOrithmicLanguage - limbaj algoritmic). Algol a fost îmbunătățit în 1964-1968 - Algol-68. Algol a fost dezvoltat de un comitet în care a inclus oameni de știință europeni și americani. Acesta aparține limbajelor de nivel înalt și facilitează traducerea formulelor algebrice în comenzi software. Algol era popular în Europa, inclusiv în URSS, în timp ce Fortran comparabil era răspândit în Statele Unite și Canada. Algol a avut o influență vizibilă asupra tuturor limbajelor de programare dezvoltate ulterior și, în special, asupra limbajului Pascal. Acest limbaj, ca și Fortran, a fost destinat să rezolve probleme științifice și tehnice. În plus, acest limbaj a fost folosit ca mijloc de predare a elementelor de bază ale programării - arta programării.

De obicei, conceptul de Algol înseamnă limbaj ALGOL-60 , in timp ce ALGOL-68 considerat ca un limbaj independent. Chiar și atunci când limbajul Algol aproape că a încetat să mai fie folosit pentru programare, a rămas în continuare limbajul oficial pentru publicarea algoritmilor.

Cobol

În 1959 - 1960 s-a dezvoltat limba Cobol (limba engleză COBOL din COmmom Business Oriented Language - un limbaj general orientat spre afaceri). Este un limbaj de programare de a treia generație destinat în primul rând dezvoltării de aplicații de afaceri. Cobol a fost destinat și rezolvării problemelor economice, prelucrării datelor pentru bănci, companii de asigurări și alte instituții de acest fel. Dezvoltatorul primului standard unificat Cobol a fost Grace Hopper ( bunica Kobola).

Cobol este de obicei criticat pentru verbozitatea și greutățile sale, deoarece unul dintre scopurile creatorilor limbii a fost de a aduce construcții cât mai aproape de limba engleză. (Până acum, Cobol este considerat limbajul de programare în care au fost scrise cele mai multe linii de cod). În același timp, Cobol avea instrumente excelente pentru lucrul cu structuri de date și fișiere pentru timpul său, ceea ce i-a asigurat o viață lungă în aplicații de afaceri, cel puțin în Statele Unite.

Lisp

Aproape simultan cu Cobol (1959 - 1960), limba Lisp (LISP din LIStProcessing) a fost creată la Institutul de Tehnologie din Massachusetts. Lisp se bazează pe reprezentarea unui program printr-un sistem de liste liniare de caractere, care, în plus, sunt principala structură de date a limbajului. Lisp este considerat al doilea vechi limbaj de programare la nivel înalt după Fortran. Acest limbaj este utilizat pe scară largă pentru procesarea informațiilor simbolice și este utilizat pentru a crea software care imită activitatea creierului uman.

Orice program Lisp este format din secvență expresii (forme). Rezultatul muncii programului este de a evalua aceste expresii. Toate expresiile sunt scrise ca liste - una dintre structurile de bază ale Lisp, astfel încât să poată fi create cu ușurință de limbajul însuși. Acest lucru vă permite să creați programe care modifică alte programe sau macrocomenzi pentru a extinde semnificativ capacitățile limbii.

Principala semnificație a programului Lisp „viața” în spațiul simbolic: mișcare, creativitate, memorare, crearea de lumi noi etc. Lisp ca o metaforă a creierului, un simbol, o metaforă a semnalului: „Cum se face analiza biologică a semnalelor de către creier, ca factor extern - influență fizică și chimică, care este un iritant pentru organism, se transformă într-un semnal semnificativ din punct de vedere biologic, adesea vital, determinând tot comportamentul unei persoane sau animale; și cum există o împărțire a diferitelor semnale în pozitive, negative și indiferente, indiferente. Semnalul este deja un concept integrativ. Este un semn de identificare a unui grup, stimuli complexi, interconectați de o istorie comună și de relații cauzale. În acest complex, sistemul de stimuli, stimulul semnalului în sine este de asemenea, un element constitutiv și în alte circumstanțe rolul său poate aparține unui alt stimul din complex. Semnalul concentrează toată experiența trecută a unui animal sau a unei persoane. "

DE BAZĂ

La mijlocul anilor '60 (1963), limbajul BASIC a fost creat la Dartmouth College (SUA) (limba engleză BASIC din Beginner's Allpurpose Instruction Code - un cod simbolic pentru toate scopurile, cu instrucțiuni pentru începători). De-a lungul timpului, pe măsură ce au început să apară alte dialecte, acest dialect „original” a devenit cunoscut sub numele de Dartmouth BASIC. Limbajul s-a bazat parțial pe Fortran II și parțial pe Algol-60, cu adăugiri care îl fac convenabil pentru partajarea timpului și, mai târziu, procesarea textului și aritmetica matricei. BASIC a fost inițial implementat pe mainframe-ul GE-265 cu suport pentru mai multe terminale. Contrar credinței populare, la începutul său era un limbaj compilat.

BASIC a fost conceput astfel încât elevii să poată scrie programe folosind terminale de partajare a timpului. A fost conceput pentru a aborda complexitatea limbilor mai vechi. Era destinat utilizatorilor mai „simpli”, nu atât de interesați de viteza programelor, ci pur și simplu de capacitatea de a folosi un computer pentru a le rezolva problemele. Datorită simplității limbajului BASIC, mulți programatori începători își încep drumul în programarea cu acesta.

Fort

La sfârșitul anilor 60 - începutul anilor 70, a apărut limba Fort (engleza FOURTH - a patra). Acest limbaj a început să fie folosit în sarcinile de control. diferite sisteme după ce autorul său Charles Moore a scris un program pe acesta conceput pentru a controla radiotelescopul Observatorului Arizona.

O serie de proprietăți, și anume interactivitatea, flexibilitatea și ușurința dezvoltării, fac din Forth un limbaj foarte atractiv și eficient pentru cercetarea aplicată și dezvoltarea instrumentelor. Utilizările evidente pentru acest limbaj sunt sistemele de control încorporate. De asemenea, găsește aplicația în programarea calculatoarelor care rulează diferite sisteme de operare.

Pascal

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

Particularitățile limbajului sunt tastarea strictă și disponibilitatea instrumentelor de programare structurale (procedurale). Pascal a fost unul dintre primele astfel de limbi. Potrivit lui N. Wirth, limbajul ar trebui să contribuie la disciplina programării, prin urmare, alături de o tastare puternică, în Pascal posibilele ambiguități sintactice sunt reduse la minimum, iar sintaxa însăși este intuitiv clară chiar și la prima cunoaștere a limbajului.

Limbajul Pascal ne învață nu numai cum să scrieți corect un program, ci și cum să dezvoltați corect o metodă pentru rezolvarea unei probleme, să alegeți modalități de prezentare și organizare a datelor utilizate într-o problemă. Din 1983 a fost introdus limba Pascal cursuri de pregatire informatică în liceele din SUA.

Iad

Pe baza limbajului Pascal de la sfârșitul anilor 70, a fost creată limba Ada, numită după talentata matematiciană Ada Lovelace (Augusta Ada Byron - fiica poetului Byron). Ea a fost cea care, în 1843, a reușit să explice lumii posibilitățile Motorului analitic al lui Charles Babbage. Limbajul Iadului a fost dezvoltat din ordinul Departamentului Apărării al SUA și a fost inițial destinat rezolvării problemelor de control al zborului spațial. Acest limbaj este utilizat în problemele de control al sistemelor de bord ale navelor spațiale, sistemelor pentru asigurarea activității vitale a astronauților în zbor și proceselor tehnice complexe.

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

Potrivit lui Stephen Zeigler, dezvoltarea de software în Ada este, în general, cu 60% mai ieftină, iar programul dezvoltat are de 9 ori mai puține defecte decât utilizarea limbajului C.

Si

În ultimele decenii, programarea a apărut și a primit o dezvoltare semnificativă orientat obiect o abordare. Aceasta este o metodă de programare care imită imaginea lumii reale: informațiile utilizate pentru rezolvarea unei probleme sunt reprezentate ca un set de obiecte care interacționează. Fiecare dintre obiecte are propriile sale proprietăți și comportament. Interacțiunea obiectelor se realizează folosind transmiterea mesajelor: fiecare obiect poate primi mesaje de la alte obiecte, poate aminti informații și le poate procesa într-un anumit mod și, la rândul său, poate trimite mesaje. La fel ca în lumea reală, obiectele își păstrează proprietățile și comportamentul împreună, moștenind unele dintre ele din obiectele părinte.

Ideologia orientată pe obiecte este utilizată în toate modernele produse softwareinclusiv sisteme de operare.

Primul limbaj orientat obiect Simula -67 a fost creat ca un instrument pentru simularea funcționării diferitelor dispozitive și mecanisme. Majoritatea limbajelor de programare moderne sunt orientate pe obiecte. Printre ei ultimele versiuni limba Turbo - Pascal , C ++, Ada si altii.

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

Ce este un compilator și un interpret

Nu este suficient să creați un limbaj convenabil pentru scrierea programelor. Fiecare limbă are nevoie de propriul traducător. Astfel de traducători sunt programe speciale de traducere.

Traducător Este un program conceput pentru a traduce un program scris într-un limbaj de programare într-un program într-un alt limbaj de programare. Procesul de traducere se numește difuzat.

Textele sursei și programele rezultate sunt stocate în memoria computerului.

Un exemplu de traducător este compilatorul.

Compilator Este un program conceput pentru a traduce un program scris într-o limbă într-un program în coduri de mașină. Procesul unei astfel de traduceri se numește compilare.

Compilatorul produce rezultatul terminat - un program de cod de mașină. Acest program este apoi executat. O versiune compilată a programului original poate fi salvată pe disc. Compilatorul nu mai este necesar pentru a executa din nou programul original. Este suficient să încărcați versiunea compilată anterior de pe disc în memoria computerului și să o executați.

Există un alt mod de a combina traducerea și procesele de execuție a programului. Se numeste interpretare. Esența procesului de interpretare este următoarea. În primul rând, este tradus în coduri de mașină și apoi se execută prima linie a programului. Când se termină execuția primei linii, începe a doua linie, care este apoi executată și așa mai departe. Acest proces este controlat de un program de interpret.

Interpret Este un program conceput pentru traducerea linie cu linie și executarea programului original. Acest proces se numește interpretare.

Procesul de traducere include verificarea programului sursă pentru respectarea regulilor limbii utilizate în acesta. Dacă se găsesc erori în program, traducătorul scrie un mesaj despre acestea pe dispozitivul de ieșire (de obicei pe ecranul de afișare).

Interpretul raportează erorile pe care le găsește după traducerea fiecărei linii a programului. Acest lucru facilitează foarte mult procesul de găsire și corectare a erorilor din program, dar crește semnificativ timpul de difuzare. Compilatorul traduce programul mult mai repede decât interpretul, dar raportează orice erori pe care le găsește după finalizarea compilării întregului program. Este mai dificil să găsiți și să corectați erorile în acest caz. Prin urmare, interpreții sunt concepuți în principal pentru limbaje destinate predării programării și sunt utilizați de programatorii începători. Majoritatea limbajelor moderne sunt concepute pentru dezvoltarea de pachete software complexe și sunt concepute pentru a fi compilate.

Uneori, același limbaj poate fi folosit atât de compilator, cât și de interpret. Aceste limbi includ, de exemplu, BASIC.

De regulă, programele-compilatoare și interpreții sunt numiți la fel ca limbile de traducere din care sunt destinate. Cuvintele Pascal, Ada, C se pot referi atât la numele limbilor, cât și la numele programelor corespunzătoare.

SUD. Kratin. Analiza semnalelor de către creier. 1975.

Stephen Zeigler. Compararea costurilor de dezvoltare ale C și Ada.

Lista literaturii folosite:

1. I.T. Zaretskaya, B.G. Kolodyazhny, A.N. Gurzhiy, A.Yu. Sokolov. Informatică nota 10-11. - К.: „Forum”, 2001

2. Berezin BI, Berezin S.B. Curs de programare de bază. - M., 1996

3. H.M. Daytel. Cum se programează în S. - M.: "Binom", 2000

4. Pagină de internet:

5. Vagramenko Ya.A. și alte elemente fundamentale de informatică și informatică cu aplicații în lingvistică: manual. alocație. - M.: MOPI, 1989.