Resumo
- O livro de Adele Goldberg e David Robson de 1983 definiu a interface entre a Imagem Virtual do Smalltalk-80 e a Máquina Virtual específica de cada computador: memória de objetos, bytecodes, contextos de execução, despacho de mensagens e primitivas.
- Goldberg submeteu essa interface a implementações reais. Apple, DEC, Hewlett-Packard e Tektronix construíram ports, compartilharam divergências com o Xerox PARC e compararam o comportamento a rastros de referência.
- A conquista provou portabilidade dentro de uma fronteira definida. Não provou igualdade de desempenho, pausas, métricas tipográficas, janelas, entrada, arquivos ou qualidade interativa.
Uma especificação que precisava inicializar
Smalltalk-80 não era apenas uma linguagem cuja gramática pudesse ser copiada. Era um ambiente persistente em que classes, compilador, browser, depurador, gráficos e interface existiam juntos como objetos. Levá-lo a outro computador significava preservar um mundo em funcionamento.
Em Smalltalk-80: The Language and Its Implementation, Adele Goldberg e David Robson formalizaram uma separação. A Imagem Virtual continha os objetos do sistema e suas ferramentas. Abaixo dela, uma Máquina Virtual própria de cada host fornecia o interpretador, a memória de objetos e as primitivas que ligavam a imagem ao cálculo, armazenamento, tela, dispositivo apontador e arquivos. Métodos-fonte eram compilados em instruções de oito bits; um interpretador de pilha as executava, e contextos representavam cálculos ativos.
O acordo de portabilidade era limitado e poderoso: construir corretamente um núcleo menor, dependente do hardware, e depois carregar a imagem compartilhada. O Blue Book não trocou software por prosa. Expôs comportamento observável suficiente para uma equipe externa reconstruir a camada inferior sem depender do conhecimento tácito do PARC.
Goldberg acrescentou uma disciplina fundamental: a suficiência da especificação seria julgada por pessoas que precisavam fazê-la funcionar em outras máquinas.
As equipes externas eram instrumentos de teste
Em sua história oral de 2010 no Computer History Museum, Goldberg contou que primeiro obteve autorização corporativa para publicar. Com apoio de Bert Sutherland, recrutou Tektronix, Hewlett-Packard, DEC e Apple. A participação exigia uma equipe interna de software trabalhando com a equipe de hardware. A pergunta não era se os engenheiros gostavam da linguagem, mas como o hardware afetava seu desempenho.
O relato em Smalltalk-80: Bits of History, Words of Advice torna o método concreto. Seis empresas foram convidadas; quatro entraram na fase de implementação. Elas se comprometeram a compartilhar erros e recomendações. Xerox entregou imagens sucessivas, instruções sobre ponteiros, espaço de objetos, contextos, métodos compilados e classes, além de comunicação direta quando o texto e o sistema não concordavam.
Cada port passou a testar o documento. Uma hipótese invisível no Alto ou no Dorado aparecia quando engenheiros da DEC, HP, Tektronix ou Apple não conseguiam reproduzi-la. A diversidade de hardware não era ruído: revelava a diferença entre exigência portátil e acidente local.
Os participantes não apenas aprovaram um texto pronto. Atribuições de primitivas mudaram, a imagem cresceu e a primeira conferência de implementadores discutiu contagem de referências, coleta de lixo e caches de métodos. Goldberg registra que quase toda a tentativa anterior do livro foi descartada e reescrita. A especificação formal da VM, já depurada pelas implementações, foi o que mereceu permanecer.
Rastros diziam o que “conforme” significava
Uma tela parecida não bastava. Xerox distribuiu rastros de execução com diferentes níveis de detalhe. O mais fino mostrava referências de memória, alocação, bytecodes, envios de mensagens, retornos e chamadas de primitivas. Outros cobriam trechos mais longos com menos eventos. A nova VM podia confrontar sua sequência real com a esperada.
O Blue Book especificava acessos separados a ponteiros, palavras e bytes na memória de objetos. Definia como o interpretador encontrava classe e método, criava um contexto, mantinha a pilha, tratava uma busca malsucedida e enviava doesNotUnderstand:. Agrupava bytecodes em empilhamentos, armazenamentos, envios, retornos e desvios. As famílias de primitivas cobriam aritmética, coleções, memória, controle, entrada/saída e serviços do sistema.
Os gráficos mostravam a emenda com clareza. Muito de BitBlt, texto e composição vivia em objetos da imagem. Porém cursor, teclado, tela de bitmap e arquivo encontravam uma máquina física. As primitivas atravessavam essa fronteira. Hosts diferentes podiam responder ao mesmo pedido com controladores, organizações de memória ou instruções distintas.
O critério de sucesso era operacional: “ler e adotar” a Imagem Virtual e reproduzir a conduta esperada. Quando implementações bem-sucedidas carregaram a quarta imagem sem alterar suas VMs, demonstraram estabilidade da interface. Não demonstraram que os computadores eram iguais.
Compatibilidade não era equivalência de experiência
Goldberg separa a adoção da imagem de outra medida, mais subjetiva: o desempenho efetivo em cada hardware. Uma imagem comum produz continuidade. As mesmas classes existem, os mesmos métodos compilam e ferramentas semelhantes abrem. Mesmo assim, tudo ao redor e abaixo do limite afeta a experiência.
A busca de métodos pode usar outro cache. A memória pode ser recuperada por contagem de referências, rastreamento ou uma combinação. Uma primitiva pode ser microprogramada, escrita em assembly ou delegada a uma rotina lenta do host. Escalonamento e sondagem de entrada mudam latência. Geometria da tela, bitmap, fontes, cursor e arquivos mudam apresentação. Duas VMs corretas podem conservar o significado dos objetos e exibir pausas ou redesenhos bem diferentes.
Até o conjunto de caracteres expôs o custo. Goldberg recordou que o grupo foi obrigado a usar ASCII padrão porque nem todos controlavam suas fontes. A portabilidade ampliou a comunidade de máquinas, mas estreitou essa superfície ao mínimo compartilhável.
O prefácio do Blue Book reconhecia que o hardware disponível não sustentava toda a ambição interativa. O contrato podia definir um envio de mensagem ou acesso a objeto. Não podia fazer um processador fraco parecer um Dorado, ampliar a tela ou eliminar toda pausa do coletor.
A lição é simples: evidência de compatibilidade vale na camada observada. Passar no carregamento da imagem e no rastro de bytecodes prova o acordo Imagem/VM. Não prova tempos, fontes, janelas, periféricos ou experiência completa idênticos.
A publicação era um conjunto, não um único livro
A edição especial da BYTE de agosto de 1981 ofereceu uma introdução pública. O livro de Goldberg e Robson de 1983 uniu linguagem e especificação da VM. Smalltalk-80: The Interactive Programming Environment, de 1984, descreveu o trabalho dentro do ambiente. Glenn Krasner editou o volume de experiências dos implementadores.
Goldberg e Robson organizaram juntos o livro da linguagem. Ela descreveu um processo em que ela e Dan Ingalls levavam questões ao grupo e decidiam, enquanto Robson funcionava como ouvidor das objeções. Ingalls atribuiu depois a Robson a maior parte do interpretador de referência. Texto, modelo executável e decisão coletiva tinham de convergir.
A linhagem não cabe na narrativa de um único inventor. Simula e Sketchpad alimentaram a visão de Alan Kay; Kay articulou a computação pessoal centrada em mensagens. Dan Ingalls construiu e evoluiu interpretadores e VM. Diana Merry trabalhou em texto e edição gráfica. Ted Kaehler contribuiu para gráficos e sistemas de memória. Larry Tesler participou do Notetaker e do ambiente. David Robson deu forma rigorosa ao livro e ao interpretador. O restante do PARC e as equipes externas tornaram o contrato executável.
Nesse conjunto, o feito de Goldberg fica mais preciso: obter permissão, conectar o laboratório à comunidade de implementação, fazer observações de hardware retornarem ao texto, coescrever a especificação e conduzir tudo a uma forma pública testável.
O contrato durou porque a mecânica podia mudar
Houve Smalltalks derivados de imagens licenciadas e outros reescritos a partir da documentação. Na Apple, Ingalls adaptou a interface a outro mouse e outras telas; mais CPU e uma tela maior transformaram a sensação sem romper a continuidade conceitual.
Squeak foi além. Nos anos 1990, a equipe usou o interpretador de referência e uma imagem APDA para iniciar uma nova implementação. Depois trocou a tabela de objetos por ponteiros diretos, adotou coleta geracional e gerou C a partir de um subconjunto de Smalltalk. Ted Kaehler e Ingalls reconstruíram a memória; John Maloney escreveu o tradutor; Scott Wallace remodelou arquivos. A mecânica mudou muito, mas a continuidade útil permaneceu.
Um bom contrato portátil protege uma junção, não congela toda a história. Dá liberdade para alterar a camada inferior e provas para detectar quando a alteração rompe a superior. O Smalltalk Zoo do Computer History Museum torna essa diversidade visível. O Blue Book fez o Smalltalk viajar porque indicou quais comportamentos precisavam atravessar a fronteira e quais escolhas podiam permanecer locais.
Fontes
- História oral de Adele Goldberg, Computer History Museum, 2010.
- Adele Goldberg e David Robson, Smalltalk-80: The Language and Its Implementation, 1983.
- Adele Goldberg e David Robson (orgs.), Smalltalk-80: Bits of History, Words of Advice, 1983.
- Adele Goldberg, Smalltalk-80: The Interactive Programming Environment, 1984.
- Daniel H. H. Ingalls, “The Evolution of Smalltalk: From Smalltalk-72 through Squeak”, 2020.
- Alan C. Kay, “The Early History of Smalltalk”, 1993.
- Edição Smalltalk da BYTE, agosto de 1981.
- Smalltalk Zoo do Computer History Museum.
Briefing para membros
Contexto aprofundado do perfil
Faça login com o nível de assinatura correto para desbloquear o briefing completo e as notas das fontes.
Apenas para Strategic Circle
Strategic Circle
Aberto a todos os leitores. Desbloqueie Briefings de perfil após se inscrever e fazer login.
Junte-se ao Strategic CircleSomente para Leadership Alliance
Leadership Alliance
Para proprietários e gestores qualificados de ativos de PI; faça login para desbloquear os briefings da Leadership Alliance.
Junte-se ao Leadership Alliance
