Alan Kay, creatorul OOP, despre dezvoltare, Lisp și OOP

Alan Kay, creatorul OOP, despre dezvoltare, Lisp și OOP

Dacă nu ai auzit niciodată de Alan Kay, ai auzit cel puțin citatele lui celebre. De exemplu, acest citat din 1971:

Cel mai bun mod de a prezice viitorul este să-l inventezi.
Cel mai bun mod de a prezice viitorul este să-l inventezi.

Alan are o carieră foarte colorată în informatică. El a primit Premiul Kyoto и Premiul Turing pentru munca sa asupra paradigmei de programare orientată pe obiecte. A fost unul dintre pionierii în domeniul computerelor personale și al interfețelor grafice, pe care le-a dezvoltat Vorbă mică este unul dintre primele cele mai influente limbaje de programare din toate timpurile.

Avem în Hexlete, mai ales în chat, întrebarea „ce este OOP” și „ce a vrut să spună cu adevărat Alan Kay” este ridicată în mod constant. Această postare conține citate interesante de la Alan despre starea dezvoltării moderne, OOP și limbajul Lisp.

Despre dezvoltarea de software

Alan Kay crede că revoluția computerelor urmează să vină (Adevărata revoluție a computerelor nu s-a întâmplat încă), iar dezvoltarea software-ului se dezvoltă invers proporțional cu Legea lui Moore: hardware-ul se îmbunătățește în fiecare an, dar software-ul devine inutil:

problema este slabă, idei și instrumente slab scalabile, lenea, lipsa de cunoștințe etc.

Descrie bine această situație glumă scurtă:

Ceea ce dă Andy, Bill ia
Andy a dat, Bill a luat

Andy Grove, CEO al Intel și Bill Gates, atunci CEO al Microsoft.

Îmbunătățirea stării actuale de dezvoltare a fost scopul proiectului de cercetare PASI spre reinventarea programarii (pdf). Scopul este de a atinge „Legea lui Moore” în expresivitate prin „reducerea cantității de cod necesar de 100, 1000, 10000 de ori sau mai mult”.

În raportul său revelator Programare și scalare (video) Acest subiect este discutat mai detaliat. Potrivit lui Alan, ingineria software a stagnat și devine o știință uitată care nu poate ține pasul cu hardware-ul și alte științe și discipline de inginerie. Proiectele mari au devenit depozite de cod și au ajuns la un punct în care nimeni nu incapabil să înțeleagă 100 de milioane de linii de cod MS Vista sau MS Word. Dar, în realitate, ar trebui să existe un ordin de mărime mai mic de cod în astfel de proiecte.

Alan ia în considerare Internetul, protocoalele TCP/IP, interpreții LISP, Nile (Math DSL pentru grafică vectorială) și OMeta (OO PEG) (PDF) exemple de software elegant cu cod minim.

El numește Internetul (TCP/IP) unul dintre puținele proiecte software la scară largă care a fost proiectat corect, iar nivelul său de complexitate este în echilibru cu nivelul de complexitate (complicație vs. complexitate). Cu mai puțin de 20 de linii de cod, proiectul funcționează ca un sistem viu, dinamic, capabil să suporte miliarde de noduri și nu a fost niciodată offline de la lansarea sa inițială în septembrie 1969. Pur și simplu am încetat să considerăm că Internetul este un proiect software normal creat de oameni:

Internetul este atât de bine dezvoltat încât mulți oameni îl tratează mai degrabă ca pe o resursă naturală, precum Oceanul Pacific, decât ca pe un produs al muncii umane. Când a fost ultima dată când am văzut o astfel de tehnologie stabilă, clară, fără erori? Prin comparație, Web-ul este o prostie. Web-ul a fost creat de amatori.

Despre programarea orientată pe obiecte

Primul lucru care m-a interesat a fost al lui iniţială viziune OOP. Experiența sa în microbiologie a jucat un rol important:

M-am gândit la obiecte ca celule biologice și/sau computere individuale dintr-o rețea care ar putea comunica doar prin mesaje.

și experiență în matematică:

Experiența mea în matematică m-a făcut să realizez că fiecare obiect poate avea mai multe algebre, acestea pot fi combinate în familii, iar acest lucru poate fi foarte util.

Idei pentru legarea tardivă și meta-funcții puternice ale LISPa:

A doua fază este înțelegerea LISPa și utilizarea acestei înțelegeri pentru a crea structuri mai ușoare, mai mici, mai puternice și mai târziu legarea.

Și curând Alan a început să susțină ideea că limbile dinamice sunt viitorul dezvoltării software (pdf). În special, ușurința schimbării este importantă pentru el:

Legarea tardivă permite ca ideile care au venit mai târziu în procesul de dezvoltare să fie încorporate în proiect cu mai puțin efort (comparativ cu sistemele anterioare legate precum C, C++, Java etc.)

Și potențialul de schimbări din mers și iterații mai rapide:

Una dintre ideile cheie este că sistemul ar trebui să continue să funcționeze în timpul testării, mai ales în timp ce se fac modificări. Chiar și schimbările majore ar trebui să fie treptate și să nu dureze mai mult de o fracțiune de secundă.

care lipsește în limbi tipizate static:

Dacă utilizați limbaje de legare timpurie, așa cum o fac majoritatea oamenilor, atunci vă blocați în ceea ce ați scris deja. Nu se va mai putea reformula cu ușurință.

În mod surprinzător, gândurile sale despre OOP s-au limitat la asta:

OOP pentru mine este mesaje, reținere și protecție locală, ascunderea statului și legarea cu întârziere a tuturor. Acest lucru se poate face în Smalltalk și în LISP.

Și nimic despre moștenire. Acesta nu este OOP pe care o cunoaștem astăzi:

Mi-aș fi dorit să fi folosit termenul „obiect” pentru acest subiect cu mult timp în urmă, deoarece îi determină pe mulți să se concentreze asupra ideilor mai mici.

Ideea cea mare care lipsește limbilor moderne OO tipizate static:

Ideea mare sunt „mesajele”

El crede în concentrarea pe mesaje, cuplarea liberă și interacțiunile cu module, mai degrabă decât pe interiorul unui obiect:

Cheia pentru crearea unor sisteme scalabile bune este elaborarea mecanismelor de comunicare între module și nu elaborarea proprietăților și comportamentului lor intern.

I se par limbi scrise static defect:

Nu sunt împotriva tipurilor, dar nu cunosc vreun sistem tip care să nu provoace durere. Deci încă îmi place tastarea dinamică.

Unele limbi populare folosesc astăzi ideile de transmitere a mesajelor Smalltalk, legarea tardivă și nu înțelegeforwardInvocation в Obiectiv-Cmethod_missing в Rubin и noSuchMethod în Google Lance.

Distruge totul și creează ceva mai bun

Alan are o teorie interesantă despre dezvoltarea informaticii:

Mi se pare că există un singur tip de informatică și că știința este ca și cum a construi punți. Cineva construiește punți, iar cineva le distruge și creează noi teorii. Și trebuie să continuăm să construim poduri.

Despre LISP

Alan Kay îl crede pe Lisp

cel mai bun limbaj de programare din toate timpurile

Și că fiecare absolvent de informatică ar trebui să o studieze:

Majoritatea oamenilor care urmează diplome în CS nu înțeleg importanța Lisp. Lisp este cea mai importantă idee din informatică.

Despre atmosfera și contextul potrivit

Își amintește adesea atmosfera unică din PARC Xerox и ARPA, unde „viziunea este mai importantă decât obiectivele” și „finanțarea oamenilor, nu a proiectelor”.

Punctul de vedere valorează 80 de puncte IQ.

Alan Kay spune:

Povestea ARPA/PARC demonstrează cum o combinație de viziune, finanțare modestă, contextul și procesul potrivit pot da naștere magică a noilor tehnologii care nu numai că influențează civilizația, ci și creează o valoare enormă pentru societate.

Și este adevărat. Aruncă o privire la lista impresionantă de invenții a PARC, dintre care multe au jucat un rol foarte important în dezvoltarea lumii noastre. De exemplu:

  • Imprimante laser
  • Programare orientată pe obiecte / Smalltalk
  • Calculatoare personale
  • Ethernet / calcul distribuit
  • GUI / mouse de computer / WYSIWYG

Și în ARPA creată ARPANET, care a devenit precursorul Internetului.

PS Alan Kay răspunde la întrebări din partea comunității Hacker News.

Sursa: www.habr.com

Adauga un comentariu