Acasă - Smart TV
Cine a inventat primul limbaj de programare. Primul limbaj de programare

Nu-ți fie frică de închisoare, nu-ți fie frică de scrip,
Nu vă fie frică de ciumă și foamete,
Și singurul lucru de care ar trebui să-ți fie frică este
Cine va spune: „Știu cum să o fac!”
(A. Galich)

Să facem acest lucru clar și scurt: răspunsul corect la întrebarea „ce limbaj de programare ar trebui să aleg mai întâi?” nu există în natură. Chiar și un răspuns al clasei „unul dintre acești trei”. Nu există nici acum, în momentul specific în timp în care scriu asta, 10 aprilie 2017, ora 21:38 ora Kievului - dar este și mai puțin sens să încerc să răspund la această întrebare, căutând o lună, șase luni sau cu un an înainte.

Ceea ce există sunt mai multe întrebările potriviteîntrebări care sunt utile să ți le pui. Aceasta va fi prima ta sarcină de testare pentru intrarea în profesie: vrei să răspunzi la aceste întrebări și, în general, să te gândești și să cercetezi domeniul înainte de a lua o decizie?

Dacă da, vino după mine.

Câteva avertismente

În primul rând, o singură limbă nu este suficientă. Chiar și în primul an de studiu. Cel puțin mai multe limbi „specializate” vor fi în continuare necesare (HTML, CSS, SQL, YAML, JSON, XML, Markdown - cel puțin exemple de diferite sintaxele, care aproape sigur va trebui citit, și cu mare probabilitate - scris). Dar nu numai atât. Un programator non-JS va trebui aproape sigur să citească un pic de JS; Programator JS - verifica implementarea algoritmului descris in Python; pentru ca un programator de sistem să se ocupe de codul de rahat al altcuiva într-un limbaj de scripting.

Și pe drumul către nivelul „de mijloc”, va trebui să stăpânești o jumătate de duzină dintre ele. Și pentru a deveni un adevărat profesionist, trebuie să înțelegi paradigmele tuturor tipurilor de gunoaie fantastice.

În al doilea rând, Este puțin probabil să scrii într-o singură limbă toată viața.Și nici măcar destul de mult. Poate că nici măcar nu vei fi aici o lună. La primul meu loc de muncă în 2003, am fost angajat ca algoritmist C++, dar am susținut puțin un site web în PHP și am adăugat, de asemenea, o interfață bibliotecii noastre în Excel VBA. (se infiora). Și nimic nu este normal, ceea ce pur și simplu nu se întâmplă cu juniori.

Dar nu numai asta - limba „principală” din biroul tău preferat se va schimba, sau un alt angajator te va angaja pe tema ta preferată, curentele de aer ale startup-ului sau culturii întreprinderii se vor schimba - și WHAM - nu-ți mai amintești structurile atât de atent aleasă „limbă primară”.

Prin urmare, în general, nu ar trebui să tratați această alegere prea mult serios, ca și alegerea unei soții sau a unei case (pot fi și schimbate - dar totuși puțin mai dificil). Să începi, să încerci totul și să-ți găsești propria strategie este o strategie mult mai semnificativă decât să petreci câteva săptămâni/luni/ani analizând „de unde să începi”.

În al treilea rând, și cel mai important (și urmează din primele două) - adesea nu este „tu alegi limba”, ci limba te alege pe tine. Merită să fii cu adevărat interesat de ceea ce faci, să-l alegi ca o parte importantă a vieții tale - și vorbesc în mod special cu astfel de oameni, nu cu cei care speră să „lucreze la program part-time sâmbăta” (nimic nu poate salvați-le) - deci, merită să faceți această alegere, iar apoi toate sfaturile despre „ce să alegeți” vor fi irelevante. O sarcină interesantă sau un angajator promițător va apărea de la sine, limba în care nu o puteți face cool va cădea de la sine, dar alta va crește. Doar stați pe fază.

Atenție, întrebările potrivite!

Și totuși, pentru a începe de undeva, o fată/băiat se gândește la viață (adică să aleagă ce limbaj de programare să învețe pentru început), s-ar putea să vă întrebați asta:

De ce ai de gând să studiezi? O întrebare foarte importantă pe care să ți-o pui mai întâi sincer. Obțineți un instrument suplimentar pentru profesia dvs. principală (de exemplu, microbiologie sau contabilitate)? Te distrezi in timpul liber? Ajutați un copil la școală?... Ei bine, la mkdev presupunem implicit că veți lucra ca programator (deși vom fi bucuroși să predăm un microbiolog - știați că Ruby este teribil de popular la ei?) . Dar: ești deja ferm convins că vrei să găsești cât mai repede o profesie în IT sau tocmai te-ai hotărât să încerci, este pentru tine? În al doilea caz, ar putea merita să încerci o duzină de limbi și abordări pentru a înțelege ce îți place - sau nimic, este în regulă și asta!

Intrebare legata: Cât timp ai? Fără un termen limită clar „într-un an ar trebui să câștig deja X dolari” - poate fi rezonabil (și destul de plăcut) să vă planificați imediat o educație de „clasă universitară”: adică să faceți o listă cu mai multe limbi clasice - Scheme, Haskell, Prolog, mai multe industriale (Java, Ruby, JS), câteva super la modă (Rust, Pony, Elixir)... Și întrebarea „pe ce anume să scriu” va apărea cumva pe ea proprii. Dar dacă vrei „o profesie adevărată și rapid”, atunci...

Știi exact în ce domeniu vrei să lucrezi?„Doar dezvoltarea de jocuri, nimic altceva nu mi se potrivește”, „Inteligenta artificială este ceea ce am visat încă de la școală”, „Vreau să fiu mai aproape de hardware, să programez tot felul de roboți și senzori” sau chiar „Prietenii mei sunt voi începe un startup despre seriale TV.” cu bigdata” sunt opțiuni bune pentru a răspunde la această întrebare. Dar nu ești absolut obligat să le ai. „Te rog să-mi arăți toată gama” este, de asemenea, un răspuns bun. Și „între timp, voi încerca să-l ajut pe contabilul unchiului meu de la compania lui, dar vor ceva mai interesant” este de asemenea normal.

Victor te va ajuta să faci primii pași în programare, să te învețe elementele de bază și limbajul Ruby!

Mai departe: Ce ai vrea sa faci? Pare a fi aceeași întrebare ca mai sus? Dar nu. Închideți ochii și imaginați-vă cum arată fluxul dvs. ideal de lucru? Experimentați cu interfața astfel încât utilizatorul să fie mulțumit, fără să știți măcar cât efort a fost investit? Inventează un nou algoritm de coliziune a particulelor pentru motorul de fizică al jocului și ia trei ani să-l perfecționeze? Scrieți o mulțime de cod rapid, combinând o duzină de componente cunoscute într-o nouă idee de pornire înainte ca cineva să vină cu ea? Te confrunți cu un lucru străin complex pentru a-l face să funcționeze într-un mediu nou? - există un număr imens de opțiuni, iar unele chiar conduc departe de profesia de „doar un programator” - în domeniul devopilor, sau specialiștilor UI, sau analiștilor de date... Dedică cel puțin 20 de minute acestei meditații, rezultatul poate fi complet neașteptat.

De exemplu (în legătură cu întrebarea anterioară), chiar dacă sunteți sigur că doriți să participați la dezvoltarea jocului, înțelegeți că doriți să depanați noi niveluri sau că vă veți distra cu adevărat să elaborăm algoritmi de coliziune precisi din punct de vedere fizic sau - crearea unui server de joc care poate rezista la sute de milioane de conexiuni - aceasta este Totuși, există direcții foarte diferite pentru învățare și auto-dezvoltare.

Și numai după ce ați răspuns (sau a decis în mod deliberat să amânați răspunsul) la toate întrebările de mai sus, este logic să puneți o întrebare pragmatică: Ce limbi sunt folosite în mod activ în prezent?- în zona, tema și mediul care vă interesează. Și alege trei (așa este!) pe care să le stăpânești în viitorul apropiat.

Din ce anume să alegeți - va trebui să vă dați seama pe loc, deși mai jos vă oferim o scurtă prezentare generală unele dintre cele populare astăzi limbi.

Câteva răspunsuri

Auzi un sunet liniștit ciudat?

„Răspunsurile” enumerate mai jos sunt cele care devin depășite și ruginite. Dacă citiți acest articol la șase luni după ce a fost scris, cel mai probabil secțiunea „răspunsuri” este deja puțin depășită ( Dacă nu a avut loc un eveniment catastrofal, în urma căruia totul a devenit învechit); l-ai citit un an mai târziu - este complet depășit. Ai citit-o 5 ani mai târziu - ... dar diavolul știe. În domeniul nostru, lucrurile se schimbă în fiecare zi, dar adesea rămân destul de stabile pe termen lung.

Ei bine, în general, este clar - citiți cu atenție.

Mai jos sunt informații subiective, scurte și incomplete despre primele 15 limbaje de programare actuale imaginare (în ordine alfabetică).

Autorul a atribuit fiecăruia un anumit număr: acesta este numărul de posturi vacante pe site-ul principal ucrainean pentru dezvoltatori dou.ua, în care limba este cel puțin menționată. Aceste cifre în sine nu înseamnă nimic, dar permit să se facă o analiză comparativă incompletă, folosind exemplul uneia dintre țările post-sovietice/europene, și să se tragă niște concluzii comparative foarte inexacte.

Vă rugăm să rețineți: esența acestor numere nu este atât de mult încât „trebuie să-l alegeți pe cel în care numărul este mai mare”! Ideea este că pentru oricare dintre aceste limbi numărul nu este egal cu zero - într-o țară care nu este foarte mare și, să fim sinceri, nu foarte prosperă. Adică, poți găsi un loc de muncă într-o limbă care are 5 scrise acolo - dar pentru asta trebuie să-l iubești cu adevărat, iar dacă scopul este pur și simplu „să programezi ceva pentru o sumă decentă de bani” - atunci, desigur, trebuie să alegi unde numărul este mai mare, ei vor angaja pe oricine dorește, aparent .

    C(100?- se pare că motorul de căutare nu a putut face față) - singurul bunic în viață al programării și, în plus, cel mai viu dintre toți cei vii. Tot sistemul (cu amendamente la Rust and Go, despre care mai jos), programarea tot felul de microcontrolere și dispozitive încorporate, tot felul de drivere pentru drone și alte lucruri uimitoare este încă C. Este, de asemenea, limbajul „de bază” pentru cusături sau accelerarea altor limbaje și biblioteci (un fel de prostie științifică, care, să zicem, a fost scrisă inițial în Python, apoi rescrisă în C pentru viteză, apoi apar wrapper-urile pentru această implementare C în Ruby, Julia și Haskell... așa trăi). Pe scurt, este puțin probabil primul limbă, dar obligatoriu de studiat – absolut. Mai mult, nu stă deloc pe loc, iar noile standarde sunt destul de proaspete și bune;

    C++ (144)- nepotul urât (după unii) sau încântător de complex (după alții) al lui C. Orientat pe obiecte, metaprogramabil, monstruos de prea complicat, lent de compilat... pe scurt, C++ este prima mea dragoste printre limbajele de programare . Acum este folosit, din câte se poate aprecia, pentru dezvoltarea jocurilor, a unor sisteme desktop și puțin peste tot unde este posibil C, dar este nevoie de un cod mai complex (deoarece compilatorul gcc este disponibil pe toate sistemele de operare și le compilează pe ambele) ;

    C# (414)- unul dintre puținele limbaje în care programatorii și-au vândut sufletul diavolului și sunt aproape strâns legați de ecosistemul Microsoft (care, să fim sinceri - mai ales pentru dezvoltatori - este destul de impresionant dezvoltat). Domenii de aplicație - jocuri sau software Complex Expensive Enterprise. Limba în sine, de moment, este destul de frumoasă și progresivă. Și, în general, ca aproape toate limbajele de uz general nu noi și pragmatice, are puțină funcționalitate, multă OO, ceva metaprogramare etc.;

    Clojure (6)- un astfel de unicorn magic al limbajelor de programare, rulează pe JVM (citiți despre Java mai jos), succesorul Lisp, un limbaj funcțional. Dialectul său ClojureScript se compilează în JS (citiți și mai jos de ce este important acest lucru). Folosit în startup-uri „inteligente” și în producția de companii foarte serioase. Poți alege doar de Big Love (dar el este cool);

    Erlang+Elixir (5+10)- Erlang este un limbaj și o platformă care este deosebit de populară pentru crearea de aplicații de telecomunicații (fost) și, în general, de aplicații distribuite de mare sarcină (acum). Elixir este un limbaj care rulează pe aceeași platformă, dar este mai puțin străin decât Erlang (cu toate acestea, limbajul „principal” al platformei va trebui să fie înțeles măcar puțin, vezi discuția despre Java de mai jos). Astăzi, toate acestea miroase puțin a „elitism”, dar sunt ferm înrădăcinate în unele zone (să zicem, în sistemele bancare) - și sunt teribil de interesant;

    ES (JavaScript, CoffeeScript, TypeScript etc.) (788+10+64+...)- favoritul evident în acest moment, ES/JS/... nu este în esență o limbă, ci o familie de limbi. Pe ele sunt scrise interfețe web și interfețe mobile (în mai multe moduri diferite), precum și (în alte moduri) software de server și de administrare, iar diavolul este chel. Ceea ce se numește exact „limbajul JavaScript” astăzi este destul de dificil de determinat: după ce ai angajat un loc de muncă ca „programator JavaScript”, în funcție de norocul tău, s-ar putea dovedi a fi persoana care menține interfața antică a sistemului bancar, care, la naiba, ar trebui să funcționeze sub orice browser; sau parte dintr-o echipă la modă care scrie vizualizări complexe de date științifice în TypeScript puternic tastat; sau participă brusc la dezvoltarea interfeței viitorului pe „următoarea” versiune a limbajului, care este compilată într-un mod complex în ceva care rulează pe un vechi Nokia... o lume întreagă care nu poate fi descrisă într-una singură paragraf. Dar a căuta „prima ta limbă” în acest domeniu este destul de periculos;

Există, de asemenea, o a treia opinie și o poveste despre ce se bazează alegerea limbajului de programare în dezvoltarea reală

    Mergi (78)- un limbaj simplu ca un stick și eficient realizat de Google, în principal pentru cazurile de „facă cod rapid, prost, fiabil”. Zborul gândirii în el este imediat întreruptă de grosolănia limbajului. Dar este eficient - nu pot descrie cum;

    Java (466)- un caz special. Java este atât un limbaj, cât și o platformă (JVM) - și această platformă rulează, de exemplu, Clojure amuzant și cool, Scala abstrus din punct de vedere științific și JRuby (același Ruby, dar pentru JVM). Și Java în sine nu este astăzi deloc „limbajul limitat pentru sclavii corporativi” pentru care i s-a dat o reputație odată. Având în vedere numărul incredibil de biblioteci puternice, alegerea limbilor care rulează pe această platformă și versatilitatea acesteia, orice programator care se respectă ar trebui să aibă o idee despre Java. Și Java este singurul (cu unele rezerve) limbaj de dezvoltare pentru Android;

    PHP (431)- un vechi ocupant al rețelei cu o reputație monstruoasă. În versiunea modernă, a scăpat de cea mai mare parte a moștenirii infernale și, în general, este un limbaj OO modern destul de decent. Dar, conform memoriei vechi, reprezintă o parte foarte semnificativă a infrastructurii Internet. După ce ați angajat un specialist PHP, puteți, la fel de probabil, să ajungeți într-un proiect îngrijit cu Arhitectură și teste - sau puteți susține un sistem preistoric nebun cu dacă/altfel nestructurat pentru 2000 de linii;

    Python (303)- cândva un „concurent” al lui Ruby ca limbaj la modă pentru web și startup-uri, acum limbajul este în principal pentru sprijinirea aplicațiilor web complexe și adulte care au crescut pe el - și mai mult pentru cercetarea științifică / big data, în unele locuri chiar înfunda R (vezi mai jos);

    R (16)- un limbaj de uz general, dar folosit doar de oameni de știință/bigdata. Este o sintaxă destul de infernală (pentru că este veche), dar există o mulțime de pachete interesante pentru ea și cercetări scrise pe ea. Aproape cea mai bună limbă din lume, se pare, este pentru satisface curiozitatea;

    rubin (124)- în urmă cu doar câțiva ani, „la modă” și „hipster”, astăzi este pur și simplu una dintre limbile mainstream. Foarte expresiv și laconic, puțin „magic”, destul de lent. Folosit în principal pentru dezvoltarea web. Astăzi este o limbă care este ușor de iubit sau de urât la prima vedere și este destul de ușor să găsești un loc de muncă. Ruby este, de asemenea, iubit astăzi de administratori și testeri; are instrumente interesante pentru ambii;

    Rugina (3)- unul dintre jucătorii destul de noi. Rapid și provocator. Promite să înlocuiască C în domeniul programării sistemului, dar deocamdată se pare că are mai mult sens să-l înveți „pentru viitor”;

    Scala (60)- „frățiorul deștept” pe platforma Java: modern, complex, funcțional, îndrăgit de toate analizele de afaceri și, prin urmare, câștigă rapid popularitate;

    Swift / Obiectiv-C (58+15)- singura alegere pentru dezvoltarea iOS. Desigur, ar trebui să vă concentrați doar pe Swift (Obiectiv-C este deja doar pentru suportarea aplicațiilor vechi) - și, în general, nu este remarcabil nici pentru nicio caracteristică specială și nici pentru vreo prostie specială, un limbaj modern decent comparabil cu C# și Java. Poate fi recomandat doar ca primul pentru cei care au decis să-și acorde ferm lotul cu Apple, deoarece aplicabilitatea sa este limitată (în mod deliberat).

Cumva, în general, așa.

Există unele lucruri care nu au fost incluse în această listă - de exemplu, Perl, pentru care dezvoltatorii sunt destul de solicitați, dar limbajul în sine este într-o stare ciudată și nu se poate recomanda ca „prima” limbă. Sau, de exemplu, Lua este și popular, dar ca limbaj de scripturi mici pentru alte sisteme (în principal jocuri), a fi „doar un programator Lua” pare a fi destul de inutil.

Eh, înțeleg totul. Ce sa aleg?...

Ei bine, asta. Ia totul. (zâmbitor)

Nu, într-adevăr. De fapt, o strategie rezonabilă (dacă, desigur, veți petrece o parte semnificativă a timpului în profesia noastră și nu „câștigați bani în plus pentru o jumătate de an”) este să vă dați seama ce unele limbi pe care sunteți interesat cel puțin să le căutați în următoarele luni. Le puteți alege ca culorile în instrucțiunile pentru designeri - puteți „din cei apropiați”, puteți „din opus”, puteți „din complementar”...

Scopul tău în primele etape este să-l faci interesant și să începi să reușești. Și numai tu poți deschide calea către acest obiectiv, și cel mai probabil nu pentru prima dată. Asemenea lucruri.

Pe scurt vorbind...

În domeniul nostru, a pune întrebări este întotdeauna mai important decât a cunoaște răspunsurile corecte. Pentru că răspunsurile se schimbă. Și întrebările sunt necesare în fiecare zi. Fii interesat, învață puțin din toate, aruncă o privire mai atentă asupra lumii.

Restul se întâmplă de la sine.

Începutul dezvoltării

Limbajul de asamblare

În cazul în care este necesar să existe un program eficient, în loc de limbaje de mașină, se folosesc limbaje orientate pe mașină care sunt apropiate de acestea - asamblatori. Oamenii folosesc comenzi mnemonice în loc de comenzi de mașină.

Dar chiar și lucrul cu un asamblator este destul de complicat și necesită o pregătire specială.

De exemplu, pentru procesorul Zilog Z80, instrucțiunea de mașină 00000101 indică procesorului să-și reducă registrul B cu unul. În limbajul de asamblare, acesta va fi scris și ca DEC B.

Programare structurată

Următorul pas a fost făcut în 1954, când a fost creat primul limbaj de nivel înalt, Fortran. FORTRAN - FORMULE TRANSlator). Limbile de nivel înalt imită limbajele naturale prin utilizarea unor cuvinte vorbite și a simbolurilor matematice comune. Aceste limbi sunt mai convenabile pentru oameni, cu ajutorul lor, puteți scrie programe de până la câteva mii de linii. Cu toate acestea, deși era ușor de înțeles în programele scurte, limbajul a devenit ilizibil și greu de gestionat atunci când era vorba de programe mai mari. Soluția la această problemă a venit odată cu inventarea limbajelor de programare structurată. limbaj de programare structurat ), precum ALGOL (1958), Pascal (1970), C (1972).

Programarea structurată implică structuri de control definite cu precizie, blocuri de program, instrucțiuni fără salt necondiționat (GOTO), subrutine autonome, suport pentru recursivitate și variabile locale.

Esența acestei abordări este capacitatea de a împărți un program în elementele sale componente.

De asemenea, creat funcţional Limbi (aplicative) (Exemplu: Lisp - engleză. Procesarea listei, 1958) și logic limbi (exemplu: Prolog - engleză) Programare în LOGIC, 1972).

Deși programarea structurată a produs rezultate remarcabile atunci când este utilizată, chiar eșuează atunci când programul atinge o anumită lungime. Pentru a scrie un program mai complex (și mai lung), era nevoie de o nouă abordare a programării.

OOP

Ca urmare, principiile programării orientate pe obiecte au fost dezvoltate la sfârșitul anilor 1970 și începutul anilor 1980. OOP combină cele mai bune principii ale programării structurate cu concepte noi puternice, ale căror de bază sunt numite încapsulare, polimorfismŞi moştenire.

Exemple de limbaje orientate pe obiecte sunt: ​​Object Pascal, C++,

OOP vă permite să organizați în mod optim programele, împărțind o problemă în părțile sale componente și lucrând cu fiecare separat. Un program într-un limbaj orientat pe obiecte, care rezolvă o anumită problemă, descrie în esență o parte a lumii legată de această problemă.

Legături

  • Istoria programării și calculului

Fundația Wikimedia.

2010.

    Vedeți ce este „O scurtă istorie a dezvoltării limbajelor de programare” în alte dicționare:

    Un limbaj de programare este un sistem de semne formal conceput pentru a scrie programe. Un program reprezintă, de obicei, un algoritm într-o formă pe care o poate înțelege implementatorul (de exemplu, un computer). Limbajul de programare determină setul... ... Wikipedia

    Ruby Semantică: multi-paradigmă Tip de execuție: interpret Apărut în: 1995 Autor(i): Yukihiro Matsumoto Ultima versiune: 1.9.1 ... Wikipedia

    Ruby Semantică: multi-paradigmă Tip de execuție: interpret Apărut în: 1995 Autor(i): Yukihiro Matsumoto Ultima versiune: 1.9.1 ... Wikipedia - (Haykakan Sovetakan Socialistakan Hanrapetutyun) Armenia (Hayastan Țara armenilor). I. Informații generale RSS Armenească a fost înființată la 29 noiembrie 1920. Din 12 martie 1922 până în 5 decembrie 1936 a făcut parte din Federația Transcaucaziană (Vezi... ... - (Republica Socialistina Lietuvos Taribu) Lituania (Lietuvos). I. Informaţii generale RSS Lituaniană s-a constituit la 21 iulie 1940. Din 3 august 1940, face parte din URSS. Situat în partea de vest a Europei a URSS. Se învecinează la nord cu... ...

    Marea Enciclopedie Sovietică

Inițial, programarea avea o formă extrem de primitivă și practic nu era diferită de un cod binar ordonat cu o abordare formalizată. De fapt, la începutul domeniului, existau puține diferențe între un limbaj de programare și codul computerului. Nu existau avantaje evidente și naturale pentru programator, el trebuia să cunoască codurile numerice pentru fiecare comandă a mașinii. Chiar și alocarea memoriei pentru executarea comenzilor a căzut în sarcina specialistului.

Pentru a simplifica manipularea computerelor, oamenii au început să dezvolte în mod activ limbi, unul dintre primele a fost Asamblator. Numele simbolice au început să fie folosite pentru afișarea variabilelor. În loc de operații numerice, este suficient ca o persoană să cunoască nume mnemonice memorarea lor este mult mai ușoară. Deja în această etapă, limbajele de programare s-au apropiat de un limbaj înțeles de oameni.

Pionierii printre limbajele de programare includ Fortran este o combinație prescurtată de 2 cuvinte: Formula și traducerea. Creat deja la mijlocul anilor 50. Limba este folosită și astăzi datorită ușurinței și simplității sale de scriere, precum și a unui sistem dezvoltat de biblioteci pentru Fortran. Este folosit cel mai adesea pentru calcule științifice și de inginerie și este, de asemenea, utilizat în mod activ în fizică și alte științe legate de matematică.

Limbi focalizate

Datorită zonelor de utilizare în creștere calculator Au apărut și alte limbi pentru evoluții individuale în noi domenii:

  • direcția economică a rămas neocupată până la apariția lui Kobol;
  • Snoball - procesează algoritmi legați de texte;
  • Lisp. Funcționează pe baza algoritmilor de procesare a simbolurilor. Este folosit în mod activ pentru formarea inteligenței artificiale.

Deja în 1968, a fost lansat pentru prima dată un concurs, în care premiul principal a fost titlul de cel mai bun limbaj de programare pentru începerea unei cariere. Datele au fost planificate pentru a fi folosite pentru a pregăti specialiști. A câștigat victoria ALGOL-68, dar a rămas puțin cunoscut și nu se vorbește despre popularitate.

A fost creat special pentru participarea la concurs Pascal, dezvoltat de Niklaus Wirth. Limbajul este foarte accesibil, convenabil și combină multe instrumente puternice pentru structurarea informațiilor. În ciuda dezvoltării inițiale în scopul predării studenților, Pascal s-a răspândit și s-a dezvoltat activ. Chiar și astăzi este unul dintre cele mai bune și mai faimoase limbaje de programare.

A fost creat pentru a educa copiii în școli Logo, a stat la origini Samuel Peipert. Avantaje: ușurință în exploatare și abundență de posibilități.

Limbajul simplu BASIC a început să fie predat în școli cu care interacționează ușor calculator ca dialog direct. Timpul nu a afectat în niciun fel acest domeniu;

Crearea limbajului C

Dezvoltarea capabilităților echipamentelor de calcul a dus la necesitatea scrierii unor programe intensive de control calculator. Acest loc a fost luat pe bună dreptate de limbajul C, care a început să fie folosit activ în anii 70. Un avantaj clar al limbajului este versatilitatea sa. Este superior lui Pascal datorită capacității imbricate de a coopera cu diferite instrucțiuni ale mașinii și părți adecvate ale memoriei.

C este folosit peste tot ca limbaj instrumental pentru scrierea platformelor de operare, dispozitivelor de traducere, baze de date și alte sarcini de sistem aplicate. nu are un accent clar, este potrivit pentru multe sarcini datorită eficienței, ușurinței de transfer și consumului economic de resurse. Mai des Si viteza de procesare a datelor este comparabilă cu Asamblator, performanța programelor în ambele limbi va fi aproximativ egală. O limbă mică are multă putere.

Prolog și Ada

Introducerea programării funcționale a dus inevitabil la crearea Prolog. Sarcinile limbajului au fost reduse la analiză și interacțiune cu limbajele umane. Logica aplicatiei este formala, este optima pentru rezolvarea automata a problemelor si teoremelor.

Abia în anii 1980 a fost dezvoltat limba Ada. Extinde înțelegerea și proprietățile clasice ale limbilor perioadei. Ada putea rezolva probleme în timp real și simula decizii independente.

Clasificare

Astăzi, au fost dezvoltate clasificări ale limbilor în funcție de nivelul de muncă, această distribuție este cea mai comună. Există 3 niveluri principale:

  1. Scurt. Aceasta include diverse limbaje de mașină sau soiuri cu tip de codificare simbolică asamblatorŞi Cod automat. Operatorii comenzilor mașinii sunt luați ca bază, dezvoltați doar cu referire la un cod mnemonic. Operanzii nu mai sunt adrese exacte, ci desemnări simbolice ale numelor. Toate modelele sunt concepute pentru soiuri individuale PC, sunt dependente de mașină. În astfel de limbi, există o dependență puternică a limbii de caracteristicile interne ale sistemului;
  2. Ridicat. Limbile sunt mult mai comune și mai ușor de utilizat. Acestea includ: ALGOL, C, Prolog, Pascal, BASIC, Fortran și alții. Limbile enumerate nu au o dependență strictă de mașină, deoarece se bazează pe capacitățile sistemului operand, care sunt similare cu algoritmii de clasă. Dezavantajele nivelului înalt sunt consumul mare de resurse și execuția lentă;
  3. Ultraînalt. Sunt foarte puține limbi reprezentate, doar APL și ALGOL-68. Ele sunt considerate ultra-high-end datorită dezvoltării operatorilor super-puternici.

Conform unei alte clasificări, limbile sunt împărțite în:

  • simbolic- Prolog, Lisp și Snoball;
  • de calcul- Pascal, C, Algol, BASIC, Fortran.

Direcții de dezvoltare

Informatica in lumea moderna se dezvolta in 3 directii cheie:

  1. Procedural a apărut în perioada dezvoltării active a calculatoarelor și a altor dispozitive de calcul și a fost utilizat pe scară largă de atunci. Instrucțiunile procedurale conțin descrieri explicite ale acțiunilor care trebuie efectuate. Pentru a obține un rezultat, se efectuează întotdeauna o anumită procedură, care constă în diverse secvențe de manipulări. Limbile procedurale sunt împărțite în continuare în:
    • Structural. Ei folosesc un operator pentru a scrie algoritmi întregi: bucle, funcții, ramuri și restul. Mai faimoși: Pascal, Ada și S.
    • Săli de operație. Sunt utilizate mai multe acțiuni diferite. Printre cele mai cunoscute soiuri: Focal, Fortran și BASIC.
  2. Non-procedural. Limbajele de programare au o structură declarativă, care a apărut în anii 70. Au început să se dezvolte cel mai activ în anii 80, după apariția proiectului de formare a celei de-a 5-a generații de calculatoare. Sarcina principală este de a crea oportunități de a construi foarte inteligent mașini Ele sunt, de asemenea, împărțite în:
    • Funcţional. Programul realizează calculul unei anumite funcții, care ia ca bază alți algoritmi relativ simpli și probleme mai simple. Direcția funcțională se bazează pe elementul principal - recursiunea. Constă în calcularea valorilor unei funcții prin utilizarea acesteia în alte elemente. Limbajul nu are bucle și o metodă de atribuire a valorilor.
    • Logic. Programul nu necesită deloc o descriere a acțiunilor, se bazează pe relațiile dintre date și semnificația acestora. Numai după calcule puteți primi răspunsuri la întrebări. După căutarea prin parametri cunoscuți, răspunsul este afișat. Nu există nicio metodă sau ordine în program pentru a descoperi răspunsul este implicit stabilit de limbaj. Un reprezentant proeminent este Prolog. Gândirea algoritmică este complet eliminată din direcție, doar relațiile statice dintre obiecte, iar toate dinamicele sunt ascunse de dezvoltator și sunt reduse la sortarea prin date.
  3. Limbaje orientate pe obiecte, toate acestea fiind o formă de programare la nivel înalt. Astfel de limbi nu trebuie să descrie o secvență clară de manipulări pentru a obține rezultatul unei sarcini, dar sunt prezente componente individuale ale direcției procedurale. Este mult mai ușor pentru utilizatori să lucreze cu astfel de limbi, deoarece au o interfață accesibilă și bogată. Cel mai bun exemplu al acestei tendințe cu comunicarea vizuală este Object Pascal.

Există limbi pentru scrierea scenariilor, cele faimoase sunt Rexx, Tcl, Perl și Python, precum și limbaje shell ale sistemelor Unix. Ei dezvoltă un stil individual de codare care diferă de binecunoscutul principiu al programării la nivel de sistem. Ele nu sunt folosite pentru a crea aplicații la nivelul inferior, ci mai degrabă pentru a combina diferite componente din diferite limbi care alcătuiesc un set de funcții individuale.

Au început să se dezvolte cel mai activ pe măsură ce internetul s-a răspândit, motiv pentru care limbajele de scripting au început să fie utilizate pe scară largă. Cel mai adesea folosit pentru crearea de scripturi Perl, și pentru Părți web este popular JavaScript.

Kasper Beyer „O scurtă istorie complet precisă a limbajelor de programare”.

1800

Joseph Marie Jacquard învață un țesut să citească cărți perforate și creează astfel primul dispozitiv de procesare a datelor cu mai multe fire. Invenția sa a fost întâmpinată cu ostilitate de țesătorii de mătase care au prevăzut nașterea lui Skynet.

1842

Ada Lovelace s-a plictisit în timp ce își urmărea nobilele activități. Ea a schițat într-un caiet ceea ce mai târziu avea să devină cunoscut drept primul program de calculator publicat. Singurul inconvenient era că computerul nu fusese încă inventat.

1936

Alan Turing inventează totul, dar asta nu-l justifică în ochii unui tribunal britanic, care îl condamnă la castrare chimică.

Regina l-a iertat mai târziu, dar, din păcate, era mort de mult până atunci.

1957

John Backus creează FORTRAN, primul limbaj folosit de programatori reali.

1959

Grace Hopper inventează primul limbaj de programare orientat industrial și îl numește „limbaj comun orientat spre afaceri” sau COBOL pe scurt.

1964

John George Kemeny și Thomas Kurtz au decis că programarea este prea dificilă și că trebuie să se întoarcă la bază. Ei își numesc limbajul de programare BASIC.

1970

Niklaus Wirth îl dezvoltă pe Pascal. Aceasta este una dintre mai multe limbi în care a luat parte la creație e Wirth: Îi plăcea să creeze limbi.

El a formulat, de asemenea, Legea lui Wirth, făcând Legea lui Moore fără sens, deoarece dezvoltatorii ar face-oŞi creați programe atât de umflate încât nici măcar mainframe-urile nu pot ține pasul cu ele. Acest lucru va fi demonstrat ulterior prin inventarea lui Electron.js.

1972

Dennis Ritchie s-a plictisit de jobul său de la Bell Labs și a decis să creeze C cu bretele sale, iar proiectul a devenit un succes uriaș.Ulterior, el a adăugat erori de segmentare și alte funcții prietenoase pentru dezvoltatori pentru a îmbunătăți performanța.

Deoarece mai avea câteva ore rămase, el și prietenii săi de la Bell Labs au decis să creeze un program de probă pentru a demonstra limbajul C. Așa că au creat un sistem de operare numit Unix.

1980

Alan Curtis Kaye inventează programarea orientată pe obiecte și o numește Smalltalk. În Smalltalk, totul este un obiect, chiar și un obiect este un obiect.

1987

Larry Wall, cu experiența sa în domeniul religios, devine predicator, și al lui e doctrina face ca Perl.

1983

Jean David Ishbia a observat că programul Adei Lovelace nu a demarat niciodată și a decis să creeze un limbaj și să-l numească după ea (Ada). Dar nici limbajul nu începe.

1986

Brad Cox și Tom Love au decis să creeze o versiune ilizibilă de C bazată pe Smalltalk. L-au numit Objective-C, dar nimeni nu-i poate înțelege sintaxa.

1983

Björn Stroustrup se întoarce în viitor și observă că limbajul C cere prea puţin timpul pentru compilare. El adaugă fiecare caracteristică la care se poate gândi limbajului și o numește C++.

Programatorii din întreaga lume sunt de acord, oferindu-le o scuză genială pentru a viziona videoclipuri cu pisici și pentru a citi xkcd la locul de muncă.

1991

Lui Guido van Rossum nu-i plac bretele, așa că inventează . Atunci când a ales sintaxa limbii, autorul s-a inspirat din Monty Python și circul lui zburător.

1993

Robert Ierusalimsky și prietenii săi au decis că au nevoie de un limbaj de scripting local, brazilian.ÎN A fost făcută o eroare în timpul localizării care a făcut ca indicii să înceapă să numere de la 1 în loc de la 0. Limba a fost numită și Lua.

1994

Rasmus Lerdorf creează un motor de șablon pentru propriile scripturi CGI de pe pagina de pornire și lansează fișierele sale pe Internet.

Lumea decide să folosească aceste fișiere cu puncte peste tot, iar Rasmus le adaugă frenetic câteva legături de baze de date suplimentare și numește rezultatul RHP.

1995

Yukihiro Matsumoto nu a fost prea fericit și a observat că și ceilalți programatori erau nemulțumiți. El o creează pe Ruby pentru a-i face fericiți. După ce a creat Ruby, „Matz” este fericit, comunitatea Ruby este fericită, toată lumea este fericită.

1995

Brendan Eich își ia o zi liberă pentru a dezvolta limbajul care va controla fiecare browser web din lume și în cele din urmă Skynet. La început a mers la Netscape și a spus că limbajul se numește LiveScript, dar în timpul revizuirii codului Java a câștigat popularitate, așa că s-a hotărât utilizați acolade și redenumiți limba în JavaScript.

S-a dovedit că Java este o marcă comercială, ceea ce ar putea duce la probleme, așa că JavaScript a fost redenumit ulterior în , dar este încă numit cu vechiul nume.

1996

James Gosling inventează Java, primul limbaj de programare orientat pe obiecte cu adevărat pronunțat, în care modelele de design au prioritate față de pragmatism.

2001

Anders Hejlsberg reinventează Java și numește limbajul C#, deoarece programarea în C pare mai cool decât programarea în Java. Tuturor le place noua versiune de Java, deoarece este complet diferită de Java.

2005

David Heinemeier Hansson creează un cadru web numit mai târziu Ruby on Rails. Oamenii uită că acestea erau două lucruri diferite.

2006

John Resig scrie o bibliotecă de ajutor JavaScript. Toată lumea crede că este o limbă și își face o carieră prin copierea-lipirea codului jQuery de pe Internet.

2009

Ken Thompson și Rob Pike decid să creeze un limbaj similar cu C, dar mai comercializabil, cu mai multe instrumente de securitate și Gophers ca mascote.

Ei numesc acest limbaj Go, decid să îl deschidă și încep să vândă genunchiere și căști Gopher de marcă.

2010

Graydon Hoare vrea, de asemenea, să creeze un limbaj similar cu C. El îl numește Rust. Toată lumea cere ca fiecare parte din software-ul lor să fie rescrisă imediat în Rust. Graydon vrea ceva mai strălucitor și începe să lucreze la Swift pentru Apple.

2012

Anders Hejlsberg vrea să scrie C# în browserele web. El creează TypeScript, care este în esență JavaScript cu mai mult Java.

2013

Jeremy Ashkenas vrea să fie la fel de fericit ca dezvoltatorii Ruby, așa că creează CoffeeScript, care se traduce în JavaScript, dar seamănă mai mult cu Ruby. Jeremy nu a devenit niciodată la fel de fericit ca Matz și dezvoltatorii Ruby.

2014

Chris Latner creează Swift al cărui obiectiv principal nu este să fie Objective-C. În cele din urmă, acest limbaj seamănă cu Java.

Permiteți-mi să subliniez câteva tendințe generale în dezvoltarea limbajelor de programare. Cititorul priceput probabil că a ghicit deja ce voi spune cu mult timp în urmă. Limbile evoluează spre o abstracție din ce în ce mai mare. Și aceasta este însoțită de o scădere a eficienței. Întrebare: merită abstractizarea? Răspuns: merită. Merită, deoarece creșterea nivelului de abstractizare implică creșterea nivelului de fiabilitate a programării. Eficiența scăzută poate fi combatetă prin construirea de computere mai rapide. Dacă cerințele de memorie sunt prea mari, puteți crește dimensiunea memoriei. Acest lucru, desigur, necesită timp și bani, dar poate fi rezolvat. Dar există o singură modalitate de a trata erorile din programe: acestea trebuie corectate. Sau mai bine, nu o face. Mai bine, faceți cât mai dificil posibil să le comiteți. Și tocmai asta vizează toate cercetările în domeniul limbajelor de programare. Și trebuie să te împaci cu pierderea eficienței.

Scopul acestei recenzii a fost de a încerca să ofere cititorului o idee despre varietatea limbajelor de programare existente. Printre programatori există adesea o opinie despre „aplicabilitatea universală” a unui anumit limbaj (C, C++, Pascal etc.). Această opinie apare din mai multe motive: lipsă de informare, obișnuință, inerție a gândirii. Am încercat să compensez ușor primul factor. În rest, nu pot spune decât că un adevărat profesionist trebuie să se străduiască constant să-și îmbunătățească calificările profesionale. Și pentru aceasta nu trebuie să vă fie frică să experimentați. Ce se întâmplă dacă toată lumea din jurul tău scrie în C/C++/VB/Pascal/Perl/Java/… (subliniați după caz)? De ce să nu încerci ceva nou? Ce se întâmplă dacă acest lucru se dovedește a fi mai eficient? Desigur, înainte de a începe să utilizați o nouă limbă, trebuie să studiați cu atenție toate caracteristicile acesteia, inclusiv disponibilitatea unei implementări eficiente, capacitatea de a interacționa cu modulele existente etc. și abia apoi să luați o decizie. Desigur, există întotdeauna riscul de a merge pe o cale greșită, dar... Doar cei care nu fac nimic nu greșesc.

Și încă un lucru. Am auzit și uneori am participat la discuții precum „limba A este mai bună decât limba B”. Sper că după ce citesc această recenzie, mulți se vor convinge de inutilitatea unor astfel de dispute. Maximul care poate fi discutat este avantajele unei limbi față de alta atunci când se rezolvă o anumită problemă în anumite condiții. Aici chiar există uneori ceva de ceartă. Iar soluția uneori nu este deloc evidentă. Cu toate acestea, a argumenta „în general” este o prostie evidentă.

Acest articol a fost conceput ca un răspuns celor care strigă „limba X TREBUIE SĂ MĂRĂ”. Sper că răspunsul s-a dovedit a fi destul de adecvat și convingător. De asemenea, sper ca articolul să aibă, pe lângă o valoare polemică, educativă.



 


Citire:



De ce procesorul de pe computerul meu devine foarte fierbinte?

De ce procesorul de pe computerul meu devine foarte fierbinte?

Nu am avut de gând să scriu acest articol, am fost îndemnat să-l scriu de multe întrebări despre supraîncălzirea laptopului, curățarea acestuia și înlocuirea pastei termice. Pe...

Ce este modul „Turbo” în browserele moderne: Chrome, Yandex, Opera

Ce este modul „Turbo” în browserele moderne: Chrome, Yandex, Opera

Multe browsere web cunoscute, de exemplu, Yandex.Browser, au un mod special „Turbo”, care poate crește semnificativ viteza...

Cel mai simplu șablon. Șabloane HTML simple. Mamba - șablon de o pagină

Cel mai simplu șablon.  Șabloane HTML simple.  Mamba - șablon de o pagină

Toate șabloanele prezentate pentru site-ul dvs. sunt construite pe versiuni moderne de HTML5 și CSS3. În plus, autorii folosesc astfel de caracteristici la modă precum...

3 baze de informații distribuite

3 baze de informații distribuite

Crearea și configurarea unei baze de date distribuite (RDB) în 1C 8.3 Contabilitate (și alte configurații) este necesară în cazurile în care nu este posibil...

imagine-alimentare RSS