ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 51
Abonament PDF

Discuție cu Larry Wall - creatorul limbajului PERL

Anca Grosan
Full stack developer Voluntar @ YAPC



INTERVIU

Larry Wall este cunoscut cel mai bine drept creatorul limbajului Perl. Ne-am bucurat să vorbim cu el la conferința anuală de Perl, YAPC::EU (22 - 25 August 2016), ținută la Cluj.

Care credeți că au fost factorii care au făcut ca Perl să aibă succes? În ce moment ați realizat impactul său global? Ați pregătit ceva pentru asta?

M-am pregătit pentru acest lucru, deși nu conștient. M-am asigurat că va fi un limbaj care să îmi placă. Am vrut să mă ocup și de procesare de text, și de recunoașterea tiparelor. Eram administrator de sistem la acel moment și doream să pot accesa bazele de date disponibile pe calculatorul meu. Deci semăna cu C, puteai să folosești Perl pentru programarea de sistem.

În ceea ce privește Perl 4, am constatat că oamenii creau versiuni speciale de Perl ca să comunice cu diverse baze de date - Sybase, Oracle, etc.. Am considerat că acesta este un lucru rău pentru că s-ar putea să doresc să comunic cu două baze de date simultan. Deci în Perl 5 ne-am asigurat că există un mecanism de exindere care să ne permită să comunicăm cu diferite baze de date pe care le poți încărca în diferite module. Astfel, poți încărca modulul Sybase și modulul Oracle în același timp și poți transfera date. Perl a devenit acel tip de limbaj cu care poți lipi lucrurile între ele.

Perl a devenit un produs de succes mai ales datorită World Wide Web, deși nu am planificat nimic în această privință. WWW funcționează pe baza HTML – care este text – și folosește baze de date, asa ca oamenii au început să folosească Perl pentru a-și crea website-urile și pentru a comunica cu bazele lor de date.

Perl a fost folosit și pentru alte scopuri. BioPerl a avut un real succes. Încercăm să facem ceva similar cu Perl 6. Nu știm care va fi “aplicația bombă” pentru Perl 6, dar vrem să punem bucățile de puzzle la locul lor pentru ca oamenii să poată crea aplicații.

De ce ar trebui să învețe oamenii Perl 6?

Din multe puncte de vedere, Perl 6 este un limbaj cu totul nou și ne așteptăm ca utilizatorilor să le ia ceva timp până se obișnuiesc și răspândesc vestea. Nu dorim marketing agresiv, vrem să creștem natural. Dacă este suficient de bun, Perl 6 va crește.

Pentru cei mai mulți programatori este distractiv. Este foarte puternic prin faptul ca nu îți stă în drum și îți oferă instrumentele de care ai nevoie. Din punct de vedere creativ, este cel mai bun limbaj de programare.

A fost creat astfel încât să fie nu doar pe placul programatorilor, ci și pe placul șefilor lor. Unul dintre motivele pentru care șefii aleg limbaje “instituționalizate” precum Java se datorează așteptărilor pe care aceștia le au la nivel de scalabilitate și mentenanță, iar noi oferim aceste lucruri cu Perl 6. Este portabil pe JVM. Perl 6 are propriul VM numit MoarVM, dar funcționează și pe JVM.

Perl 6 vrea să revoluționeze programarea la nivel de limbaj. Aveți în vedere și metode de a-l îmbunătăți, precum IDE-uri?

Desigur, limbaje precum Java au folosit eficient IDE-urile. Astfel de limbaje au nevoie de IDE-uri pentru că aceasta este natura lor. Au nevoie de ajutor pentru a reține toate numele metodelor și toate tipurile de obiecte. Sunt multe lucruri ce trebuie memorate, iar IDE-urile ajută.

În Perl 6 nu ne-am axat pe acest lucru, dar l-am avut în vedere. Există multe moduri de a face programare, multe paradigme, iar pe unele le-am și abordat direct: programarea orientată pe obiect sau programarea funcțională. În ceea ce privește alte aspecte – precum programarea logică – noi nu facem build la tot, precum Prolog, dar facem cât se poate de mult ca oamenii să poată merge în orice direcție.

Același lucru e valabil și pentru un IDE: Perl 5 este compilat într-un format intern care nu este expus. Odată cu Perl 6 compilatorul este scris în Perl 6, structurile de date sunt scrise în Perl 6 și pot fi serializate în JSON sau YAML. Cu alte cuvinte, va fi mult mai ușor să luați compilatorul Perl 6 și să îi atașați un IDE. Am realizat acest lucru pentru a ne asigura că ne va fi ușor când vom ajunge la un stagiu când și alții vor fi motivați să facă ceva similar. Ar putea fi un programator Emacs. Există și alte IDE-uri, evident.

Cum arată o zi de muncă? Ce editoare folosiți?

Am folosit Emacs dar degetul meu mic a obosit, așa că am învățat să folosesc vim (de fapt atunci era vi).

Ziua mea de lucru arată astfel: de îndată ce mă trezesc, trebuie să studiez tot ce s-a întâmplat peste noapte. Sunt mulți programatori Perl și Perl 6 în Europa care se trezesc cu 8 sau 9 ore înainte să mă trezesc în California. Deci, se întâmplă foarte multe lucruri peste noapte, iar eu trebuie să fiu la curent cu acestea. Există și un backlog pe IRC. Apoi mă uit peste rapoartele de bug-uri și decid pe care ar trebui să îl rezolv primul. Uneori trebuie să iau decizii cu privire la design, iar apoi trebuie să îi conving pe oameni că acestea sunt deciziile corecte.

Care este procesul pe care îl aplicați când faceți development? Utilizați TDD?

Folosesc TDD, dar nu mereu. Nu îmi scriu toate testele de la început cum poate ar trebui să o fac. Uneori am un test informal care este doar un mic program pe care îl tot rulez până când bug-ul este rezolvat, iar apoi transform programul într-un test adevărat. Stilul meu de programare este iterativ: fac o schimbare și rulez, fac o schimbare și rulez etc.. Așa funcționează creierul meu, mă lasă să experimentez.

Gândesc vizual. Am scopuri stabilite, dar nu știu foarte clar cum le pot atinge. Un lucru foarte important, când ești designer de limbaj, este să poți să recunoști ambiguitatea. Trebuie să poți spune: acesta este lucrul pe care oamenii vor să îl facă, dar prima soluție pe care o voi găsi s-ar putea să nu fie cea mai bună. Trebuie să privești munca ta din multe puncte de vedere și trebuie să pui în balanță compromisurile. Unele soluții pot fi tentante la prima vedere, dar dacă te gândești în detaliu, îți dai seama că nu este neapărat modul în care vrei să faci acest lucru. Uneori, cu cât te gândești mai mult, cu atât mai mult poți unifica cerințele pentru a obține ceea ce vrei să faci. Totul se întâmplă subconștient – bolborosește undeva pe fundal – tot ce își doresc oamenii, ideile pentru a atinge obiectivele, apoi o idee ajunge la suprafață și îmi dau seama că este răspunsul corect, conștient, dar care nu a fost generat de partea conștientă.

Operatorul smart match nu a mai fost întreținut din 5.18, deși promitea multe. V-ați gândit să îl aduceți înapoi?

Motivul pentru care funcționează în Perl 6 este că știe mereu care este tipul variabilelor. Perl 5 e uneori confuz în această privință. Uneori nu știe dacă o variabilă conține un string sau un număr. Deci, dacă faceți smart matching și vă așteptați să faceți string matching sau number matching s-ar putea să existe o confuzie în această privință dacă nu utilizați un literal. Acesta ar trebui să fie non-ambiguu, chiar și în Perl.

Mai există și alte feature-uri în Perl 6 care fac ca „smart match matching” să funcționeze foarte bine. Logica juncțională ne permite să avem “orice” sau “tot” pentru liste, din punct de vedere semantic. Perl 5 nu are asta.

Având studii și o pasiune pentru lingvistică, credeți că limba nativă a unei persoane poate să influențeze modul în care scrie cod? Ați observat vreun tipar?

E o întrebare foarte interesantă. Cred că cea mai deosebită limbă pe care o cunosc este japoneza. În limbile europene avem structura “subiect - verb – obiect/complement”, dar în japoneză verbul este mereu la sfârșit. În loc de prepoziții, japoneza are postpoziții. Totul este invers. Este surpinzător că în ciuda acestui fapt, japonezii nu programează mai mult în limbaje RPN, precum Forth sau Postscript. Limbajele orientate pe obiecte tind să pună verbul la final. Asta poate explica de ce Ruby a început cu programarea orientată pe obiecte.

Aveți o limbă moartă/vie preferată?

Am studiat greaca clasică. Am studiat germana acum mulți ani. Meine Deutsch kannst vergessen. În ultimii 15 ani am învățat de unul singur japoneză și puțină chineză. Nu sunt încă foarte bun. Datorită cunoștințelor mele de lingvistică, pot pune întrebările corect, dar nu pot înțelege răspunsurile. Nativii vorbesc prea repede sau poate eu ascult prea încet.

Când merg în Japonia sau China pot citi majoritatea semnelor stradale, dar nu aș putea să le pronunț pentru că le citesc doar pentru a înțelege semnificația caracterelor. Acesta este cel mai interesant lucru al limbilor ideografice precum chineza: poți înțelege sensul fără a ști cum se pronunță cuvântul. Acesta este un lucru foarte interesant, deoarece ne gândim la chineză ca la o limbă unitară, când, de fapt, aceasta are aproximativ 10 dialecte. Oamenii pot să ajungă să nu se înțeleagă între ei, dar pot să comunice prin scris deoarece folosesc aceleași caractere.

Visați în alte limbi?

Nu visez prea mult în engleză. Gândirea mea este non-verbală. Unii oameni gândesc prin intermediul limbii. Soția mea o face. Gândurile ei se materializează sub formă de cuvinte. Eu gândesc în imagini și relații, apoi mă străduiesc să le exprim în cuvinte. Nu visez în cuvinte.

Vă mulțumesc foarte mult!

Cu plăcere.

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects