Por que os paradigmas orientados a objetos demoraram tanto para se popularizar?

12

Eu li essa pergunta e isso me fez pensar em outra coisa relativamente recente. Linguagens orientadas a objetos. Não sei ao certo quando o primeiro foi criado, mas por que demorou tanto tempo para que se tornassem mainstream?

  • C se tornou muito popular, mas não se tornou o C ++ orientado a objetos por anos (décadas?) Depois
  • Nenhuma linguagem convencional antes dos anos 90 era orientada a objetos
  • A orientação a objetos realmente parecia decolar com Java e C ++ na mesma época

Agora, minha pergunta, por que isso demorou tanto? Por que C não foi originalmente concebido como uma linguagem orientada a objetos? Tomar um subconjunto muito pequeno de C ++ não afetaria muito a linguagem principal. Por que essa idéia não era popular até os anos 90?

Earlz
fonte
1
Ha! Eu tinha certeza de que alguém perguntaria isso eventualmente;) No entanto, você precisa fazer um pouco mais de pesquisa, o Smalltalk pode não ter sido imensamente popular, mas acho que isso conta como mainstream, pelo menos pela definição do termo no início dos anos 70 (e vamos não esqueça Simula). Além disso, você está falando especificamente sobre orientação a objetos baseada em classe?
yannis
6
Pergunta interessante. Recentemente, descobri que o Simula 67 tinha métodos virtuais (nos anos 60 já!). Parece que muitos dos conceitos mais importantes em CS foram descobertos durante as duas primeiras, três décadas de sua história (1950-1970). Muitas coisas novas que vemos hoje são na verdade uma mistura de conceitos muito antigos.
Giorgio
3
@Giorgio: Eu considero essa descoberta um rito de passagem que marca o seu crescimento, de se apaixonar pelo mais recente e do maior a ser um desenvolvedor experiente que pode ver através de modismos e distinguir o que é realmente útil.
Michael Borgwardt
@ Michael Borgwardt: Eu concordo totalmente com você (e eu não sou facilmente apaixonado pelas últimas tecnologias :-)). Acho que um desenvolvedor experiente deve julgar a tecnologia pela eficácia com que pode resolver seus problemas. Um novato pode ficar impressionado com coisas novas e considerá-lo melhor simplesmente porque é novo (hype). Com relação ao POO: eu sabia que esses conceitos foram desenvolvidos ao longo de muitos anos, mas, quando olhei para Simula e vi que eles já haviam inventado muitos conceitos que comumente usamos hoje, fiquei realmente surpreso.
Giorgio

Respostas:

25

Primeiro, vamos tentar estabelecer uma linha do tempo:

  • 1963 - O Sketchpad de Ivan Sutherland é considerado um trabalho pioneiro em orientação a objetos e GUIs.
  • 1967 Simula aparece, e se ele ou Smalltak deve ser considerado a primeira linguagem orientada a objetos ainda é motivo de debate.
  • 1969 - Dennis Ritchie começa a desenvolver C .
  • 1972 - Smalltalk , uma linguagem fortemente influenciada por Simula, aparece. É a ideia de Alan Kay, que geralmente é considerado o inventor do termo "orientação a objetos" (Alan Kay também inspirou o personagem de mesmo nome em Tron ;).
  • 1979 - Bjarne Stroustrup começa a trabalhar em C com Classes, o precursor do C ++ .
  • 1983 - O Objetivo C aparece e é essencialmente um esforço para adicionar ao C. o sabor da orientação a objetos de Smalltalk.
  • 1985 - O Object Pascal aparece e é quase imediatamente popularizado pelo Turbo Pascal 5.5.
  • 1986 - Começa o trabalho no CLOS , um esforço para levar a orientação a objetos ao Common Lisp.
  • 1991 - O Visual Basic é lançado.
  • 1995 - Java é lançado.
  • 1995 - Delphi é lançado.

As principais influências de Ritchie foram o BCPL e o ALGOL (ambos são linguagens imperativas), e o C foi criado em um momento em que a abordagem de Simula e Smalltalk à orientação a objetos ainda não era bem conhecida. Foi concluída por volta de 1972 e C com Classes apareceu apenas 7 anos depois, com Dennis Ritchie e Brian Kernighan envolvidos em sua criação :

Na época, eu considerava C a melhor linguagem de programação de sistemas disponível. Isso não era tão óbvio na época (1979) como se tornou mais tarde, mas eu tinha especialistas como Dennis Ritchie, Steve Johnson, Sandy Fraser, Greg Chesson, Doug McIlroy e Brian Kernighan no final do corredor, com quem eu poderia aprender e obter feedback. Sem a ajuda e os conselhos deles, e sem o C, o C ++ teria nascido morto.

Ao contrário de rumores repetidos, nunca me disseram que eu tinha que usar C; nem me disseram para não usar C. De fato, o primeiro manual C ++ cresceu da fonte troff do manual C que Dennis me deu. Muitos novos idiomas foram projetados nos laboratórios da Bell; em "Pesquisa", pelo menos, não havia regras que reforçassem o fanatismo linguístico.

O objetivo C apareceu 11 anos depois, e ele e C ++ foram esforços importantes e bem-sucedidos para levar a orientação a objetos para C. A diferença pode parecer longa agora, mas não acho que tenha sido particularmente longa na época, lembre-se de que estamos conversando cerca de uma era antes da Internet. 1993, quando o Mosaic (o primeiro navegador) apareceu, foi um ponto de virada na indústria. Java e Delphi, lançados alguns anos depois, tinham uma enorme vantagem sobre seus antecessores, pelo menos em termos de popularidade. A web também era uma das plataformas que a Sun estava alvejando com sua promessa WORA , talvez a mais importante da época, e o Java era amplamente comercializado como a linguagem para a plataforma recém-nascida.

Outro fator importante é que o final dos anos 80 e o início dos anos 90 foram os tempos em que as GUIs começaram a se tornar populares, especialmente na computação doméstica, enquanto ao mesmo tempo o hardware estava ficando cada vez mais barato. A orientação a objetos é um paradigma extremamente conveniente no desenvolvimento de GUIs e aplicativos orientados a gráficos em geral, e Turbo Pascal, Delphi, Visual Basic e (talvez em menor extensão) Java foram elogiados (na época) pela simplicidade que eles traziam ao desenvolvimento da GUI.

O marketing agressivo de Sun da Java obviamente também desempenhou um papel, no entanto, como ainda me lembro vividamente da minha primeira interação com ele, definitivamente não fiquei impressionado. Minha primeira reação ao Java foi "hm, nada mais do que um recurso C ++ interpretado por pessoas com fome, vou me ater ao Turbo Pascal, muito obrigado" (ei, eu tinha apenas 17 anos na época;). Eu não sei como mais alguém reagiu ao Java na época, mas para mim foi apenas uma moda e rapidamente mudei para o Delphi (e Visual Basic, suspiro), e só comecei a usar o Java alguns anos depois, na faculdade , e apenas porque era um curso obrigatório.

Embora seja verdade que Java, e seu sabor de orientação a objetos, se popularizem extremamente rapidamente, eu realmente não acho que o paradigma não fosse bastante popular antes de meados da década de 90, a introdução da Web mudou nossa definição de popularidade. De qualquer forma, meados dos anos 90 foi uma época em que o desenvolvimento de software em geral teve um surto de popularidade, com a web, a proliferação de GUIs e o hardware mais barato sendo fatores-chave. Java estava simplesmente no lugar certo, na hora certa.

Leitura adicional:

Perguntas relacionadas:

yannis
fonte
Uma descoberta recente: UMA HISTÓRIA DO ALGOL 68 - Embora não tenha muito a ver com orientação a objetos, é uma leitura fascinante para os lustres do histórico de programação.
yannis
Em 1994, o Python 1.0 foi lançado .
Gerrit #
2
@gerrit Eu sei, e existem várias outras linguagens lançadas no início e meados dos anos 90 que eu pulei intencionalmente (por exemplo, Perl, PHP, Ruby, JavaScript), porque elas não eram muito populares no começo ou porque realmente não deu suporte à orientação a objetos desde o início. Python não era realmente uma linguagem influente durante os seus primeiros anos ...
yannis