RESUMO
Este site fala sobre uma linguagem desenvolvida na década de 70, SmallTalk, em que em 2007 esta completando 27 anos É uma linguagem que foi desenvolvida baseada no paradigma de “Linguagem de programação orientada a Objeto, a única linguagem realmente era Orientada a Objeto”. Tudo nesta linguagem se trata de objeto, derivado de uma grande classe, que também é um grande objeto. Variáveis, são objetos em SmallTalk. Ela não chegou a ser largamente utilizada comercialmente,pois, necessitava de uma boa qualidade em Hardware, o que não era disponível na década de 70 quando surgiu o SmallTalk. Neste site será feito um resumo de tudo sobre esta linguagem, que foi base para tantas outras linguagens.
HISTÓRICO (onde, quando e como surgiu)
Nos de 66 e 68, uma nova implementação da linguagem ALGOL, conhecida como SIMULA, estava sendo desenvolvida. Nesta mesma época estava em desenvolvimento um projeto dentro do PARC (Palo Alto Reserch Center), centro de pesquisa do Xérox na Califórnia. O projeto intitulava-se Dynabook, e tinha como objetivo prover um ambiente completo , tanto para crianças como para adultos, num novo computador, revolucionário, de onde derivam posteriormente as idéias de interface gráfica, sistemas de janelas, mouse ou apontador gráfico, conexão entre computadores, reprodução de sons etc. Em paralelo a isto, um pesquisador da universidade de Utah, Alan kay, trabalhava em um projeto chamado Flex, era um sistema de programação com um novo design, para a simulação em computadores. Alan tomou ciência do projeto desenvolvido na PARC e propôs várias extensões de software para o diretor geral do projeto Dynabook, tais como as aplicações que conhecemos hoje como Editores de textos simples, programas para desenho, para criação de objeto 3-D, etc. Na época porém as aplicações eram muito específicas, destinadas quase que completamente a aplicações científicas. Então, uma nova linguagem se fazia necessária, que fosse de fácil programação.Alan entrou para o PARC, e o projeto da nova linguagem se tornou prioridade no projeto Dynabook. Alan foi buscar as idéias que necesitava em uma linguagem educativa escrita por Seymour Papert. Ela se denominava LOGO, possuía interface gráfica e se destinava ao ensino de programação para crianças. A linguagem LISP, desenvolvida por MacCarthy na década de 50, forneceu o poder necessário para a manipulação de símbolos, (coisa até então inédita para as linguagens que só tratavam de números). Até hoje, todo método em SmallTalk retorna um valor da mesma forma que uma função LISP. A facilidade com que se programa recursivamente em SmallTalk, também é herança do LISP. Por fim as idéias de modularidade e os primitivos conceitos de orientação a objetos da linguagem foram inspirados da linguagem simulação Simula. O núcleo para criação do SmallTalk estava criado. No final de 1972 a primeira versão do SmallTalk estava pronta. Foi a primeira linguagem realmente orientada a objetos, porém ainda sem o conceito de herança. A idéia surgiu do propósito a que se destinava, a idéia era que fosse tão fácil programas em SmallTalk como se ter uma conversa informal. A linguagem foi traduzida para Assembly e batizada com o nome de SmallTalk – 72. Em 1974, a linguagem foi expandida para suportar interface gráfica, mapeamento de imagem por Bits (Bitmaps) e também o conceito de Memória Virtual. Este melhoramentos possibilitaram a criação do primeiro sistema de gerenciamento de janelas, foi então chamado de SmallTalk – 74. O conceito de Herança só veio a ser implementado na versão do ano de 1976. Tudo era baseado no conceito de classes, objetos, mensagens e blocos. Na versão de 1976, foi adicionado o conceito de Byte-codes e máquina virtual, o que desvinculou a linguagem do hardware específico. Em 1978 foi criada a versão SmallTalk – 78, mas somente com o código do anterior otimizado. Neste momento a pesquisa desenvolvida em Palo Alto provocava curiosidade no mundo todo. Alguns artigos sobre o projeto Dynabook e sua linguagem de programação SmallTalk, eram publicados. O Dynabook nunca se tornou um produto comercial devido ao seu custo altíssimo, porem o SmallTalk sobreviveu ao naufrágio. E por isto a Xérox resolveu abrir a linguagem ao público, primeiramente disponibilizando artigos, após um livro e por fim disponibilizou o programa para todo o mundo. A distribuição da linguagem se deu por meio de Fitas, com uma versão portável da mesma. Esta versão portável consistia de um programa, a máquina virtual e um arquivo chamado Imagem, onde todos os objetos do sistema residiam. A Versão distribuída era a versão SmallTalk – 80, uma versão enxuta do SmallTalk – 78. O Compilador, o ambiente e até os números e caracteres eram objetos. A Xérox convidou algumas empresas (HP, Apple, CA) a desenvolverem as Máquinas Virtuais para as suas plataformas. A Apple apresentou interesse particular em relação a linguagem, e vários pesquisadores do projeto original foram para a Apple, com o intuito de criar uma nova arquitetura de computador, que deu origem ao sistema operacional da Apple. Em paralelo a IBM desenvolvia um a versão SmallTalk V, primeiro a rodar em DOS, após os anos 80 trocou o nome para VisualAge for smallTalk. A Xérox não obteve sucesso com suas implementações para Workstations. Em 1987 criou a empresa Parc Place, para cuidar especificamente sobra o SmallTalk. Em 1990, uma versão chamada ObjectWorks foi lançada era bastante comercial, depois da versão 4.1 o nome do produto foi alterado para VisualWorks, e ganhou ambiente de programação visual para interface gráfica. No final dos anos 90, a Parc Place foi comprada pela CINCOM que manteve a linha de produtos VisualWorks. Existe uma versão do SmallTalk para Linux, de nome SmallTalk/X, esta versão é de livre distribuição, e possui máquina virtual com código aberto, conforme exigem os termos de uso do GNU. Em 1996 surgiu outro SmallTalk de livre distribuição, o Squeak, esta versão foi desenvolvida por um pequeno grupo de desenvolvedores, do qual constava o Pai do SmallTalk, Alan Kay. Atualmente, a CINCOM inclui uma máquina virtual para linux em sua distribuição não comercial gratuita de VisualWorks, o que definitivamente consolidou o VisualWorks como o SmallTalk Padrão.
CARACTERÍSTICAS
Smalltalk-80, ou simplesmente Smalltalk, é uma linguagem de programação orientada a objeto fracamente tipada. Em Smalltalk tudo é objeto: os números, as classes, os métodos, blocos de código, etc. Não há tipos primitivos, ao contrário de outras linguagens orientadas a objeto (como Java); strings, números e caracteres são implementados como classes em Smalltalk, por isso esta linguagem é considerada puramente orientada a objetos. Tecnicamente, todo elemento de Smalltalk é um objeto de primeira ordem. Os programadores definem classes de objetos em suas aplicações para imitar (ou simular) o mundo real. Estas classes de objeto são organizadas hierarquicamente, de modo que seja possível fazer novos objetos com características de outros objetos, com poucas mudanças. Smalltalk é relativamente fácil de aprender comparado a linguagens como C++ e ADA. O código-fonte Smalltalk é fácil de ler, o que o torna a linguagem de programação ideal para iniciantes. Tudo é representado como objetos. (De longe, a regra mais importante em Smalltalk) Toda computação é disparada pelo envio de mensagens. Uma mensagem é enviada para um objeto fazer alguma coisa. Quase todas as expressões são da forma
. Mensagens fazem com que métodos sejam executados, sendo que o mapeamento de mensagens para métodos é determinado pelo objeto recebedor. Os métodos são as unidades de código em Smalltalk, equivalente a funções ou procedimentos em outras linguagens. Todo objeto é uma instância de alguma classe. 12 é uma instância da classe SmallInteger. 'abc' é uma instância da classe String. A classe determina o comportamento e os dados de suas instâncias. Toda classe tem uma classe mãe, exceto a classe Object. A classe mãe define os dados e comportamento que são herdados por suas classes filhas. A classe mãe é chamada de superclasse e suas filhas, subclasses. SmallTalk: Linguagem Simbólica - Classe Browser - Compiler - Janelas de Texto - Janelas Gráficas - Menus - Controladores de eventos. - É uma linguagem de programação ou uma combinação de tecnologias? É um ambiente de programação, que foi desenvolvido unindo tecnologias, de janelas, bitmaps, imagens 3D, Máquina virtual, Byte-code. APLICAÇÕES POSSÍVEIS
As áreas de aplicação do SmallTalk são extremamente extensas, quanto mais complexo o problema a ser resolvido, maiores as vantagens de se utilizar o SmallTalk para o desenvolvimento de uma solução. No Brasil SmallTalk ainda não é muito utilizado comercialmente, apesar de alguns bancos já possuírem partes de seus sistemas desenvolvidos em SmallTalk. Suas Maiores aplicações residem nas áreas de pesquisa e ensino, principalmente em universidades federais (UFSC) – (UFRGS) – (UFPE). Na Europa SmallTalk é extensivamente utilizado comercialmente e praticamente em todas as universidade de computação a utilizam como ferramenta para ensino do paradigma de programação orientada a objetos. Dois exemplos de aplicações comerciais são o DEUTSCHE BANK, que em meados da década de 90, passou todo seu sistema de gerência de mercado financeiro para SmallTalk, e uma das maiores cadeia de supermercados da Europa, que na mesma época reestruturou completamente seu setor de informática, passando todo o sistema para SmallTalk.
EXEMPLOS DE CÓDIGO (comentado)
Ex 1: Como criar e apresentar alguns retângulos | rect gc| gc:= (Examples.ExamplesBrowser prepareScratchWindow) graphicsContext. rect:= rectangle vertex: 10@10 vertex: 100@100. rect displayFilledOn: (gc paint: (ColorValue red)). gc paint: (ColorValue green). (110@10 extent: 50@50) displayStrokeOn: gc. rect:= Rectangle origin: 10@110 corner: 160@200. Gc displayRectangle: rect at: 100@100. -------------------------------------------------------------------------------------------------------------------- Ex 2: Capturando uma imagem da tela. | gc im | Gc;= (ExamplesBrowser prepareScratchWindow) graphicsContext. im:= Image fromUser. Im displayOn: gc. -------------------------------------------------------------------------------------------------------------------- Ex 3: Abrindo uma imagem de um arquivo | gc image | gc:= (ExamplesBrowser prepareScratchWindow) graphicscontext. Image:=(ImageReader fromFile: ‘ e:\priest.bmp’) image. Image displayOn : gc at : 10@10 --------------------------------------------------------------------------------------------------------------------
BIBLIOGRAFIA
SITE: WIKIPÉDIA LIVRO: “CONHECENDO SMALLTALK” (PAPO FURADO) AUTORES: DANIEL DUARTE ABDALA ALDO VON WANGENHEIN EDITORA: Visual Books , Edição 2./ 2002.
REFERÊNCIAS EXTERNAS
Smalltalk.org Advocacy site. Why Smalltalk? Developer community. GoodStart Advocacy site. Open Directory: Smalltalk The Early History of Smalltalk by Alan C. Kay. Smalltalk-72 Instruction Manual Free Smalltalk Books Online Smalltalk information visualization tool Squeak (Smalltalk de código aberto)