BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Programação Orientada a Objetos: Estamos no caminho errado?

Programação Orientada a Objetos: Estamos no caminho errado?

“Se você olhar para trás quando a orientação a objeto vinha do Smalltalk-80 com passagem de mensagens, e olhar a situação atual com heranças e coisas do tipo, teriamos nós seguido o caminho errado?” Essa foi a questão de abertura em uma entrevista a QCon de Londres com Joe Armstrong, o desenvolvedor original do Erlang, e Ralph Johnson, muito associado com Smalltalk, POO, e padrões de projeto. Ambos os entrevistados sugeriram que sim, mas isso é devido as falhas de implementações da idéia de objetos e não a idéia em si. Esse, de fato, é o ponto inicial de Ralph Johnson:

Uma das coisas que sempre acontece quando você tem uma idéia é que você a expõe e as pessoas a acham muito radical. Muitas pessoas não adotam a coisa como um todo, eles pegam uma parte disso e então você tem essa aproximação.

Mesmo o Smalltalk, tido para muito desenvolvedores como uma linguagem OO exemplar, é vista como uma aproximação da idéia de objetos.

Dr. Johnson sugere dois problemas específicos com Smalltalk:

...Eu acho que o Smalltalk teve um erro fundamental. Eu acho que é muito difícil para pessoas que não são programadores Smalltalk apreciarem, mas quando você é um programador Smalltalk, quando você está depurando com Smalltalk, você está depurando o sistema todo.

e

Devido ao Smalltalk ter tudo na imagem. Você não consegue monitorar as versões entre velhas e novas... e existe também um problema de complexidade. Você constrói um sistema, então ele chega ao limite que algumas pessoas podem fazer e é ai onde o Smalltalk não funciona muito bem.

O fato de que tudo (suas classes de aplicação, desenvolvimento e ferramentas de depuração, e bibliotecas) fica na ‘imagem’, gera um problema para o Smalltalk, mesmo para os admiradores mais fervorosos da linguagem. Entretanto isso não impediu pessoas de construírem sistemas críticos (e gigantes) - como o Projeto Cargill Lynx. O Lynx é um sistema de negociação global de grãos que suporta mais de 1.500 usuários em 150 lugares ao redor dos Estados Unidos e está em produção há mais de uma década. Durante sua existência, o Lynx envolveu mais de 100 programadores, com controle completo de versão e robustos testes e depurações. Sistemas de grande porte de sucesso, como o Projeto Lynx, não condizem com as preocupações do Ralph Johnson, e muito menos eles refutam a premissa de que Smalltalk tinha uma implementação incorreta das idéias de objeto; eles meramente trazem uma perspectiva adicional.

A questão sobre quais conjuntos de características faz uma linguagem ser orientada a objetos foi extensivamente, e emocionalmente, debatida nos anos 90. Na entrevista a QCon de Londres, Joe Armstrong, um dos fundadores da tese, citou um argumento muito similar:

Eu comecei a pensar o que era programação orientada a objetos e achei que Erlang não era orientada a objetos, achei que ela fosse uma linguagem de programação funcional. Então, meu orientador disse “Você está errado, Erlang é extremamente orientada a objetos”. Eu poderia considerar, embora eu não tenha certeza se eu acredito nisso ou não, que o Erlang pode ser a única linguagem orientada a objetos por causa dos 3 princípios da programação orientada a objetos que ela é baseada, como passagem de mensagem, isolação entre objetos e polimorfismo.

Dr. Armstrong demonstrou que ele não estava totalmente convencido com os argumentos de seu orientador, mas parecia pensar que Erlang “talvez seja a única linguagem orientada a objetos”. Em adição a três caracteristicas citadas, herança simples e tipagem dinâmica são muitas vezes tidas como “requerimentos absolutos” para ser uma linguagem orientada a objetos.

Na entrevista, ambos Dr. Johnson e Dr. Armstrong, parecem pensar que a idéia de objetos foi e é muito importante. Dr. Armstrong usou seu tempo mostrando como Erlang tenta implementar as idéias de objeto e características de linguagens orientadas a objeto. Já Dr. Johnson passou mais tempo criticando tentativas anteriores de implementar a idéia de objetos, especificamente a do Smalltalk.

Dave Thomas é outra pessoa muito ligada com objetos e com Smalltalk. O time dele criou o primeiro “Goodies Packs” (Pacotes de Extras) para a Digitalk’s Methods (o primeiro Smalltalk para PC), ele foi fundador e CEO da companhia que criou o que veio a ser o Smalltalk VisualAge da IBM, e o time dele desenvolveu a muito popular ferramenta de desenvolvimento, Eclipse (originalmente escrita em e para Smalltalk). Dr. Thomas disse : “Objetos foram um equívoco,” e “Eu sou um completo pecador”. Essas declarações foram feitas com um tom e efeito dramático, mas também para apontar “erros” na implementação do Smalltalk em relação a idéia de objetos - em outras palavras o foco no estado, a falta de bons modelos de concorrência nas classes, uma linguagem baseada em imagem e a falta de foco em mensageria.

Mesmo Alan Kay o primeiro a utilizar o termo “orientação a objeto”. Em uma entrevista recente para ComputerWorld da Austrália disse:

Eu fiz uso desse termo (e isso foi uma mal escolha devido a subestimação da idéia mais importante do envio de mensagem). Parte da idéia existiu (em vários sistemas). Eu poderia ver que uma base mais abrangente poderia ter sido feita indo pelo caminho de pensar num conjunto eficiente de máquinas virtuais se comunicando somente por mensagens. Isso forneceria escalabilidade, seria uma versão virtual do que a minha comunidade de pesquisa, ARPA-IPTO [O Escritório de Técnicas de Processamento de Informações nas instalações de pesquisa do Departamento de Defesa do Estados Unidos] começou a fazer com redes de alta escala, que também deveria ter algumas poderosas propriedades “algébricas” (como polimorfismo). ... Entretanto, eu também não sou um grande fã de Smalltalk, mesmo ela sendo comparada favoravelmente com a maioria das linguagens atuais (Eu não gosto de nenhuma delas, e eu não acho que nenhuma delas são apropriadas para os problemas reais de hoje em dia, tanto para sistemas quando para usuários finais).

A recente enxurrada de críticas direcionadas a Smalltalk traz a mente um lado repetitivo da música do velho Coasters, Charlie Brown: “(Porque é que todo mundo sempre implica comigo)”. Johnson, Armstrong, Kay, e Thomas não estão, é claro, “implicando comigo (Smalltalk)” implicitamente na entrevista à QCon de Londres, e nas outras críticas, a questão é saber até quando uma idéia que é “muito radical para a maioria das pessoas” (Dr. Johnson), deve ser implementada em uma linguagem de programação?

É também possível que a idéia de objeto não atenda diretamente a definição e estrutura de uma linguagem de programação. Na entrevista para Computerworld da Austrália, Dr. Kay também apontou:

Para mim, uma das coisas legais sobre a semântica de objetos reais é que eles são “computadores reais por completo (RCATWD - Real Computers All The Way Down)” - isto é, eles sempre mantém a total capacidade de representar qualquer coisa. A maneira antiga traz duas coisas que não são computadores - dados e procedimentos - e todo aquela súbita capacidade de adiar otimizações e decisões particulares em favor de comportamentos foi perdida. Em outras palavras, com objetos sempre existe a capacidade de simular qualquer coisa que você quiser, e enviar isso ao redor do planeta. ... E RCATWD também fornece proteção perfeita em ambas direções. Nós podemos ver isso no modelo de hardware da Internet (possivelmente o único sistema real orientado a objetos funcionando). Você consegue extensibilidade praticamente de graça por simplesmente concordar com as convenções para os formatos de mensagem. Meu pensamento na década de 70 era que a Internet, que todos nós trabalhavámos ao lado da computação pessoal, tinha um bom modelo escalável, e que nós deveríamos fazer uma internet virtual de máquinas virtuais que poderia ser armazenados em cache pelo hardware das máquinas. É realmente muito ruim isso não ter acontecido.

E você leitor, o que pensa disso?

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT