MAC 441/5714 - Tópicos de Programação Orientada a Objetos
Aula 2 - 9/03/2004
Hist�ria da Programa��o Orientada a Objetos
"I invented the term Object-Oriented, and I can tell you I did not have C++ in
mind." - Alan Kay
"The purpose of the Smalltalk project is to provide computer support for the
creative spirit of everyone." - Daniel Ingals, 1981.
Ra�zes do Conceito de Objetos
- Plat�o, 375 a.C., teoria das formas: uma forma ideal de uma cama � a base
para todas as camas do mundo (A Rep�blica).
- Arist�teles, 330 a.C., precursor da heran�a: "Se falamos dos animais,
� claro que vamos falar as mesmas coisas sobre muitos deles". Ent�o, se duas
classes tem caracter�sticas em comum, Arist�teles sugere que coloquemos estas
caracter�sticas em uma entidade que hoje chamamos de superclasse.
- Carolus
Linnaeus (ou Carl von Linn�) em 1753 elaborou provavelmente a primeira
grande hierarquia de classes (toxonomia de plantas) que se tornou um padr�o
internacional.
SIMULA
- Linguagem SIMULA criada na Noruega por Ole-Johan Dahl and Kristen Nygaard.
- Derivada do Algol.
- SIMULA I (1962-65) e Simula 67 (1967) foram as primeiras linguagens OO.
- Eram usadas para simula��es do comportamento de part�culas de gases.
- Os conceitos de objetos, classes e heran�a apareceram l� embora n�o
necessariamente com estes nomes.
- Heran�a apareceu apenas em Simula 67 e se falava apenas em
subclassing.
- Simula passou a ser usada com freq��ncia da d�cada de 70, sendo inclusive
a linguagem utilizada para desenvolver as primeiras vers�es de Smalltalk.
- Veja uma interessante descri��o do papel de Simula na origem de orieta��o a
objetos nas palavras dos pr�prios criadores da linguagem.
Smalltalk
- XEROX PARC, 1970 a 1980: um lugar �nico na hist�ria da Ci�ncia da
Computa��o.
- Projeto Dynabook: um ambiente novo de computa��o para adultos e
crian�as com caracter�sticas altamente revolucion�rias.
- Deste projeto sairam
- Interface Gr�fica (com bitmaps)
- Sistemas de Janelas
- Mouse
- Redes via Modem e via Ethernet
- Placas de Som
- etc., etc.
- Alan Kay, pesquisador de Utah, ent�o prop�e a cria��o de v�rios
aplicativos novos para tal computador: editor de textos, programas para
desenho, para modelagem de objetos tri-dimensionais, etc.
- Ele foi ent�o convidado a entrar no projeto e criar uma nova linguagem de
programa��o que fosse f�cil de programar e que tivesse a sintaxe muito
simples.
- Programar nesta linguagem deveria ser t�o f�cil quanto bater um papo furado
(small talk) em ingl�s.
- Kay se inspirou em
- LOGO: baseada em interface gr�fica e destinada a crian�as.
- LISP: alto poder para manipula��o de s�mbolos (as linguagens at� ent�o
manipulavam apenas n�meros), sintaxe super simples. At� hoje todo m�todo
Smalltalk devolve um valor, assim como uma fun��o LISP.
- Sketchpad,
um sistema gr�fico interativo do MIT desenvolvido por Ivan Sutherland em sua
tese de doutoramento em 1963.
- No final de 1972 a primeira vers�o de Smalltalk estava pronta. Ainda n�o
possuia heran�a.
- Em 1974, Smalltalk passou a incorporar interfaces gr�ficas e bitmaps. A
partir da� foi criado o primeiro sistema para gerenciamento de janelas.
- 1976: introduziu-se o conceito de heran�a, m�quina virtual e bytecodes. A
m�quina virtual desvinculava o programa Smalltalk do hardware.
- Paradoxo: O Dynabook nunca chegou a se tornar um produto comercial
mas revolucionou o mundo da computa��o, ditando grande parte do que usamos
hoje.
- O projeto foi conclu�do mas a XEROX continuou investindo no
Smalltalk. Neste ponto, ela passou a divulgar a linguagem ao p�blico e 3
livros foram escritos (ver bibliografia).
- Os livros s�o hoje conhecidos pelas suas capas: Orange Book,
refer�ncia b�sica da linguagem, Blue Book, manual de programa��o, e
Green Book, documenta��o da implementa��o da linguagem e da m�quina
virtual.
- O sistema foi amplamente divulgado, em fitas magn�ticas, e era chamado de
Smalltalk-80.
- Mais tarde a IBM criou a sua vers�o, Smalltalk V, que foi a primeira a
rodar em DOS. Se tornou popular no final da d�cada de 80. Hoje em dia se chama
VisualAge for Smalltalk.
- Em 1987, a XEROX criou a empresa Parc Place para cuidar do Smalltalk. No
final dos anos 90, a Parc Place foi comprada pela Cincom que hoje comercializa
o Smalltalk que estamos usando nesta disciplina.
- Em 1996 surgiu o projeto Squeak cujo objetivo � desenvolver uma vers�o de
software livre para Smalltalk no ambiente Linux.
- O Squeak foi desenolvido por um pequeno grupo de desenvolvedores,
incluindo o Alan Kay, o pai da linguagem.
Evolu��o das linguagens
- No final dos anos 80, Bjarne Stroustrup estendeu a linguagem C com alguns
conceitos de objetos e criou C++.
- Em termos de orienta��o a objetos, pode-se
dizer que C++ est� no extremo oposto de Smalltalk.
- Self � uma linguagem criada em meados dos anos 80 por David Ungar e
Randall B. Smith na Sun. Sua maior virtude � a simplicidade (e tudo o que vem
com ela: flexibilidade, agilidade, etc.). Veja p�gina de leituras recomendadas.
- Em 1995, a Sun lan�a o ambiente Java, que inclui a linguagem Java,
altamente influenciada por Smalltalk mas com sintaxe parecida com C++.
- Java apresenta um crescimento enorme tanto no meio acad�mico quanto
industrial.
- A Microsoft se sente amea�ada e tenta criar a sua pr�pria vers�o de Java
com algumas incompatibilidades em rela��o � vers�o padr�o controlada pela
Sun. A Sun reclama na justi�a e Bill gates declara Java linguagem non
grata na Microsoft.
- Microsoft lan�a sua vers�o de Java: C#
- C# � mais complexa do que Java, voltando a incorporar alguns aspectos de
C++ que Java tinha optado por n�o incluir. Com estes aspectos adicionais,
perde em elag�ncia e clareza mais ganha em desempenho.
O que faz de uma linguagem Orientada a Objetos?
- Era um assunto controverso nos anos 80.
- Em 87, Peter Wegner, publicou um artigo na OOPSLA que resolveu a quest�o
(pelo menos entre aqueles que concordam com o Wegner :-)
- Para uma linguagem ser Orientada a Objetos ela precisa:
- ser baseada em objetos, ou seja, deve ser f�cil programar objetos
que encapsulam dados e opera��es;
- ser baseadas em classes, ou seja, cada objeto pertence a (ou �
fabricado a partir de) uma classe; e
- permitir heran�a, ou seja, deve ser f�cil agrupar classes em
hierarquias de subclasses e superclasses.
- Outros estudiosos (chatos?) acrescentam outros itens � lista: (eu n�o
concordo)
- enlace din�mico, tardio (late binding)
- coleta autom�tica de lixo
- heran�a m�ltipla
- agrega��o
- A linguagem Self � uma grande exce��o entre as linguagens claramente
orientada a objetos: ela n�o possui classes.
- Como veremos mais pr� frente nesta disciplina, Self usa delega��o.
Bibliografia
- Conhecendo o Smalltalk. Abdala e Wangenheim.
- Smalltalk, Objects, and Design. Chamond Liu.
- P�gina "How Object-Oriented Programming Started" de
Ole-Johan Dahl e Kristen Nygaard.
Próxima Aula
Aula Anterior
Página de MAC 441/5714
Página do Fabio
Página do DCC