Alan Kay, creador de OOP, sobre o desenvolvemento, Lisp e OOP

Alan Kay, creador de OOP, sobre o desenvolvemento, Lisp e OOP

Se nunca escoitaches falar de Alan Kay, polo menos escoitaches as súas famosas citas. Por exemplo, esta cita de 1971:

A mellor forma de prever o futuro é inventándoo.
A mellor forma de prever o futuro é inventándoo.

Alan ten unha carreira moi colorida en informática. Recibiu Premio Kioto и Premio Turing polo seu traballo sobre o paradigma de programación orientada a obxectos. Foi un dos pioneiros no campo dos ordenadores persoais e das interfaces gráficas, desenvolveu Pequena conversa é unha das primeiras linguaxes de programación máis influentes de todos os tempos.

No noso Hexlete, especialmente en chatear, a pregunta "que é OOP" e "que quería dicir realmente Alan Kay" é constante. Esta publicación contén citas interesantes de Alan sobre o estado do desenvolvemento moderno, OOP e a linguaxe Lisp.

Sobre o desenvolvemento de software

Alan Kay cre que a revolución informática aínda está por chegar (A verdadeira revolución informática aínda non ocorreu), e o desenvolvemento de software desenvólvese en proporción inversa á Lei de Moore: o hardware mellora cada ano, pero o software vólvese innecesariamente inchado:

o problema é feble, ideas e ferramentas pouco escalables, preguiza, falta de coñecemento, etc.

Describe ben esta situación broma curta:

O que Andy dá, Bill quítao
Andy deu, Bill tomou

Andy Grove, CEO de Intel, e Bill Gates, entón CEO de Microsoft.

Mellorar o estado actual de desenvolvemento foi o obxectivo do proxecto de investigación PASOS cara á reinvención da programación (pdf). O obxectivo é acadar a "Lei de Moore" en expresividade "reducindo a cantidade de código requirido en 100, 1000, 10000 veces ou máis".

No seu informe revelador Programación e escalado (vídeo) Este tema é discutido con máis detalle. Segundo Alan, a enxeñería de software paralizouse e estase convertendo nunha ciencia esquecida que non pode seguir o ritmo do hardware e outras ciencias e disciplinas de enxeñería. Os grandes proxectos convertéronse en vertedoiros de código e chegaron a un punto no que ninguén incapaz de entender 100 millóns de liñas de código MS Vista ou MS Word. Pero en realidade, debería haber unha orde de magnitude menos de código nestes proxectos.

Alan considera Internet, protocolos TCP/IP, intérpretes LISP, Nile (Math DSL para gráficos vectoriales) e OMeta (OO PEG) (PDF) exemplos de software elegante cun código mínimo.

Chama a Internet (TCP/IP) un dos poucos proxectos de software a gran escala que foi deseñado correctamente, e o seu nivel de complexidade está en equilibrio co nivel de complexidade (complicación vs complexidade). Con menos de 20 liñas de código, o proxecto funciona como un sistema vivo e dinámico capaz de soportar miles de millóns de nodos e nunca estivo fóra de liña desde o seu lanzamento inicial en setembro de 1969. Simplemente deixamos de considerar que Internet é un proxecto de software normal creado por persoas:

Internet está tan ben desenvolvida que moitas persoas trátana como un recurso natural, como o Océano Pacífico, en lugar dun produto do traballo humano. Cando foi a última vez que vimos unha tecnoloxía tan estable, clara e sen erros? En comparación, a Rede é unha tontería. A web foi creada por afeccionados.

Sobre a programación orientada a obxectos

O primeiro que me interesou foi o seu orixinal Visión OOP. A súa experiencia en microbioloxía xogou un papel importante:

Pensei nos obxectos como células biolóxicas e/ou ordenadores individuais nunha rede que só podían comunicarse mediante mensaxes.

e experiencia en matemáticas:

A miña experiencia en matemáticas fíxome entender que cada obxecto pode ter varias álxebras, pódense combinar en familias, e isto pode ser moi útil.

Ideas para a unión tardía e poderosas metacaracterísticas de LISPa:

A segunda fase é comprender a LISPa e usar esa comprensión para crear estruturas máis sinxelas, máis pequenas e poderosas e unir posteriormente.

E pronto Alan comezou a apoiar a idea de que as linguaxes dinámicas son o futuro do desenvolvemento de software (pdf). En particular, a facilidade de cambio é importante para el:

A vinculación tardía permite que as ideas que viñeron máis tarde no proceso de desenvolvemento se incorporen ao proxecto con menos esforzo (en comparación con sistemas enlazados anteriores como C, C++, Java, etc.)

E o potencial de cambios sobre a marcha e iteracións máis rápidas:

Unha das ideas clave é que o sistema debería seguir funcionando durante as probas, especialmente mentres se realizan cambios. Incluso os cambios importantes deben ser graduales e non tardar máis dunha fracción de segundo.

que falta en linguaxes tipificadas de forma estática:

Se usas linguaxes de encadernación inicial, como fai a maioría da xente, encárgase do que xa escribiu. Xa non será posible reformulalo facilmente.

Sorprendentemente, os seus pensamentos sobre OOP limitáronse a isto:

OOP para min son mensaxes, retención e protección local, ocultación estatal e vinculación tardía de todo. Isto pódese facer en Smalltalk e en LISP.

E nada sobre a herdanza. Este non é o OOP que hoxe coñecemos:

Gustaríame ter usado o termo "obxecto" para este tema hai moito tempo porque fai que moitas persoas se centren na menor das ideas.

A gran idea de que carecen as linguaxes OO modernas de tipo estático:

A gran idea son as "mensaxes"

El cre en centrarse nas mensaxes, o acoplamento solto e as interaccións do módulo en lugar de nas partes internas dun obxecto:

A clave para crear bos sistemas escalables é traballar os mecanismos de comunicación entre módulos, e non traballar as súas propiedades internas e o seu comportamento.

Parécenlle linguas escritas de forma estática defectuoso:

Non estou en contra dos tipos, pero non coñezo ningún tipo de sistema que non cause dor. Así que aínda me gusta a escritura dinámica.

Algúns idiomas populares hoxe en día usan a mensaxe de Smalltalk para transmitir ideas, encadernación tardía e non entendeforwardInvocation в Objective-Cmétodo_falta в Rubio и ningúnSuchMethod en Google Dardo.

Destrúe todo e crea algo mellor

Alan ten unha teoría interesante sobre o desenvolvemento da informática:

Paréceme que só hai un tipo de informática, e que a ciencia é como construír pontes. Alguén constrúe pontes, e alguén destrúeas e crea novas teorías. E hai que seguir tendo pontes.

Acerca de LISP

Alan Kay cre Lisp

mellor linguaxe de programación de todos os tempos

E que todo graduado en informática debería estudalo:

A maioría das persoas que cursan títulos en CS non entenden a importancia de Lisp. Lisp é a idea máis importante da informática.

Sobre o ambiente e o contexto adecuados

Adoita lembrar a atmosfera única PARQUE Xerox и cebada, onde "a visión é máis importante que os obxectivos" e "financiar persoas, non proxectos".

O punto de vista vale 80 puntos de coeficiente intelectual.

Alan Kay di:

A historia de ARPA/PARC demostra como unha combinación de visión, financiamento modesto, o contexto e o proceso axeitados poden nacer máxicamente novas tecnoloxías que non só impactan na civilización senón que tamén crean un enorme valor para a sociedade.

E é certo. Bótalle un ollo á impresionante lista de inventos de PARC, moitos dos cales xogaron un papel moi importante no desenvolvemento do noso mundo. Por exemplo:

  • Impresoras láser
  • Programación orientada a obxectos / Smalltalk
  • Ordenadores persoais
  • Ethernet/computación distribuída
  • GUI / rato de ordenador / WYSIWYG

E en cebada creada ARPANET, que se converteu no proxenitor de Internet.

PS Alan Kay responde ás preguntas da comunidade de Hacker News.

Fonte: www.habr.com

Engadir un comentario