Alan Kay, criador do OOP, sobre desenvolvimento, Lisp e OOP

Alan Kay, criador do OOP, sobre desenvolvimento, Lisp e OOP

Se você nunca ouviu falar de Alan Kay, pelo menos já ouviu suas citações famosas. Por exemplo, esta citação de 1971:

A melhor maneira de prever o futuro é inventá-lo.
A melhor maneira de prever o futuro é inventá-lo.

Alan tem uma carreira muito colorida em ciência da computação. Ele recebeu Prêmio Quioto и Prêmio Turing por seu trabalho no paradigma de programação orientada a objetos. Foi um dos pioneiros na área de computadores pessoais e interfaces gráficas, desenvolveu Conversa fiada é uma das primeiras linguagens de programação mais influentes de todos os tempos.

Na nossa Hexlete, especialmente em conversando, a questão “o que é OOP” e “o que Alan Kay realmente quis dizer” é constantemente levantada. Esta postagem contém citações interessantes de Alan sobre o estado do desenvolvimento moderno, OOP e a linguagem Lisp.

Sobre desenvolvimento de software

Alan Kay acredita que a revolução da informática ainda está por vir (A verdadeira revolução do computador ainda não aconteceu), e o desenvolvimento de software se desenvolve na proporção inversa à Lei de Moore: o hardware melhora a cada ano, mas o software fica desnecessariamente inchado:

o problema são ideias e ferramentas fracas e pouco escaláveis, preguiça, falta de conhecimento, etc.

Descreve bem esta situação piada curta:

O que Andy dá, Bill tira
Andy deu, Bill pegou

Andy Grove, CEO da Intel, e Bill Gates, então CEO da Microsoft.

Melhorar o estado atual de desenvolvimento foi o objetivo do projeto de pesquisa PASSOS em direção à reinvenção da programação (pdf). O objetivo é alcançar a expressividade da “Lei de Moore”, “reduzindo a quantidade de código necessário em 100, 1000, 10000 vezes ou mais”.

Em seu relatório revelador Programação e dimensionamento (vídeo) Este tópico é discutido com mais detalhes. De acordo com Alan, a engenharia de software estagnou e está se tornando uma ciência esquecida que não consegue acompanhar o hardware e outras ciências e disciplinas de engenharia. Grandes projetos tornaram-se lixões de código e chegaram a um ponto em que nenhum incapaz de compreender 100 milhões de linhas de código do MS Vista ou MS Word. Mas, na realidade, deveria haver uma ordem de magnitude menos código em tais projetos.

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

Ele chama a Internet (TCP/IP) de um dos poucos projetos de software em grande escala que foi projetado corretamente, e seu nível de complexidade está em equilíbrio com o nível de complexidade (complicação versus complexidade). Com menos de 20 linhas de código, o projeto funciona como um sistema vivo e dinâmico, capaz de suportar milhares de milhões de nós, e nunca ficou offline desde o seu lançamento inicial em setembro de 1969. Simplesmente paramos de considerar a Internet como um projeto de software normal criado por pessoas:

A Internet está tão desenvolvida que muitas pessoas a tratam como um recurso natural, como o Oceano Pacífico, e não como um produto do trabalho humano. Quando foi a última vez que vimos uma tecnologia tão estável, clara e livre de erros? Em comparação, a Web não faz sentido. A web foi criada por amadores.

Sobre programação orientada a objetos

A primeira coisa que me interessou foi o seu inicial Visão OOP. Sua experiência em microbiologia desempenhou um papel importante:

Pensei nos objetos como células biológicas e/ou computadores individuais em uma rede que só podiam se comunicar por meio de mensagens.

e experiência em matemática:

Minha experiência em matemática me fez perceber que cada objeto pode ter diversas álgebras, podem ser combinadas em famílias, e isso pode ser muito útil.

Ideias para vinculação tardia e meta-recursos poderosos do LISPa:

A segunda fase é compreender o LISPa e usar esse entendimento para criar estruturas mais fáceis, menores e mais poderosas e posterior ligação.

E logo Alan começou a apoiar a ideia de que linguagens dinâmicas são o futuro do desenvolvimento de software (pdf). Em particular, a facilidade de mudança é importante para ele:

A vinculação tardia permite que ideias que surgiram posteriormente no processo de desenvolvimento sejam incorporadas ao projeto com menos esforço (em comparação com sistemas vinculados anteriormente, como C, C++, Java, etc.)

E o potencial para mudanças dinâmicas e iterações mais rápidas:

Uma das ideias principais é que o sistema continue funcionando durante os testes, especialmente enquanto as alterações estão sendo feitas. Mesmo as grandes mudanças devem ser graduais e não demorar mais do que uma fração de segundo.

que está faltando em linguagens de tipo estaticamente:

Se você usar linguagens de ligação antecipada, como a maioria das pessoas faz, você se prenderá ao que já escreveu. Não será mais possível reformulá-lo facilmente.

Surpreendentemente, seus pensamentos sobre POO limitaram-se a isto:

OOP para mim são mensagens, retenção e proteção local, ocultação de estado e vinculação tardia de tudo. Isso pode ser feito em Smalltalk e em LISP.

E nada sobre herança. Este não é o OOP que conhecemos hoje:

Eu gostaria de ter usado o termo “objeto” para este tópico há muito tempo, porque faz com que muitas pessoas se concentrem nas ideias menores.

A grande ideia que falta nas linguagens OO modernas de tipo estaticamente:

A grande ideia são "mensagens"

Ele acredita em focar em mensagens, acoplamento fraco e interações de módulos, em vez de nas partes internas de um objeto:

A chave para criar bons sistemas escaláveis ​​é trabalhar os mecanismos de comunicação entre os módulos, e não trabalhar as suas propriedades e comportamento internos.

Idiomas de tipo estaticamente parecem para ele defeituoso:

Não sou contra tipos, mas não conheço nenhum sistema de tipos que não cause dor. Então, ainda gosto de digitação dinâmica.

Algumas linguagens populares hoje usam as ideias de passagem de mensagens do Smalltalk, ligação tardia e nao entendeforwardInvocação в Objective-Cmétodo_ausente в Ruby и nãoSuchMethod no Google Dart.

Destrua tudo e crie algo melhor

Alan tem uma teoria interessante sobre o desenvolvimento da ciência da computação:

Parece-me que existe apenas um tipo de ciência da computação e que a ciência é como construir pontes. Alguém constrói pontes e alguém as destrói e cria novas teorias. E precisamos continuar construindo pontes.

Sobre LISP

Alan Kay acredita em Lisp

melhor linguagem de programação de todos os tempos

E que todo graduado em ciência da computação deveria estudá-lo:

A maioria das pessoas que buscam graduação em CS não entende a importância do Lisp. Lisp é a ideia mais importante da ciência da computação.

Sobre a atmosfera e o contexto certos

Ele frequentemente se lembra da atmosfera única em Xerox-PARC и ARPA, onde “a visão é mais importante que os objetivos” e “financiar pessoas, não projetos”.

O ponto de vista vale 80 pontos de QI.

Alan Kay disse:

A história da ARPA/PARC demonstra como uma combinação de visão, financiamento modesto, contexto e processo adequados pode magicamente dar origem a novas tecnologias que não só impactam a civilização, mas também criam um enorme valor para a sociedade.

E é verdade. Dê uma olhada na impressionante lista de invenções do PARC, muitos dos quais desempenharam um papel muito importante no desenvolvimento do nosso mundo. Por exemplo:

  • Impressoras a laser
  • Programação Orientada a Objetos / Smalltalk
  • Computadores pessoais
  • Ethernet/computação distribuída
  • GUI / mouse de computador / WYSIWYG

E em ARPA criamos ARPANET, que se tornou o progenitor da Internet.

PS Alan Kay responde perguntas da comunidade Hacker News.

Fonte: habr.com

Adicionar um comentário