Alan Kay, creador de OOP, sobre desenvolupament, Lisp i OOP

Alan Kay, creador de OOP, sobre desenvolupament, Lisp i OOP

Si mai no heu sentit parlar d'Alan Kay, almenys heu escoltat les seves famoses cites. Per exemple, aquesta cita de 1971:

La millor manera de predir el futur és inventar-lo.
La millor manera de predir el futur és inventar-lo.

L'Alan té una carrera molt colorida en informàtica. Va rebre Premi Kyoto и Premi Turing pel seu treball sobre el paradigma de programació orientada a objectes. Va ser un dels pioners en el camp dels ordinadors personals i les interfícies gràfiques, va desenvolupar Petita xerrada és un dels primers llenguatges de programació més influents de tots els temps.

En la nostra Hexlete, especialment a xatejar, la pregunta "què és OOP" i "què volia dir realment Alan Kay" es planteja constantment. Aquesta publicació conté cites interessants d'Alan sobre l'estat del desenvolupament modern, la POO i el llenguatge Lisp.

Sobre el desenvolupament de programari

Alan Kay creu que la revolució informàtica encara està per arribar (L'autèntica revolució informàtica encara no ha passat), i el desenvolupament de programari es desenvolupa en proporció inversa a la Llei de Moore: el maquinari millora cada any, però el programari s'infla innecessàriament:

el problema és feble, idees i eines poc escalables, mandra, manca de coneixement, etc.

Descriu bé aquesta situació broma curta:

El que l'Andy dóna, el Bill ho treu
Andy va donar, Bill va agafar

Andy Grove, director general d'Intel, i Bill Gates, llavors director general de Microsoft.

Millorar l'estat actual de desenvolupament era l'objectiu del projecte de recerca PASOS cap a la reinvenció de la programació (pdf). L'objectiu és aconseguir la "llei de Moore" en expressivitat "reduint la quantitat de codi requerit en 100, 1000, 10000 vegades o més".

En el seu informe revelador Programació i escalat (vídeo) Aquest tema es tracta amb més detall. Segons Alan, l'enginyeria del programari s'ha estancat i s'està convertint en una ciència oblidada que no pot mantenir-se al dia amb el maquinari i altres ciències i disciplines d'enginyeria. Els grans projectes s'han convertit en abocadors de codi i han arribat a un punt en què ningú incapaç d'entendre 100 milions de línies de codi MS Vista o MS Word. Però, en realitat, hi hauria d'haver un ordre de magnitud menys de codi en aquests projectes.

Alan considera Internet, protocols TCP/IP, intèrprets LISP, Nile (DSL matemàtic per a gràfics vectorials) i OMeta (OO PEG) (PDF) exemples de programari elegant amb codi mínim.

Ell anomena Internet (TCP/IP) un dels pocs projectes de programari a gran escala que s'ha dissenyat correctament, i el seu nivell de complexitat està en equilibri amb el nivell de complexitat (complicació vs. complexitat). Amb menys de 20 línies de codi, el projecte funciona com un sistema viu i dinàmic capaç de suportar milers de milions de nodes i mai s'ha desconnectat des del seu llançament inicial el setembre de 1969. Simplement vam deixar de considerar Internet com un projecte de programari normal creat per persones:

Internet està tan ben desenvolupat que moltes persones el tracten com un recurs natural, com l'oceà Pacífic, més que com un producte del treball humà. Quan va ser l'última vegada que vam veure una tecnologia tan estable, clara i sense errors? En comparació, la web és una tonteria. La web va ser creada per aficionats.

Sobre la programació orientada a objectes

El primer que em va interessar va ser el seu original Visió OOP. La seva experiència en microbiologia va tenir un paper important:

Vaig pensar que els objectes eren com cèl·lules biològiques i/o ordinadors individuals en una xarxa que només es podien comunicar mitjançant missatges.

i experiència en matemàtiques:

La meva experiència en matemàtiques em va fer adonar que cada objecte pot tenir diverses àlgebres, es poden combinar en famílies, i això pot ser molt útil.

Idees per a l'enquadernació tardana i meta-funcions potents de LISPa:

La segona fase és comprendre LISPa i utilitzar aquesta comprensió per crear estructures més fàcils, més petites, més potents i posterior vinculació.

I aviat Alan va començar a donar suport a la idea que els llenguatges dinàmics són el futur del desenvolupament de programari (pdf). En particular, la facilitat de canvi és important per a ell:

L'enquadernació tardana permet que les idees que van sorgir més tard en el procés de desenvolupament s'incorporin al projecte amb menys esforç (en comparació amb sistemes vinculats anteriors com C, C++, Java, etc.)

I el potencial de canvis sobre la marxa i iteracions més ràpides:

Una de les idees clau és que el sistema hauria de continuar funcionant durant les proves, especialment mentre es fan canvis. Fins i tot els canvis importants han de ser graduals i no trigar més d'una fracció de segon.

que hi falta llenguatges tipificats estàticament:

Si utilitzeu llenguatges d'enquadernació primerenca, com fa la majoria de la gent, us tanqueu al que ja heu escrit. Ja no es podrà reformular fàcilment.

Sorprenentment, els seus pensaments sobre la POO es limitaven a això:

OOP per a mi són missatges, retenció i protecció local, ocultació estatal i vinculació tardana de tot. Això es pot fer a Smalltalk i a LISP.

I res de l'herència. Això no és l'OOP que avui coneixem:

M'agradaria haver fet servir el terme "objecte" per a aquest tema fa molt de temps perquè fa que moltes persones es concentrin en les idees menors.

La gran idea que els llenguatges OO moderns escrits estàticament no tenen:

La gran idea són els "missatges"

Creu en centrar-se en els missatges, l'acoblament fluix i les interaccions dels mòduls més que en les parts internes d'un objecte:

La clau per crear bons sistemes escalables és treballar els mecanismes de comunicació entre mòduls i no treballar les seves propietats internes i el seu comportament.

Els idiomes mecanografiats estàticament li semblen defectuós:

No estic en contra dels tipus, però no conec cap tipus de sistema que no provoqui dolor. Així que encara m'agrada l'escriptura dinàmica.

Alguns idiomes populars avui utilitzen el missatge de Smalltalk per transmetre idees, enquadernació tardana i no enténforwardInvocation в Objectiu-Cmanca_metode в Ruby и noSuchMethod a Google dard.

Destrueix-ho tot i crea alguna cosa millor

Alan té una teoria interessant sobre el desenvolupament de la informàtica:

Em sembla que només hi ha un tipus d'informàtica, i que la ciència és com construir ponts. Algú construeix ponts, algú els destrueix i crea noves teories. I hem de seguir construint ponts.

Sobre LISP

Alan Kay creu en Lisp

millor llenguatge de programació de tots els temps

I que tot graduat en informàtica l'hauria d'estudiar:

La majoria de les persones que cursen graus en CS no entenen la importància de Lisp. Lisp és la idea més important en informàtica.

Sobre l'ambient i el context adequats

Sovint recorda l'atmosfera única PARC Xerox и CORD, on "la visió és més important que els objectius" i "finançar persones, no projectes".

El punt de vista val 80 punts de coeficient intel·lectual.

Alan Kay diu:

La història d'ARPA/PARC demostra com una combinació de visió, finançament modest, el context i el procés adequats poden donar lloc màgicament a noves tecnologies que no només afecten la civilització sinó que també creen un valor enorme per a la societat.

I és cert. Fes una ullada a la impressionant llista d'invents del PARC, molts dels quals van tenir un paper molt important en el desenvolupament del nostre món. Per exemple:

  • Impressores làser
  • Programació orientada a objectes / Smalltalk
  • Ordinadors personals
  • Ethernet / informàtica distribuïda
  • GUI / ratolí d'ordinador / WYSIWYG

I en CORD creat ARPANET, que es va convertir en el progenitor d'Internet.

PS Alan Kay respon a les preguntes de la comunitat Hacker News.

Font: www.habr.com

Afegeix comentari