De ce calea către programarea funcțională constă în imperativul, notele programatorului

Recent am primit câteva întrebări similare de la cititorii blogului. Spune, vreau să devin programator. și mă interesează programarea exclusiv funcțională. Din ce limbă ți-ai sfătui să începi și unde să găsești materiale pe ea? Deci, în opinia mea, realitatea aspră este că nici unul dintre limbile funcționale nu este potrivit pentru rolul primului.







Nu, puteți controla cu ușurință Erlang sau altă limbă funcțională. Problema este că nu va fi ușor să găsiți o muncă legată de FP, fără experiență practică în programare. Deoarece, de obicei, în limbi funcționale, oamenii încep să scrie, o mulțime de rahaturi hrănite cu limbi imperative. Deci, ei au deja o parte, probabil, destul de multă experiență în programare. Astfel de oameni nu sunt interesați să explice începătorilor, de exemplu, cum să utilizați Git sau cum să instalați pachete pe Linux. Se presupune că ar trebui să cunoașteți deja aceste lucruri.

Poate că vă îngrijorați că, începând cu imperativul, veți fi mai puțin conștienți de PC. Nu e așa. În primul rând, în timpul nostru, toți programatorii încep călătoria lor cu limbi de bază, Pascal și alte limbi imperative. Se pare că nu a împiedicat pe nimeni să treacă la PC. În al doilea rând, nimic nu împiedică scrierea în limbi imperative într-un stil funcțional. Din câte înțeleg, recent, chiar devine la modă. Programatorii din Java - și încearcă să nu folosească moștenirea și să scrie funcții curate ori de câte ori este posibil. În cele din urmă, cunoașterea altor paradigme decât OP nu va interveni, ci, dimpotrivă, vă va ajuta să stăpâniți PO.

Se pare că limbile pur funcționale nu există cu adevărat. Ca, aparent, și limbi pure orientate spre obiect. Programul ar trebui să aibă efecte secundare, altfel nu face nimic și prin urmare este inutil. În consecință, în orice limbă funcțională există elemente imperative. Scala și OCaml sunt limbi hibride, au atât FP, cât și OOP. În SML există referințe. În Haskell există o monedă IO. Clojure și alte lisps sunt de fapt Python cu macro-uri și multithreading normale. Erlang este, în general, cel mai pur limbaj orientat spre obiect. mult mai curat decât, de exemplu, Java sau C ++.







De asemenea, trebuie remarcat faptul că, pentru a începe să apreciezi cu adevărat FP, trebuie să experimentați toate ororile programării imperative din experiența dvs. Aflați cum este să încercați să remediați o eroare într-un modul format din cinci proceduri, fiecare dintre acestea constând din 1000 de linii de cod Perl. Inutil să spun, toate acestea - cu date variabile, variabile globale și ierarhii de clasă cu șase etaje. Iar eroarea în acest caz este prezența unui tata, o condiție a unei curse sau o scurgere de memorie.

Deci, cu ce limbaj de programare imperativă trebuie să începeți? Vă sfătuiesc să alegeți una dintre limbile interpretate - Perl. Python sau Ruby. Pe cine să alegi - nu contează, sunt la fel de oribile. Aceste limbi sunt interesante deoarece, în orice caz, vă vor fi utile pentru scrierea de scripturi mici care vă fac pentru dvs. orice activitate de rutină. În plus, ele sunt utilizate în mod activ în proiecte web mari precum Yandex, Rambler, Mail.ru sau LiveJournal. Nu știu cât de mult ați dori să lucrați într-una dintre aceste companii, dar cu siguranță veți obține o experiență valoroasă acolo.

Poate că nu sunteți foarte interesat de dezvoltarea web-ului. Apoi, ați putea dori Java sau C # mai mult. În primul caz, va fi mult mai ușor să treceți la limbile funcționale sub JVM, de exemplu, Scala sau Clojure. C # are sens să alegeți dacă vă place foarte mult produsele Microsoft și sunteți interesat de limba F # sau OCaml.

Vă recomandăm să vă concentrați asupra unei limbi funcționale care este folosită de fapt undeva. Erlang, Scala și Clojure pot fi ușor menționate în astfel de limbi. Dialectele vulpilor sunt destul de asemănătoare, deci alegerea uneia dintre ele este o idee bună. Există zvonuri că undeva scriu pe OCaml, dar nu am mai avut niciun loc de muncă înainte. Este bine cunoscut despre existența posturilor vacante pentru programatori pe Haskell, dar recent nu înțeleg cum este posibil să scriem ceva despre el.

Haskell. totuși, este interesantă prin capacitatea sa de a rupe creierul. Într-un mod bun. După ce ați scris cu jumătate de an despre Haskell, fără îndoială veți deveni un programator mai bun pe Erlang, Java sau ceea ce scrieți acolo. Tot în unele cărți despre programarea funcțională sunt exemple de cod pe Haskell. Astfel, cunoașterea lui, cu toate probabilitățile, nu va face rău.

Materialele specifice din FP nu vor fi sfătuite, deoarece totul depinde de alegerea limbajului de programare. Există o mulțime de cărți despre programarea funcțională, în plus, atât în ​​limba engleză, cât și în limba rusă. În opinia mea, nu există lipsă de materiale educaționale.

Ei bine, în concluzie, observ că nu pretind că știu adevărul în ultimă instanță. Probabil că acum vacanța lui Haskeelist cu singura cerință față de candidat - abilitatea de a folosi Google, care depreciază mult din ceea ce a fost scris mai sus - a fost descoperit undeva.

Îți place postul? Trimiteți-le altora:







Articole similare

Trimiteți-le prietenilor: