Alan Kay, creatore di OOP, sullo sviluppo, Lisp e OOP

Alan Kay, creatore di OOP, sullo sviluppo, Lisp e OOP

Se non hai mai sentito parlare di Alan Kay, almeno hai sentito le sue famose citazioni. Ad esempio, questa citazione del 1971:

Il modo migliore per prevedere il futuro è inventarlo.
Il modo migliore per predire il futuro è inventarlo.

Alan ha una carriera molto movimentata nel campo dell'informatica. Ha ricevuto Premio Kyoto и Premio Turing per il suo lavoro sul paradigma della programmazione orientata agli oggetti. È stato uno dei pionieri nel campo dei personal computer e delle interfacce grafiche da lui sviluppate Smalltalk è uno dei primi linguaggi di programmazione più influenti di tutti i tempi.

Nel nostro Hexlete, specialmente in Chiacchierare, la domanda "cos'è l'OOP" e "cosa intendeva veramente Alan Kay" viene costantemente sollevata. Questo post contiene citazioni interessanti di Alan sullo stato dello sviluppo moderno, sull'OOP e sul linguaggio Lisp.

Informazioni sullo sviluppo del software

Alan Kay ritiene che la rivoluzione informatica debba ancora arrivare (La vera rivoluzione informatica non è ancora avvenuta), e lo sviluppo del software si sviluppa in maniera inversamente proporzionale alla Legge di Moore: l'hardware migliora ogni anno, ma il software si gonfia inutilmente:

il problema sono idee e strumenti deboli, poco scalabili, pigrizia, mancanza di conoscenza, ecc.

Descrive bene questa situazione breve battuta:

Ciò che Andy dà, Bill toglie
Andy ha dato, Bill ha preso

Andy Grove, CEO di Intel, e Bill Gates, allora CEO di Microsoft.

Migliorare lo stato attuale dello sviluppo era l’obiettivo del progetto di ricerca PASSI verso la reinvenzione della programmazione (pdf). L'obiettivo è raggiungere la "Legge di Moore" in termini di espressività "riducendo la quantità di codice richiesto di 100, 1000, 10000 volte o più".

Nel suo rapporto illuminante Programmazione e ridimensionamento (video) Questo argomento è discusso in modo più dettagliato. Secondo Alan, l’ingegneria del software è in fase di stallo e sta diventando una scienza dimenticata che non riesce a tenere il passo con l’hardware e altre scienze e discipline ingegneristiche. I grandi progetti sono diventati dump del codice e hanno raggiunto un punto in cui nessuno incapace di comprendere 100 milioni di righe di codice MS Vista o MS Word. Ma in realtà, in tali progetti dovrebbe esserci un ordine di grandezza in meno di codice.

Alan considera Internet, i protocolli TCP/IP, gli interpreti LISP, Nile (DSL matematica per grafica vettoriale) e OMeta (OO PEG) (PDF) esempi di software elegante con codice minimo.

Egli definisce Internet (TCP/IP) uno dei pochi progetti software su larga scala che è stato progettato correttamente e il suo livello di complessità è in equilibrio con il livello di complessità (complicazione contro complessità). Con meno di 20 righe di codice, il progetto opera come un sistema vivo e dinamico in grado di supportare miliardi di nodi e non è mai andato offline dal suo lancio iniziale nel settembre 1969. Abbiamo semplicemente smesso di considerare Internet come un normale progetto software creato dalle persone:

Internet è così ben sviluppata che molte persone la considerano una risorsa naturale, come l’Oceano Pacifico, piuttosto che un prodotto del lavoro umano. Quando è stata l'ultima volta che abbiamo visto una tecnologia così stabile, chiara e priva di errori? In confronto, il Web è una sciocchezza. Il web è stato creato da dilettanti.

Informazioni sulla programmazione orientata agli oggetti

La prima cosa che mi interessò fu la sua iniziale Visione OOP. La sua esperienza in microbiologia ha giocato un ruolo importante:

Pensavo agli oggetti come a cellule biologiche e/o singoli computer su una rete che potevano comunicare solo tramite messaggi.

ed esperienza in matematica:

La mia esperienza in matematica mi ha fatto capire che ogni oggetto può avere più algebre, che possono essere combinati in famiglie, e questo può essere molto utile.

Idee per l'associazione tardiva e potenti meta-funzionalità di LISPa:

La seconda fase consiste nel comprendere LISPa e utilizzare tale comprensione per creare strutture più semplici, più piccole e più potenti e successivamente legarle.

E presto Alan iniziò a sostenere l'idea che i linguaggi dinamici siano il futuro dello sviluppo software (pdf). In particolare, per lui è importante la facilità di cambiamento:

L'associazione tardiva consente di incorporare nel progetto le idee che sono arrivate più tardi nel processo di sviluppo con meno sforzo (rispetto ai sistemi associati precedenti come C, C++, Java, ecc.)

E il potenziale per modifiche al volo e iterazioni più veloci:

Una delle idee chiave è che il sistema dovrebbe continuare a funzionare durante i test, soprattutto mentre vengono apportate modifiche. Anche i cambiamenti più importanti dovrebbero essere graduali e non richiedere più di una frazione di secondo.

che manca linguaggi tipizzati staticamente:

Se usi linguaggi vincolanti, come fa la maggior parte delle persone, ti blocchi in ciò che hai già scritto. Non sarà più possibile riformularlo facilmente.

Sorprendentemente, i suoi pensieri sull'OOP erano limitati a questo:

L'OOP per me significa messaggi, blocco e protezione locale, occultamento statale e rilegatura tardiva di tutto. Questo può essere fatto in Smalltalk e in LISP.

E niente sull'eredità. Questa non è l'OOP che conosciamo oggi:

Vorrei aver usato il termine "oggetto" per questo argomento molto tempo fa perché induce molte persone a concentrarsi sulla minore delle idee.

La grande idea che manca ai moderni linguaggi OO tipizzati staticamente:

La grande idea sono i "messaggi"

Crede nel concentrarsi sui messaggi, sull'accoppiamento libero e sulle interazioni dei moduli piuttosto che sugli aspetti interni di un oggetto:

La chiave per creare buoni sistemi scalabili è elaborare i meccanismi di comunicazione tra i moduli e non elaborare le loro proprietà e comportamenti interni.

Gli sembrano linguaggi tipizzati staticamente difettoso:

Non sono contrario ai tipi, ma non conosco nessun sistema di tipi che non causi dolore. Quindi mi piace ancora la digitazione dinamica.

Alcune lingue popolari oggi utilizzano le idee di passaggio dei messaggi di Smalltalk, la rilegatura tardiva e non capisceforwardInvocazione в Objective-Cmetodo_mancante в Ruby и noSuchMethod su Google Dardo.

Distruggi tutto e crea qualcosa di meglio

Alan ha un'interessante teoria sullo sviluppo dell'informatica:

Mi sembra che esista un solo tipo di informatica, e che la scienza sia come costruire ponti. Qualcuno costruisce ponti e qualcuno li distrugge e crea nuove teorie. E dobbiamo continuare a costruire ponti.

Informazioni su LISP

Alan Kay crede al Lisp

miglior linguaggio di programmazione di tutti i tempi

E che ogni laureato in informatica dovrebbe studiarlo:

La maggior parte delle persone che conseguono una laurea in informatica non comprendono l'importanza del Lisp. Lisp è l'idea più importante nell'informatica.

Sulla giusta atmosfera e contesto

Ricorda spesso l'atmosfera unica di Xerox PARCO и ARPA, dove “la visione è più importante degli obiettivi” e “finanziare persone, non progetti”.

Il punto di vista vale 80 punti QI.

Alan Kay dice:

La storia dell’ARPA/PARC dimostra come una combinazione di visione, finanziamenti modesti, contesto e processo giusti possano magicamente far nascere nuove tecnologie che non solo hanno un impatto sulla civiltà, ma creano anche un enorme valore per la società.

Ed è vero Dai un'occhiata all'impressionante elenco di invenzioni del PARC, molti dei quali hanno svolto un ruolo molto importante nello sviluppo del nostro mondo. Per esempio:

  • Stampanti laser
  • Programmazione orientata agli oggetti/Smalltalk
  • Computer personale
  • Ethernet/calcolo distribuito
  • GUI/mouse del computer/WYSIWYG

E in ARPA ho creato ARPANET, che divenne il progenitore di Internet.

PS Alan Kay risponde alle domande della comunità di Hacker News.

Fonte: habr.com

Aggiungi un commento