Contacte

Diferite limbi de programare și domeniul lor de aplicare. Prelegerea în Yandex. Extinderea limbilor de programare existente Limbile de programare extinse

Zalina 13 ianuarie 2016 la 15:42

Diferite limbi de programare și domeniul lor de aplicare. Prelegerea în Yandex.

  • Blogul Yandex.
  • Dezvoltarea site-ului,
  • Programare
  • Programare industrială

Primul nostru post în acest an am decis să dedice un subiect foarte de bază, o prelegere pe care a fost citită într-un program mic. Aceștia sunt implicați la elevii de liceu care sunt tehnologii interesante, de aici specificitatea prezentării - prelegerea va fi deosebit de interesantă pentru cei care încep să programeze și să se gândească cum să se dezvolte. Pentru ei, Yandex are un curs "Introducere în programare (C ++)", care poate fi transmisă pe platforma Stepic.org.

Lectorul Mikhail Gustokashin este un curator al programelor academice Yandex, director al Centrului pentru Jocurile Olimpice ale Facultății de Informatică HSE. Mikhail a pregătit zeci de câștigători și medaliști din competițiile de programare din Rusia.

Ca parte a prelegerii, este descrisă despre ceea ce limbajele de programare sunt diferite, așa cum apar și care dintre ele sunt mai bune și ceea ce este mai rău. La început, vom vorbi puțin despre istoria limbilor - cum au apărut cum oamenii au început să programeze cum se dezvoltă totul, care se întâmplă acum. În a doua parte, va fi afectată de ceea ce este vorba de limbă, cum să "alegeți limba preferată și să vă bucurați de viață". Lectorul va spune, de asemenea, puțin despre cum, în opinia sa, să învețe totul la acest lucru și apoi să ia un loc de muncă.

Ca întotdeauna, sub decodarea detaliată a prelegerilor, astfel încât să puteți naviga în conținutul său.

Istoria limbajelor de programare

Să începem de la început. La început, computerele nu au nici măcar o tastatură! Asta este, totul a fost foarte rău - nu au avut o tastatură sau ecranul, au existat cărți (acestea sunt astfel de bucăți cu găuri sau cu lipsa de găuri). În consecință, știfturile au fost puse acolo, dacă lumina strălucea acolo. Dacă există o gaură (sau viceversa nu este) - a însemnat un Nolik sau unul. Și programele de la acel moment au scris cu ajutorul codurilor mașinii - fiecare operație din computer (adăugare, scădere, unele operațiuni mai complexe) a fost un fel de cod de mașină. Oamenii înșiși au ales acest cod pe masă, tot felul de adrese în memorie, toate acestea au fost lovite cu mâinile și a pus-o în cititor - și a fost considerat totul. Bineînțeles, lucrarea programatorului a fost, probabil, atunci nu este deosebit de interesantă - de a face găuri - și cu dezvoltarea științei și tehnologiei, desigur, a început să inventeze tot felul de piese "interesante". De exemplu, AssSeblabr (Assembler), care a facilitat deja câteva vieți.

Cum a facut viata? În loc să memoreze că există un fel de cod "magic" din echipă, s-au folosit tot felul de cuvinte, similar cu limba engleză "umană" - unele add sau mov - și apoi registrele sau registrele de memorie, variabilele cu care aceste operații operațiuni. Dar este clar că acest lucru în general, a cerut, de asemenea, o tensiune destul de mare a minții de a păstra în capul meu, în care se înregistrează, unde variabilele și ceea ce se întâmplă deloc. De ce s-a întâmplat? Deoarece computerele erau "stupide" și nu au putut înțelege nimic mai "inteligent". De fapt, și colectați codul mașinii de la asamblare, de asemenea, necesită timp, memorie (pentru acele vremuri a fost cu siguranță puțin).

Treptat, a devenit clar că a fost foarte dificil să se dezvolte programe complexe atât de mari. Performanța programatorului în aceste echipe a fost extrem de scăzută - adică a scris mai multe linii pe zi (semnificative), iar fiecare linie nu a făcut nimic - o acțiune aritmetică simplă. Și oamenii au vrut să facă limbi mult mai mult ca o limbă umană, în engleză, în special, pentru a scrie programe au fost mai ușoare și mai convenabile. Și a plecat!

Limbi vechi și moarte

Una dintre primele limbi a fost FORTRAN. Apropo, de asemenea, a fost încă bătut pe capele - au existat capele speciale pentru a elimina programele pe Fortran. Dar dacă luați acest Fortran acum - în opinia mea, este chiar undeva între 50-60 de ani. A apărut - și încerci să scrii ceva pe el, atunci vei fi foarte neplăcut, te garantez! Modernul Fortran este încă în viață, dar este deja destul de diferit de ceea ce a fost înainte.

Alte limbi - acum voi scrie un lucru despre care probabil ați fost auzit, atunci numai în orice eveniment, unde se spune programarea despre istoria este Cobol. A fost o limbă pentru scrierea aplicațiilor de afaceri. Ce este o aplicație de afaceri? Unele tranzacții în bănci, altceva a scris toate acestea pe un cobol. Noi, de înțeles, nu este foarte popular. Cred că un programator pe un Cobol, la Moscova, veți găsi cu mare dificultate. Și undeva nu la Moscova - cu mai multă dificultate. Dar, care este surprinzător, acum 10 ani mai mult de jumătate din întregul cod scris de omenire, a fost scris pe un cobol. Și până acum, o parte semnificativă a tuturor tranzacțiilor bancare este în curs de desfășurare cu programele scrise pe acesta (Cobol), iar încă oamenii scriu ceva pe el.

Există, de asemenea, o limbă "amuzantă", el a fost numit algol (versiunea a 68-a, care caracterizează anul creării sale). Acesta este un limbaj algoritmic. În general, au reușit să moară acolo, dar acum nu suntem foarte interesați de ceea ce știu. Și în acest sens, excursia noastră în antichitate și în limbile relativ neutilizate poate fi terminată și continuând cu faptul că există încă în viață (și trăiește în mod activ).

Limbi vechi, dar live

Algolul a fost inventat în Europa, iar Fortran a folosit cea mai mare parte în state - nu există diferențe mari. Care este tendința vizibilă? La început, totul a fost dificil și de a scrie, a fost necesar să fie aproape un inginer, inginerie electrică, să înțelegeți unde sunt închise contactele și altceva pentru programare. Apoi a trebuit, de asemenea, să stea cu frunze și să numească memoria, uitându-se. Și, treptat, totul a devenit mai ușor, mai ușor și mai ușor și mai ușor pentru programator - cât mai puțin posibil pentru a gândi o persoană cât mai mult posibil poate fi făcută automat. La sfârșitul acestei perioade (lectorul indică algol și cobol), vor apărea limbi, ceea ce într-un anumit sens "a trăit" până în prezent.

De bază. Poate că unii oameni scriu ceva pe el, cel puțin am văzut că în unele instituții este învățat pe Qbasic 'E - o fereastră albastră, unde este scrisă "1989". În general, viața "Mighwall"! A fost inventată ca o limbă pentru non-programatori. În acel moment, programatorul a fost o profesie atât de specializată. Și aici vă spun: "Avem o limbă rece de bază și orice persoană rezonabilă va lua și va scrie un program pe el - ușor". Din nou, Beysik și Beysik-ul modern reprezintă o mare diferență. Tot felul de acele rânduri cu numerotarea după 10, tot felul de Goto și alte groază - nu au nici o legătură cu Basik-ul modern și chiar și la cel de-al 89-lea an ei au o mică relație.

O altă poveste amuzantă este Pascal, cunoscută pe scară largă în cercurile universitare, în principal în Rusia și în țările fostei Uniuni Sovietice. A fost folosit și continuă să fie surprinzător ca un limbaj de instruire. În restul lumii, el este înmormântat, dar trăiește și trăiește. Există un astfel de om strălucitor - aici este un om de știință, teoretician. A participat la discuția lui Algola, nu și-a plăcut ce sa întâmplat și a venit cu limba lui - Pascal. Și apoi compania Borland (și înainte de multe alte firme - Apple au făcut, în special) și au stricat totul. Avea o teorie frumoasă, subțire - "totul va fi bine" și au luat și au umplut faptul că oamenii trebuie să lucreze. Ei bine, și sa dovedit a fi atât de frumos cum a vrut.

Și, în sfârșit. Si a inventat ingineri. Dacă Pascal a venit cu un om de știință, atunci Si a inventat Kernigan și Ritchi, au lucrat ca ingineri în clopot. Cum sa întâmplat asta? La acea vreme în aceste limbi (lectorul indică Fortran, Cobol, Algol), nimic nu a scris sistemic. Ce este "sistemul"? De exemplu, un sistem de operare, unii șoferi, altceva. Aceste limbi au fost destinate calculelor matematice, pentru calcule de afaceri, pentru toate acestea. Și orice altceva a scris pe asamblare. Au existat câteva limbi, au murit acum, adică limba Xi nu a apărut imediat de la asamblare, ci prin unele lucruri intermediare.

Esența a ceea ce? Kernigan și Ritchi au iubit să joace jucării asteroizilor - o navă spațială zboară și există asteroizi, îi împușcă, și se destramă. Aveau un server pe care au jucat, dar erau o mulțime de oameni, iar jucăria a încetinit. Și au descoperit undeva în birou că au un fel de calculator pe care nimeni nu îl folosește. Dar a existat o problemă - era o altă arhitectură, iar jocul a fost scris pe asamblare.

Ei au rescris, desigur, chiar au sculptat trăsăturile unui fel de joc pe ea. Dar le-a adus la ideea că nu este foarte inteligent să rescrieți la o nouă arhitectură de fiecare dată. Și au decis să scrie o astfel de limbă nivel inaltCare va fi potrivit pentru programarea sistemului, adică în care puteți gestiona memoria în care puteți înțelege unde - ce se află și cum să contactați aceste piese de memorie. Și astfel a apărut limbajul Si, care a avut un impact enorm asupra tuturor. Toți sunt toți (lectorul arată Algol, în continuare și alte limbi menționate) au avut o mare influență, dar aici - direct da ...

În consecință, a fost limba principală în sistemul de operare Unix, care la acel moment a fost și mai popular decât acum. Și despre anii '80, situația a fost un fel de o astfel de situație (lectorul arată pe limbi de bază, C și alte limbi menționate). Să presupunem că toate acestea sunt deja lent lent (lectorul șterge referințele la asamblare, cetate și algole) ... iar în anii 80, computerele au devenit mai puțin, mai inteligente, mai ieftine, iar oamenii au dorit tot felul de ciudățenii de a trăi chiar mai bine, de viață a devenit mai distractiv.

Limbile din anii '80

Una dintre primele ciudate a fost C ++. Limba c are un număr mare de deficiențe (bine, foarte mult) - totul se poate face în general, inclusiv pentru a trage-te, trage-te cu ficțiune, la un alt picior, trage un picior la un alt picior, în general - ce să Fă-o. Dar, în același timp, unele lucruri arhitecturale sunt destul de dificile - din nou, ca și în asamblare, trebuie să urmărim tot timpul, unde noi, ce și ce memorie este alocată; Ea este acolo tot timpul "fluxurile" undeva această memorie - adică am alocat, uitat să îndepărtez, nu l-au îndepărtat, au ieșit din memorie, în general - am căutat o grămadă de probleme.

C ++ a fost creat mai întâi ca un set de adăugiri la C, ceea ce va facilita dezvoltarea. În acel moment, programarea orientată spre modă și oamenii au decis că totul ar putea fi descris sub forma unei ierarhii, adică ai avut o minge (abstract), o moșteniți o minge de fotbal, o minge de volei, o altă minge abstractă. Apoi a fost la modă că "acum scriem totul sub forma unei ierarhii și totul va fi bine, viața va lucra, totul va deveni frumos și asta e". C ++ Într-un anumit sens, această abordare obiect a fost pusă în aplicare - nu a fost prima limbă a programului orientat pe obiecte, dar a devenit destul de popular și tot felul de caracteristici au început să apară în ea. În același timp, C ++ a păstrat o compatibilitate aproape completă (la acel moment) cu limbă C, programul scris pe C 99% din cazuri a avut succes ca C ++ - Naya și chiar a funcționat, de asemenea. A fost destinat să se facă cu ușurință la C ++.

În plus față de abordarea obiectului (în C ++), a apărut rapid biblioteca standard Șabloane (STL). Cred că la școală, cei care încă au învățat Pascal au descoperit că aveți acolo, în primul rând, nu există nici o sortare încorporată (în vechea, Blue Breland Pascal, acum este deja în versiuni moderne) - există un exemplu (sursă ) Sortarea, poate fi copiată și lipită. Dar dacă doriți să sortați numerele întregi aici, aici doriți numere reale, iar aici liniile care pot fi comparate între ele, a trebuit să scrieți trei sortare diferite, ceea ce face absolut același lucru, doar că au pur și simplu diferite tipuri de date. Acest lucru nu este foarte bun și șabloane care nu apar imediat în C ++, această problemă a fost foarte ușurată. Adică ați avut un program abstract, ceea ce poate fi comparat între ele, sortată cu succes.

Script limbi de la 90-X

Dar timpul nu a stau în vigoare, în anii 80 au existat încă multe lucruri interesante. Dar undeva la începutul anilor '80 și anii '90, computerele au devenit atât de bune încât a fost deja posibil să se facă lucruri foarte ciudate și foarte ineficiente. În special, acestea au fost limbi scripted care nu au fost compilate în codul mașinii, dar au fost interpretate. Beysik, de asemenea, a fost interpretat de ceva timp, dar aceste limbi scripted au fost intenționate în principal pentru a procesa texte - acest lucru, de exemplu, Perl, Python (nu a fost foarte faimos atunci), PHP, Ruby - acestea sunt limbile scripted Că într-una sau există încă o diplomă diferită (toți au timp să apară până în 2000, chiar mult mai devreme).

Să mergem puțin pe ele, pentru că acestea sunt lucruri specifice și acum sunt folosite multe. Ideea este ce? Dacă nu ne compilați, vă puteți permite mult mai mult. De exemplu, programul vă poate uita la codul dvs. și o folosește într-un fel; Știe ce se întâmplă în ea și din cauza asta, puteți face multe lucruri interesante.

Perl a fost proiectat să se ocupe de texte - în acele zile deja memoria a devenit atât de multe în computere că a fost un text pentru a împinge acolo și cu acest text ceva util de făcut (de exemplu, luați în considerare cuvintele, un fel de căutare). Dar, în opinia mea, a fost proiectat de oameni care erau puțini înșiși, pentru că există o astfel de glumă despre el: "Orice set de personaje scrise este programul corect pe perla". În opinia mea, puteți să scrieți doar pe ea, este imposibil să o citiți. Când mă uit la codul pe Pearl și încercând să înțeleg ceva, nu înțeleg nimic. Poate că dacă l-am cunoscut mai bine, aș înțelege ceva, dar așa cum am auzit de acei oameni care încă știu cum, ei spun că este mai ușor să rescrieți din nou. Adică lucrările programului sunt scurte și este cu adevărat mai ușor să rescrieți din nou decât să vă ocupați de ceea ce există și să o rezolvați.

La aproximativ ora, la mijlocul anilor '90, a apărut internetul. La început, acestea au fost corespondențe, situri cu HTML static, dar oamenii au vrut să adauge un fel de dinamică acolo, astfel încât totul să neucească dinamic, unele matrițe ar putea fi umplute, cărțile de oaspeți pentru a face altceva. În consecință, acest lucru a necesitat o anumită interacțiune, a venit cu un protocol, deoarece interacționează și, cel mai important, generația acestor pagini statice (condiționate) care vor fi "tensionate" de către utilizator ca răspuns la cererea sa.

În general, nimic altceva decât perla în acel moment nu se potrivea. Scrieți pe Handler Pure Si sau C ++ a fost o idee rea. Și din lipsa celor mai bune la acel moment (și suficient de lungă) Pearl a fost popular pentru dezvoltarea web. Desigur, scara nu se va compara cu ceea ce se întâmplă acum.

PHP a apărut ca ... din întâmplare. O persoană a încetat repede să facă acest lucru - a făcut o pagină un fel, a avut o carte de oaspeți, într-un fel, unele lucruri. Și a scris un set de macrocomenzi de unii pentru o perlă, care erau asemănătoare cu Si, pentru că știa cum să SI, pur și simplu pentru că era atât de confortabil. Și la numit pagina personală. Ea a împărtășit și spune: "Oamenii, vezi ce fel de lucru am scris, totul este mult mai clar aici decât pe perla și poate fi editat". Și oamenii îi plăceau.

Apoi a aruncat chestia asta. În general, în cele din urmă, acest PHP a început să trăiască și a început cu timpul mult mai popular decât Perl. Dar aceasta este "rănirea generică" (ideea ca un set de macrocomenzi pentru perla) cu el a jucat o glumă destul de rău. Limba sa dovedit ciudată. Adică, el sa dezvoltat de la sine, nimeni nu la proiectat, nimeni nu a administrat procesul de dezvoltare (nici compania, nici o persoană) și au existat o mulțime de grup, fiecare dintre care au văzut ceea ce le place. Ca rezultat, funcțiile sunt numite diferit, chiar dacă nu există nici un stil, totul este prin accentul, în general, așa cum a căzut, setările se află aici și acolo și cum totul va funcționa nu foarte clar. Dar poți să stai jos și să scrii în două ore până la PHP, pentru că a crezut așa.

Python și Ruby: Ruby este acum mai puțin popular, Python este într-un fel mai bun "împărtășire", să vorbim despre asta. Este clar că în acele zile a fost (lectorul indică Perl, Python, Ruby, PHP) limbi puternic specializate în scopuri foarte specializate. În general, nici o programare a sistemului, nici o logică de afaceri nu a scris la acel moment și acum nu o face cu adevărat.

Limbi compilate din anii '90

Vom merge în același timp, dar în cealaltă parte. În acel moment, C ++ a fost folosit aproape pentru tot ceea ce era necesar să nu scrieți pentru web, nu pentru procesarea textului, ci pentru aplicații pur și simplu pentru sistemele de operare, pentru jucării - în general, pentru orice. Dar C ++ este o limbă teribilă, de fapt. De ce? Pentru că, în primul rând, a moștenit din cauza compatibilității înapoi, toate problemele Si. Încă ar putea fi ucis un milion în diverse feluriAcelași lucru care a fost în C (în mod natural, s-au adăugat noi metode în C ++. În același timp, dacă scrieți totul bine și corect, așa cum a fost conceput de autorii lui C ++, atunci, bineînțeles, era imposibil să omori cu căile vechi înfricoșătoare și pare mai mic decât ei. Cu toate acestea, el a avut un model de obiect foarte ciudat. Despicarea programului pe module, pe un fel de piese deloc a ieșit din SI (dacă include, puteți scrie pe Si sau pe C ++ - de fapt, a fost intenționat cum să introduceți textul bibliotecii în dvs. Programul, ca rezultat, atunci când scrieți o grămadă de includ, aveți totul - dacă "primitiv", așa cum a fost la început - totul este introdus într-un singur fișier și apoi toate acestea sunt compilate teribil de mult timp, pentru că Se apropie de mai multe ori. Același Pascal, Wirth, a fost mult grijuliu în acest plan, versiunile ulterioare au devenit și mai bune.

În general, C ++ are multe defecte. Calificarea programatorului ar fi trebuit să fie ridicată la C ++ și să costă astfel de programatori scump (și pregătiți și altceva, adică găsirea programatorilor de pe piață este dificilă, trebuie să plătească mult, iar în general nu este ...). Și computerele noastre sunt mai rapide și mai rapide, devin mai ieftine, oamenii cumpără noi computere și doresc mai multe aplicații, mai multe jucării pentru telefon, în general - mai multă bucurie.

A apărut Java (Java). Există, de asemenea, o poveste destul de amuzantă, deoarece numele a apărut din această limbă. Există programatori, beau cafea tot timpul și la acel moment a fost la modă să bea cafea, care pe insula Java Ros. Limba a fost concepută ca o limbă pentru dispozitivele încorporate, în special pentru o mașină de cafea. Așa că a ieșit numele ...
Ce a început cu ea, ceea ce a fost bun în ea și de ce a câștigat mai multă popularitate? În primul rând, au scăpat de moștenirea unui albastru, complet. Nu există indicatori, multe moduri mai puțin de a-ți împușca o parte a corpului și de a sparge totul. În al doilea rând, au implementat idei mult mai recente în ceea ce privește modelul obiect - adică C ++ a apărut mult mai devreme decât Java și a folosit mai mult obiect arhaic, "sălbatic" obiect. Ei bine, aici (lectorul indică Java) Era deja mai atent, iar în teorie au crezut oamenii și, în practică, au folosit și au făcut totul mult mai rece.

În cele din urmă, a treia. Avem un program pe Java nu a fost adunat într-un cod de mașină, ci în cod pentru o mașină virtuală. Adică ați trăit mașină virtuală (VM) JVM - Javovskaya. Programele dvs. mergeau la o reprezentare intermediară și apoi, cu ajutorul acestor mașini au fost deja efectuate. Ce a dat? În primul rând, a încetinit, în al doilea rând, a erupt memoria cu o forță teribilă, în al treilea rând, a fost transferată oriunde (teoretic) - cel puțin la aparatul de cafea, chiar și pe șlefuitorul de cafea, cel puțin pe computer, cel puțin pe computer telefonul mobil. Acest lucru, pe de o parte, că este, tocmai ați scris implementarea mașinii virtuale, apoi conduceți programele Javav peste tot. Dar, pe de altă parte, este rău că, pe același telefon, atunci nu a fost o mică memorie, a existat o performanță scăzută și toate acestea au început să se amestece și să încetinească.

Dar chiar și acest lucru nu este principalul lucru, pentru care, în general, limba a fost inventată. Limba lui Java a fost inventată pentru a reduce cerințele pentru calificările programatorilor. Adică, programatorii mai buni pot scrie programe bune pe Java, pentru că nu vă permite să scrieți programe proaste - nu există mijloace de a scrie programe prost. Acolo puteți scrie doar bine, programe. Ei bine, în înțelegerea creatorilor limbii.

Asta este, dacă pe C ++, pe Python, pe ceea ce vă place, putem rambursa din proiectul dvs. un gunoi teribil un fel de unde se întâmplă totul acolo, mergând ore întregi și există altceva. În Java, gunoiul poate fi diluat, dar pentru aceasta trebuie să faceți ceva efort. Aceasta este, în mod implicit, nu există nici un "gunoi", există alte probleme că există ceva acolo, ei pretinde - în general, un șir semnificativ nu este foarte semnificativ. Dar, poate o astfel de calificare secundară, un programator care scrie un cod destul de calitate.
Aproape am ajuns la capăt. Noi, următorul, care a apărut este. Aceasta. Aceasta (dotnet), bine, în special, suntem interesați de C # (aproape același [lector indică Java], adică există diferențe în detalii dacă alegi între - Vedeți unde plătesc banii).

Și încă un lucru - JavaScript. Nu are nimic de-a face cu limba Java, a apărut în același an - Cuvântul a fost la modă, au licențiat marcăA folosi.

Ce, cel mai important, trebuie să vă acordați atenție? (Lectorul atrage săgețile de la C ++ la Java, .Net, C #, JavaScript și PHP). Pentru a scrie un program simplu în una dintre aceste limbi și multe altele - dacă știți C ++, nu aveți nevoie de altceva altceva - luați și scrieți pe C ++, apoi adăugați dolari la început, Altceva face lucrurile mici și tu începe să lucreze la orice (lectorul arată limbile la care au fost rezervate săgețile de la C ++). Adică, sunt extrem de asemănătoare în unele lucruri simple. Dacă decideți câteva provocări școlare, sarcini, altceva (nu proiectați un proiect mare - aveți un fișier care citește numere, afișează numerele în consola, altceva face ceva), atunci nu există aproape nici o diferență între aceste limbi. Este clar că JavaScript și PHP sunt specializate, sunt puțin diferite. Dar aici (lectorul indică Java și C #), în general, mult mai mare.

De atunci, apar tot felul de lucruri interesante, dar nu este clar - vor trăi sau vor muri cu succes. Ce este acum, pentru ce sarcini folosiți?

Selectați limba în funcție de sarcină

Să presupunem că aveți o sarcină de a scrie un driver pentru o placă video. Ce limbă veți folosi astăzi? (Plâns din sala: Java!) Și ce ... Java este excelent, dar ceea ce nu este pe Ruby sau PHP? (Lectorul vorbește cu sarcasmul.)

Programare la nivel scăzut

Dacă scrieți ceva la nivel scăzut, atunci cea mai bună alegere este SI, dar de fapt am auzit ceva (dar nu am văzut) că C ++ este folosit pentru acest lucru. Dar cred în mod slab în ea, pentru că în Si poate fi controlat în mod clar - de când ai dat atâția octet de memorie, înseamnă atât de mult. Și în C ++ (STL) Cum este implementată linia? Ei bine, a fost implementat cumva. Și în cele din urmă nu știm cum și ce se întâmplă acolo, poate că memoria noastră se va termina pe placa noastră video sau altceva se va întâmpla. Prin urmare, Si continuă trăiește și nu moare, astfel de sarcini de programare a sistemului sunt încă acolo - scrieți un sistem de operare, scrieți drivere, scrieți altceva - Si minunat pentru acest lucru. În plus, toate tipurile de dispozitive apar acum, internetul lucrurilor promite că el este pe punctul de a veni) care trăiesc de la baterie (și, în mod natural, vor fi milioane de ele, totul va fi angajat în acest internet de lucruri), Ele trebuie să fie foarte ieftine și foarte puțin consum de energie electrică. În consecință, va exista 2 kb de memorie, procesorul este de 5 kHz, bine, este clar că nu veți transforma o mașină virtuală sau limba de scripting în viitorul apropiat - înseamnă că trebuie să scrieți ceva pe Si. Da, și acum, de exemplu, calcule pe placa video (OpenCL sau orice altă tehnologie) - nu există nicio limbă nouă pentru a scrie programe pentru ei - fac SI cu câteva limitări mari. Doar pentru că oamenii știu deja cum să învețe ceva nou? În mod oficial, este, probabil, și într-un anumit sens al Si.

Programare web

Să presupunem că doriți să scrieți o nouă Facebook (rețea socială). Ce veți scrie la asta? (Din sala vorbește despre HTML și CSS.) HTML, CSS este un design, și vrem să adăugăm fotografii acolo, prieteni, comentarii de la plecare.

Pentru partea de scripting, adică ce se va întâmpla pe partea clientului este JavaScript. Mai mult, uneori JavaScript este generat într-o altă limbă și este trimis (se întâmplă că scriptul este generat ... deoarece este atât de ușor uneori să se ocupe de unele schimbări în logică).

În mod surprinzător, este scrisă în PHP - și Facebook și multe alte proiecte mari. Bineînțeles, era necesar să-mi scriu propriile lucruri pe care încă mai funcționează bine și nu la fel ca "Trep-Lap", dar s-au confruntat. În principiu, mai mult sau mai puțin, pe ceea ce veți scrie, dar nu vă sfătuiesc pe Perl. Aici și acum, un caz clar, nimeni nu scrie nimic de la zero pentru web. Toată lumea scrie un cadru sau altceva. Magazin online? Am descarcat cadrul pentru magazinul online - bine, totul, a scris magazin online.

Programare pentru afaceri

Apoi doriți să scrieți o aplicație plictisitoare pentru bancă. Sau, de exemplu, aveți pe cineva care vinde sims? Poate că ați cumpărat vreodată un telefon sau altceva ți-au spus: "Iată sistemul agățat, nu putem face nimic". Ce veți scrie o astfel de aplicație? (Plâns de la Python Hall) pe Python, este imposibil să scrie, ce ești tu?! Nimic pentru afaceri nu ar trebui să scrie pe Python. De ce? Pentru că atunci când scrieți ceva pe Python, nu puteți detecta o cantitate semnificativă de bug-uri în procesul de scriere. Python este în orice fel scris dinamic, iar în general poate fi atât de ascuns bug-ul pe care îl va ieși într-o astfel de situație pe care nici măcar nu le puteți înțelege ceea ce au făcut acești utilizatori de croazieră aici pe care totul a izbucnit totul. Adică, este mai bine să scrieți pe Python pentru tine, scripturi mici - înțelegeți ce se întâmplă acolo și ce se face. Ei bine, sau ceva care nu este milă de a arunca: Vrei să scoți ceva înaintea concurenților, astfel încât să se rupă în momente. Ai scris pe Python și pe toți - ai capturat piața. Și dacă scrieți ceva de mult timp, de exemplu, o aplicație bancară este un fel (astfel încât a aprobat împrumuturile, altceva) - îl scrieți pe Java. Deoarece există o problemă serioasă, de hârtie, bani, documente, altceva, dar în ea este imposibilă în ea, că totul se va rupe, altfel oamenii vor fi jigniți - nu au rămas bani și nu au ajuns nicăieri, pentru că aveți niște Momentul șirului a devenit un număr sau viceversa. Deci, înseamnă, luăm o metodică pe Java și scriem, scrie ... Ei bine sau pe .NET, de asemenea, astfel de situații, în principiu, există. Există, bineînțeles, puteți avea și în probleme, dar totuși probabilitatea acestui lucru este oarecum mai mică.

Programare pentru armată, industria aerospațială

Și acum, imaginați-vă că ați decis să vă trimiteți la Lună pe rachetă. Ce ați prefera să scrieți un cod care controlează motoarele cu rachete? Sa vedem. Acest lucru este probabil (lectorul arată pe Perl, Python, Php, Ruby), nu merită - încetinește, altceva se întâmplă, bine, în general, nu aș fi de acord să zbor pe o astfel de rachetă. Pe C ++? Aș fi, de asemenea, sincer, nu am încredințat, pentru că pe C ++ prea multe modalități de a ucide. Când sunteți acolo undeva în spațiu, nu este foarte bun.

Poate pe Java? Se pare că există destul de fiabil totul, iar arhitectura este bună, fără tipuri sălbatice, fără rezultate dincolo de limitele memoriei inutile. Să presupunem că a venit cel mai responsabil moment, iar Java a decis să colecteze gunoi pentru noi. Trebuie să aterizăm, să încetinească și este: "Nu, gunoiul merge." În general, nu foarte mult.

Sincer, aș prefera ca Pascal să scrie acest program. Desigur, nu-mi place foarte mult Pascal, dar într-un fel în astfel de probleme ar fi foarte mare.

Utilizați mai multe limbi mai multe pentru a se dezvolta

Ei bine, ce trebuie să spuneți despre limbile moderne. Acum, multe proiecte nu trăiesc într-o singură limbă, adică pe care cineva trăiește într-o singură limbă, o parte - pe de altă parte, o altă parte este pe cea de-a treia. De exemplu, dacă aveți o aplicație web care procesează cantități sălbatice de informații, accesarea discurilor (nici măcar la bazele de date, acestea sunt atât de mari încât există chiar și o bază de date care nu a scris încă) este probabil scrisă pe orice nivel de nivel scăzut să scrieți în mod sălbatic pe disc și la toate acestea. Firește, scrierea întregului proiect pe SI nu merită. Poate că există un fel de logică intermediară scrisă în Java, care se referă la funcțiile albastre pentru apeluri rapide. Ei bine, Frontendianul (atunci ce vizionează utilizatorul), desigur, deja scris pe ceva, pe unele scripturi, pe ceea ce este direct executat de browser (JavaScript). Și toate acestea trăiește împreună și interacționează cu succes.

În dezvoltarea unor aplicații, chiar și mari, uneori oamenii fac ce? Ei iau și scriu un prototip pe Python (așa cum va funcționa totul), au aruncat un fel de arhitectură. Scrierea pe ea într-adevăr foarte repede - au aruncat prototipul, experimentat cu el și a spus: "In! Asta e cât de cool! " Și complet rescris. Se pare că au făcut munca de două ori, de la acest timp de două ori mai departe (bine, într-o jumătate și jumătate). Dar nu! De multe ori se dovedește că o astfel de cale nu este rău, pentru că dacă scrieți imediat pe ceva, de exemplu, pe Java, și apoi decideți: "Nu, să refactorcăm, să schimbăm complet arhitectura și toate acestea", apoi petreceți de 10 ori mai mult Timpul. Astfel de lucruri există și trăiesc.

Condiții de succes ale oricărui limbaj de programare

Acum, să vorbim de ce unele limbi bune nu au supraviețuit, bine sau nu trăiesc în spațiu foarte limitat. Când Wirth a văzut că firmele proaste Apple, Borland și toate acestea, și toate acestea, a venit cu o limbă chiar mai bună - Oberon. El a fost doar un minimalist sălbatic - adică au existat foarte puține echipe (linii? De ce avem nevoie de șiruri de caractere? Vom face o serie de personaje!). Ei bine, ceva nu a mers cu el, în măsura în care ar putea merge.

Alt lucru. Armata americană le-a cerut să dezvolte un limbaj abrupt, pe care totul funcționează și totul poate fi scris. Rezultatul a fost o limbă destul de monstruoasă, pe care, totuși, scrie ceva, dar din nou - numai pentru militari.

Care este problema? De ce unele limbi ca Python, care nu l-au sprijinit la început, au capturat piața. PHP, care este, de asemenea, prost conceput, și sa luat și a capturat piața (cea mai mare). Și toate miliarde de dolari sunt încorporate (lectorul arată pe ADA) și nu au mers nicăieri, nimic nu sa întâmplat. Cu ce \u200b\u200beste legat? Acest lucru se datorează faptului că nu există o infrastructură în jurul acestor limbi. Asta este, limba poate fi excelentă, dar nu există nicio documentație până când nu există nicio comunitate care să poată răspunde la întrebări (pe overflow de stivă) și, în cele din urmă, cel mai important lucru nu este numărul mare de biblioteci, limba nu trage. Asta este, de exemplu, ați vrut să scrieți un site web pe Oberone. Și ce zici, de ce nu? Și Moroka începe ... Nu puteți ridica serverul Web pe Oberone pentru a testa ușor, orice biblioteci pe care nu le puteți conecta, pentru că nu sunt pe oburon. Și toate acestea, prin niște cârje se termină, forțele pleacă și, în general, scuipați și scrieți pe site-ul curat SI în loc de Oburon. Și aceste limbi care știu cum să utilizeze bibliotecile din alte limbi trăiesc bine. Același python în acele locuri în care încetinește. În general, tot felul de lucruri standard cum ar fi sortarea și altceva scrisă pe C, și el (Python) poate interacționa cu ei.

Java are, de asemenea, o interfață nativă Java. Acest lucru este în esență SI, adică acolo (în opinia mea, tot timpul doresc să interzică, dar nu pare a fi interzise) Aceste limbi pot interacționa cu bibliotecile existente (în cea mai mare parte albastră). Și în detrimentul acestei preluări și muncă. Se înțelege de ideea că încerc să vă transmit, nu? Nu scrieți în acele limbi care nu știu cum să conecteze o bibliotecă albastră. Ei bine, dacă doriți să utilizați ceva răcoros. Ei bine, și treptat ei (limbi) își transformă propria infrastructură. Și trăiesc într-un fel bine.

Programarea limbajului și orientarea profesională

Acum să vorbim despre cum să înțelegem ce vreți în viață. Ce se întâmplă de lucruri amuzante? Vă puteți angaja într-un fel de programare a sistemului, nu? Ești cool să ia în considerare aceste octeți acolo, vrei să conduci Quadcopters, niște camere, altceva de făcut. Apoi, probabil, c este alegerea ta.

Dacă doriți să scrieți, poate că nu este cel mai interesant în viața aplicației, dar sunteți cool pentru a le proiecta, gândiți-vă la toate și câștigați o mulțime de bani, pentru ședința și dor de cea mai mare parte a timpului (pentru că aveți nevoie Pentru a plăti, dacă vă lipsesc calitativ), aici sunt - Java, .Net. Mergeți la lucru într-o bancă, scrieți, mergeți la nouă pentru a lucra într-o cămașă albă, obțineți un salariu bun și scrieți în conformitate cu recomandările celei mai bune java-apă, oi .NET și tot ce ...

Dacă doriți să scrieți orice aplicații, un fel de browser, unele jucării, altceva, atunci C ++ este minunat. Dacă doriți să scrieți Sites, atunci aici sunt limbi la alegerea dvs. (lectorul arată pe Perl, Python, Php, Ruby), nu există o mare diferență. Singurul lucru - PHP va muri mai devreme decât Python, deci dacă sunteți leneș să învățați unul nou, atunci învățați Piton. Nu voi observa o mare diferență, dar vei muri mai mult.

Ceea ce se întâmplă cu Ruby este, de asemenea, incomprehensibil. Ei bine, puteți și PHP, dacă au învățat deja, ele sunt atât de simple încât nu există atât de mult timp.

Și în cele din urmă, există un alt domeniu de aplicare a limbilor de programare - atunci când nu utilizează programatorul. Să presupunem că sunteți un matematician, un fizician, un chimist, un analist, oricine și trebuie să numărați ceva rapid, să analizați orice date (biologi, de exemplu, câte scări trăiesc pe Insulele comandante). Puteți semna toate acestea în Excel în Excel sau analizați orice. De asemenea, Python este bun pentru a aborda acest lucru, cu textul pe care îl puteți lucra și bibliotecile sunt pline de tot felul de statistice și toate. Dacă doriți să faceți orice învățare a mașinii, unele date pentru a procesa, prezice, apoi pe Python se face acum mai repede. Adevărat, trebuie remarcat faptul că sarcinile sunt foarte diferite. De exemplu, dacă doriți să faceți schimb de bursă instantaneu în condiții când citatele se schimbă tot timpul, atunci ce învățarea mașinii dvs. scrisă pe Python, persoanele care sunt scrise pe ceva vor fi mai rapide, vor avea timp să cumpere totul înainte Totul vă vine, chiar dacă au algoritmii mai rău. Prin urmare, chiar și aceste sarcini de învățare a mașinilor (unele dintre ele) necesită o productivitate ridicată (și extrem de ridicată) și, respectiv, alte limbi.

Singura modalitate de a înțelege ce vrei este să încerci totul. Acum voi spune ca una dintre viziunile despre cum puteți încerca totul. Cum să devii un programator și fericit? Asa de. De la pornirea foi pure. Aici studiați la școală cu matematica, limba rusă și alte subiecte obligatorii și opționale, iar cunoștințele dvs. în domeniul programării se reflectă pe tablă (lectorul arată pe o placă goală) acest moment. Și doriți să deveniți o persoană fericită, să faceți un iubit, să câștigați o mulțime de bani și să nu vă refuzați și să vă bucurați.

O modalitate de a realiza acest lucru. Există, bineînțeles, tot felul de povești de inspirație despre persoanele care nu au mers la universități sau le-au aruncat și au devenit miliardari, proprietari de companii și așa mai departe. Dar trebuie remarcat faptul că majoritatea oamenilor care nu pot fi miliardari, dar și ei trăiesc bine, după ce a terminat o universitate la un moment dat.

Care este situația noastră cu admiterea la universitate (studiați la școală)? În timp ce studiați la școală, trebuie să înțelegeți ce urmatorul pas - Înscrieți-vă și aveți grijă de ea. Pentru a trece examenul sau a câștiga olimpiada. La examen, puteți utiliza Pascal, C ++ (inclusiv Si Pure), Python (nu le voi mai menționa în continuare). La Jocurile Olimpice - același Pascal, același C ++, același Python (vom vorbi acum despre problemele sale acum) și, cel mai adesea, există Java. Există încă ceva, în funcție de Jocurile Olimpice, dar nu de esența.

Ce arată programul de distribuție pe Olimpiada All-Rusia privind informatica? Oamenii care participă la All-Rusia, cel mai abrupt olimpiad, la ce scriu? Arată așa (aici înseamnă Pascal, și aici aproximativ 2000 și aici este aproximativ zero, aici C ++ și aici 2015).

În 2000, C ++ aproape nimeni nu a scris. A durat 15 ani și aproape nimeni nu scrie pe Pascal, în ciuda faptului că Pascal este modern. Aceasta este o limbă care poate aproape la fel. Doar ceva pentru toată lumea a devenit prea leneș pentru a afla acest lucru, fiecare nouă tendință și totul continuă să scrie pe Borland Pascal, care, desigur, nimic nu poate. Pe oamenii C ++ scrie orice algoritmi (STL) curte - perfect, a scris un fel () și asta este. Pe Pascal, pe obișnuit, pe cea veche este o problemă. Ei au scris unele seturi (necesare) - perfect, pe C ++ au scris, pe Pascal, din nou, solidul de chinuri. Pe noul pascals, puteți face acest lucru, puteți face acest lucru, dar costă bani de fapt. Poate că nu ați observat asta, dar este.

Există încă Java, dar în Java există o mulțime de scrisori. Este pentru proiecte mari și pentru programe mici de unică folosință, se dovedește destul de rău, pentru că o mulțime de litere suplimentare. Dar, de asemenea, unii oameni scriu, puteți învăța să scrieți pe ea. Dar nu există nimeni în examenul său, iar examenul va trebui să se ia în cea mai mare parte.

Ce este cel mai bun pentru examen? Pentru examenul cel mai bun (dacă nu știți nimic și în școală nu sunteți învățat) să învățați Python. Unele sarcini de examen sunt rezolvate perfect pe ea. La Jocurile Olimpice, în general, se pare că (folosit) C ++, deoarece Python este foarte lent, nu totul este rezolvat pe el.

Astfel, ați studiat un subset mic al limbii și algoritmi (posibil) și multe sarcini formate pentru a obține o diplomă a Jocurilor Olimpice și a intrat în universitate pentru a primi învățământ superior.

Îți voi spune despre modul în care construim un curs în turn, în ce limbă vor merge limbile, ca studii privind matematica aplicată și informatică a Facultății de Științe Aplicate, pe care le facem cu Yandex. În primul semestru - Python (nu este în întregime, aproximativ cum ar trebui să învățați la școală) și C ++ (mai larg, mult mai larg decât este de obicei predat în școli). Să spunem acum, astfel încât să nu vă fie frică dacă vreți să faceți, să spuneți: "Ce, deja știu totul, de ce voi învăța undeva? Mai bine mă voi duce într-un alt loc. Pentru cei care știu deja cum să programeze bine, există o oportunitate de a merge imediat la studiul algoritmilor și în formarea destul de teoretică. Nu ne uităm acum la ele (spectacole pe tablă) pentru cei care programul sunt medii sau în vreun fel.

Primul semestru studiază fundațiile lui Python, doar că oamenii au învățat să programeze și că nimeni nu dezamăgește. Python este mic unde predau în școli, majoritatea oamenilor vine cu cunoștințe despre Pascal sau C ++. Mai ales chiar Pascal, dacă este o școală de masă. Ei bine, astfel încât nimeni nu dezamăgește, toată lumea este învățată o nouă limbă (ca și cum ar fi în condiții egale). Și C ++ este pur și simplu pentru că de la C ++ puteți merge oriunde.

Apoi există un curs "algoritmi" și un proiect temporal separat. Algoritmi clasici cu implementare. Nu că în teorie am luat ceva, considerat complexitate. Am luat la prelegere, considerat complexitatea, la seminarul pe care l-au luat, implementat algoritmul. Proiectul este elevii care fac ceva complet. De exemplu, unul dintre proiecte a fost: Pentru a calcula ... Să presupunem că aveți o mulțime de apartamente în Moscova și înțelegeți: "Oh, am o mulțime de inutil, voi închiria unii. Și au scos un preț și nimeni nu vrea să-ți împușcă apartamentul - probabil prea scump. Sau setați un anumit preț, ați eliminat imediat și vă gândiți: "Oh, probabil că am trecut ieftin" - și, de asemenea, supărat. Adică, era necesar să se calculeze cât de mult se află un apartament? Conduceți datele - este evaluat pentru dvs. Un astfel de Sittik care a constat din mai multe lucruri: să ia oferta, să se topească, să aplice un fel de algoritm de învățare a mașinilor (probabil) simplu și să facă o față frumoasă, în care puteți alege ceva, conduceți ceva, unele metri, orice număr de camere, Numărul de saune, numărul de jacuzzi din apartamentul dvs. și evaluează în mod aproximativ costul. Asta este un fel de lucru complet, nu foarte complex. Aceasta înseamnă aici (lectorul arată un curs pe algoritmi), un astfel de C ++ C ++, cu o introducere a consolei. Ei bine, aici (lectorul arată inscripția "proiectul") ceva sub îndrumarea mentorului, eventual cu baze de date, eventual cu parsarea textelor și cu altceva.
Apoi, al treilea semestru merge - acesta este un curs numit "sisteme informatice". Există un număr foarte mic asociat pentru înțelegere (foarte puțin) și apoi, ceva similar cu Clean Si și interacțiunea cu sistemele de operare, programarea sistemică este în esență. Și proiectul la seminar este, de asemenea, ceva în tot felul de interacțiuni de rețea, suficient de scăzut: să dezvolte unele utilități, cum ar fi RSYNC (sincronizare, poate știți. La Clean Si, mai puțin, scrie un analog de RSYNC, pe care îl veți face Aveți folderele de sincronizare a rețelei cu toate fișierele în fișiere și așa mai departe).

Și în cele din urmă, al patrulea. Nici măcar nu știu cum să o numesc, este o astfel de tehnologii de vinaigrette necesare pentru dezvoltarea reală, de exemplu pentru dezvoltarea web. Adică, aceasta este aplicarea practică a bazelor de date, din nou ceva similar cu ceea ce sa făcut în proiect (lectorul arată proiectul al doilea curs), dar deja mai profund. Adică, mai mult sau mai puțin lucruri concrete, programarea practică. În paralel cu aceasta, fiecare teorie merge, bine și aici știința este încă angajată.

Și după două cursuri, oamenii se deosebesc să se angajeze acolo unde sunt interesați, pentru că acest lucru acoperă destul de larg elementele de bază ale programării și a oamenilor în acest moment înțeleg deja că nu vor să facă sisteme informatice În nici un caz (programarea sistemului, de exemplu, nu a plăcut), dar doresc să se angajeze în unele algoritmi teoretici, dificultăți în a lua în considerare, inventează lucruri noi, distribuite sau altceva. Sau, dimpotrivă, ei cred că nu sunt foarte ( lectorul indică o linie de prim an cu Python și C ++) a mers, apoi ( lectorul indică un șir de cursuri al treilea, cu programarea sistemului) - Cum nu-ți place, conta și pune tot felul de restricții privind citirea și înregistrarea, face cursuri, copaci și altceva. Și în conformitate cu aceasta, oamenii aleg un fel de direcție și să învețe. Aceasta este, în principiu, că nu dezvoltați "Sindromul Utanki" - ați fost primul care mi-a văzut Pascal și acum spuneți "Pascal - Power"; Sau mai avansate - ați văzut C ++ și ați început să vorbiți despre toată lumea că forța C ++ și orice altceva nu este foarte acolo.

Trebuie să vă uitați la el (lectorul arată lista de cursuri pe bord) este mai largă - aceasta este una dintre modalitățile care au fost alese, în special în turn (a apărut recent, deci este destul de modernă). Există și alte modalități de a vă întâlni. În alte universități bune, există un pic într-o ordine diferită și alte accente sunt aranjate. Dar, de asemenea, încercați oamenii cu toată lumea să introducă ceea ce au.

Ca programator aspect de muncă

Ești asta ( lectorul prezintă o listă de cursuri) Au făcut totul, învățat la universitate și ceva timp de doi ani a lucrat mai productiv și trebuie să mergeți la muncă. Cum să vă alegeți ceva de lucru? În primul rând, ați întâlnit pe toți, au adâncit undeva și știți că vă place. Este necesar să alegeți ceea ce vă place în mod natural. Pentru că dacă doriți, veți investi, veți avea motivația și totul va fi bine. Pentru că există o chestiune nu numai în bani, punctul este că sunteți interesat și frumos. Ei bine, și vrei să intri cOOL COMER., pentru a obține un loc de muncă. Ce persoană pe care aș dori să o văd personal? Ea vine vorba de mine, să zicem, o sută de studenți - trebuie să iau doi la muncă sau unul. Ce vin ei, nu înțeleg cine sunt, ce sunt ei, cum sunt ei? În cel mai bun caz, îmi vor arăta o diplomă care a ajuns la universitate și voi spune: "In! Aceasta este o diplomă rece, și acest lucru nu este atât de cool! " Și pot face o greșeală, apropo. Poate că o persoană a avut mult timp liber și a învățat mult mai bine.

Ce ar fi frumos? Î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 o infrastructură, astfel încât datele să fie luate în considerare rapid, altceva, atunci, desigur, aș fi interesat să mă scriu ceva se deschide. Nu a făcut un Saytyik, dar ceva pe această temă. De ce este interesant pentru mine? Mă pot uita la codul dvs., văd cât de des ați comis, vă pot vedea cum ați reacționat la bug-uri de la utilizatori, bug-uri de la dezvoltatori care sunt utilizați - totul este scris, fac totul și cred că: "În, aici este bug-ul Nu mai sunt închise, aici ați fost impolit, răspundeți utilizatorului, există altceva - nu iau. Adică, acesta este proiectul dvs. personal.

Apoi, ce ar fi răcit? Aș dori să văd cum ați făcut comanda de lucru. Adică, veniți la mine pentru un interviu și spuneți: "Noi și tipii de la Uni, au spălat un fel de aparat. Am făcut o bază de date acolo, au făcut ceva de aplicație mobilă acolo și avem încă un băiat acolo, o fată de designer, un băiat pe suport tehnic. Am fost cinci oameni și am făcut un proiect răcoros. " Ei bine, văd ce este într-adevăr proiectul tău, spun: "Ce este al tău?" Mă uit din nou codul și înțeleg că poți lucra într-o echipă cu oameni.

Programatorul nu este cel care stă un (indie) în garaj, undeva cu lumina liberă, nu vorbește cu nimeni, devine o barbă și scrie. Oricum, există o anumită interacțiune cu oamenii. Cu șeful, de exemplu, ceea ce poate, uneori jură (șefii, ei nu sunt întotdeauna buni). Și văd că puteți lucra cu oamenii și mă face fericit dacă aveți o echipă bună. Chiar dacă nu este bine, este mai bine decât absența ei.

Ce altceva îmi place personal? Dacă ați fi arătat în proiecte mari. De exemplu, a fost cumpărat ceva din miezul Linux, dacă sunteți angajat în programarea sistemului, am corectat unele bug-uri. Adică, au arătat că știi cum să citești codul altcuiva și să știi cum să faci niște schimbări la ea. Mă uit: "Oh, într-adevăr, ți-ai dat seama de ceva dificil și niște bug-uri corectate!" Și încep să mă bucur foarte mult de asta. Pentru că am ... Ei bine, nu știu ... Asta e programul meu Quit, pentru că concurenții i-au oferit mai mult salariu și trebuie să blochez urgent pe cineva să-și ascundă locul - tu. Văd un astfel de lucru pe care tocmai l-ați scris de la zero și codul altcuiva nu știu cum să citească și să editeze și să se supără.

În cele din urmă, în funcție de postul specific, există alte lucruri diferite. Dacă sunteți potrivit pentru un analist, aș dori ca dvs. să aveți o sarcină de analiză a datelor. Dacă sunteți potrivit pentru anumite lucruri algoritmice, aș dori să fiu în programarea sportivă, au fost făcute unele algoritmi. În cele din urmă, dacă v-ați întrebat despre profesie, citiți ca un interviu, au întâlnit că există unii oameni care exprimă o mare nemulțumire: "Am venit, și mă întreb ce este hobby-ul meu. Stau ca o bufniță și nu răspund, pentru că nu am un hobby "și cred că HRS o fac. De fapt, ei încearcă să înțeleagă cât de binevoitor sunteți, de asemenea, adecvați. Dacă sunteți neprietenos și inadecvat, indiferent de ce sunteți acolo un geniu și un muncitor, un specialist abrupt, cu o mare cunoaștere, echipa va fi dificil de lucrat cu dvs. și singur nu trageți proiectul. În plus, chiar dacă trageți, vă puteți imagina ce încărcătură pentru companie. Și ce veți veni mâine și spuneți: "Creșteți-mi un salariu de 10 ori, altfel vă las". Adesea, companiile nu doresc să intre într-o astfel de situație. Prin urmare, educația în sine adecvată și bunăvoință este la fel de importantă (cel puțin) ca dezvoltarea unor abilități profesionale.

Rezumând, ce pot să spun? Ce limbi sunt bune și ce rău? Ei bine, în interiorul unui grup de limbi, de exemplu, între Ruby, Python și PHP, ce să alegeți? Desigur, răspunsul corect este Python, dar, de fapt, diferența dintre ele în numărul de bug-uri admise, în cantitatea de altceva - 5%, bine, poate 10%. Asta este, dacă aveți deja un proiect gata pe PHP, nimeni nu va spune în mintea potrivită: "Să rescriem totul pe Python". Se va spune: "Să angajăm un alt dezvoltator PHP și să continuăm să scriem pe PHP". Mare, aceasta este o alegere bună. Este clar dacă scrieți brusc pentru a scrie un fel de proiect, atunci este rezonabil să alegeți Python acum. Deși depinde și ea. Poate aveți o grămadă de dezvoltatori ieftini PHP pe piață, iar Python scump și vă gândiți: "Da, tehnologia este mai rece, dar voi economisi bani pe dezvoltatorii gata făcuți. Și totul, excelent, deja veniți și lucrați acolo.
Cum de a alege între Java și C ++? Da, același lucru se întâmplă. Cred că, până când veți decide ce limbă începeți un nou proiect mare, veți câștiga cunoștințe în domeniul dvs. profesional și puteți face alegerea potrivită. Acum nu trebuie încă să faceți o astfel de alegere și, prin urmare, vă sfătuiesc să faceți ceea ce îmi place.

Elementele de bază, așa cum am spus, cele mai multe elemente de programare (ceea ce este o funcție, ce se întâmplă dacă este, pentru că, pentru ca și masivele) pot fi învățate mai mult sau mai puțin în orice limbă. De exemplu, C ++, deoarece există multe lucruri pe el și specificul în el (la un astfel de nivel), iar ciocurile inutile scriind cel puțin. Ei bine, atunci când veți învăța orice lucruri arhitecturale complexe, învățați și vă faceți griji din greu despre acest lucru. Asta este, cel mai important - încercați, căutați ceea ce vă place și când înțelegeți că acum la ora 4 dimineața și sunteți pentru distracție Stați și scrieți, pentru că vă place - probabil, în acest moment este clar că ți-ai găsit propria ta.

Pentru a rezolva sarcinile de calcul, procesoarele grafice sunt din ce în ce mai utilizate acum, dar întrebarea este încă deschisă: Cum să scrieți programe eficiente Sub configurațiile corespunzătoare?

06/15/2011 ANDREI ADINETS.

Pentru a rezolva sarcinile de calcul, procesoarele grafice sunt din ce în ce mai utilizate acum, dar întrebarea este încă deschisă: Cum să scrieți programe eficiente pentru configurațiile relevante? Soluție standard - o grămadă de CUDA sau OpenCl - vă permite să implementați relativ rapid algoritmul, dar este dificil să creați o configurație specifică cu ajutorul lor. Necesită instrumente pentru programarea procesoarelor grafice de înaltă calitate care pot fi create, de exemplu, cu ajutorul limbilor extensibile.

Acum trei ani, echipamentul de procesor grafic (unitatea de procesare grafică, GPU) au fost considerate doar carduri video pentru un PC, acum atitudinea față de ele - au fost modificate modele speciale ale serverului GPU, concentrate pe rezolvarea sarcinilor de calcul, performanța la calculele cu dublă precizie au crescut , Sisteme înregistrează performanța, care ocupă linii de top în top500. Cum se scrie programe eficiente pentru astfel de mașini? Răspuns standard - o grămadă de CUDA sau OPENCL pentru programarea GPU și MPI la nivelul clusterului. Aceste instrumente sunt disponibile, sunt acceptate în mod activ de producătorii de echipamente, multe programe au fost deja scrise pentru acestea, dar există, de asemenea, dezavantaje.

CUDA și OPENCIL - extensiile limbii Si, nu sunt dificil de studiat, deși sunt unelte suficient de scăzute. Cu ajutorul lor, puteți implementa relativ rapid algoritmul GPU, dar versiunea optimizată pentru o aplicație specifică și configurația este mult mai complicată. Toate optimizările se vor face manual, ceea ce va duce la o creștere a dimensiunii codului și deteriorarea lizibilității sale. Și deși programele create folosind OpenCL vor fi transferate între o gamă largă de arhitecturi, performanța cu un astfel de transfer nu va fi salvată. Instrumente dorite pentru programarea nivelurilor superioare ale GPU.

Crearea unor astfel de instrumente pot fi create de diferite moduri: introduceți un nou limbaj de programare; adăugați directive la un limbaj existent, așa cum se face în acceleratorul IGP sau în modelul HMPP CAPS; Profitați de limbi extensibile. Limbi extensibile- limbi de programare, sintaxă și semantice din care nu sunt fixate și pot fi modificate în funcție de nevoile programatorului. În comparație cu limbile tradiționale, expandabile au o serie de beneficii: este mai ușor să adăugați noi caracteristici; Ele sunt deschise; Studiul noilor modele de programare pe baza unor astfel de limbi este mai ușor, deoarece este necesar să se studieze doar relativ mic din punct de vedere al expansiunii; Cu ajutorul unor astfel de limbi, este mai ușor să efectuați o configurație fină și optimizarea programelor.

Limbi extensibile

Pentru ca limba să fie extensibilă, este necesar să fie prezentă în acesta:

  • mecanismul de expansiune fără a schimba compilatorul este în mod egal susținut de toți compilatoarele, ceea ce înseamnă, în special, prezența unei interfețe standard de interacțiune cu compilatoarele;
  • proiecte pentru expansiune și manipulare cu un cod de cod, cum ar fi macro-urile sau cvasicitizarea, pentru a extinde limba;
  • mijloace puternice de scriere a extensiilor, de exemplu, limba extensibilă în sine și cu celălalt limbă, puterea care sugerează că codul de prelungire poate face același lucru ca orice program în această limbă.

Se pare că limbile care îndeplinesc aceste cerințe sunt relativ puține: Lisp, Nemelle, Seed7, Xoc și Stratego. În același timp, XOC, care este destinat să extindă limba SI, utilizează o limbă Zeta separată pentru a scrie extensiile, iar stratego este limba domeniului subiectului pentru a crea convertoarele codului sursă. Nemmerle este o limbă extensibilă folosind miercuri. NET.

Toate limbile expandabile de susținere mecanisme de lucru cu un program de programe și, mai presus de toate, acest design al cvasicitizării - specificația obiectului reprezentând arborele programului, utilizând codul cel mai sursă.

În limbajul Nemerle, este folosit un design pentru acest lucru, de exemplu, creează un copac format dintr-o declarație variabilă i cu o valoare inițială de 0. quasicitizare este similară creării obiectelor de șir cu constanți de șir. În fig. 1 prezintă un exemplu de cvasicitare. Designul de interpolare vă permite să înlocuiți valorile variabilelor într-un model fix în interiorul cvasicitizării. În Nemerle, utilizează design-uri $ (...) pentru acest lucru dacă doriți să înlocuiți o listă, de exemplu. De asemenea, în limbi extensibile există desene sau modele pentru analiza copacului programului. În limba nemmerle, se utilizează operatorul (...) (...), un analog al comutatorului din limba SI, ca și ramurile care sunt folosite de modelele de cvasicitare. În acest caz, interpolarea este tratată ca o variabile noi noi, care, în cazul în care o comparație reușită, primiți valori ale subrețelor corespunzătoare. De exemplu, pentru potrivirea operatorului de potrivire (e) (| \u003d\u003e ...), dacă E conține un copac, într-o variabilă o va cădea și în variabila b.

Instrumentele pentru lucrul cu un copac de programe sunt utilizate în modele de expansiune lingvistică. În Nerlele, acestea sunt macro-uri - funcții specialeEfectuate la etapa de compilare și returnând un fragment al unui copac al unui program care este înlocuit în locația apelului. În același timp, macro-ul ia fragmente ale programului ca parametri și le poate transforma. În principiu, macro-ul poate fi cauzat în același mod ca și cum caracteristică convențională; Dar oportunitatea mai interesantă este de a lega macro apelul la o sintaxă specială. Acest lucru vă permite să introduceți noi construcții de sintaxă în limba Nerlele și să extindeți astfel limba.

În fig. 2 prezintă un exemplu de macro cu o extensie sintactică, care vă permite să declarați un ciclu multidimensional cu variabile și numărul de iterații pentru fiecare măsurătoare și în fig. 3 Acesta este un exemplu de conversie a programului care face acest macro. Rețineți că macroul care exercită o astfel de extensie durează mai puțin de 30 de rânduri din codul sursă și, în acest caz, include mai multe verificări de eroare. Cu o abordare tradițională, punerea în aplicare a unei astfel de prelungiri ar necesita un număr semnificativ de cod și, în plus, ar necesita studiul dispozitivului de compilator intern.

Din punct de vedere istoric, mecanismul macro din Lisp a apărut mai întâi, programul în care se pare ca o listă obișnuită și nu necesită modele speciale de a lucra cu arborele programului, așa că a fost în această limbă că programarea extensibilă a devenit cea mai distribuție. Macrocomenzile din Nemelle sunt similare în Lisp. În sistemul XOC, mecanismul de extindere este implementat prin intermediul atributelor de expansiune gramatic și parsare. Orice extensie stabilește în mod necesar două atribute: tipul de sintaxă și expresie pe limba de bazăîn care este convertit.

Pentru limbi extensibile, implementarea multor structuri standard este caracterizată de macrocomenzi. În limba nemelle, toate ciclurile și operatori condiționațiÎn plus față de potrivire, implementată prin macrocomenzi, iar în macrocomenzi sunt cicluri standard și caracteristici ale funcțiilor.

Cum să utilizați limbile?

Pentru un limbaj de programare extensibil, puteți scrie structuri care să permită modul cel mai convenabil de a programa procesoarele grafice, care a fost făcută ca parte a proiectului NUDA (arhitectura dispozitivului nemediantă unificată), scopul căruia este de a crea extensii de limbă Nemerle pentru GPU Programare. OpenCL este folosit ca o interfață de interacțiune cu GPU și limba țintă pentru a reprezenta programul.

Pentru a începe, este necesar să se implementeze execuția pe codul subsetului GPU în limba nemelle. Acest lucru trebuie să fie susținut de operatorii de limbi obișnuiți, cum ar fi ciclurile și ramurile, precum și de lucru cu tipuri de date simple, structuri și matrice. Codul pentru GPU este supus funcțiilor individuale sau în kernelul NUDA. Fiecare kernel este marcat de un macro de nusernel, care este generat de codul de pe codul OpenCL și metoda de conectare pentru a apela kernelul pe partea gazdă. Înainte de a genera codul, se efectuează divulgarea tuturor macrocomenzilor, cu excepția ciclurilor și macrocomenzilor de ramură. Dacă în interiorul kernel-ului este necesar pentru a apela o funcție, această funcție trebuie să fie marcată de Macro Nucode, care va genera codul pentru această funcție în OpenCL. Apelul de bază se efectuează utilizând un macro Nucall; În plus față de parametrii kernelului, acesta este transmis, de asemenea, la configurația rețelei de flux cu care pornește.

Cel mai adesea, corpul ciclului este utilizat ca miez pentru GPU, așa că aș dori să transfer imediat ciclul la GPU. În Nerlele, acest lucru poate fi implementat - Macro-ul corespunzător din Nuda se numește Nuwork. După cum este necesar parametrii necesari, este nevoie de dimensiunea blocului de flux și pe baza contextului actual și a analizei codului corpului ciclului determină setul de variabile care trebuie transferate la kernel ca parametri. Corpul kernel-ului este generat de corpul ciclului, calculând indicele ciclului prin numărul de flux global, precum și condițiile care vă permit să executați corect ciclul, chiar dacă dimensiunea Global Grid nu este împărțită în dimensiunea Grupul de flux. O macrocomandă Nucall solicită localizarea ciclului, care numește kernelul generat.

În principiu, puteți permite utilizarea unor matrice de limbă Nemerle în programele GPU, dar duce la costuri ridicate de cheltuieli - matricea este necesară pentru a copia în memoria GPU de fiecare dată când kernelul este apelat și apoi copiați-l înapoi. Prin urmare, tipuri speciale de matrice sunt utilizate în programele GPU cu sincronizare leneșă între GPU și CPU. Acest lucru permite, pe de o parte, să nu ambreiați textul programului prin copierea comenzilor de date și pe cealaltă - pentru a evita cheltuielile de copiere a datelor. Pentru astfel de matrice, ca și pentru matricele obișnuite din Nerlele, gestionarea memoriei este utilizată utilizând colecția de gunoi. Pentru a evidenția memoria pentru astfel de matrice, există un Macro Nunew, care trebuie aplicat operatorului obișnuit de alocare a memoriei.

În fig. 4 În stânga este un program de arie convențional și în partea dreaptă - un program similar, dar efectuarea de calcule pe GPU. Obțineți programe GPU de la obișnuite pur și simplu pur și simplu - aplicați numai macrocomenzi la cicluri și operațiuni de alocare a memoriei, iar valoarea codului nu este practic schimbată. Programul scris folosind NUDA durează mai puțin de 20 de linii de cod. Program similarDar în limba curată SI și OpenCl durează mai mult de 100 de linii.

În plus față de macrocomenzi, facilitând lucrarea cu GPU, sistemul de extindere NUDA include, de asemenea, adnotări pentru conversia ciclurilor. Adnotările sunt în esență macrocomenzi speciale. De exemplu, abstractul inline este utilizat pentru un ciclu cu un număr fix de iterații și efectuează scanarea completă. Dmine Rezumat efectuează o scanare cu ciclu profund. "Scanare profundă" înseamnă că crearea mai multor copii ale corpului ciclului și agitarea se efectuează nu numai pentru ciclul cel mai convertibil, ci și pentru ciclurile imbricate, dacă este independent.

Efect

De ce ar trebui programatorul să învețe o nouă limbă și să dezvolte noi biblioteci de limbi extensibile? Răspunsul principal este productivitatea. Având un algoritm din cicluri paralele care funcționează cu matrice și înregistrate în limba nemellă, este suficient să adăugați mai multe adnotări pentru a obține un program pentru GPU. În același timp, programul va fi executat pe orice dispozitiv cu suport OpenCL, inclusiv grafic procesoare Nvidia. și AMD, precum și procesoarele X86. Pentru a obține același lucru numai cu tehnologiile OpenCL sau CUDA, va fi necesar să cheltuiți mult mai multe resurse care să aibă loc nu numai pentru a scrie codul sursă, ci și pentru a depana interacțiunea dintre gazdă și GPU.

Un alt motiv este performanța codului creat. Pe CUDA sau OpenCL, conversia ciclurilor se va face manual și separat pentru fiecare arhitectură. Acesta este un proces de eroare lung și înfășurat, iar codul rezultat este dificil și incomod pentru acompaniament. Cu Nuda, această lucrare se poate face cu ajutorul adnotărilor. De exemplu, pentru mai multe nuclee, puteți optimiza convoluția imaginilor sau multiplicarea matricelor cu adnotările inline și dmine. Fără a crește dimensiunea codului sursă, este posibilă realizarea unei creșteri a productivității în două sau cinci ori. În același timp, dacă aceleași transformări au fost efectuate manual, ar duce la o creștere a codului uneori și, uneori, o ordonanță de mărime, ca să nu mai vorbim de timpul petrecut timp la depanarea și selectarea parametrilor optimi de măturări. De exemplu, un program universal adnotat de la șapte rânduri în multiplicarea NUDA a unei matrice transpuse pe o matrice cu dublu precizie se efectuează pe Nvidia Tesla C2050 doar cu 40% mai lent cel mai bun lucru în momentul implementării (Cublas 3.2). Un program similar scris de mână ar ocupa 70 de linii de cod. Firește, pentru sarcini standard, puteți scrie manual codul o dată pentru a crește productivitatea, dar pentru sarcini specifice, reducerea costurilor forței de muncă și a productivității va fi foarte utilă. În cele din urmă, creșterea productivității include, de asemenea, crearea de extensii în sine: pentru a le crea cu ajutorul unor limbi extensibile este mai ușoară decât utilizarea instrumentelor tradiționale. Întregul sistem NUDA, în ciuda funcționalității sale, durează doar 12 mii de linii de cod, fără teste de numărare. Acest lucru este relativ puțin, de exemplu, compilatorul de limbă Nemerle (asamblarea 9025) durează aproximativ 130 de mii de linii.

Limba expansionată este un instrument puternic, iar utilizarea sa în calculul paralel este încă în starea cea mai inițială. Există multe sarcini interesante în dezvoltarea limbilor de programare paralele, iar oricare dintre ele poate fi rezolvată utilizând o combinație de extensii și biblioteci. Puteți adăuga la blocurile asincronale de limbă de cod și cicluri paralele, puteți crea designuri confortabile Pentru programare sisteme de cluster, cum ar fi matricele distribuite. În cele din urmă, este posibilă utilizarea extensiilor pentru a construi un limbaj de programare paralel cu drepturi depline, cum ar fi capela sau x10.

Andrey Adinets.([E-mail protejat]) - M.N.S. NIVZ Moscova Universitatea de Stat (Moscova).



Scrierea celor mai moderne programe de calculator se efectuează atunci când se utilizează limbi de nivel înalt. Este demn de remarcat faptul că multe dintre ele au fost dezvoltate în anii '60 și 70, dar sunt încă relevante. Ce alte fapte despre limbile la nivel înalt putem sărbători? Care sunt cele mai comune soiuri ale soluțiilor relevante?

Esența programelor la nivel înalt pentru scrierea programelor

Limba de programare la nivel înalt - Instrument legat de categoria independentă de mașini. Ce inseamna asta? Faptul este că limbile de programare sunt împărțite în mai multe categorii.

Există un cod de mașină: un set de algoritmi care sunt proiectați pentru a gestiona utilizatorul direct de elementele hardware ale computerului. Entitatea lor va fi complet dependentă de mașină: numai anumiți algoritmi sunt potriviți pentru anumite tipuri de PC-uri.

Există limbi de asamblare. De fapt, acestea sunt o suprastructură față de cele concepute pentru controlul la nivel scăzut al componentelor hardware PC prin intermediul unui cod al mașinii. Dar, în multe semne, limbile de asamblare sunt, de asemenea, acceptate pentru a se referi la mașina dependentă de mașină. De regulă, ele sunt adaptate la o varietate specifică de componente hardware PC. Sarcina lor principală este de a simplifica gestionarea utilizatorului a computerului prin intermediul unor comunicări la nivel scăzut.

La rândul său, limba de programare la nivel înalt permite utilizatorului să interacționeze cu PC-ul, indiferent de ce echipament special este instalat pe computer. Prin urmare, ar trebui să fie atribuită independenței mașinilor. La scrierea sistemelor de operare, limbajul de programare la nivel înalt este cel mai adesea implicat. Dar există un sistem de operare, care este scris pe asamblare. Nivelurile scăzute și înalte pot fi utilizate simultan. O persoană, oferind echipe de nivel înalt de la PC, oricum, să le transmită componentelor hardware specifice, iar această funcție poate fi implementată atunci când se utilizează limbile de asamblare simultan cu nivel înalt, care este implicat în structura operației sistem.

Traducător

Cele mai importante elemente care sunt în limbi de programare la nivel înalt sunt traducători. Funcția lor poate fi diferită. Printre domeniile-cheie de aplicare a traducătorilor - "traducere" de comenzi generate în limba de programare la nivel înalt, în codul mașinii, de exemplu, la o componentă hardware specifică a PC-ului, de exemplu, procesorul. Traducătorii care efectuează această funcție sunt numiți și compilatoare. Există o altă varietate de componente relevante - interpreți. Acestea sunt destinate, la rândul lor, pentru "traducerea" echipelor la nivel înalt din cele care sunt de înțeles cu sistemul de operare sau în orice program.

Clasificarea limbilor la nivel înalt

Limbile de programare la nivel înalt pot fi clasificate pentru diferite baze. O schemă pentru care sunt împărțite în următoarele soiuri principale sunt comune:

Orientat procedural (operează ca instrument atunci când procesează informații în orice etapă a calculelor);

Orientate spre probleme (utilizat ca mijloc de rezolvare a sarcinilor industriei și aplicate formate prin extinderea aplicațiilor PC-urilor);

Orientate pe obiecte (pot fi, totuși, cazuri specifice de limbi ale primelor două tipuri, adaptează la utilizarea unei game largi de dezvoltatori cu diferite nivele Pregătirea, de exemplu, sub forma unei soluții cu o interfață vizuală).

Acum, luați în considerare unele limbi istorice și moderne de programare la nivel înalt, care corespund acestei clasificări.

Limbi orientate procedurale

Aceasta poate fi atribuită Fortran. Este considerat primul limbaj de programare la nivel înalt creat pentru utilizarea pe scară largă. Se caracterizează printr-o structură simplă. Limbile orientate spre procedural aparține și Beysik. Este considerată una dintre cele mai frecvent utilizate programare. Un exemplu al unui alt limbaj orientat procedural - Si. Inițial, a fost creat pentru UNIX OS. La baza sa, limba C ++ a fost ulterior creată, completată de instrumente de programare orientate pe obiecte. O altă limbă care aparține categoriei în cauză este Pascal. Adesea implicate și în programarea de formare. Posibilitățile acestei limbi permit ca acesta să fie folosit ca un instrument foarte puternic pentru dezvoltarea unor specii profesionale de software.

Limbi orientate spre probleme

Acestea includ Lisp, Prologue. Prima limbă a fost dezvoltată în 1962 - la câțiva ani după crearea Fortran. Este considerat, într-un fel ca al doilea din istorie. Implicați activ ca un instrument pentru lucrarea programatorilor cu șiruri de caractere. În practică, Lispul a fost utilizat în sistemele clasificate ca expert, precum și cele destinate calculelor analitice. Prologul a fost utilizat pe scară largă în domeniul programării logice. În practică, cel mai adesea implicat în gestionarea algoritmilor de inteligență artificială în sistemele respective.

Limbi orientate pe obiecte

Acum studiem exemplele de limbi de programare la nivel înalt care se referă la categoria orientată spre obiecte. Printre aceștia - Visual Basic, Delphi, Visual Fortran, remarcat peste C ++, precum și Prolog ++. De fapt, toate acestea se bazează pe limbi orientate procedural. Cu toate acestea, se presupune că este un plus semnificativ al elementelor vizuale ale conducerii, pentru a dezvolta ulterior algoritmii necesari de către dezvoltatori obișnuiți cu alte instrumente. Astfel, primul limbaj de programare la nivel înalt - Fortran - poate fi studiat de către experții IT prin posibilitățile vizuale Fortran. O metodă similară poate fi trimisă rapid o bază sau un prolog.

Se efectuează, la rândul său, când se utilizează programarea Delphi în limba obiectului de nivel înalt Pascal. Există un număr mare de alte medii de dezvoltare software, clasificate ca un limbaj orientat pe obiecte. Acest domeniu de tehnologii de dezvoltare se dezvoltă în mod activ.

FORTRAN și LISP - prima și a doua limbă la nivel înalt

Vom studia mai mult, după cum a apărut primul limbaj de programare la nivel înalt - Fortran, precum și Lisp, considerat al doilea. În 1954, dezvoltatorii de la IBM, condus de John Bacus, au creat o limbă prin care programatorii au reușit să atenueze în mod semnificativ interacțiunea cu PC-ul, care până la momentul a fost efectuat prin comenzi de mașină sau asamblare. El a fost numit FORTRAN și a devenit în curând cunoscut în URSS sub punctele ruși. Fortran a devenit un instrument popular pentru computere științifică.

Principalul element revoluționar propus de specialiștii IBM, a devenit de fapt același compilator, conceput pentru a fi o alternativă la asamblare. În primii ani de practică de scriere a programelor atunci când se utilizează Fortran, mulți dezvoltatori au considerat compilatorul nu este o soluție destul de reușită, în primul rând, în ceea ce privește costurile forței de muncă. Multe coduri de mașini au fost într-adevăr pregătite mai ușor decât atunci când este implicat traducătorul. Cu toate acestea, ca o creștere rapidă a performanței calculatorului, programatorii au început să realizeze acest lucru fără a utiliza compilatorul, un software eficient care să utilizeze pe deplin puterea de calcul PC-ului, pentru a crea extrem de problematică. Deci, începuturile dezvoltatorilor din IBM au fost dezvoltate în continuare. Principalele structuri sintactice ale limbajului de programare la nivel înalt din Fortran în multe cazuri au început să utilizeze la fel de fundamental atunci când creați soluții noi.

Un exemplu de realizare a rezultatelor practice în dezvoltarea conceptelor stabilite în Fortran poate fi considerată crearea LISP. Această limbă a fost dezvoltată în 1958, cu toate acestea, a dobândit o faimă largă oarecum mai târziu - în anii 1960. Lispul a fost dezvoltat de John McCarthy și a fost publicat într-una din revistele populare pentru specialiștii IT. Scopul principal al limbajului în cauză este de a procesa liste. Lispul a devenit popular în mediul de dezvoltare al sistemelor de inteligență artificială. Pe baza sale, au fost create limbi precum planificatorul, schema, precum și Lispul comun. De asemenea, a oferit, de asemenea, un impact semnificativ asupra multor instrumente moderne de dezvoltare software. Structura limbilor de programare la nivel înalt, populară astăzi, se bazează în mare parte pe algoritmi Fortran și Lisp.

Cu toate acestea, va fi interesant să luăm în considerare alte abordări ale clasificării instrumentelor luate în considerare a instrumentelor de dezvoltare software.

Limbi universale de nivel înalt

Deci, experții moderni alocă limbi universale de nivel înalt. Acestea includ, în special, cele care au fost dezvoltate în anii '60. Caracteristici cheie:

Orientare pe o gamă largă de sarcini (în primul rând aferente computației);

Un număr mare de structuri lingvistice și algoritmi;

Semnificație nu numai pentru timpul său, ci și pentru stadiul modern de dezvoltare a echipamentelor informatice;

Sprijin în limbile relevante ale metodologiei imperative.

Limbile universale sunt fundamentale în industria de dezvoltare IT relevantă. Se poate observa că până acum nu au analogi direcți din partea structurii interne. De fapt, acest lucru explică în mare măsură relevanța utilizării limbilor relevante în interfețele moderne orientate pe obiecte. De asemenea, în general în limbi marcate - tip de date. Acest factor predermine în mare măsură versatilitatea lor. Printre cele mai remarcabile proprietăți ale limbilor aparținând categoriei de continuitate universală. Astfel, limbile istoric mai târziu se bazează de obicei pe conceptele de predecesori.

Limbi unice

Unii experți IT alocă într-o categorie independentă "Limbi unice". Printre aceia: APL, COBOL, FAȚĂ, SETL, precum și Clu. Care este specificitatea lor?

Cel mai important aspect al APL este implicarea unor matrice (vectori și matrice) ca un tip structural cheie. Specificul limbajului COBOL - în orientarea în sfera comercială. Astfel, este recomandabil să îl utilizați la rezolvarea problemelor asociate cu un format standardizat de reprezentare a rezultatelor. Limba finală se caracterizează prin utilizarea înregistrărilor de software postfix, precum și utilizarea unei noțiuni elegante. În limba SETL, seturile de valori sunt utilizate ca unul dintre tipurile cheie de date. Limba de programare la nivel înalt este, de asemenea, Clu. Caracteristica sa principală este de a utiliza conceptul de lucru cu tipurile de date abstracte. Mulți specialiști IT văd apariția logică a unor noi soluții bazate pe limbi unice - cum ar fi, de exemplu, cobol orientat pe obiecte.

Facilități Programare paralelă

Această categorie poate include un număr mare de soluții. La rândul său, limbile de programare paralele pot avea un număr mare de motive de clasificare. De exemplu, metoda de organizare a proceselor. Această bază implică clasificarea mijloacelor de programare paralelă pe baza prezenței în ele:

Soprograme;

Ramuri;

Asociațiile;

Paranteze paralele;

Algoritmi de lucru cu procese.

O altă bază pentru clasificarea limbilor de tipul în cauză este metodele de sincronizare a proceselor. Soluțiile corespunzătoare pot include astfel:

Semaphores;

Monitoare;

- "randevu";

Secțiuni critice;

Proceduri de provocare la distanță;

Tranzacții legate de categoria Atomic.

Limbile tipului de tip includ Modula-2, Bliss, Pascal concurent, DP, Argus.

Familia lingvistică C.

Mai sus, am considerat un exemplu de limbaj de programare la nivel înalt, o astfel de soluție ca C. De fapt, formează o întreagă familie. Limbile aparținând acesteia sunt structuri private C. Deci, adăugarea acesteia la diferite componente orientate spre obiect a condus la dezvoltarea C ++. După filtrarea substanțială a unui rând de construcții C, a apărut Java. Se poate observa că Java a fost creat în multe moduri sub influența conceptelor proiectului Oberon, care este gestionat de Niklaus Wirth, Creatorul limbii Pascal. JavaScript de nivel înalt se referă la JavaScript la nivel înalt? Desigur, da, în ciuda îngustării aplicației - ca instrument pentru dezvoltarea paginilor web. Dar limbile de programare la nivel înalt nu includ, în special, HTML, XML și SGML. Acestea sunt clasificate ca unelte de marcare hipertext.

Familia limbajului pascal

Limbi de programare la nivel înalt Pascal formează, de asemenea, o familie separată. Pe baza Pascal a fost, a creat efectiv Oberon, clasificat ca un limbaj de tip orientat pe obiecte. Caracteristica cheie Oberon - în capacitatea de a asigura siguranța tipurilor. Nu numărăm Oberon, limbile familiei Pascal pot fi atribuite modulului-2, precum și componentei Pascal.

ADA Language Family.

Fundamental în categoria relevantă a limbilor - comandate de Departamentul de Apărare al SUA ADA. A fost creată la sfârșitul anilor '70 - începutul anilor 80. Caracterizat cantitate mare Funcții, oportunități, versatilitate. Familia ADA include soluții precum Cedar, Modula 3.

Simula Language Family.

Limbajul Simula este distribuit în ramurile de programare asociate modelării imitației. Specificitatea soluțiilor adecvate - în implicarea unui anumit nucleu. Utilizarea sa vă permite să aplicați diferite extensii adaptate la una sau la altă aplicație. Bazat pe Simula, a fost creat un limbaj Smalltalk orientat spre obiect, precum și beta, caracterizat prin capacitatea de a se combina într-o singură abstracție a algoritmilor, reflectând lucrările cu date, proceduri și control. Obiectele beta pot fi considerate într-un context diferit, de exemplu, ca variabile, funcții sau sisteme paralele.

Titlul raportului

Limbi moderne de programare și utilizarea acestora

Autorul proiectului

Structura proiectului

● Schema de clasificare a limbajului de programare

● Clasificarea limbilor de programare

● Prezentare generală a limbajelor de programare

● Resurse utile

Schema de clasificare Limbi de programare

Clasificarea limbajelor de programare

Programare procedurală - Există o reflectare a fundalului arhitecturii Nymanovsk a computerului. Programul scris în limba procedurală este o secvență de comenzi care determină algoritmul de rezolvare a problemei. Ideea principală a programării procedurale este utilizarea memoriei pentru stocarea datelor. Comanda principală atribuie, care este determinată și modificările memoriei computerului. Programul face conversia conținutului de memorie prin schimbarea acestuia de la starea sursă la rezultat.

Există proceduri similare de programare Limbi:

 Fortran Limba a fost creată la începutul anilor '50 din secolul al XX-lea pentru programarea sarcinilor științifice și tehnice;

 Cobol - creat la sfârșitul anilor '60 din secolul al XX-lea pentru a rezolva problemele de prelucrare a unor cantități mari de date stocate pe diverse purtători de date;

 Algol (1960) este un limbaj de programare avansat multifuncțional. Pentru prima dată, au fost introduse conceptele "structurii blocului programului" și "distribuția dinamică a memoriei";

 La mijlocul anilor '60 din secolul al XX-lea, a fost creat un limbaj de programare specializat pentru începători - de bază. Se caracterizează prin simplitatea dezvoltării și de prezența mijloacelor universale pentru rezolvarea sarcinilor științifice, tehnice și economice, precum și sarcini, de exemplu, jocurile.

Toate limbile enumerate mai sus au fost axate pe diferite clase de sarcini, dar au fost într-un fel sau altul au fost legate de o arhitectură specifică de calculator.

 În 1963-1966, a fost creată o limbă universală multifuncțională PL-1. Această limbă este bine adaptată pentru procesele de cercetare și planificare, modelarea, rezolvarea sarcinilor logice, dezvoltarea sistemelor de suport matematic.

 Limba Pascal (Pascal) (1968-1971GG) - Limba de programare procedurală este cea mai populară pentru PC, care este aplicată în prezent cu succes. Limba Pascal se bazează pe o sarcină comună privată (mai simplă și mai mică în volum). Principiile de bază cu care posedă Pascal pot fi: a) programarea structurală, care se bazează pe utilizarea subrutinelor și a structurilor independente de date; b) programarea "de sus în jos" când sarcina este împărțită în sarcini simple, rezolvate independent. Apoi soluția problemei inițiale este complet acoperită.

 La procedura de programare limbajele includ limba iadului (1979 d), limba este numită după primul programator al doomelor de lavlayers Bairon. Acesta are modularitatea structurilor.

(Începutul anilor '70) se referă, de asemenea, la limbi de programare procedurală. Opțiunea inițială a fost planificată ca o limbă pentru implementarea sistemului de operare UNIX în locul asamblorului. Una dintre caracteristicile limbii Si este că diferențele dintre expresiuni și operatori sunt netezite, ceea ce îl aduce în limbile de programare funcțională. În plus, nu există niciun concept de procedură în limba C și utilizarea subrutine se bazează pe conceptul unei funcții care poate combina capacitățile procedurii. Pe de o parte, pe setul de structuri de control și structuri de date, acesta poate fi atribuit limbilor la nivel înalt, iar pe cealaltă - are un set de mijloace de acces direct la nodurile funcționale ale computerului, ceea ce înseamnă că poate să fie folosit ca un limbaj de operare.

Programare orientată pe obiecte (OOP) - Aceasta este o metodă de programare, atunci când se utilizează principalele elemente ale programelor sunt obiecte. În limbile de programare, conceptul unui obiect este implementat ca un set de proprietăți (structuri de date caracteristice acestui obiect), metode de prelucrare a acestora (subrutine pentru schimbarea proprietăților lor) și evenimente pentru care acest obiect Poate reacționa și, care conduce, de regulă, la o schimbare a proprietăților obiectului. Combinarea datelor și tratarea procedurilor de procesare într-un singur obiect se numește încapsulare și este unul dintre cele mai importante principii ale OOP.

Un alt concept fundamental este clasa. Clasa este un șablon bazat pe care poate fi creat un obiect de program specific, descrie proprietățile și metodele care determină comportamentul obiectelor din această clasă. Fiecare obiect specific având structura acestei clase se numește o instanță de clasă.

Următoarele principii cele mai importante ale OOP sunt moștenirea și polimorfismul. Moștenirea implică crearea de noi clase pe baza existenței și permite copilului să aibă un descendent (moștenit) toate proprietățile clasei părinte.

Polimorfismul înseamnă că instalațiile născute au informații despre metodele pe care ar trebui să le utilizeze în funcție de care se află lanțurile în care sunt.

Un alt principiu major al OOP este modularitatea - obiectele cuprind o definiție completă a caracteristicilor acestora, nici o definiție a metodelor și proprietăților nu ar trebui să fie localizate în afara acesteia, aceasta face copierea liberă și introducerea unui obiect altora.

Cele mai avansate limbi de programare sunt C ++ și Java. De la mijlocul anilor '90, multe limbi orientate pe obiecte sunt implementate ca sisteme de proiectare vizuală în care partea de interfață produs software. Creat în dialog, practic nici un operatori de software scris. Sistemele de design vizuale orientate pe obiecte includ GVUAL Basic, Delphi, C ++ Builder, Visual C ++. Limba VBA (Visual Basic pentru aplicare) - Limba de aplicare Microsoft Office. (Excel, cuvânt, punct de putere etc.). VBA respectă sintaxa principală a regulilor de limbă și programare a dialectelor de bază, vă permite să creați macrocomenzi pentru a automatiza executarea anumitor operațiuni și interfață grafică Integrarea utilizatorilor între diferitele produse software.

Limbi de programare declarative

Acestea includ funcționale și limbi logice Programare. Programarea funcțională este o modalitate de elaborare a programelor în care singura acțiune este o funcție de funcționare. Programarea funcțională nu utilizează memoria ca locație pentru stocarea datelor și, prin urmare, nu sunt utilizate variabile intermediare, alocări și cicluri. Conceptul cheie în limbile funcționale este o expresie. Programul scris în limba funcțională este o secvență de descriere a funcțiilor și a expresiilor. Expresia este calculată de complexul informativ la simplu. Toate expresiile sunt înregistrate sub formă de liste. Prima limbă a fost creată în 1959 a fost creată în 1959. Această limbă vă permite să procesați cantități mari de informații textuale. Programarea logică este programarea în ceea ce privește logica. În 1973 a fost creată limba de inteligență artificială Prolog (Prolog) (programarea în logică). Programul de prolog se bazează pe secvența faptelor și regulilor, apoi aprobarea pe care Prologul încearcă să o dovedească cu ajutorul regulilor. Limba însăși caută o soluție folosind metodele de căutare și comparare care sunt așezate în ea. Programe logice Nici o viteză mare nu diferă, deoarece procesul de execuție a acestora este redus la construirea lanțurilor directe și inverse de raționament cu o varietate de metode de căutare.

Privire de ansamblu asupra limbajelor de programare

Asamblare

Limbile de programare a calculatorului sunt împărțite în 2 grupuri principale:

1) limbi de nivel scăzut;

2) limbi de nivel înalt.

Limbile de nivel scăzut includ limbile de asamblare. Ei au primit numele lor în numele programului de sistem al asamblorului, care convertește programele sursă scrise în astfel de limbi direct la codurile comenzilor mașinilor. Părțile aici sunt operatori, iar rezultatul ansamblu al secvenței de comenzi de mașină Limbajul asamblor combină avantajele limbajului comenzilor mașinilor și unele caracteristici ale limbilor la nivel înalt. Asamblorul oferă posibilitatea de a aplica nume simbolice în programul sursă și elimină programatorul de la munca obositoare (inevitabilă atunci când programarea în limba comenzilor mașinilor) pe distribuția memoriei computerului pentru comenzi, variabile și constante.

Asamblarea vă permite să utilizați flexibil și pe deplin capacitățile tehnice ale computerului, precum și limba comenzilor mașinilor. Traducătorul sursă din asamblare este mai ușor decât un traducător necesar pentru un limbaj de programare la nivel înalt. La asamblare, puteți scrie cât mai eficient și timp pentru a executa programul, precum și programul în limba comenzilor mașinii. Această demnitate este absentă în limbi de nivel înalt. Această limbă este adesea folosită pentru a programa sistemul în timp real. procese tehnologice și echipamente, asigurând funcționarea de informații și complexe de măsurare. Astfel de sisteme au de obicei cerințe ridicate pentru volumul memoriei mașinii ocupate. Adesea limba de asamblare este completată cu mijloace de formare a unui macrocomand, fiecare fiind echivalentă cu un întreg grup de comenzi de mașini. O astfel de limbă se numește limba macrob-ului. Utilizarea blocurilor de "construcție" de mac și aduce limba asamblorului la limbajul de nivel înalt. Limba dependentă de mașini asamblate, adică reflectă caracteristicile arhitecturii unui anumit tip de calculator

Pascal.

Limba de programare Pascal a fost dezvoltată de profesorul Departamentului de Inginerie Computer al Institutului Federal al Tehnologiei Elvețiene Nikolas Virgin în 1968 ca o alternativă la limbile de programare existente și toate complicate, cum ar fi PL / 1, Algol, Fortran. Dezvoltarea intensivă a Pascal a condus la apariția în 1973, standardul său sub forma unui mesaj revizuit, iar numărul de traducători din această limbă în 1979 a depășit 80. La începutul anilor '80, Pascal și mai mult și-a întărit poziția cu apariția MS -Pracal și turbo traducători -pascal pentru PEVM. Din acest moment, Pascal devine una dintre cele mai importante și utilizate limbi de programare. Este esențial ca limba să fie mult peste scopul interesului profesional academic și restrâns și este utilizat în majoritatea universităților din țările foarte dezvoltate, nu numai ca un instrument de utilizator. Cea mai importantă caracteristică a Pascal este ideea încorporată a programării structurale. O altă caracteristică esențială este conceptul de structură de date ca unul dintre conceptele fundamentale.

Principalele motive pentru popularitatea Pascalului sunt după cum urmează:

Limba ușoară vă permite să o stăpâniți rapid și să creați programe complexe algoritmic.

Instrumentele dezvoltate pentru prezentarea structurilor de date oferă comoditate atât a informațiilor numerice, cât și simbolice și biților

Prezența tehnicilor speciale pentru crearea traducătorilor din Pascal și-a simplificat dezvoltarea și a contribuit la limbă larg răspândită

Optimizarea proprietăților traducătorilor din Pascal vă permit să creați programe eficiente. Acest lucru a servit ca unul dintre motivele pentru utilizare Pascal ca limbă de programare a limbii.

În limba Pascal, sunt implementate ideile de programare structurală, ceea ce face ca programul să fie vizual și oferă oportunități bune de dezvoltare și depanare

Angajatul Bell Labs Denis Ritchci a creat limba C în 1972 în timpul colaborării cu Ken Thompson, ca instrument de implementare a sistemului de operare UNIX, cu toate acestea, popularitatea acestei limbi a câștigat rapid cadrul unui anumit sistem de operare și sarcini specifice Programarea sistemului. În prezent, orice sistem instrumental și de operare nu poate fi considerat completă dacă compoziția sa nu include compilatorul de limbă C. Ritchee nu a inventat un SI pur și simplu din cap - prototipul a fost limba bi dezvoltată de Thompson. Limba de programare SI a fost dezvoltată ca instrument pentru practicieni. În conformitate cu acest scop, scopul principal al autorului a fost acela de a crea o limbă convenabilă și utilă în toate privințele.

Si este un sistem de programator de sistem și vă permite să urcați profund în cele mai subtile mecanisme de procesare a informațiilor pe un computer. Deși limba necesită un programator de mare disciplină, nu este strict în revendicările formale și permite formulări scurte.

C - Limba modernă. Acesta include acele modele de management care sunt recomandate de teoria și practica programării. Structura sa încurajează programatorul să utilizeze design descendent, programare structurală și module pas cu pas.

C - Limba puternică și flexibilă. Majoritatea sistemelor de operare UNIX, compilatoarelor și interpreților Fortran Limbi, Pascal, Lisp și Baisk sunt scrise tocmai cu ajutorul său.

C - Limba convenabilă. Este suficient structurată pentru a menține un stil de programare bun și, în același timp, nu este legată de restricții strânse. Într-un anumit sens, limbajul Si este cel mai universal, pentru că În plus față de setul de mijloace inerente limbilor moderne de programare (structural, modularitate, tipuri de date specifice), acesta include software-ul pentru programarea practic la nivelul asamblorului. Un set mare de operatori și mijloace necesită un programator prudență, precizie și o bună cunoaștere a limbii cu toate avantajele și dezavantajele IHO.

C ++ a apărut la începutul anilor '80. Creat de Stustrup Bierian cu scopul inițial de a se salva și prietenii lor de la programare pe Assembler, Si sau diverse alte limbi de nivel înalt.

Potrivit autorului limbii, diferența dintre ideologia Si și C ++ este aproximativ după cum urmează: Programul de pe C reflectă procesorul "Metoda de gândire", iar C ++ este o metodă de gândire de gândire. Răspunzând cerințelor de programare modernă, C ++ se concentrează asupra dezvoltării unor noi tipuri de date a celor mai relevante concepte ale zonei alese de cunoștințe și sarcini ale cererii. Clasa este conceptul cheie al C ++. O descriere de clasă conține o descriere a datelor necesare pentru a reprezenta obiecte de acest tip și un set de operații pentru a lucra cu obiecte similare.

Spre deosebire de structurile tradiționale C și Pascal, membrii de clasă nu sunt numai date, ci și funcții. Funcții - Membrii clasei au acces privilegiat la date în cadrul obiectelor din această clasă și oferă o interfață între aceste obiecte și restul programului. Cu o lucrare ulterioară, nu este absolut necesar să ne amintim structura internă a clasei și mecanismul de funcționare a caracteristicilor încorporate. În acest sens, clasa este similară cu mobilierul electric - puțini oameni știu despre dispozitivul său, dar toată lumea știe cum să o folosească.

C ++ Limba este un instrument programarea obiectelor, cele mai recente metode de proiectare și implementare a programelor, care în decada actual ar putea înlocui programarea procedurală tradițională. Scopul principal al creatorului limbii Dr. Biernn Strastard a fost echipat cu construcțiile C ++, permițând creșterea productivității programatilor și facilitarea procesului de mastering mare de produse software.

Abstractizarea, implementarea, moștenirea și polimorfismul sunt proprietățile necesare cu care are limba C ++, astfel încât aceasta nu este doar universală, precum și limba C, ci este limba obiectului. Fortran Fortran este o limbă largă distribuită, în special în rândul utilizatorilor care sunt angajați în modelarea numerică. Acest lucru se explică din mai multe motive:

Existența unor fonduri uriașe pentru programele aplicate pe cetate acumulate de-a lungul anilor, precum și prezența număr mare Programatorii care utilizează în mod eficient această limbă;

Prezența unor traducători eficienți Morthrane pe toate tipurile de calculator și versiunea pentru diferite mașini este destul de standardizată, iar transferul de programe de la mașină la mașină nu este de obicei mare;

În orientarea inițială a Fortran asupra aplicațiilor fizice și matematice și tehnice; În special, a manifestat că pentru o lungă perioadă de timp a rămas singura limbă cu un tip integrat integrat încorporat și un set mare de funcții încorporate pentru a lucra cu astfel de variabile.

În perioada trecută, sa format o nouă metodologie și o filosofie de programare. De la începutul anilor '70, Ford a fost criticat meritat. În 1977, a fost adoptat un nou standard al Fortran-77. A durat mult timp pentru a crea un nou standard, dar acum este deja posibil să se presupună că dezvoltarea sa este finalizată și noul standard Fortran-90 a început să intre în practica utilizatorilor uRtrani. Numai pe mașinile IBM PC există mai mulți traducători, de exemplu, Watfor, Lap-Fortran etc. Dar cea mai mare distribuție pe mașinile de acest tip a primit diferite versiuni ale traducătorului Fortran-77. Traducătorul MS-Fortran 5.0 a fost lansat în 1990, aproape pe deplin respectă standardul FORTRAN-90. Cele mai mari programe științifice și tehnice de aplicații sunt scrise pe Fortran, deoarece are tolerabilitate și stabilitate, precum și datorită prezenței funcțiilor matematice și trigonometrice încorporate. O parte suplimentară și integrală a oricărui program de aplicație din Fortran este o bibliotecă grafică extinsă, care permite utilizarea diferitelor date și imagini grafice.

Limba a fost creată în principal în 1975 - 1980 ca rezultat al unui mare proiect întreprins de Departamentul de Apărare al SUA pentru a dezvolta un singur limbaj de programare pentru așa-numitele sisteme încorporate (adică sisteme de control ale complexelor automate care funcționează în timp real) . În primul rând, au fost destinate sisteme de control la fața locului pentru gestionarea obiectelor militare (nave, avioane, rezervoare, rachete, cochilii etc.). Prin urmare, deciziile luate de autori nu iau în considerare universale. Acestea trebuie să fie percepute în contextul caracteristicilor zonei selectate. Limbajul de adaptare a apărut ca urmare a unei concurențe internaționale de proiecte lingvistice organizate în 1978-1979. Participanții ar fi trebuit să fie satisfăcuți destul de dur, proiectați sub auspiciile Departamentului Apărării al SUA cu cerințele. Interesant, toate limbile care au coborât la ultimele runde ale acestui concurs au fost bazate pe Pascal. În acest sens, iadul poate fi caracterizat anterior ca Pascal, dezvoltat, ținând cont de cele cinci cerințe de bază enumerate mai sus. În același timp, autorii au mers în principal pe calea expansiunii Pascal cu elemente noi. Ca rezultat, sa dovedit un limbaj semnificativ mai complex.

Kobol.

Cobol este o limbă relativ veche, concepută în primul rând pentru cercetarea în sfera economică. Limba vă permite să lucrați eficient cu un număr mare de date, este saturată cu o varietate de capabilități de căutare, sortare și distribuție. Despre programele de cobol cu \u200b\u200becran lat din limba engleză, Ei spun că sunt de înțeles chiar și celor care nu dețin Cobol, deoarece textele din acest limbaj de programare nu au nevoie de comentarii speciale. Astfel de programe sunt numite auto-documentare. Alte avantaje ale COBOL includ, de obicei, structura sa. Sunt proiectate compilatoare destul de puternice din această limbă calculatoare personale. Unele dintre ele sunt atât de eficiente încât programul Debugged pe un computer personal este ușor de transferat la computere mari.

Afișarea minusurilor nu trebuie amintite că numai cele mai simple calcule algebrice pot fi programate pe COBOL. Pentru calculele inginerie, această limbă nu este potrivită. Un alt motiv, care, într-o oarecare măsură, restrânge dezvoltarea limbii, este prezența unui comitet industrial special creat în Statele Unite, care produce standarde, în conformitate cu Comisia Guvernului. Așa cum se întâmplă întotdeauna în astfel de cazuri, firmele implicate în dezvoltarea de software nu se grăbesc să-și personalizeze sepurile la cerințele stricte ale Comisiei, nu există o concurență de versiuni și, în cele din urmă, pierde diseminarea limbii

PL / 1 a fost dezvoltat în 1964-1965 de IBM. PL / 1 se referă la numărul de limbi universale, adică vă permite să rezolvați probleme din diferite domenii: calcule numerice, procesarea textului, sarcinile economice etc. Prin capabilitățile sale, aceasta se suprapune astfel de limbi ca Fortran, Algol-60 ( Creat pentru calcule numerice), COBOL (pentru sarcini economice), deși, din cauza unor motive, aceste limbi ale PL / 1 nu au putut fi suprimate.

PL / 1 conține toate modelele de bază caracteristice așa-numitelor limbi la nivel înalt, precum și o serie de mijloace specifice, convenabil pentru programarea practică. Limba seamănă cu un designer cu un număr mare de piese - utilizatorul este suficient pentru a stăpâni numai acele părți ale limbii care sunt practic necesare pentru aceasta. Operatorii săi sunt mai degrabă tancuri, care de multe ori vă permit să obțineți o înregistrare a programului mai compactă decât în \u200b\u200balte limbi. Un programator PL / 1 cunoștințe dispare orice altă limbă a aceleiași clase sau clasa apropiată.

În același timp, PL / 1 are o serie de deficiențe care împiedică studiul și utilizarea limbii. Cele principale sunt astfel. În primul rând, există multe mijloace duplicate ale acestora greu de reținut, nu este clar că atunci când se aplică, în plus, reduce atât viteza de difuzare, cât și viteza executării programului. În al doilea rând, programele nu sunt în întregime independente de mașini.

Modul

Putem presupune că istoria limbajului începe în 1980, când Niklaus Wirth, unul dintre specialiștii teoriilor de informații remarcabile, cunoscut pentru majoritatea specialiștilor tehnician de calculator, în special ca Creatorul Pascal, a publicat o descriere a noului limbaj de programare numit modul. Spre deosebire de Pascal, care a fost pe limba de informare pentru programarea de învățare, modulul de la început a fost o limbă pentru profesioniști programatori de sistemContinuând cele mai bune tradiții ale predecesorului său și le îmbogățesc cu noi idei care îndeplinesc astfel de cerințe pentru programa de programare ca structuralitate, modularitate și capacitatea de a se extinde. La fel ca multe alte limbi de programare, modulul a fost supus evoluției, în timpul căruia numele său inițial a fost redone în numele modulului-2. În același timp, cu dezvoltarea limbii modulului, s-au creat noi compilatoare pentru el, cu toate acestea, nici unul dintre ele nu ar putea concura cu cea mai bună realizare a limbajelor Pascal și Si, de exemplu, dezvoltate de Borland. În acest domeniu de tranziție, cea mai bună perioadă a fost considerată a fi implementată de Logitech, care, în caracteristicile lor, pierd turbo Pascal și Turbo Si. Doar în 1988, după apariția sistemului de viteză maxim pe piața americană, Modulul-2 a făcut un loc demnă între limbile procedurale destinate programării sistemului. Încurajarea popularității sistemului de viteză maxim a contribuit mai mulți factori: convenabil și, în plus, mediul operațional este ușor de schimbat la cererea utilizatorilor, compilatorul rapid și editorul selectiv al conexiunilor. Dar cel mai semnificativ sa dovedit a fi programe create Diferite în viteză mare și ocupat nu prea mult loc în memorie.

Beysik.

Basic - Codul de instruire Simbolic al Best Beginner - "Codul Simbolic Universal de instrucțiuni pentru începători"). Descendentul direct al Fortran și încă cel mai popular limbaj de programare pentru computerele personale. Becisik a apărut în 1963 (numit autorul ar fi dificil, dar meritul principal în apariția lui, fără îndoială, aparține americanilor John Kemen și Thomas Kurtu). Ca orice beneficii, simplitatea lui Beysik sa întors, în special în versiunile anterioare ale dificultăților de structurare; În plus, Baisik nu a permis recursion - o tehnică interesantă care vă permite să faceți eficient și în același timp programe scurte.

Au fost dezvoltate un compilat puternic de baseball, care asigură nu numai vocabularul bogat și viteza mare, ci și posibilitatea de programare structurală. Potrivit unor programatori, cele mai interesante versiuni sunt Gwbasic, Turbo-Basic și Quick Basic.

La un moment dat, apariția de bază rapidă a marcat nașterea unei a doua generații de sisteme de programare în limba Baysik. Aceasta a oferit posibilitatea de programare modulară și procedurală, crearea de biblioteci, compilarea programelor gata făcute etc., care i-au adus la nivelul unor astfel de limbi clasice de programare, cum ar fi Si, Pascal, Fortran, etc, din cauza lipsei de lipsă Din standardul oficial al limbii Baysik, implementarea sa rapidă de bază a devenit un standard real. Liderii necondiționați printre diferitele versiuni ale Baysik au fost rapide 4,5 și PD-urile 7.1 din Microsoft, care au apărut la sfârșitul anilor '80.

Lisp.

Limba LISP a fost propusă de J. McCarthy în muncă în 1960 și sa axat pe dezvoltarea de programe de rezolvare a problemelor de natură non-numerică. Numele englez al acestei limbi - LISP este abrevierea expresiei de prelucrare a listei (prelucrarea listelor) și accentuează bine zona principală a utilizării sale. Conceptul de "listă" sa dovedit a fi foarte capabil. În formă de liste este convenabil să reprezinte expresii algebrice, grafice, elemente ale grupurilor finite, seturi, reguli de ieșire și multe alte obiecte complexe. Listele sunt cea mai flexibilă formă de prezentare a informațiilor în memoria computerelor. Nu este surprinzător faptul că există o limbă convenabilă special concepută pentru a gestiona liste, câștigat rapid popularitate.

După apariția lui Lisp, diferiți autori au propus o serie de alte probleme orientate în limba algoritmică în domeniul inteligenței artificiale, printre care agentul poate fi remarcat, snobol, reflux, prolog. Cu toate acestea, acest lucru nu a împiedicat că LUP să rămână limba cea mai populară pentru a rezolva astfel de sarcini. În timpul istoriei de aproape patruzeci de ani a existenței sale, au apărut o serie de dialecte ale acestei limbi: Common Lisp, Mac Lisp, Inter Lisp, standard Lisp, etc. Diferențele dintre ele nu poartă o natură fundamentală și sunt în principal reduse la o ușoară set diferit de funcții încorporate și o anumită diferență sub formă de programe de înregistrare. Prin urmare, un programator care a învățat să lucreze pe unul dintre ei poate stăpâni cu ușurință și oricare altul. Marele avantaj al LISP este orientarea sa funcțională, adică programarea se efectuează folosind funcții. Mai mult, funcția este înțeleasă de regulă, comparând elementele unei clase, elementele corespunzătoare ale unei alte clase. Procesul de comparație însăși nu afectează funcționarea programului, numai rezultatul este important - valoarea funcției. Acest lucru vă permite să scrieți și să depubpăsați cu ușurință complexe de software. Claritatea programelor, o distincție clară între funcțiile lor, absența efectelor secundare caerz atunci când sunt executate cerințe obligatorii Programarea unor astfel de sarcini complexe logic, care sunt sarcini de inteligență artificială. Disciplina de programare devine deosebit de importantă atunci când nici o persoană nu lucrează la program, ci un întreg grup de programatori.

Limba de programare LISP este destinată în primul rând pentru procesare. informații simbolice. Prin urmare, este natural că, în lumea LISP, numărul este jucat departe de un rol major. Principalele tipuri de date din Lumy sunt numite "atom" și "perechea punctului".

Prolog

Limba de programare logică este destinată prezentării și utilizării cunoștințelor despre un anumit domeniu. Programele din această limbă constau într-un anumit set de relații, iar implementarea acesteia este redusă la încheierea unei noi relații bazate pe cele specificate. Prologul implementează o abordare declarativă, în care este suficientă descrierea sarcinii folosind reguli și declarații privind obiectele specificate. Dacă această descriere este destul de precisă, atunci calculatorul poate găsi independent soluția dorită.

Obiect Pal.

Obiectul Pal este un limbaj de programare puternic. Obiectul Pal este un obiect orientat, gestionat de evenimente, un limbaj de programare vizuală. La nivelul inițial al funcționalității obiectului PAL, puteți efectua operațiuni de date, creați meniuri speciale, precum și gestionarea sesiunii de introducere a datelor. Evenimente în obiect Pal generează comenzi care simulează efectul de utilizare a paradoxului în modul interactiv. Este posibilă automatizarea sarcinilor frecvente, precum și asupra tabelelor, formelor și rapoartelor de acțiune care nu erau disponibile în muncă interactivă. Obiectul Pal oferă, de asemenea, toate mijloacele de programare completă mediul Windows.. Puteți utiliza Obiect Pal pentru a crea sisteme completate care implementează un sistem de meniu special, sistem de ajutor, precum și tot felul de verificări de date. În Object Pal, vă puteți salva evoluțiile într-o bibliotecă dinamic componentă, accesul la care va avea mai multe forme. În plus, puteți stabili comunicarea cu alte biblioteci dinamice care conțin programul scris în astfel de limbi precum Si, C ++ sau Pascal.

Obiectul Pal poate fi utilizat ca instrument pentru crearea de programe offline. Puteți scrie aplicația Windows completă și o puteți rula sub paradox.

Obiectul PAL acceptă mecanismul dinamic de schimb de date ca atât clientul, cât și pe server. În plus, Object Pal sprijină mecanismul de lucru cu documente compozite ca client. În plus față de ceea ce sa spus, este posibil să se includă multimedia în aplicația dvs., furnizând aplicația efectuată prin efecte de sunet și animație.

Creat de BBSE, implementarea limbajului DBEE este o orientare a obiectului hibrid de succes și metode tradiționale de programare. A permis să creeze sisteme utilizând proiectarea obiectelor și să utilizeze recepții convenționale pentru procesarea înregistrărilor. Marele realizare a companiei B Bohr a fost că este foarte bine combinat tehnicile de programare și de programare procedurală. Prima versiune pentru Windows a dat utilizatorului cel mai puternic instrument obiect din piața software-ului bazei de date. Vă permite să creați noi clase de obiecte care posedă proprietățile moștenirii, încapsulării și polimorfismului. De asemenea, vă permite să programați aceste obiecte folosind comenzi DBASE tradiționale, ideal pentru gestionarea bazelor de date simple de masă. Toate acestea oferă un avantaj indiscutabil - fără o mare dificultate de tranziție la tehnicile de programare a obiectelor, tranziția este atât de complexă, de exemplu, ca în paradox DBMS.

Limba Java a apărut ca parte a proiectului pentru a crea software avansat (software) pentru diverse aparate de uz casnic. Implementarea proiectului a fost lansată în C ++, dar în curând a apărut o serie de probleme, cele mai bune mijloace de combatere a instrumentului în sine - limbaj de programare. A devenit evident că este nevoie de un limbaj de programare independent de platformă, care vă permite să creați programe care nu trebuie să compileze separat pentru fiecare arhitectură și se poate utiliza pe diferite procesoare în diferite sisteme de operare. Limbajul Java a fost obligat să creeze produse interactive pentru Internet. De fapt, majoritatea soluțiilor arhitecturale adoptate la crearea Java au fost dictate de dorința de a furniza sintaxă similară cu C și C ++. Java folosește acorduri aproape identice pentru a declara variabile, parametrii, operatorii și pentru a controla fluxul de execuție a codului. Java adaugă toate caracteristicile bune C ++.

Trei elemente cheie United în tehnologia Java

Java oferă o utilizare largă a applet-urilor (applets) - aplicații de rețea activă activă, fiabilă, dinamică, fără platformă, încorporate în pagină web. Appletele Java pot fi configurate și distribuite consumatorilor cu aceeași ușurință ca orice documente HTML.

Java eliberează puterea dezvoltării aplicațiilor orientate pe obiecte, combinând o sintaxă simplă și familiară cu un mediu de dezvoltare fiabil și convenabil. Acest lucru permite unui cerc larg de programatori să creeze rapid programe noi și noi aplicații.

Java oferă un programator un set bogat de clase de obiecte pentru o abstracție clară a multor funcții de sistem utilizate atunci când lucrează cu Windows, Network și pentru I / O. Trasmul cheie al acestor clase este acela că oferă crearea unei platforme independente de abstractizare pentru o gamă largă de interfețe de sistem.

Limbi de programare pentru retele de calculatoare

Limbi de programare pentru rețelele de calculatoare sunt interpretate. Interpreții pentru aceștia sunt distribuiți gratuit, iar programele în sine se află în textele sursă. Astfel de limbi sunt numite scripturi - limbi.

Perl este o limbă interpretată creată de programul de zid de lard pentru a gestiona texte și fișiere mari și a decriptat ca o extracție practică și limbă de raport (limba pentru extragerea și raportarea practică practică). Folosind Perl, de exemplu, puteți crea un script care deschide unul sau mai multe fișiere, procesează informații și înregistrează rezultatele.

Perl este o limbă adaptată pentru procesarea fișierelor text arbitrare, extragerea informațiilor necesare de la acestea și emiterea de mesaje. Perl este, de asemenea, convenabil pentru scrierea diferitelor programe de sistem. Această limbă este ușor de utilizat, eficientă, dar este greu de spus despre el că este elegant și compact. Sintaxa expresiilor Perl este aproape de sintaxa C. Recursiunea poate fi o adâncime arbitrară. Deși Perl este adaptat pentru a scana fișiere text, poate procesa și date binare. Perl vă permite să utilizați expresii regulate, să creați obiecte, să introduceți o bucată de cod într-o perl către software-ul SI sau C ++ și permite, de asemenea, accesul la baze de date, inclusiv Oracle.

Cu invenția, World Wide Web, Perl sa dovedit a fi un instrument excelent pentru interacțiunea cu serverele web prin interfața comună Gateway (CGI) - o interfață de interacțiune comună. Perl Comenzi pot obține cu ușurință date dintr-o formă HTML sau altă sursă și pot efectua orice acțiune cu acestea.

Limba PHP. (1995-1997) are acces la accesul la baza de date și este utilizat de creatorii site-urilor dinamice din întreaga lume.

Limba Tcl / tk. (Sfârșitul anilor 1980) constă din comenzi puternice concepute pentru a lucra cu obiecte abstracte non-tip și vă permite să creați programe cu o interfață grafică.

Limba VRML. (1994) Creat pentru a organiza interfețe virtuale tridimensionale pe Internet.

Limba Xml.. Din 1996, lucrează la crearea unui limbaj universal al structurii documentului. Poate deveni un substitut pentru HTML.

Ieșire

Resurse utile

Revizuirea Aizili.

Unde este raportul?

Examinați Ranitka.

Re: Unde este raportul?
Totul va fi: -D

Feedback Shamagulova Elite

Revizuiți Mishina Alexander.

Mare raport. Am învățat multe despre limbile de programare.

Examinați Morozova Alexander.

Bineînțeles că aș dori să văd un raport sau cel puțin o prezentare sub orice formă.

Înainte de a dori să studiați un limbaj de programare, trebuie să știți puțin despre istoria lor și unde se aplică.

Vă imaginați revizuire scurtă 25 de limbi de programare bine cunoscute. Pornind de la cele mai renumite la mai puțin populare. Articolul este făcut pentru nou-veniți în domeniul programării. Puteți citi despre fiecare limbă și puteți alege cel pe care îl doriți să explorați mai mult.

Înainte de a începe să învățați limbi de programare, vă recomandăm să explorați cursul software-ului.

1. JavaScript.

Prototype orientat spre limbajul de programare pitoresc. JavaScript a fost creat inițial pentru a face paginile web "în viață". În browser, ele sunt conectate direct la HTML și, de îndată ce pagina este încărcată - imediat executată.

Când a fost creată limba JavaScript, el a avut inițial un alt nume: "livrare Livescript". Dar apoi limba Java a fost foarte populară, iar comercianții au decis că un nume similar ar face o nouă limbă mai populară.

A fost planificată că JavaScript ar fi un fel de "frate mai mic" Java. Cu toate acestea, povestea ordonată în felul său, JavaScript a crescut puternic, iar acum este o limbă complet independentă, cu specificațiile și Java nu are nimic de-a face.

2. Java.


Limba de programare orientată strict orientată spre obiect. Aplicațiile Java sunt de obicei difuzate la un cod special de octet, astfel încât să poată funcționa pe orice arhitectură de calculator utilizând o mașină java virtuală.

Avantajul acestei metode de execuție a programelor este independența completă a codului byte din sistemul de operare și echipament, care vă permite să efectuați aplicații Java pe orice dispozitiv pentru care există o mașină virtuală corespunzătoare. O altă caracteristică importantă a tehnologiei Java este un sistem de securitate flexibil, în care execuția programului este monitorizat pe deplin de o mașină virtuală.

Inițial, limba a fost numită stejar ("stejar") a fost dezvoltată de James Gosling pentru programarea gospodăriei dispozitive electronice. Ulterior, a fost redenumit Java și a început să fie folosit pentru a scrie aplicații client și software de server.

3. PHP.


Este un limbaj general interpret general, cu o sursă deschisă (limbajul scripting). PHP a fost creată special pentru dezvoltarea web și codul pe acesta poate fi implementat direct în codul HTML. Sintaxa limbii provine din C, Java și Perl și este ușor de explorat.

Scopul principal al PHP este de a oferi dezvoltatorilor web posibilitatea de a crea rapid pagini web generate dinamic, cu toate acestea, domeniul aplicatii PHP nu se limiteaza la aceasta.

4. Python.

Limba de programare cu scop general la nivel înalt sa axat pe îmbunătățirea productivității dezvoltatorului, lizibilitatea codului și dezvoltarea aplicațiilor web. Sintaxa de kernel Python este minimizată. Codul din Python este organizat în funcții și clase care pot fi combinate în module.

5. C #


Limba de programare orientată spre obiect. Dezvoltat în 1998-2001 de către un grup de ingineri sub conducerea lui Anders Halesberg în Microsoft ca o limbă pentru dezvoltarea aplicațiilor pentru platforma Framework Microsoft .NET. C # se referă la familia de limbi cu o sintaxă similară C, din care sintaxa sa este cea mai apropiată de C ++ și Java.

Limba are tastarea statică, susține polimorfismul, operatorii de supraîncărcare, delegați, atribute, evenimente, proprietăți, tipuri și metode generalizate, iteratori, funcții anonime cu suport de închidere, linq, excepții, comentarii în format XML.

6. C ++.


Compilate, scrise în mod static de programare a scopului general. Este una dintre cele mai frecvente limbi din lume. Google Chrome., Mozilla Firefox, linia de produs Winamp și Adobe au fost proiectate cu C ++. În plus, unele sisteme moderne și sisteme de operare au fost dezvoltate pe C ++ datorită procesării rapide și a compilării.

7. Ruby.


Limba de programare simplă și lizibilă axată pe dezvoltarea aplicațiilor web. Proiectat de Yukihiro Matsumto în 1995. Limba are independent de sistemul de operare prin implementarea multithreading, strictă ziuirea dinamică, colector de gunoi.

Scopul principal Ruby este crearea de programe simple și în același timp de programe de înțeles, unde viteza programului nu este importantă, ci un mic timp de dezvoltare, mai clar și simplitate de sintaxă. Limba urmează principiul "cel mai mic surpriză": programul trebuie să se comporte așa cum se așteaptă programatorul.

8. CSS.


Cascadă foi de stil (mese de stil cascadă) Limba de descriere formală vedere externă Un document scris folosind limba de marcare.
Este folosit în cea mai mare parte ca un instrument de descriere, proiectarea apariției paginilor web scrise utilizând limbile HTML și XHTML markup, dar poate fi aplicată și la orice documente XML.

9. C.


Compilați limbajul de programare cu scop general scris static. Limba C a fost proiectată de Dennis Ritchch în 1972 în Bell Labs. Este predecesorul unor astfel de limbi de programare ca C ++, Java, C #, JavaScript și Perl. Din acest motiv, studiul acestei limbi duce la înțelegerea și alte limbi. Limba C este utilizată pentru a dezvolta aplicații la nivel scăzut, deoarece este considerată cea mai apropiată de hardware.

10. Obiectiv-C


Compilați limba de programare orientată spre obiect utilizat de Apple Corporation, construită pe baza limbii mici și a paradigmei. Limba Obiectiv-C este o bruscăre a limbii Si, astfel încât codul C este pe deplin înțeles de compilatorul obiectiv-C. Limba este utilizată în principal pentru Mac OS X (cacao) și GnUstep - implementări ale unei interfețe Openstep obiect orientate spre obiect. De asemenea, limba este utilizată pentru iOS (touch de cacao).

11. Shell.

Nu este atât de mult o limbă ca interpret de comandă (limbă de comandă). Scripturile sale sunt utilizate pentru automatizarea actualizărilor software. Conține modele standard pentru cicluri, ramificare, caracteristici ale funcțiilor. Familia sistemelor de operare compatibile cu OIX OS, limba Shell este utilizată ca limbă standard de gestionare a sarcinilor.

12. R.


Limba de programare pentru prelucrarea datelor statistice și lucrul cu grafică, precum și un software open source Computing ca parte a proiectului GNU. R este utilizat pe scară largă ca software de analiză a datelor statistice și a devenit de fapt un standard pentru programele statistice. Interfața liniei de comandă este utilizată în R.

13. Perl.


Limba de programare generală de nivel general interpretabilă la nivel înalt. Numele limbii este o abreviere care este decriptat ca o extracție practică și un limbaj de raportare - "Limba practică pentru extragerea datelor și elaborarea rapoartelor". Caracteristica principală a limbii este oportunitățile bogate pentru a lucra cu text, inclusiv lucrul cu expresii regulate, construite în sintaxă. În prezent, este folosit pentru a efectua o gamă largă de sarcini, inclusiv administrarea sistemului, dezvoltarea web, programare de rețea, jocuri, bioinformatice, dezvoltarea interfețelor de utilizator grafică.

14. SCALA.


Limba de programare multipadidică proiectată de software-ul scurt și de tip pentru crearea unui software de componente ușor și rapid, combinând programarea funcțională și orientată spre obiect. SCALA - Programele sunt în mare parte similare cu programele Java și pot interacționa liber cu codul Java.

15. Du-te.


Compilați limba de programare multi-filetată dezvoltată de Google. Limba Go a fost dezvoltată ca un sistem de programare a sistemului pentru a crea programe extrem de eficiente care operează pe sisteme distribuite moderne și procesoare multi-core. Acesta poate fi considerat ca o încercare de a crea o substituție a limbii Si. Atunci când se dezvoltă, a fost acordată o atenție deosebită asigurării unei compilații extrem de eficiente. Programele Go sunt compilate în codul obiect și nu necesită executarea unei mașini virtuale.

16. SQL.

Limba de interogări structurate. Limba de programare formală non-concentrată utilizată pentru a crea, modifica și gestiona datele într-o bază de date relațională arbitrară, gestionată de sistemul de gestionare a bazelor de date corespunzător. SQL este în primul rând o limbă logică informativă concepută pentru a descrie, modifica și extrage datele stocate în baze de date relaționale. Fiecare ofertă SQL este fie o solicitare de date din baza de date, fie accesul la baza de date, ceea ce duce la o modificare a datelor din baza de date.

17. Haskell.


Limba de programare generală standardizată standardizată. Este una dintre cele mai frecvente limbi de programare cu limbi de calcul amânate. Trăsătură distinctivă Limba este o atitudine serioasă față de tastarea. Haskell limba excelentă pentru învățare și pentru experimentele cu tipuri complexe de date funcționale.

18. Swift.


Deschideți Limba de programare cu scop general multiparadigal compilat. Creat de Apple în primul rând pentru IOS și OS X. Dezvoltatorii Swift funcționează cu cadre de cacao și cacao și compatibile cu codul de bază Apple, scrise pe Obiectiv-C. Swift a crezut cât de ușor citirea și rezistența la erorile programatorului, mai degrabă decât cele precedente anterior de Obiectiv-C. Swift a împrumutat destul de mult de la obiectiv-c, dar nu este determinată de semne, ci tipuri de variabile pe care le procesează compilatorul. Pentru un principiu similar, multe limbi de scripting funcționează.

19. MATLAB.


Limba de programare interpretabilă de nivel înalt, inclusiv structurile de date bazate pe matrice, o gamă largă de funcții, un mediu de dezvoltare integrat, caracteristici orientate pe obiecte și interfețe la programele scrise în alte limbi de programare. Programele scrise pe MATLAB sunt două tipuri - funcții și scripturi. Funcțiile au argumente de intrare și ieșire, precum și propriul spațiu de lucru pentru stocarea rezultatelor intermediare ale calculelor și variabilelor. Scripturile utilizează, de asemenea, spațiul de lucru general. Atât scripturile, cât și funcțiile sunt stocate ca fișiere text și sunt compilate în codul mașinii dinamic dinamic.

20. Visual Basic


Limba de programare, precum și un mediu integrat de dezvoltare software dezvoltat de Microsoft. Limba de bază vizuală moștenită spiritul, stilul și sintaxa strămoșului său - limba de bazăcare are o mulțime de dialecte. În același timp, vizual Basic combină procedurile și elementele limbajelor de programare orientate spre obiecte și orientate spre componente.

Visual Basic este, de asemenea bun la un instrument Aplicații de bază de date de dezvoltare rapidă pentru sistemele de operare Microsoft Windows. Multe componente gata furnizate cu mediul sunt concepute pentru a ajuta programatorul să înceapă imediat să dezvolte logica de afaceri a aplicației, fără a distrage atenția la scrierea codului de pornire a programului.

21. Delphi.


Limba de programare imperativă, structurată, orientată pe obiecte, cu variabile stricte de tipare statică. Domeniul principal de utilizare este scrisul software-ului aplicat.

Astăzi, împreună cu sprijinul software-ului Windows de 32 și 64 de biți, implementat capacitatea de a crea aplicații pentru Apple Mac OS X, precum și pentru Google Android (executat direct pe procesorul ARM).

22. Groovy.


Limba de programare orientată pe obiecte, proiectată pentru platforma Java, ca o adăugare la limba Java cu capabilități Python, Ruby și SmallTalk. Groovy utilizează o sintaxă asemănătoare Java cu o compilație dinamică în codul octetului JVM și operează direct cu un alt cod Java și biblioteci. Limba poate fi utilizată în orice proiect Java sau ca un limbaj de scripting.

23. Visual Basic .NET


Limba de programare orientată pe obiecte, care poate fi văzută ca o altă rundă de evoluție a Visual Basic, implementată pe platforma Microsoft. .NET. Vb.net nu are compatibilitate înapoi cu mai mult versiunea timpurie (Visual Basic 6.0). Dezvoltarea proiectelor de versiuni vechi (* .VBP) este posibilă numai după conversia preliminară în formatul Vb.net cu un master special (vrăjitor de migrare); Cu toate acestea, după conversie, este necesară rafinamentul manual esențial al textelor.

24. D.

Limba de programare compatibilă multipadigală creată de Walter luminos de la Marte digitale. Inițial, D a fost conceput ca o reengineering C ++, în ciuda efectului semnificativ al C ++, nu este opțiunea sa. De asemenea, limbajul cu experiență în limbile de programare Python, Ruby, C #, Jaffel, Eiffel.

25. Asamblarea.


Limba orientată spre mașină orientată spre mașină cu comenzi, nu întotdeauna comenzi de mașină, care pot oferi caracteristici suplimentare cum ar fi macrosman; Autocode, limbi avansate de programare la nivel înalt, cum ar fi expresii, macro-uri, mijloace de furnizare a modularității software.

Limba de asamblare - Sistemul de desemnare folosit pentru a se supune formei citite de programe înregistrate în codul mașinii. Limba de asamblare permite programatorului să utilizeze codurile mnemonice alfabetice ale operațiunilor, la discreția sa, să aloce nume simbolice cu computere cu calculatoare și memorie, precum și scheme de adresare ușor de utilizat. În plus, vă permite să utilizați sisteme de numerotare diferite pentru a reprezenta constante numerice și face posibilă marcarea șirurilor programului cu etichete cu nume simbolice, astfel încât să le puteți contacta.

Nu am luat toate limbile. Ele nu sunt atât de mult în cererea de programatori profesioniști. Sarcina mea este finalizată, acum puteți alege o limbă potrivită și cuceriți-o. Mult noroc pentru tine în eforturile tale.



Ți-a plăcut articolul? Împărtășește-l