http://git.metareload.com/comprev.git
A Revolução da Computação Ainda Não Aconteceu
Obrigado
Bem, eu presumo que a maioria aqui ficou acordada até tarde.
Eu não consigo lembrar de ter visto tantos programadores às oito horas da manhã.
Eu acho que este é o maior banheiro em que eu já palestrei.
Isso foi só um teste para saber se vocês conseguem me entender.
Eu não consigo me entender aqui em cima.
Agora ...
Eu não venho ao OOPSLA desde o primeiro, e ...
quando eu fui convidado a fazer esta palestra, eu estava pensando ...
Bem, devo ir, ou não devo, ou o que devo fazer ...
E me ocorreu que esta conferência, no dia de hoje ...
... está, basicamente, no centro do aniversário de 25 anos do Smalltalk.
O esquema de interpretador que escrevi em uma página
foi feito há algumas semanas, 25 anos atrás.
E a primeira versão funcionando dele foi feita daqui há algumas semanas
25 anos atrás, então estamos no centro, e ...
Deixe-me ver se eu consigo colocar nosso emblema.
Pode mostrar o primeiro slide, por favor?
Então, eu pensei ... eu não quero ...
Eu não farei uma palestra de história porque eu finalmente descarreguei esta obrigação
na Conferência de História de Linguagens de Programação, há dois anos.
Mas eu pensei que poderia ser interessante para alguns de vocês
que não participaram da computação nos últimos 25 anos, ver ...
... uma jornada de dois minutos.
Eu acredito que este conjunto de imagens ...
... basicamente se situa em 1973 e 1974, na Xerox PARC, ...
... mostra algumas das primeiras crianças com as quais nós trabalhamos ...
A música que vocês verão neste clipe
foi composta por um dos membros do nosso grupo, Chris Jeffers.
É chamada "O Hacker Feliz", caso vocês queiram uma música-tema.
Ela é tocada em um sintetizador FM de tempo real
que nós desenvolvemos para o computador Alto.
Então este é o antecessor das estações de trabalho e do Machintosh
sem qualquer hardware sintetizador de som adicional.
Afinal, por que você deve ter isso se o seu computador foi bem projetado?
E vocês ... Acho que vocês terão uma pequena visão ...
Antes que eu inicie o clipe, vamos só por brincadeira
ver quantas das pessoas aqui nesta sala
participaram da experiência envolvendo Smalltalk na Xerox PARC
entre meados de 1971 e 1983.
Podem se levantar? Vamos ver se descobrimos quantas pessoas estão aqui.
Alguém sem cabelo branco?
Obrigado.
Ok, vamos rodar o clipe.
Bem, as coisas eram assim cerca de 25 anos atrás.
E a outra coisa que eu queria fazer no início desta palestra ...
Eu tentei elaborar uma forma de adentrar nela
e finalmente me recordei de um artigo que Dijkstra —
Eu não sei quantos aqui conheceram Dijkstra
mas vocês provavelmente sabem que arrogância, em Ciência da Computação
é medida em nano-Dijkstras.
E ele escreveu um artigo — destes que ele gostava de escrever
cujo título era "Sobre o fato de o Atlântico ter dois lados".
Tratava-se, basicamente, das diferenças na abordagem da Computação
entre a Europa, especialmente na Holanda, e os Estados Unidos.
E coisas interessantes ... sabe ...
Nos EUA, aqui, nós não eramos suficientemente matemáticos e ...
Céus, na Holanda, se você é um professor, você é indicado pela Rainha ...
e havia muitas outras distinções importantes
entre as duas culturas.
Então, eu escrevi uma refutação chamada
"Sobre o fato de a maior parte do software no mundo ser escrita em um lado do Atlântico"
E era, basicamente, sobre — pois eu tenho um diploma em matemática também
Era, basicamente, sobre os computadores como uma nova forma de matemática.
Não se pode julgá-los.
Eles não cabem muito bem na matemática clássica e pessoas que tentam fazer isso
estão, basicamente, estimulando uma forma de masturbação.
Talvez, conscientes disso.
E era sobre ... um tipo de matemática prática.
O equilíbrio estava entre criar estruturas
que deveriam ser consistentes
com um tipo muito maior que matemática clássica
nunca chegou perto de sonhar tentar.
E ter que lidar com os mesmos problemas
que a matemática clássica, de qualquer tamanho, tem que lidar
que é ser convincente sobre ter coberto todos os casos.
Havia um matemático chamado Euler
cujas especulações sobre o que seria verdade
formaram 20 grandes livros, e a maioria delas era verdade. A maior parte estava correta.
Quase todas as suas provas estavam erradas.
E muitos PhDs em matemática neste e no último século
tem sido formados por matemáticos lendo os livros de Euler
encontrando uma de suas provas, mostrando que ela era ruim, e ...
supondo que a intuição dele poderia estar correta
e encontrando uma prova muito mais convincente.
Então, depuração acontece na matemática, também.
Eu acho que o ponto principal sobre POO —
ou qualquer tipo de programação, é que deve haver
uma extrema união entre beleza e praticidade.
Não há razão para sacrificar qualquer um desses
e as pessoas que estão dispostas a sacrificar um desses
Eu não creio que entendem do que a computação se trata.
É como dizer que eu tenho ótimas idéias para uma pintura mas ...
Eu vou apenas usar o pincel sem tinta
Então, minhas idéias serão representadas por gestos
sobre o papel. E não diga isso à nenhum artista do século XX
ou eles podem querer filmar a si mesmos fazendo isso
e colocar a fita em um museu.
Então eu pensei ...
Eu tenho este problema para saber o que dizer ...
É sempre difícil porque pessoas técnicas parecem saber tanto.
Mas é interessante, novamente, olhar o que se faz no mundo
sob o nome de POO.
Eu tenho visto alguns códigos muito, muito estranhos
com o passar dos anos
de várias pessoas, incluindo pessoas em universidades
que dizem ser código OO, escritos em uma linguagem OO.
E, de fato, eu criei o termo "orientação a objeto"
e posso lhes dizer que eu não tinha C++ em mente.
Então, um ponto importante é que eu sinto o mesmo em relação ao Smalltalk.
Eu não tentarei fazer Smalltalk aqui
pois acho que há algo muito importante sobre Smalltalk
e linguagens como ela, que nós devemos
prestar bastante atenção.
Mas não tem quase nada haver com sua sintaxe
ou sua biblioteca de classes.
Ambas costumam ser consideradas a própria linguagem
como se tivesse sido enviada por alguns deuses do Olímpo.
Então eu queria falar um pouco mais sobre
minha reação pessoal à POO quando comecei a pensar sobre nos anos 60
e ao invés de fazer uma palestra histórica, pensar se
estas reações e insights são relevantes hoje.
Então ... eu vou ...
Acho que meu slide não funciona.
Ou funciona.
Sim, vá para ... há um slide em branco, vá para o próximo.
Então, nos anos 60, as coisas eram bastante mecânicas.
Havia o pensamento sobre mecanismos simples.
porque computadores eram tão grandes quanto esta sala.
O que o Ivan Sutherland usou para o Sketchpad era do tamanho desta sala.
Foi um dos últimos computadores nos EUA grandes o suficiente para terem seu próprio telhado.
Ele era o próprio prédio.
Mas os programas eram bastante pequenos
e eles tinham muito em comum com suas raízes matemáticas.
Uma forma de pensar sobre a semântica da matemática baseada em lógica
é em termos de engrenagens. Tudo tem que se encaixar, e neste caso
se tudo é compatível no fim, você tem o giro final que deseja.
Uma espécie de analogia com o mundo real.
Próximo slide, por favor.
Opa, perdemos um slide. Volte dois slides, por favor.
Muito bem.
Então, uma analogia para esses programas dos anos 60 é uma casa de cachorro.
Se pegar algumas tábuas, pregos e um martelo
e bater neles, você terá uma estrutura que ficará em pé.
Você não tem que saber nada, exceto como martelar para fazer isso.
Agora, alguém pode ver esta casa e dizer
"Uau! Se pudermos expandir isso por um fator de 100"
"poderemos fazer uma catedral"
"Com 90cm, isso nos daria ..."
" ... trinta andares."
"E isso seria impressionante. Poderiamos colocar muitas pessoas lá dentro"
Então os carpinteiros trabalhariam
expandindo ela por um fator de 100. Agora, todos nós sabemos —
como engenheiros e cientistas, que
quando você expande algo por um fator de 100
sua massa cresce por um fator de um milhão.
E sua força, que está relacionada as junções
cresce apenas por um fator de 10 mil.
Então, quando se expande algo por um fator de 100
ele se torna 100x mais fraco em sua capacidade.
E, de fato, a casa de cachorro irá simplesmente entrar em colapso
em uma pilha de entulho.
Então, há duas coisas que se pode fazer quando isso acontecer.
A mais popular é dizer "Bem, era isso que estavamos querendo fazer desde o início".
Coloque mais lixo sobre isso, cubra com pedras, e ...
... diga "Sim, estavamos tentando construir pirâmides ao invés de catedrais góticas".
De fato, acho que isso representa muito da estrutura
de sistemas operacionais modernos, hoje em dia.
Ou, você pode conceber um novo conceito
que pessoas que se interessaram
em estruturas complexas muitos anos atrás fizeram. Elas chamaram de "arquitetura".
Literalmente, o design e construção de arcos bem-sucedidos.
Uma interação não-óbvia, não-linear entre materiais simples
para lhe dar sinergias não-óbvias
e uma multiplicação rápida de materiais.
É notável para as pessoas quando lhes digo que a quantidade de material na
Catedral de Chartres, que é uma estrutura física enorme
é menor que a quantidade de material colocada no Parthenon.
O motivo é que ela é quase toda formada por ar. E quase toda formada por vidro.
Tudo é organizado [?] em uma bela estrutura
para que seu espaço tenha muito mais integridade que qualquer uma de suas partes.
Então, este é o outro caminho que você pode seguir, e parte da mensagem de POO
era que, na medida em que a complexidade se torna mais e mais importante
arquitetura sempre dominará material.
E, o triste fato, eu acho, sobre POO
é que as pessoas não se interessaram por arquitetura pela sua beleza
Elas começaram a se interessar em arquitetura agora
quando a Internet está forçando todos para que o façam.
Isso é patético.
Então, eu vou usar uma metáfora para esta palestra
que vem de um livro maravilhoso chamado
"The Act Of Creation" de Arthur Koestler
Koestler foi um novelista que se tornou um cientista cognitivo em seus últimos anos
E um dos maiores livros que ele escreveu foi sobre o que seria a criatividade
Aprendizado... Ele entendeu que aprendizado, claro, é um ato de criação por sí só
porque algo acontece dentro de você que não estava lá antes
E ele usou a metáfora de pensamentos como formigas camihando em um plano
Neste caso é um plano rosa
e há muitas coisas que você pode fazer em um plano rosa
Você pode ter objetivos. Você pode escolher direções.
Você pode se movimentar. Mas você está, basicamente, sempre no contexto rosa
E, se você pensar sobre isso, significa que progresso, em um contexto fixo
é quase sempre uma forma de otimização
porque se você está criando algo novo
esse algo não faria parte das regras ou do contexto
que definem o plano rosa
Então, atos criativos geralmente não permanecem no mesmo contexto em que se encontram
Ele diz "Vez ou outra
embora você tenha sido ensinado cuidadosamente por pais e pela escola por muitos anos
você tem uma idéia azul."
Talvez quando você está no banho
Talvez quando você está correndo
Talvez quando você está descansando em um momento indefeso
derrepente, aquilo que estava te perturbando, refletindo sobre, observando
aparece pra você sob uma luz completamente diferente, como se fosse outra coisa
E Koestler disse que a reação emocional à isso vem basicamente em três formas:
Se você está contando uma piada, é "HA HA!"
Se você está fazendo ciência, é "A HA!"
e se você está fazendo arte, é "AHHH"!
Ele diz isso porque em cada caso algo muito similar está acontecendo
Uma piada o leva ao caminho do jardim
e, derrepente, releva que se trata de algo diferente, e você tem uma explosão muito agressiva
E ciência tem muito do mesmo sentimento, e muitas vezes
quando você vê algo, em ciência, você começa a rir
porque estava bem ali na sua frente, e é um tipo de piada
E é claro, arte existe para nos lembrar...Grande arte existe para nos lembrar
que qualquer contexto em que achamos que estamos, existem outros contextos
Arte existe para nos tirar do contexto em que estamos
e nos fazer cientes de outros contextos
Então, esta é uma simples -- você pode até chamar de uma metáfora simplista
mas certamente servirá para esta palestra hoje
E ele também apontou que você precisa ter algo azul para ter pensamentos azuis
Eu acho que, geralmente, não se vê isso em pessoas que se especializam sem limites
Quando você especializa, você está basicamente se colocando em um estado mental
onde otimização é tudo o que você pode fazer
Você precisa aprender muitos tipos de coisas diferentes
para que você comece a ver esses outros contextos
Então, eis algumas batidas na cabeça que eu tive durante o tempo
Eu quero falar deles rapidamente para vocês
Este eu acho que vocês vão achar interessante porque é a forma mais antiga
daquilo que nós chamamos de abstração de dados
Ela vem lá de trás, na verdade, antes de 1961
Eu estava na Força Aérea em 1961, e eu a vi em 1961
e ela provavelmente surgiu um ano antes
Então, naquela época, eles não tinham sistemas operacionais
Comandantes tinham que enviar fitas de muitos tipos de registros
de uma base de Força Aérea à outra
Havia a questão de como se pode lidar
com todas essas coisas que haviam nas imagens dos cartões, porque os formatos
das fitas começavam a ficar cada vez mais complicados
e alguém -- quase certamente um alistado, porque oficiais não programavam naquela época
apareceu com a seguinte idéia
Esta pessoa disse "na terceira parte do registro desta fita
nós colocamos todos os registros de um tipo particular
Na segunda parte -- no meio -- nós colocamos todos os procedimentos
que sabem como lidar com os formatos da terceira parte da fita
E na primeira parte, nós colocamos ponteiros para os procedimentos
e vamos fazer com que os primeiros dez ponteiros sejam padronizados
como ler ou escrever campos, e tentar imprimir
Vamos ter um vocabulario padrão nos primeiros dez desses
e então poderemos ter os ponteiros idiosincráticos logo depois
Então, tudo o que se precisava fazer para ler uma fita em 1961
era ler a primeira parte do registro
um destes grandes registros, na memória principal
e começar a pular indiretamente pelos ponteiros, e os procedimentos estão lá
Agora, eu quero que vocês contrastem isso com o que você tem que fazer com HTML na Internet
Pense a respeito.
HTML na Internet nos levou à era das trevas
porque pressupõe que deve haver um browser que deve entender seu formato
Esta deve ser uma das piores idéias desde o MS-DOS
É mesmo uma vergonha
Talvez seja o que acontece quando físicos decidem brincar com computadores, não sei
E, de fato, nós podemos ver o que está acontecendo com a Internet
ela está gradualmente ...
Há essas duas guerras acontecendo -- há estas guerras de browsers
que são 100% irrelevantes
Elas são basicamente uma tentativa, de ambos os lados, de demonstrar um não-entendimento
de como construir sistemas complexos
ou mesmo uma tentativa mais primitiva de ganhar território
Então, eu suspeito que a Microsoft esteja tentando este último
Você não precisa de um browser
se você seguir o que este alistado da Força Aérea sabia como fazer em 1961
Você só precisa transferir pra dentro
Os registros devem viajar com tudo o que precisam
e você não precisa de nada mais complexo do que algo como X Windows
Espero que algo melhor
Mas basicamente, você quer ser capaz de distribuir
todo o conhecimento de todas as coisas que estão lá
e de fato, a Internet está começando a se mover nesta direção
enquanto as pessoas descobrem formatos HTML mais complexos, mais intratáveis
Este é um desses erros que vem sendo cometidos em todas as gerações
E essa, simplesmente, não é a forma de se fazer.
Então, eis uma grande idéia
e aliás, este tipo de programação era feita antes de haver linguagens de alto nível na Força Aérea
E esta abordagem foi tirada da Força Aérea pelo COBOL
quando eles padronizaram em COBOL
Sketchpad do Ivan Sutherland
Eu geralmente mostro um filme dele. Não mostrarei hoje
Imensamente sofisticado
Impressionante em sua concepção do que era capaz de fazer
Um sistema orientado a objeto
Ele tinha uma noção real de classes e sub-classes
Tinha uma noção de polimorfismo, mais forte do que a a versão da Força Aérea
Próximo slide, por favor.
Agora, eu já havia visto a idéia três ou quatro vezes
mas não antes de eu ter compreendido Simula
nós achamos que ela seria um ALGOL
E acabou que aquela pilha de fitas foi a primeira versão de Simula
e ALGOL que foram desenvolvidos por Case Western Reserve
e os inventores de Simula, Nygaard e Dahl na Noruega
e distribuídos com uma documentação incompreensível, em 1966
E foi tentando entender o que Simula era que finalmente
Eu não estou certo do porquê
eu acho que se você vê uma boa idéia que é estranha
quatro vezes, em quatro roupas diferentes, ela começa a causar impressão
E eis as escolhas que você tem quando se encara algo novo
Você pode pegar esse avanço tecnológico e decidir
"isso é uma forma melhor de se fazer as coisas que eu estou fazendo
e eu posso usar isso para continuar na minha direção"
Isso é continuar no plano rosa
Ou, você pode dizer "isso não é uma 'coisa antiga' melhor, isso é quase uma 'coisa nova'
e eu imagino o que esta 'coisa nova' está tentando se tornar"
E, se fizer isso, há a chance de talvez ganhar uma vantagem incrível
ao invés de simplesmente otimizar algo que não se pode otimizar muito
Então, a escolha aqui foi ...
Simula veio do mundo de estruturas de dados e procedimentos
e tinha muito deste sabor, se você quiser olhar desta forma
Mas ela tinha uma forma de criar relações de estados da computação com procedimentos
que era extremamente útil, e muito melhor e mais genérico
do que os chamados "own variables" em ALGOL 60
Então, essa era uma forma de pensar sobre ela
Então há esta outra questão
Se isso é quase uma coisa nova, que tipo de coisa nova ela é?
Bom, um dos meus diplomas é de biologia molecular
e meu interesse particular estava em fisiologia celular e embriologia
Morfogênese, como hoje é conhecido.
E este livro, Molecular Biology of the Gene, tinha acabado de sair em 1965
Livro maravilhoso. Ainda em impressão.
Claro, ele passou por muitas, muitas edições
Provavelmente, as únicas palavras em comum entre este livro e o atual
são artigos como "o" e "um"
Na verdade, a palavra "gene", creio, ainda está lá
mas significa algo completamente diferente agora
Mas uma das coisas que Watson fez neste livro foi fazer um ensaio [químico]
O primeiro ensaio de uma criatura viva completa
Esta foi a bactéria E. coli.
Próximo slide, por favor.
Então, se você olhar dentro de uma delas, a complexidade é impressionante
Essas "pipocas" são moléculas de proteínas que possuem cerca de 5 mil átomos nelas
E, como se pode ver no slide, quando se livra das moléculas pequenas
como água e ions de cálcio, e ions de potássio, e por aí vai
que constituem cerca de 70% da massa desta coisa
os 30% restantes possuem cerca de 120 milhões de componentes
que interagem entre si trocando informações
E cada um destes componentes carrega bastante informação
E você pode pensar ...
A forma simplista de pensar sobre estas coisas é que ela funciona como OOPS 5
Existe um "pattern matcher"
e então, há coisas que acontecem se padrões são encontrados
Então, o estado envolvido nisso possui cerca de cem gigas
e você pode multiplicar isso hoje. É cerca de cem desktops
mas ainda assim é uma quantidade impressionante de computação
Talvez o mais interessante nesta estrutura
é que a repetitividade da computação rivaliza seriamente
com os computadores hoje. Particularmente considerando-se que são feitas em paralelo
Por exemplo, uma destas "pipocas" move-se sua própria largura em apenas dois nanosegundos
Então, uma das formas de se visualizar isso é, se um átomo for do tamanho de uma bola de tênis
então uma destas moléculas de proteína seriam do tamanho de um fusca
e está se movendo sua largura em dois nanosegundos
Cerca de 2.5 metros na nossa escala
Alguém pode fazer a aritmética para dizer a fração da velocidade da luz
ao se mover 2.5 metros em dois nanosegundos?
Quatro vezes? Sim
Quatro vezes a velocidade da luz
Escala.
Se você já se perguntou porquê química funciona, é por isso
A agitação termal ali é tão inacreditavelmente violenta que não conseguimos imaginar
mesmo com a ajuda de computadores
Não há nada a ser visto dentro de uma dessas coisas até que você a mate
porque é apenas um borrão completo de atividade
e sob boas condições, leva apenas quinze a dezoito minutos
para que uma delas se duplique completamente
Ok, então essa é uma bacteria. Claro, muito mais se conhece hoje
Então, outro fato para relacionar isso a nós é que estas bactérias
possuem o tamanho de 1/500 do tamanho das células no nosso corpo
que ao invés de 120 milhões de componentes informacionais, possuem cerca de 6 bilhões
E, nós temos entre 10^12 e 10^13, talvez mais, células no nosso corpo
e no entanto, apenas 50 divisões celulares acontecem em uma gravidez de nove meses
Leva apenas 50 divisões celulares para fazer um bebê
Na verdade, se você multiplicar, você conclui que só se precisa de cerca de 40
e as dez potências de dez restantes estão lá porque, durante o processo embriológico
muitas das células que não cabem de alguma forma
para o organismo como um todo, são mortas
Então, as coisas são feitas por excesso de proliferação, teste, e adequação
para realizar este plano maior
Então, claro, cada uma destas estruturas, nós, está inserida em uma enorme biomassa
Então, para uma pessoa cujo contexto azul é biologia
algo como um computador não pode, de forma alguma, ser considerado
como sendo particularmente complexo, grande ou rápido
Lento. Pequeno. Estúpido.
Isso que os computadores são
Então a questão é, como nós podemos fazer com que eles realizem seu destino
Próximo slide, por favor.
Acho que estamos usando uma forma de tecnologia que Napoleão usou...
Lembram daqueles semáforos na França?
Então, a mudança aqui é do ponto de vista mecânico ...
Isso é um problema. Se você considerar coisas como casas de cachorro
elas não escalam por um fator de 100 muito bem
Se você considerar coisas como relógios, elas não escalam por um fator de 100 muito bem
Considere coisas como células, elas não só escalam por um fator de 100
mas por fatores de um trilhão.
E a questão é, como elas fazem isso?
E como nós podemos adaptar esta idéia para construir sistemas complexos?
Ok? Esta é a pergunta básica.
E esta é, a propósito, a que C++ ainda não entendeu.
Não há idéia tão simples e poderosa
que você não consiga zilhões de pessoas compreendendo ela mal.
Então você não deve, de forma alguma, permitir que o interior dessas coisas
seja um fator na computação do todo
Ok? E esta é apenas parte da história. Não é só a célula ...
Membranas celulares estão lá para manter boa parte das coisas do lado de fora
tanto quanto para manter certas coisas do lado de dentro.
Eu acho que nossa confusão com objetos é que na nossa cultura ocidental
nós temos uma linguagem que possui fortes substantivos e verbos
Nossas palavras de processos são ruins.
Então, é muito mais fácil para nós quando pensamos em um objeto ...
Eu tenho pedido bastante desculpas ao longo dos últimos 20 anos
por criar o termo "orientação a objeto"
porque quando começou a ser mal aplicada, eu compreendi
que eu deveria ter usado um termo mais orientado a processo
Agora, os japoneses tem uma palavra interessante, que é "ma"
Soletra-se em inglês "m-a". Ma.
E "ma" são as coisas entre o que chamamos de objetos
São as coisas que não vemos, porque estamos focados nos substantivos das coisas
ao invés dos processos das coisas.
Os japoneses possuem uma forma mais orientada a processos/campos
de ver as coisas e como elas se relacionam.
Você pode sempre observar isso ao notar o tamanho de uma palavra
que expressa algo importante.
Assim, Ma é muito curta.
Nós temos que usar palavras como "intersticial" ou pior
para aproximar o que os japoneses estão falando.
Então, a compreensão aqui
e não é possível atribuir esta realização a qualquer pessoa em particular
porque estava nas sementes do Sketchpad
e nas sementes do sistema de arquivos do militar
e nas sementes de Simula
Isso é, que uma vez que você encapsulou
de tal forma que há uma interface entre o interior e o exterior
é possível fazer um objeto se comportar como qualquer coisa.
E a razão é simplesmente esta: que o que você encapsulou é um computador.
Com isso, você fez algo poderoso na ciência da computação
que é tomar esta coisa poderosa que você está trabalhando
e não perdê-la ao particionar seu "design space"
Este é o bug em linguagens de procedimentos de dados.
Eu acho que a coisa mais perniciosa em linguagens como C++ e Java
é que elas acreditam estar ajudando o programador
ao se parecer o máximo possível com a coisa antiga
mas, de fato, estão ferindo o programador terrivelmente
por tornar difícil para o programador entender
o que é realmente poderoso nesta nova metáfora.
E, novamente, pessoas que faziam sistemas de tempo compartilhado já haviam entendido isso também
A tese de Butler Lampson em 1965
foi sobre que o que se quer oferecer à uma pessoa em um sistema de tempo compartilhado
é algo que hoje é chamado de máquina virtual
que não é o mesmo que a Java VM é
mas que é algo que se parece o máximo com um computador físico
mas oferecer um para cada usuário
UNIX tinha este apecto.
E o maior problema com este esquema
é que um processo UNIX tem um overhead de cerca de 2 mil bytes
apenas para obter um processo. Então seria muito difícil em um UNIX
ter um processo que seja apenas o número 3.
Você iria de 3 bits para alguns mil bytes
e teria este problema com escalabilidade.
Então, muito do problema aqui é tanto decidir que a metáfora biológica
é a que irá vencer nos próximos ~25 anos
e, então, se comprometer o suficiente com isso
para que ela possa ser prática em todos os níveis de escalabilidade que nós, de fato, precisamos.
Então nós temos um truque que a biologia não sabe fazer
que é: nós podemos pegar o DNA das células
e isso nos permite lidar com fibrose cística
muito mais facilmente do que da forma como se faz hoje em dia.
Sistemas, de fato, possuem fibrose cística.
E, alguns de vocês podem saber que fibrose cística, hoje, para algumas pessoas
é tratada infectando um vírus nelas
Um vírus de resfriado modificado que infeciona o pulmão
mas o gene defeituoso da fibrose cística está no vírus de resfriado
E o vírus é muito fraco para destruir o pulmão, como pnemunia faz
mas é forte o suficiente para inserir uma cópia deste gene em todas as células do pulmão
E é isso que faz o truque.
Esta é uma forma bem complicada de reprogramar o DNA de um organismo, uma vez que ele "está rodando".
Então, eis algo que eu acho incrível e que não vemos muito ...
Por exemplo, uma das coisas que mais me surpreende
das pessoas que tem tentado colocar POO na Internet, é que eu não ...
e eu espero que depois alguém me conte uma excessão à isso ...
mas eu não conheço ninguém ainda
que entendeu que, no mínimo, todo objeto deveria ter uma URL
afinal, o que diabos eles são se não essas coisas?
e eu acredito que todo objeto na Internet deveria ter um IP
pois isto representa muito melhor as abstrações de fato, do hardware aos bits
Então este é um insight inicial que objetos são basicamente como servidores
E esta noção de polimorfismo, que costumavam chamar de "procedimentos genéricos"
é uma forma de pensar sobre classes destes servidores.
Todos sabem disso.
E eis algo que não enfrentamos muito ainda
que, agora, nós temos que construir essas coisas e, cedo, seremos requisitados para crescê-las
Assim, é muito fácil, por exemplo, crescer um bebê 15cm
Eles fazem isso cerca de 10 vezes em sua vida
e você nunca precisa levá-los a manutenção.
Mas se você tentar crescer um 747, você enfrentará um problema inacreditável
porque ele existe neste mundo simplista mecânico
em que o único objetivo foi construir este artefato
Não para repará-lo. Não para modificá-lo.
Não para fazer com que ele viva durante centenas de anos.
Então, deixe-me fazer uma pergunta
Eu não anotarei nomes, mas quantas pessoas aqui ainda usam
uma linguagem que, essencialmente os obrigam, no desenvolvimento de sistemas ...
os obrigam a desenvolver fora da linguagem
compilando, recarregando, e executando, mesmo que rápido
como Virtual Café
Quantas pessoas ainda fazem isso? Vamos ver ...
Vamos lá. Admitam!
Nós podemos ter um "Texas tent meeting" depois
Então, se você pensar a respeito, isso não pode ser outra coisa senão um beco sem saída
para construir sistemas complexos
onde muito da construção de sistemas complexos, em parte, estará em tentar entender
quais são as possibilidades de interoperabilidade com coisas que já existem
Agora, eu ... eu tive uma pequena participação no design da ARPANET
Eu fui um dos 30 estudantes que frequentavam os encontros de design de sistemas
para tentar formular princípios de design para a ARPANET, há 30 anos atrás
E, se você pensar a respeito ...
A ARPANET, é claro, se tornou a Internet
e desde quando ela começou a funcionar -- por volta de 1969 -- até hoje
ela expandiu por um fator de 100 milhões
Isso é muito bom. 8 ordens de magnitude.
E, até onde se pode dizer --
E eu falei com Larry Roberts sobre isso outro dia ...
Não há um átomo físico na Internet hoje que estava na ARPANET original
E não há uma linha de código na Internet hoje que estava na ARPANET original.
É claro, se tivéssemos mainframes da IBM na ARPANET original, isso não teria acontecido.
Portanto, esse é um sistema que expandiu por um fator de 100 milhões
teve todos os átomos e todos os bits mudados, e nunca teve que parar!
Esta é a metáfora que nós temos, absolutamente, que aplicar ao que pensamos ser coisas pequenas.
Quando nós pensamos que programação é algo pequeno
é por isso que seus programas são tão grandes!
É por isso que elas se tornam pirâmides ao invés de catedrais góticas.
Próximo.
Ok, essa é outra grande fonte
Certamente, a maior e única linguagem, junto com Simula dos anos 60
Eu acho que ... uma com tantos insights profundos ou mais: LISP
Na página 13 deste livro publicado em 1962
há esta meia página de código que é o modelo reflexivo de LISP escrito em si mesma
Todos os detalhes importantes da semântica de LISP e guias
para se construir um interpretador LISP estão nesta meia página.
E é este aspecto -- este aspecto meta-reflexivo -- que eu acho ... pra mim
é a coisa mais triste que acontece com Java.
Quando Java apareceu, eu pensei: "Bem
esta legitimando algo que a maioria das pessoas não acreditaram por muito tempo."
Que é esta abordagem de portabilidade via bytecode que tinhamos na Xerox PARC
Não é uma idéia nova. Na verdade, ela remonta aos anos 60.
Mas quando eu dei uma olhada em Java, pensei "Meu Deus, como eles podem ..."
E é claro, nós sabiamos que a história era
mais sobre programação de torradeiras, originalmente, do que Internet, mas ...
"Meu Deus, como eles pretendem sobreviver à todas as mudanças
modificações, adaptações e requerimentos de interoperabilidade
sem um meta-system?
Sem, ao menos, por exemplo, ser capaz de carregar código novo enquanto está executando?"
Então, pra mim ... o fato de as pessoas terem adotado ela como se fosse uma grande esperança
é, provavelmente, a coisa mais perturbadora pra mim, pessoalmente, como eu disse, desde o MS-DOS.
Isso representa uma falha real das pessoas em entender qual é o quadro completo, e o que ele será.
Próximo slide.
Então, esta noção de meta-programação
Várias formas diferentes de se ver ...
Uma delas é que, qualquer implementação em particular está fazendo decisões pragmáticas
e estas escolhas pragmáticas provavelmente não serão capazes de cobrir todos os casos
no nível de eficiência e mesmo no nível de riqueza necessários.
Certamente, isto é prática POO padrão.
É por isso que encapsulamos.
Nós precisamos esconder nossas bagunças.
Nós precisamos ter diferentes formas de lidar com os mesmos conceitos
de maneira que não distraia o programador.
Mas, de fato, isto também é aplicável, como o pessoal de LISP descobriu, e como nós na Xerox PARC descobrimos ...
Você também pode aplicar isto à construção da própria linguagem
Quanto mais a linguagem consegue ver suas próprias estruturas
mais você está livre da tirania da única implementação.
Eu acho que este é uma das coisas mais críticas que poucas pessoas estão preocupadas de maneira prática.
Uma das razões que estas "meta-coisas" serão importantes de tal forma que ninguém conseguirá ignorar
é a questão de como nós realmente iremos interoperar na Internet, daqui há 5 e 10 anos.
E, se você pensar a respeito ... Eu não acredito que a Microsoft será capaz de capturar a Internet.
Eu acho que ela é muito grande.
Eu acho que existem muitas pessoas adicionando idéias a ela.
E eu acho que as pessoas serão sofisticadas o suficiente para entender que uma solução IBM ou Microsoft
são, simplesmente, nem desejadas nem possíveis.
O que isso significa é que haverá vários e vários --
quase já existem -- vários e vários sistemas de objetos diferentes
todos com semântica bastante similar, mas com detalhes pragmáticos distintos.
E se você pensar no que uma URL de fato é
e se pensar no que uma mensagem HTTP realmente é
e se pensar no que um objeto realmente é
e se pensar no que um ponteiro de objeto é
Eu acho que deve ficar bem claro que qualquer linguagem orientada a objetos
pode internalizar seus próprios ponteiros locais apontando para qualquer objeto no mundo, independente de onde ele foi feito.
Este é o motivo pelo qual não se deve ser capaz de ver o interior
Então, uma interoperabilidade semântica é possível, quase imediatamente
ao se tomar este rumo, simplesmente.
Isso irá mudar realmente tudo.
E coisas como JavaBeans e CORBA não serão suficientes
porque em algum ponto, a pessoa terá que realmente começar a descobrir
o que objetos acham que podem fazer.
Isto irá levar à uma linguagem de interface universal, que não é, de fato, uma linguagem de programação
É mais algo como uma linguagem de prototipação que permite o intercâmbio
de informações profundas sobre o que os objetos acham que podem fazer.
Ela permite que objetos façam experimentos com outros objetos de forma segura
para ver como eles respondem à várias mensagens.
Isto será crítico para ser automatizado nos próximos ~10 anos
Próximo slide.
Eis um grande livro.
Quantas pessoas já leram esse livro?
Ok. Quando eles escreveram este livro, eu liguei pra eles e disse
"Este é o melhor livro escrito nos últimos dez anos
mas porque diabos vocês escreveram ele de forma tão centrada em LISP -- como um clube fechado?"
Este é um livro difícil para a maioria das pessoas.
Se você não conhece a cultura LISP, é muito difícil ler.
Se você não sabe como o CLOS é feito, é um livro muito difícil de ler.
Mas este livro tem alguns dos insights mais profundos e práticos sobre POO
desenvolvidos nos últimos anos.
Portanto, eu realmente o recomendo.
E, se houver algum professor universitário que gostaria de receber um prêmio
Eu darei àquele que reescrever este livro para que a comunidade OO, em geral, possa entendê-lo.
Será um grande serviço à raça humana.
Então, o que aconteceu na maior parte do mundo, começando nos anos 70, foi Tipos de Dados Abstratos
que é, de fato, uma forma de permanecer numa forma de pensar sobre programação centrada em atribuições
E eu acredito que ...
Na verdade, quando eu fiz este slide, C++ estava tendo sua especificação desenvolvida
Era uma daquelas coisas, como MS-DOS, que ninguém levou a sério
porque quem iria cair numa piada como esta?
Próximo slide, por favor.
Na verdade, minha história favorita de C++ é: na Apple, havia este sistema operacional
notavelmente ... coincidentemente chamado Rosa
Era um barato!
E havia duas características interessantes neste SO em que eles estavam trabalhando:
Uma, era que ele seria desenvolvido em dois anos.
Nós temos conhecido alguns grandes designers de SOs ao longo dos anos
e eu não conheço nenhum SO decente que tenha sido feito em dois anos
mesmo por pessoas com 10 vezes mais IQ do que a equipe do Rosa.
A outra característica é que seria feito em C++, por eficiência.
"Ah, não vamos fazer em Smalltalk! É muito lento!"
Deixe-me dizer, não há nada mais ineficiente do que gastar 10 anos em um SO que nunca funciona.
De fato, os piores são aqueles que parecem funcionar.
Então, vamos pegar nosso plano rosa e usar esta citação do McLuhan
Minha citação preferida do McLuhan
"Eu não sei quem descobriu a água, mas não foi um peixe."
Ele quis dizer nós sendo o peixe e a água como nossas estruturas de crença -- nosso contexto
E eu acredito que esta é ...
Se fosse escolher uma causa, tanto de dificuldade na nossa área
e também uma dificuldade geral da raça humana ...
É tomar um único ponto de vista e se comprometer a ele como se fosse religião.
Isso aconteceu com Smalltalk.
Há uma citação maravilhosa de Schopenhauer
um filósofo alemão do século dezenove, que disse
"Toda idéia passa por três estágios"
Primeiro, ela é denunciada como o trabalho de um louco
Isto é o que Swift chamou de "A confederação de estúpidos"
e depois, ela é apontada como algo que sempre foi completamente óbvio
e o último estágio é quando os primeiros denunciantes clamam ter inventado ela
É aí que ela entra no estágio da religião.
Agora, pra mim, o que aconteceu de mais perturbador com Smalltalk quando ela foi lançada
foi que, em muitos aspectos, ela parou de mudar.
E eu digo a vocês que, na Xerox PARC, houveram 4 grandes versões ...
versões completamente diferentes da linguagem, em um período de 10 anos
e muitos e muitos lançamentos significativos entre estas versões.
E eu acho que o que mais gostávamos em Smalltalk não era o que ele podia fazer
mas o fato de que ele era um veículo tão bom para iniciar o próximo ciclo de idéias
que tinhamos sobre como construir sistemas.
E isso, para todos os efeitos -- quando Smalltalk se tornou comercial -- parou!
Mesmo havendo um livro -- o famoso livro azul que Adele e Dave escreveram
que possui o código para criar interpretadores de Smalltalk e permite que uma pessoa inicie este processo
quase ninguém procurou se beneficiar disso.
Quase nenhuma universidade se beneficiou disso.
Quase nenhuma elicitação comercial se beneficiou disso
E o que eles perderam foi, pra mim, a coisa mais profunda que eu gostaria de comunicar a vocês hoje
que é: nós não sabemos fazer design de sistemas ainda!
Então, não vamos fazer daquilo que não sabemos uma religião, pelo amor de Deus!
O que precisamos fazer é pensar, e pensar, e pensar constantemente sobre o que é importante.
E nós temos que permitir que nossos sistemas nos levem ao próximo nível de abstração na medida em que os alcançamos.
O que mais me orgulha no Smalltalk
basicamente a única coisa, do meu ponto de vista, que me orgulha
é que ele tem sido tão bom em se livrar de versões anteriores de si mesmo
até ele sair para o mundo.
Uma das razões que nos levaram a nos envolver em fazer o Smalltalk novamente
depois -- pra mim, foi dezesseis anos sem trabalhar em linguagens de programação
Dois anos atrás nós iniciamos este projeto chamado Squeak
que não é uma tentativa de oferecer um Smalltalk livre para o mundo
mas uma tentativa de oferecer ao mundo um mecanismo de bootstrap para algo muito melhor que Smalltalk
e quando você brincar com Squeak, por favor, por favor, pense nele por este ponto de vista.
Pense em como você poderá tornar ele obsoleto
utilizando seus próprios mecanismos para obter a próxima versão de si mesmo.
Então, busque os pensamentos azuis!
Eu estava pensando em como terminar esta palestra -- pois eu fico continuando e continuando ...
e me lembrei de uma história -- eu sou um organista de orgãos de tubo
e a maioria dos músicos organistas tem como herói E. Power Biggs
Ele meio que recuperou o interesse em orgãos de tubo especialmente em como ele era tocado
nos séculos dezessete e dezoito, e influenciou tremendamente nós, organistas
E um amigo meu foi assistente de E. Power Biggs por muitos anos, nos anos 40 e 50.
Ele tem oitenta anos, hoje.
E quando nós o convidamos para jantar, sempre fazemos ele contar histórias de E. Power Biggs
O órgão que E. Power Biggs tinha naqueles dias era um órgão pequenino e besta
desconcertante, em um museu de Harvard
chamado Museu de Busch-Reisinger
Mas de fato, todos os tipos de música eram tocados nele
E, um dia, este assistente teve que substituir Bigs e ele perguntou a Bigs
"Bem, qual é a peça a ser apresentada?", e ele disse "Bom, eu marquei de tocar a peça heróica de Caesar Franck"
E, se você conhece esta peça, ela é feita para os maiores órgãos já construídos
Os órgãos mais barulhentos já construídos, nas maiores catedrais já construídas
porque é um trabalho de sinfonia do século dezenove para órgãos
e Biggs estava pedindo ao meu amigo para tocá-la neste pequenino órgão besta
E ele disse "Mas como eu posso tocar isso nisto??"
Biggs respondeu "Apenas toque com grandeza!"
Apenas toque com grandeza!
Estar lado a lado com o futuro enquanto ele se move, é tocar seus sistemas de forma mais grandiosa do que eles se parecem no momento.
Obrigado.