5 noi limbaje de programare pe care ar trebui să le cunoașteți

Pentru unii oameni, învățarea unui nou limbaj de programare este un exces cel mai bine evitat. De ce, de ce, argumentează ei, avem nevoie de încă o limbă?

Nu avem deja destule?

Instrumentele existente nu fac treaba?

Și apoi sunt acei căutători neobosite care profită de ocazia de a încerca lucruri noi și de a da peste pietre prețioase. Învățarea este un scop în sine și nu au nevoie de prea multă convingere pentru a-și arde weekendurile, construind un joc de cărți bazat pe consolă în acea limbă obscura și nouă.

Indiferent de tabăra din care faceți parte, există ceva dincolo de dezbatere: cu toții vrem să petrecem timp cu ceva care va avea un viitor strălucit.

Pentru oamenii din tabăra moștenită, limba lor preferată existentă are deja tone de impuls și va continua să aibă un viitor strălucit. Pentru ei, trebuie să le reamintesc că lanțul lor de instrumente de dezvoltare preferat, acum matur, a fost cândva „kool-aid” pe care mulți au refuzat să-l bea. Și așa este și astăzi; se adaugă noi tehnologii pentru a rezolva noi probleme sau pentru a ușura durerea dezvoltării.

Dacă ceva face acest lucru destul de radical, sunt șanse să continue să smulgă mindshare și să ajungă în vârf. Când se întâmplă asta, nu vrei să fii lăsat în urmă. 🙂

Iar celor cărora le place să alerge cu lucrurile strălucitoare, un avertisment: să se distreze este esențial ca programator, dar trebuie să avem grijă să nu ne irosim energiile fără rost.

Sigur, Brainfuck este un limbaj incredibil de răsucit, asemănător puzzle-ului, distractiv, dar este puțin probabil să beneficiați dacă îl urmăriți în serios. Vrei ceva nou, sensibil și care are o bază solidă.

Cum au fost selectate aceste limbi

Selectarea limbii este un loc de muncă intimidant, mai ales atunci când limbi noi sunt luate în considerare pentru beneficii viitoare în angajare și satisfacție. Fiecare autor de limbi străine este ferm convins că a construit limbajul perfect posibil și a rezolvat toate problemele pe care trebuie să le răspundă. Cum, atunci, tăiați?

Pentru această postare, m-am concentrat pe câțiva parametri pentru a-mi menține căutarea în limite rezonabile.

Data de lansare

Am evitat în mod special limbile care sunt foarte, foarte noi.

Nou, mă refer la limbi mai vechi de 5-6 ani la momentul scrierii, și mai ales la cele care nu au ajuns la stabilitate (versiunea 1.0, adică). Acest lucru, din păcate, exclude unele pietre prețioase reale, cum ar fi Cristal, Dar sper să revin la asta și să scriu despre succesul său cândva. 🙂

Un fragment de cod în Crystal („Fast as C, Slick as Ruby”)

Pentru mine, 5-12 ani este punctul dulce, adică atunci când o limbă s-a stabilizat și se elaborează mai multe rafinamente. Acum, desigur, există excepții de la această regulă și acestea vor fi luate în considerare acolo unde este cazul.

Acesta este o idee deloc, dar este adesea ignorat atunci când suntem entuziasmați de ceva nou. Acum, pentru mulți oameni, sprijinul unei companii mari este un precedent suficient pentru succes, dar nu este întotdeauna adevărat.

Da, Objective-C de la Apple și acum Swift au prosperat deoarece acestea erau singurele opțiuni dintr-un ecosistem extrem de controlat, dar Facebook D și Hack (o interpretare urâtă a unui limbaj deja urât, după părerea mea) rămân puțin mai mult decât experimente.

Combinația ideală ar fi un limbaj susținut de o companie mare, stabilă și care explodează în popularitate (cum ar fi React).

Dar miezul problemei rămâne comunitatea. Dacă o limbă nu creează zgomot și nu există destui dezvoltatori pentru a educa și a populariza, nu va ieși din mormântul său GitHub.

Pentru mine, acest lucru exclude limbile mature, fascinante, cum ar fi Rachetă și Erlangdeoarece au rămas plate pe curba de creștere.

USP concentrat, bine definit

Al treilea lucru pe care îl caut este un obiectiv clar pentru limbă. De exemplu, o versiune mai bună a PHP, care rezolvă problemele de denumire și se compila în PHP nativ, nu funcționează pentru mine.

Beneficiile sunt prea mici pentru a justifica fisurile dacă toată lumea încearcă să treacă la el. După acest criteriu, nu pot să nu resping încercările de genul CoffeeScriptși multe alte limbaje similare de compilare în JavaScript.

Sincer, sunt obligat să resping imediat îmbunătățirile numai pentru sintaxă. Istoria a arătat că utilitatea depășește prietenia atunci când vine vorba de limbi, așa că dacă toate limbile noi se concentrează pe o experiență mai plăcută, mă tem că nu va face această listă.

Sintaxă clară, consecventă

Da, știu. Tocmai am spus că sintaxa nu contează. Ei bine, pentru a fi mai precis, am spus că „îmbunătățirile doar pentru sintaxă” nu contează. Dar acestea fiind spuse, sintaxa rămâne unul dintre factorii importanți în productivitatea și întreținerea programatorului, așa că este ceva ce trebuie să apară în calculele mele aici.

  Care este cel mai mare hard disk pe care îl puteți cumpăra?

Alături de sintaxă vine și ideea de consistență. Numirea funcțiilor, structurarea modulelor etc., sunt lucruri cheie pe care un limbaj nu își poate permite să le greșească. Este 2018, pentru numele lui Dumnezeu, și un alt design de limbaj asemănător PHP ar fi o rușine pentru noi toți. Așa că, fără alte prelungiri, să începem cu cele mai bune cinci recomandări ale noastre.

1. Iulia

Pentru cei de la MIT, limbile disponibile pentru știința datelor reprezentau în cel mai bun caz un compromis. Python, cu toată claritatea și popularitatea sa, nu avea construcții native pentru tratarea obiectelor de date. De asemenea, fiind un limbaj interpretat, Python a fost lent pentru ei (nu bibliotecile, ține cont, deoarece sunt scrise în mare parte în C).

Dar, probabil, cea mai mare dezactivare a fost modelul de concurență neplăcut și lipsa unui model de calcul paralel, acesta din urmă fiind un element de bază în super-calculare.

Ca urmare, Julia a fost nascut.

Julia a ajuns la lansarea stabilă pe 29 septembrie 2018, cu doar câteva zile înainte ca acest articol să fie scris (vorbiți despre calendar!). Iată ce are de spus site-ul oficial despre capacitățile sale:

Julia excelează la calcul numeric. Sintaxa sa este excelentă pentru matematică, multe tipuri de date numerice sunt acceptate, iar paralelismul este disponibil imediat. Trimiterea multiplă a lui Julia este o potrivire naturală pentru definirea tipurilor de date tip număr și matrice.

În ceea ce privește sintaxa, Julia poate fi văzută ca o combinație de Python și C. Da, este probabil prima dată când un limbaj vizează ambele calități și reușește.

Pentru a simplifica lucrurile, Julia este foarte rapidă și nu impune tastarea strictă. Iată câteva repere:

Benchmark-urile oficiale ale Julia

După cum puteți vedea, Julia este puțin mai rea decât C, dar elimină Java și Python din apă. Și ce fel de bomboane pentru ochi oferă Julia?

Ei bine, iată implementarea unei funcții pentru calcularea ipotenuzei unui triunghi dreptunghic:

În cele din urmă, în timp ce majoritatea Julia ecosistem este puternic înclinat către lucrări matematice, cred că are un viitor strălucit cu scop general.

Este prima limbă, după cunoștințele mele, care are suport de primă clasă pentru calculul paralel, așa că nu va fi o surpriză să o vedem câștigând mai multă popularitate în domeniile Web și IoT.

2. Rugina

Dacă ați încercat noile versiuni ale browserului Firefox, știți că în sfârșit, după ani de muncă, se pare că ar putea să ia o cotă de piață de la Chrome.

Dacă browserul se simte ușor și rapid și redă rapid, totul se datorează limbajului Mozilla special dezvoltat: Rugini.

A spune că Rust are un viitor strălucit va fi o minciună; limbajul este deja un succes masiv, iar dacă nu ați auzit încă de el, este pentru că domeniul său de aplicare este specializat, iar scopul său înfricoșător: înlocuirea C++! Da, avem în sfârșit un limbaj care nu numai că este capabil să facă acest lucru, dar o face deja.

Pentru persoanele frustrate de provocările supraîncărcate de design și managementul memoriei ale C++, Rust vine ca o gură de aer proaspăt.

Iată cum arată un program Rust:

Concis și elegant, după părerea mea. Rust urmează abordarea de programare funcțională, ceea ce vă face codul mai compus și nu există ierarhii orientate pe obiect cu care să vă luptați.

Deci, ce îi dă lui Rust curajul să meargă după C++? Este noul model de memorie. În loc să se bazeze pe vechiul dans new()/delete(), Rust introduce ideea de Ownership.

În loc să aloce și să acceseze memoria direct, variabilele Rust „se împrumută” unele de la altele, cu restricții stricte impuse de compilator. Conceptul general este prea complicat pentru a fi explicat în câteva cuvinte, așa că nu ezitați să verificați documente oficiale pentru a afla mai multe.

Ideea este că acest lucru are ca rezultat o siguranță 100% a memoriei fără a fi nevoie de un colector de gunoi, ceea ce este o mare problemă.

Rust a luat cu asalt lumea programării sistemului. Este deja acceptat pe unele platforme, alimentează browserele și motoarele de randare înlocuiesc rapid codul C/C++ pe sistemele de producție și este folosit pentru a scrie sisteme de operare.

Sigur, nu este ceașca de ceai pentru toată lumea să creeze un alt browser sau un driver de dispozitiv, dar Rust se răspândește deja în alte domenii. Avem deja câteva cadre Web complet funcționale, ridicol de rapide în Rust, iar din ce în ce mai multe biblioteci de aplicații sunt dezvoltate.

Sincer, dacă ești interesat de un viitor interesant, Rust este limba perfectă, iar acum este momentul perfect. Rust este un avion care a decolat, dar încă mai ai timp să te urci la bord în timp ce se îndreaptă spre stele!

Învăța Rugina de la Dmitri Nesteruk.

  Ce este epuizarea creatorului de conținut? Cum să-l depășești

3. Elixir

Printre limbile care se concentrează pe fericirea dezvoltatorilor, primul loc a fost rezervat permanent pentru Ruby. Este un limbaj care citește ca poezia și are suficiente scurtături pentru a reduce frecarea mentală în funcție de ordinul mărimii.

Nu e de mirare, așadar, că cadrul Rails continuă să domine dezvoltarea full stack pentru dezvoltatorii și startup-urile serioase. Dar nu toată lumea a fost mulțumită de Rails, în special de unul dintre dezvoltatorii săi de bază – José Valim. Cred că însuși creatorul explică cel mai bine geneza acestui limbaj într-un interviu:

Este o poveste lungă, dar voi încerca să o fac scurtă și dulce. În 2010, lucram la îmbunătățirea performanței Rails atunci când lucram cu sisteme multi-core, deoarece mașinile și sistemele noastre de producție sunt livrate cu tot mai multe nuclee. Cu toate acestea, întreaga experiență a fost destul de frustrantă, deoarece Ruby nu oferă instrumentul adecvat pentru rezolvarea problemelor de concurență. Atunci am început să mă uit la alte tehnologii și până la urmă m-am îndrăgostit de Mașina Virtuală Erlang.

Am început să folosesc din ce în ce mai mult Erlang și, cu experiență, am observat că îmi lipsesc unele constructe disponibile în multe alte limbi, inclusiv funcționale. Atunci am decis să creez Elixir, ca o încercare de a aduce diferite constructe și instrumente excelente peste Erlang VM.

Și iată, Elixir a fost nascut!

La fel cum Scala îmbunătățește limbajul Java, dar vizează aceeași mașină virtuală de dedesubt (JVM-ul), Elixir profită de mașina virtuală Erlang, veche de decenii, dovedită în luptă.

Acum, o discuție despre Erlang depășește sfera acestui articol, dar minimul pe care trebuie să-l știți este că este cel mai bine păstrat secret al industriei de telecomunicații: dacă rețelele noastre telefonice sunt mult mai fiabile decât sistemele noastre bazate pe web, totul se datorează faptului că Erlang.

În termeni și mai simpli, ceea ce înseamnă asta este. Dacă construiți un sistem în timp real, cum ar fi chatul, Elixir are mult mai puțină memorie RAM și este stabil decât Ruby (sau PHP, Python și Java, de altfel).

O mașină care rulează Ruby și atinge maxim 10.000 de conexiuni simultane poate gestiona cu ușurință 200.000 atunci când folosește Elixir și are totuși suficientă RAM pentru a rula jocuri 2D!

Fragment de cod elixir

Din punct de vedere al sintaxelor, Elixir îl copiază fără rușine pe Ruby, iar cadrul său web dominant, Phoenix, copiază fără rușine pe Rails. Aș spune că este și un lucru bun, deoarece împreună cu Laravel, Grails, Masonite etc., ajungem într-un punct în care toate limbile au cadre asemănătoare șinelor care pot ușura tranziția. Unii ar putea să bată joc de „lipsa de originalitate”, dar cel puțin eu nu mă plâng.

In cele din urma, Elixir este una dintre acele tehnologii care sunt răcoritoare, plăcute și al naibii de practice. Mai multe magazine Ruby (și chiar non-Ruby) se mută la Elixir, iar mari companii precum Pinterest îl folosesc în producție cu rezultate extrem de satisfăcătoare.

Mulți oameni cred că Node.js a fost o încercare improvizată de concurență și va fi înlocuit în curând de Elixir. Trebuie să spun că sunt de acord cu ei. 🙂

4. Kotlin

În 2017 I/O, Google a dezlănțuit o bombă asupra mulțimii nebănuitoare. Compania a anunțat oficial Kotlin ca limba principală pentru dezvoltarea Android, trimițând unde de șoc în industrie.

Acum, faptul că Google a căutat în mod activ să înlocuiască Java nu este o surpriză după ce a fost mușcat de un proces Oracle; cu toate acestea, adoptarea lui Kotlin a fost oarecum neașteptată și există încă șanse mari ca Google să iasă cu mașina sa virtuală în curând. Deocamdată, însă, Kotlin se bucură de un val.

Kotlin a fost dezvoltat de JetBrains, o companie mai cunoscută pentru suita sa de editori de cod nebun de buni. Unul dintre ele, IntelliJ IDEA, formează baza Android Studio. Obiectivele de proiectare ale lui Kotlin sunt siguranța, concizia și interoperabilitatea 100% cu Java.

Mai mult decât orice altceva, compilatorul Kotlin lucrează foarte mult pentru a elimina orice excepții de tip nul-pointer care sunt atât de comune în lumea Java. De asemenea, înlătură destul de puțin proverbiala verbozitate Java, ceea ce va veni ca o ușurare pentru mulți.

Iată o comparație minunată de cod între Java și Kotlin:

Credit imagine: hype.codes

Codul Kotlin este semnificativ mai scurt și are mult mai puțină supraîncărcare cognitivă.

Dar să lămurim un lucru: este foarte puțin probabil ca Kotlin să înlocuiască Java, deși devine rapid un favorit rapid. Cred că zece ani mai târziu, echipele mici și mijlocii nu vor căuta mai departe decât Kotlin, în timp ce grupurile mari vor continua să folosească Java doar din motive vechi.

Acestea fiind spuse, Kotlin are un viitor extrem de strălucit, deoarece face tot ceea ce face Java, poate fuziona cu codul Java fără ca nimeni să observe și este mult mai plăcut!

5. TypeScript

Dumnezeu știe că a trebuit să mă abțin pentru acest loc! Totul în mine striga „Ulm! Elm!”, dar oricât de revoluționare sunt ideile sale sau cât de divină ar fi sintaxa, Elm nu este încă văzut ca o alternativă mainstream pentru lucrul frontal. 🙁 Oricum, să trecem la ceea ce este mainstream: TypeScript.

  Centrală electrică portabilă cu tehnologie de ultimă oră

JavaScript este ca boabele sălbatice: urât și dezagreabil, dar trebuie să-l suportați dacă doriți să supraviețuiți junglei dezvoltării front-end. S-au făcut multe încercări de înlocuire (și cel mai probabil, noul standard WebAssembly va reuși), dar ceea ce a atras cu adevărat atenția tuturor a fost supersetul dezvoltat de Microsoft.

Există șanse excelente de care ați auzit TypeScript: Angular a fost primul cadru care l-a adoptat începând cu versiunea 2, iar oamenii s-au grăbit să ia notă. Asta pentru că TypeScript adaugă niște superputeri fantastice și atât de necesare celui mai faimos limbaj de programare din lume.

Da, este în sfârșit posibil să scrii cod JavaScript nativ fără a suferi și a blestema nașterea cuiva!

Iată îmbunătățirile pe care TypeScript le aduce la masă:

✓ Tastare puternică: în cele din urmă, un șir nu este un număr, iar un număr nu este un obiect, care nu este o matrice goală!

✓ Verificarea tipului în timpul compilării: dacă codul dvs. este compilat corect, este mai mult sau mai puțin garantat că va fi lipsit de negii din timpul de execuție JavaScript.

✓ Clase și module: Da, clasele sunt standard în ES6, dar sunt incluse și în TypeScript, pe lângă un sistem de module îngrijit.

✓ Inferența tipului: pentru tipurile complexe, tipul poate fi identificat cu ușurință de către compilator, scutindu-vă de o bătaie de cap.

✓ Async/wait: cuvintele cheie și modelele async/wait sunt fundamentale, așa că nu vă mai încurcați cu Promises și Callbacks!

Spații de nume, generice, tupluri. . . Aș putea continua și mai departe, dar ar trebui să fie suficient să spun că TypeScript transformă una dintre cele mai proaste experiențe de dezvoltare într-una dintre cele mai bune.

Fragment de cod TypeScript

Impactul TypeScript nu poate fi refuzat. A împins încercări similare precum Dart de la Google din teren (deși încearcă să revină prin Flutter, un cadru de dezvoltare mobil) și a deschis ochii dezvoltatorilor JS asupra beneficiilor unor tipuri mai puternice.

Drept urmare, biblioteci semnificative precum React, D3, Vue (chiar și jQuery!) au acum o versiune TypeScript, iar în cele mai bune magazine de software din întreaga lume, tot codul JavaScript este scris ca cod TypeScript. Antetele TypeScript sunt acum disponibile și pentru Node.js (sincer, dacă un nod își poate îmbunătăți povestea concurenței și își poate corecta gestionarea proastă a memoriei, va dura pentru totdeauna).

S-ar putea să fii surprins să știi că creatorul Node.js, după public regretând creația sa, lucrează la o timp de rulare nou (nu există un site oficial în acest moment; doar depozitul GitHub) care are TypeScript ca limbă principală.

Cea mai bună veste? TypeScript este un mic limba de învățat cu beneficii considerabile în viitor. Dacă sunteți un dezvoltator JavaScript intermediar, veți obține suficient TypeScript în termen de două zile pentru a transfera întregul cod existent!

Concluzie și declinare a răspunderii

Limbi specifice câștigă la fel de multă popularitate ca și cele din acest articol, dar nu au fost incluse în listă din diverse motive. Iată o privire rapidă:

  • Golang: deja stabilit ca o limbă de masă, dacă nu foarte populară. Cred că, în acest moment, Golang are câțiva concurenți care își vor menține cota de piață scăzută.
  • R: R este deja fierbinte în rândul cercetătorilor de date și este puțin probabil să atragă mult dezvoltatorii de aplicații. În plus, nu trebuie să uităm că bibliotecile de învățare automată își fac treptat drum în toate limbile majore (pentru numele lui Dumnezeu, chiar și PHP le are acum!), așa că tot ce trebuie să faceți este să așteptați ceva timp. 🙂
  • Swift: Apple are o strângere de fier asupra ecosistemului său, iar Swift este singura limbă disponibilă acolo. Anterior, Obiectivul C era furie, așa cum este acum Swift. Consider că este înșelătorie și refuz să-l includ aici. 😀

Viitorul este întotdeauna incert și o modalitate de a vă desfășura cariera este să rămâneți la ceea ce funcționează deja și să refuzați să vă „distras atenția”. Dacă faceți asta, Java, PHP, Python, Ruby etc., toate sunt limbi excelente pentru a rămâne. Cu toate acestea, pentru unii dintre noi, norma nu este suficientă. Vor să iasă, să exploreze și să parieze mare pe viitor. Dacă te încadrezi în ultima tabără, una dintre aceste cinci limbi ar trebui să fie în partea de sus a listei de sarcini.

În cele din urmă, atunci când încercați să evaluați o limbă, nu lăsați efortul să vă copleșească pentru că nu este atât de mult. Dacă știți deja câteva limbaje de programare, puteți învăța oricare dintre acestea în maximum două luni, petrecând 5-6 ore pe săptămână. În timp ce fericirea și profiturile monetare care pot fi generate în viitor vor fi de câteva ori mai mari.

Mi-a ratat un limbaj critic aici? Sau poate am ceva greșit în legătură cu limbile enumerate aici? Dacă da, vă rog, lăsați un comentariu și ajutați-mă să mă îmbunătățesc. 🙂