SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
Aspectos Teóricos da Linguagem de Programação
Smalltalk
Ailton Félix de Lima Filho
Bruno Normande Lins
Michel Alves dos Santos 1
Março de 2010
1Bacharelandos em Ciência da Computação, Universidade Federal do Estado de Ala-
goas(UFAL). E-mails: afdlf2@gmail.com, normandelins@gmail.com, michel.mas@gmail.com. Dis-
ciplina: Teoria e Paradigmas de Linguagens de Programação. Docente Responsável: Alcino
Dall’Igna Júnior.
Resumo
O ambiente Smalltalk foi desenvolvido pela equipe do Grupo de Pesquisas do Palo Alto
Research Center da Xerox (XeroxPARC) no início da década de 70[Kay93]. As principais
idéias do Smalltalk são creditadas a Alan Curtis Kay[Wik10a][Wik10b][Int10][Gas10]; mui-
tas delas baseadas no Simula, LISP e SketchPad. Dan Ingalls, seu companheiro de trabalho,
escreveu as primeiras janelas sobrepostas e menus pop-up opacos, muito comuns hoje em
dia em plataformas mais populares, como o Microsoft Windows. Uma segunda versão do
Smalltalk (Smalltalk/V) foi desenvolvida pela Digitalk em Los Angeles(Califórnia), com
os fundadores da Ollivetti. Antes de ser comprada pela ParcPlace Systems Inc., a Digitalk
era a líder de vendas deste produto. Logo em seguida, a IBM desenvolveu o VisualAge
Smalltalk em colaboração com a Object Technology International Inc. atual ObjectShare
(antiga ParcPlace-Digitalk). Atualmente a IBM continua sendo um dos principais distri-
buidores do ambiente de desenvolvimento Smalltalk. Para o acesso do público em geral,
existem verdadeiras soluções completas que se destacam plena simplicidade, leveza e pu-
reza de conceitos como é o caso dos ambientes Squeak(um ícone no meio educacional) e
Pharo(esse último, um fork da plataforma Squeak). Vale lembrar que Smalltalk não parou
no tempo. Mesmo não tendo o forte apelo comercial de linguagens como COBOL, Clipper
e Java (entre outras) a plataforma mantêm uma comunidade fiel e atuante[Com10], cen-
tenas de fontes de consulta, grupos de usuários[Gro10], fóruns, livros oficiais, ferramentas
para desenvolvimento web, servidores de aplicação, eventos internacionais e vem crescendo
impulsionada pelo espírito colaborativo que une pessoas ao redor do globo, situação seme-
lhante ao fenômeno do Código Aberto.
Palavras-Chave: Linguagens de Programação, Tipagem Dinâmica, Smalltalk, Vincula-
ções, Verificação de Tipos, Variáveis, Compatibilidade de Tipos.
1
Sumário
1 Introdução 3
1.1 Sobre Smalltalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 O Ambiente Smalltalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Smalltalk e a Orientação ao Objeto . . . . . . . . . . . . . . . . . . 4
2 Nomes, Vinculação, Checagem de Tipos e Escopos 5
2.1 Formas de Nomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 Caracteres Reservados . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Palavras Especiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.1 Nomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.2 Apelidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.3 Tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.4 Valores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4 Vinculação de Atributos para Variáveis . . . . . . . . . . . . . . . . . . . . 7
2.4.1 Vinculação de Tipos . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4.2 Vinculação de Armazenamento e Tempo de Vida . . . . . . . . . . 7
2.5 Verificação de tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.6 Escopo e Tempo de Vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.7 Ambiente referêncial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.8 Constantes com Nome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.9 Inicialização de Variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2
Capítulo 1
Introdução
1.1 Sobre Smalltalk
Smalltalk foi a primeira linguagem concebida para tornar a programação orientada
a objetos uma prática popular entre os programadores de software. Diferente de C++ e
ADA que dão suporte a múltiplos paradígmas, Smalltalk (assim como Eiffeil) é o caso
mais próximo de linguagem voltada ao paradígma de orientação a objeto. Diferente de
Eiffeil, Smalltalk é uma linguagem totalmente dinâmica: cada objeto carrega o seu tipo
em tempo de execução. O tipo de uma variável é determinado pelo tipo do objeto a qual
ela se refere em tempo de execução.
No decorrer do trabalho iremos prover uma breve introdução aos conceitos iniciais da
linguagem Smalltalk, sem no entanto executar uma cobertura completa da mesma.
1.2 O Ambiente Smalltalk
Smalltalk foi desenvolvido para a escrita de aplicações em um ambiente/estação de
trabalho pessoal de alta interatividade. A linguagem é estritamente acoplada com o seu
ambiente, o que prové um estilo de interaçõa orientado a objeto. O usuário que utiliza
Smalltalk estará interagindo em um ambiente onde os objetos estarão realmente “vivos“
e esses poderão ser de qualquer natureza: desde de documentos que estão sendo editados
até elementos de tela como botões e barras de rolagem. É possível enviar mensagens
para um determinado objeto apenas selecionando com o mouse e especificando a requirida
operação através de um menu em cascata, o que mostra a versatilidade do ambiente. As
ferramentas do ambiente Smalltalk são escritas em Smalltalk. O resultado disso é que a
linguagem e o ambiente podem ser personalizados e estendidos de acordo com a necessidade
dos usuários[GJ97].
3
1.2.1 Smalltalk e a Orientação ao Objeto
Em se tratando da linguagem Smalltalk, a mesma é puramente orientada a objeto.
Smalltalk foi a primeira línguagem para tornar a programação orientada a objeto popular
entre os profissionais de software [GJ97].
Várias versões da linguagem Smalltalk foram lançadas no decorrer de sua existência
como o Smalltalk-71, Smalltalk-72, Smalltalk-76, Smalltalk-80 (Atualmente a versão mais
utilizada) e a ANSI Smalltalk que foi ratificada em 1998 e representa a versão padrão do
Smalltalk, que por sua vez é fortemente baseado no padrão Smalltalk-80. As análises
feitas neste texto levarão em consideração as características da implementação Smalltalk-
80 servindo como ferramenta de campo a aplicação Squeak que é uma versão rápida,
open source e altamente portátil de Smalltalk possuindo uma máquina virtual inteiramente
escrita em Smallatlk[Squ10][Wik10c].
4
Capítulo 2
Nomes, Vinculação, Checagem de
Tipos e Escopos
2.1 Formas de Nomes
Um nome, ou identificador em Smalltalk é uma cadeia de caracteres iniciada por uma
letra e seguida de letras ou dígitos, onde o caracter inicial deve ser uma letra qualquer
do alfabeto (maíuscula ou minúscula) e o restante do identificador pode conter os dígitos
correpondentes aos números de 0 a 9 ou outras letras. Em expressão regular teríamos :
Identificador letra(letra + digito)*
As implementações baseadas em Smalltalk-80 são sensíveis ao caso, ou seja, diferem
caracteres maiúsculos de minúsculos.
2.1.1 Caracteres Reservados
Smalltalk também possui alguns caracteres reservados. São eles:
• := (ou ), que indica atribuição;
• ^ (ou ), que indica o retorno de um método;
• |var1 var2 var3|, declaração de variáveis temporárias (Ver seção Variáveis);
• $a, caractere a;
• #(abc 123), array contendo dois literais: o símbolo ‘abc’ e o número 123;
• . (ponto), fim de expressão;
• ; , mensagem em cascata;
• [ ], bloco de código (que também é visto como um objeto);
5
• "“, comentários;
• ‘’, cadeia de caracteres.
2.2 Palavras Especiais
A implementação Smalltalk-80 possui seis pseudo-variáveis que funcionam como pala-
vras reservadas.[BDNP07] São elas:
• nil, instância singleton da Classe UndefinedObject;
• true, instância singleton da Classe True;
• false, instância singleton da Classe False;
• self, o objeto atual, recebedor da mensagem correspondente;
• super, referencia o mesmo objeto que self, mas, quando uma mensagem é enviada
a super, a busca por um método se inicia na classe pai daquela a qual super foi
chamada;
• thisContext, o contexto de execução ativo, ou o ambiente de execução corrente,
(usando os métodos MethodContext ou BlockContext).
2.3 Variáveis
Em Smalltalk-80, variáveis podem ser privadas ou compartilhadas, possuindo diferen-
tes tipos:
• Variáveis de instância, que representam objetos (instâncias das classes);
• Variáveis temporárias, que existem apenas durante alguma atividade, ou seja, no
decorrer da execução de um método.
• Variáveis de classe, que são compartilhadas por todas as instâncias de uma deter-
minada classe.
• Variáveis globais, que são compartilhadas por todas as intâncias de todas as classes,
ou seja, compartilhadas por todos os objetos do ambiente.
• Variáveis pool, que são compartilhadas por todas as intâncias de algumas classes
(pré-determinadas).
6
2.3.1 Nomes
Os nomes de variáveis seguem as mesmas regras discutidas anteriormente. Exceto
as variáveis privadas que devem iniciar-se com letras minúsculas. Já as compartilhadas
devem iniciar-se com maiúsculas. Vale lembrar que tal padrão é seguido apenas a título
de convenção.
2.3.2 Apelidos
Todas as variáveis em Smalltalk são referenciadas: “Smalltalk enxerga variáveis uni-
formemente como referências para objetos”[GJ97]. Dessa maneira, nenhuma variável ar-
mazena o objeto em sí, mas sim uma referência ao mesmo. Com as atribuições e passagem
de parâmetros sendo feitas por referência apenas. Os apelidos (aliases) passam a ser parte
integral da linguagem.
2.3.3 Tipos
Em Smalltalk as variáveis não possuem tipo a priori, pois são automaticamente inici-
alizadas com uma instância da classe UndefinedObject, dessa forma podem armazenar
uma referência a qualquer objeto.
2.3.4 Valores
O valor de uma variável em Smalltalk é sempre uma referência a um objeto.
2.4 Vinculação de Atributos para Variáveis
2.4.1 Vinculação de Tipos
As implementações baseadas em Smalltalk-80 exigem que toda variável seja decla-
rada antes de seu uso, dessa maneira a linguagem evita erros comuns, como a criação de
variáveis indesejadas por acidente ou descuido. Apesar disso, em algumas implementações
de Smalltalk não é necessário declarar o tipo da variável.
Na verdade, as variáveis em Smalltalk são inicializadas como uma instância da classe
UndefinedObject, dessa forma, toda variável deixa de ser vinculada a um tipo específico
a priori e pode guardar a referência a um objeto de qualquer classe.
2.4.2 Vinculação de Armazenamento e Tempo de Vida
Variáveis em Smalltalk não possuem tipo a priori (são inicializadas com Undefi-
nedObject), assim qualquer variável pode apontar para um objeto, que pode ser uma
instância de qualquer classe, por esse motivo afirmamos que as variáveis em Smalltalk são
7
dinamicamente tipadas. Todas são alocadas no heap implicitamente no momento em que
um valor é atribuído a mesma.
Apesar disso, todas as variáveis precisam ser declaradas antes de seu uso, o que evita
erros como a criação de variáveis indesejadas a partir de erros de digitação. Uma variável
é alocada assim que sua declaração é encontrada. Inicialmente toda variável aponta para
o objeto nil, e continua assim até o momento em que é feita uma atribuição. Toda de-
salocação é executada implicitamente pelo garbage collector do sistema, quando identifica
uma variável que não está mais sendo usada.
2.5 Verificação de tipos
A verificação de tipos em Smalltalk é dinâmica pois a mesma é realizada em tempo de
execução[Wik10d].
2.6 Escopo e Tempo de Vida
Smalltalk possui escopo dinâmico pois é dinamicamente tipada.
2.7 Ambiente referêncial
Como em Smalltalk todo o processamento se dá por meio do envio de mensagens a partir
de métodos definidos em classes, o que nos interessa saber é qual o ambiente referencial de
tais métodos. As variáveis que um método em uma classe pode acessar são classificadas em
cinco diferentes tipos[GR83]. Dois deles são as variáveis privadas, disponíveis apenas para
um único objeto, que são subdivididas em: variáveis de instância e variáveis temporárias.
Os outros três tipos podem ser acessados por mais de um objeto, são elas: as variáveis
de classe, as variáveis globais e as variáveis de pool. Assim, o ambiente referencial de
um determinado método é definido pelo conjunto de tais variáveis definidas na classe do
mesmo, e no próprio método.
2.8 Constantes com Nome
Smalltalk não possui uma sintaxe especial para distinguir constantes de variáveis [BDNP07].
Na verdade, variáveis em Smalltalk são tratadas como ‘constantes’, devido a natureza de
manipulação de referências a objetos e não valores primitivos dos mesmos.
2.9 Inicialização de Variáveis
Toda variável em Smalltalk é atribuída inicialmente e de maneira automática com o
objeto nil, assim, qualquer variável dentro do ambiente sempre irá se referir a um objeto.
8
Referências Bibliográficas
[BDNP07] Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz, and Damien Pollet.
Squeak by Example, chapter 2.6, page 37. Square Bracket Associates, Switzer-
land, first edition, September 2007.
[Com10] Smalltalk Community. Welcome to Smalltalk.org - Community and industry
meet inventing the future.TM
. http://www.smalltalk.org/main/, 2010. [On-
line; accessed 17-April-2010].
[Gas10] Scott Gasch. Biography Alan Curtis Kay. http://ei.cs.vt.edu/~history/
GASCH.KAY.HTML, 2010. [Online; accessed 17-April-2010].
[GJ97] Carlo Ghezzi and Mehdi Jazayeri. Programming Language Concepts. John
Wiley & Sons, Inc., New York, NY, USA, 1997.
[GR83] Adele. Goldberg and David. Robson. Smalltalk-80 : the language and its im-
plementation / Adele Goldberg and David Robson. Addison-Wesley, Reading,
Mass. :, 1983.
[Gro10] European Smalltalk User Group. European Smalltalk User Group. http:
//www.esug.org/, 2010. [Online; accessed 17-April-2010].
[Int10] Intelius. Intelius People Search - Alan Curtis Kay. http://search.intelius.
com/Alan-Kay, 2010. [Online; accessed 17-April-2010].
[Kay93] Alan C. Kay. The early history of smalltalk. In HOPL-II: The second ACM
SIGPLAN conference on History of programming languages, pages 69–95, New
York, NY, USA, 1993. ACM.
[Squ10] Squeak. Squeak. http://www.squeak.org/, 2010. [Online; accessed 10-May-
2010].
[Wik10a] Wikipedia. English Wikipedia - Alan Curtis Kay. http://en.wikipedia.org/
wiki/Alan_Kay, 2010. [Online; accessed 17-April-2010].
[Wik10b] Wikipedia. Portuguese Wikipedia - Alan Curtis Kay. http://pt.wikipedia.
org/wiki/Alan_Kay, 2010. [Online; accessed 17-April-2010].
9
[Wik10c] Wikipedia. Squeak. http://en.wikipedia.org/wiki/Squeak, 2010. [Online;
accessed 10-May-2010].
[Wik10d] Wikipedia. Type System. http://en.wikipedia.org/wiki/Type_system#
Type_checking, 2010. [Online; accessed 10-May-2010].
10

Más contenido relacionado

Similar a Aspectos Teóricos da Linguagem de Programação Smalltalk

Apostila de poo em c++
Apostila de poo em c++Apostila de poo em c++
Apostila de poo em c++Lindomar ...
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projetoejdn1
 
Latex2e - guia rápido e básico
Latex2e - guia rápido e básicoLatex2e - guia rápido e básico
Latex2e - guia rápido e básicoRenato Guimarães
 
Desenvolvimento de aplicações web em Dart
Desenvolvimento de aplicações web em DartDesenvolvimento de aplicações web em Dart
Desenvolvimento de aplicações web em DartRoger Ritter
 
Curso python
Curso pythonCurso python
Curso pythonTiago
 
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosPadrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosFabio Kon
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java FundamentosWilson Lima
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamenteRodrigo Amaral
 
[Engenharia de Software] Marquivos.com
[Engenharia de Software] Marquivos.com[Engenharia de Software] Marquivos.com
[Engenharia de Software] Marquivos.comBruno Dadalt Zambiazi
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO IOs Fantasmas !
 

Similar a Aspectos Teóricos da Linguagem de Programação Smalltalk (20)

Apostila de poo em c++
Apostila de poo em c++Apostila de poo em c++
Apostila de poo em c++
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
 
Latex2e - guia rápido e básico
Latex2e - guia rápido e básicoLatex2e - guia rápido e básico
Latex2e - guia rápido e básico
 
1livro latex 1_1_pdf
1livro latex 1_1_pdf1livro latex 1_1_pdf
1livro latex 1_1_pdf
 
Programacao em java
Programacao em javaProgramacao em java
Programacao em java
 
Html
HtmlHtml
Html
 
Apostila java completo
Apostila java completoApostila java completo
Apostila java completo
 
Desenvolvimento de aplicações web em Dart
Desenvolvimento de aplicações web em DartDesenvolvimento de aplicações web em Dart
Desenvolvimento de aplicações web em Dart
 
Linux
LinuxLinux
Linux
 
GoF.ppt
GoF.pptGoF.ppt
GoF.ppt
 
Curso python
Curso pythonCurso python
Curso python
 
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosPadrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a Objetos
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamente
 
[Engenharia de Software] Marquivos.com
[Engenharia de Software] Marquivos.com[Engenharia de Software] Marquivos.com
[Engenharia de Software] Marquivos.com
 
Android juliana-mono
Android juliana-monoAndroid juliana-mono
Android juliana-mono
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
 

Más de Michel Alves

Texture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU UseTexture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU UseMichel Alves
 
Intelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color PalettesIntelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color PalettesMichel Alves
 
A Framework for Harmonic Color Measures
A Framework for Harmonic Color MeasuresA Framework for Harmonic Color Measures
A Framework for Harmonic Color MeasuresMichel Alves
 
Effectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment IndexesEffectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment IndexesMichel Alves
 
Introduction to Kernel Functions
Introduction to Kernel FunctionsIntroduction to Kernel Functions
Introduction to Kernel FunctionsMichel Alves
 
About Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV SpaceAbout Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV SpaceMichel Alves
 
Color Harmonization - Results
Color Harmonization - ResultsColor Harmonization - Results
Color Harmonization - ResultsMichel Alves
 
Wave Simulation Using Perlin Noise
Wave Simulation Using Perlin NoiseWave Simulation Using Perlin Noise
Wave Simulation Using Perlin NoiseMichel Alves
 
Similarity Maps Using SSIM Index
Similarity Maps Using SSIM IndexSimilarity Maps Using SSIM Index
Similarity Maps Using SSIM IndexMichel Alves
 
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color HarmonizationQualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color HarmonizationMichel Alves
 
TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsMichel Alves
 
Month Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJMonth Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJMichel Alves
 
Color Palettes in R
Color Palettes in RColor Palettes in R
Color Palettes in RMichel Alves
 
Hue Wheel Prototype
Hue Wheel PrototypeHue Wheel Prototype
Hue Wheel PrototypeMichel Alves
 
Triangle Mesh Plot
Triangle Mesh PlotTriangle Mesh Plot
Triangle Mesh PlotMichel Alves
 
Capacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video SlidesCapacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video SlidesMichel Alves
 
Capacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function CatalogCapacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function CatalogMichel Alves
 

Más de Michel Alves (20)

Texture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU UseTexture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU Use
 
Intelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color PalettesIntelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color Palettes
 
A Framework for Harmonic Color Measures
A Framework for Harmonic Color MeasuresA Framework for Harmonic Color Measures
A Framework for Harmonic Color Measures
 
Effectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment IndexesEffectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment Indexes
 
Introduction to Kernel Functions
Introduction to Kernel FunctionsIntroduction to Kernel Functions
Introduction to Kernel Functions
 
About Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV SpaceAbout Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV Space
 
Color Harmonization - Results
Color Harmonization - ResultsColor Harmonization - Results
Color Harmonization - Results
 
Wave Simulation Using Perlin Noise
Wave Simulation Using Perlin NoiseWave Simulation Using Perlin Noise
Wave Simulation Using Perlin Noise
 
Similarity Maps Using SSIM Index
Similarity Maps Using SSIM IndexSimilarity Maps Using SSIM Index
Similarity Maps Using SSIM Index
 
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color HarmonizationQualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
 
TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and Reports
 
Month Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJMonth Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJ
 
Color Palettes in R
Color Palettes in RColor Palettes in R
Color Palettes in R
 
Sigmoid Curve Erf
Sigmoid Curve ErfSigmoid Curve Erf
Sigmoid Curve Erf
 
Hue Wheel Prototype
Hue Wheel PrototypeHue Wheel Prototype
Hue Wheel Prototype
 
Cosine Curve
Cosine CurveCosine Curve
Cosine Curve
 
Triangle Mesh Plot
Triangle Mesh PlotTriangle Mesh Plot
Triangle Mesh Plot
 
Triangle Plot
Triangle PlotTriangle Plot
Triangle Plot
 
Capacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video SlidesCapacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video Slides
 
Capacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function CatalogCapacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function Catalog
 

Último

CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxMauricioOliveira258223
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorEdvanirCosta
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividadeMary Alvarenga
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFtimaMoreira35
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOAulasgravadas3
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESEduardaReis50
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 

Último (20)

CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptx
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de Professor
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividade
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 

Aspectos Teóricos da Linguagem de Programação Smalltalk

  • 1. Aspectos Teóricos da Linguagem de Programação Smalltalk Ailton Félix de Lima Filho Bruno Normande Lins Michel Alves dos Santos 1 Março de 2010 1Bacharelandos em Ciência da Computação, Universidade Federal do Estado de Ala- goas(UFAL). E-mails: afdlf2@gmail.com, normandelins@gmail.com, michel.mas@gmail.com. Dis- ciplina: Teoria e Paradigmas de Linguagens de Programação. Docente Responsável: Alcino Dall’Igna Júnior.
  • 2. Resumo O ambiente Smalltalk foi desenvolvido pela equipe do Grupo de Pesquisas do Palo Alto Research Center da Xerox (XeroxPARC) no início da década de 70[Kay93]. As principais idéias do Smalltalk são creditadas a Alan Curtis Kay[Wik10a][Wik10b][Int10][Gas10]; mui- tas delas baseadas no Simula, LISP e SketchPad. Dan Ingalls, seu companheiro de trabalho, escreveu as primeiras janelas sobrepostas e menus pop-up opacos, muito comuns hoje em dia em plataformas mais populares, como o Microsoft Windows. Uma segunda versão do Smalltalk (Smalltalk/V) foi desenvolvida pela Digitalk em Los Angeles(Califórnia), com os fundadores da Ollivetti. Antes de ser comprada pela ParcPlace Systems Inc., a Digitalk era a líder de vendas deste produto. Logo em seguida, a IBM desenvolveu o VisualAge Smalltalk em colaboração com a Object Technology International Inc. atual ObjectShare (antiga ParcPlace-Digitalk). Atualmente a IBM continua sendo um dos principais distri- buidores do ambiente de desenvolvimento Smalltalk. Para o acesso do público em geral, existem verdadeiras soluções completas que se destacam plena simplicidade, leveza e pu- reza de conceitos como é o caso dos ambientes Squeak(um ícone no meio educacional) e Pharo(esse último, um fork da plataforma Squeak). Vale lembrar que Smalltalk não parou no tempo. Mesmo não tendo o forte apelo comercial de linguagens como COBOL, Clipper e Java (entre outras) a plataforma mantêm uma comunidade fiel e atuante[Com10], cen- tenas de fontes de consulta, grupos de usuários[Gro10], fóruns, livros oficiais, ferramentas para desenvolvimento web, servidores de aplicação, eventos internacionais e vem crescendo impulsionada pelo espírito colaborativo que une pessoas ao redor do globo, situação seme- lhante ao fenômeno do Código Aberto. Palavras-Chave: Linguagens de Programação, Tipagem Dinâmica, Smalltalk, Vincula- ções, Verificação de Tipos, Variáveis, Compatibilidade de Tipos.
  • 3. 1
  • 4. Sumário 1 Introdução 3 1.1 Sobre Smalltalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 O Ambiente Smalltalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.1 Smalltalk e a Orientação ao Objeto . . . . . . . . . . . . . . . . . . 4 2 Nomes, Vinculação, Checagem de Tipos e Escopos 5 2.1 Formas de Nomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.1 Caracteres Reservados . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Palavras Especiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3 Variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3.1 Nomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3.2 Apelidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3.3 Tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3.4 Valores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.4 Vinculação de Atributos para Variáveis . . . . . . . . . . . . . . . . . . . . 7 2.4.1 Vinculação de Tipos . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.4.2 Vinculação de Armazenamento e Tempo de Vida . . . . . . . . . . 7 2.5 Verificação de tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.6 Escopo e Tempo de Vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.7 Ambiente referêncial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.8 Constantes com Nome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.9 Inicialização de Variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2
  • 5. Capítulo 1 Introdução 1.1 Sobre Smalltalk Smalltalk foi a primeira linguagem concebida para tornar a programação orientada a objetos uma prática popular entre os programadores de software. Diferente de C++ e ADA que dão suporte a múltiplos paradígmas, Smalltalk (assim como Eiffeil) é o caso mais próximo de linguagem voltada ao paradígma de orientação a objeto. Diferente de Eiffeil, Smalltalk é uma linguagem totalmente dinâmica: cada objeto carrega o seu tipo em tempo de execução. O tipo de uma variável é determinado pelo tipo do objeto a qual ela se refere em tempo de execução. No decorrer do trabalho iremos prover uma breve introdução aos conceitos iniciais da linguagem Smalltalk, sem no entanto executar uma cobertura completa da mesma. 1.2 O Ambiente Smalltalk Smalltalk foi desenvolvido para a escrita de aplicações em um ambiente/estação de trabalho pessoal de alta interatividade. A linguagem é estritamente acoplada com o seu ambiente, o que prové um estilo de interaçõa orientado a objeto. O usuário que utiliza Smalltalk estará interagindo em um ambiente onde os objetos estarão realmente “vivos“ e esses poderão ser de qualquer natureza: desde de documentos que estão sendo editados até elementos de tela como botões e barras de rolagem. É possível enviar mensagens para um determinado objeto apenas selecionando com o mouse e especificando a requirida operação através de um menu em cascata, o que mostra a versatilidade do ambiente. As ferramentas do ambiente Smalltalk são escritas em Smalltalk. O resultado disso é que a linguagem e o ambiente podem ser personalizados e estendidos de acordo com a necessidade dos usuários[GJ97]. 3
  • 6. 1.2.1 Smalltalk e a Orientação ao Objeto Em se tratando da linguagem Smalltalk, a mesma é puramente orientada a objeto. Smalltalk foi a primeira línguagem para tornar a programação orientada a objeto popular entre os profissionais de software [GJ97]. Várias versões da linguagem Smalltalk foram lançadas no decorrer de sua existência como o Smalltalk-71, Smalltalk-72, Smalltalk-76, Smalltalk-80 (Atualmente a versão mais utilizada) e a ANSI Smalltalk que foi ratificada em 1998 e representa a versão padrão do Smalltalk, que por sua vez é fortemente baseado no padrão Smalltalk-80. As análises feitas neste texto levarão em consideração as características da implementação Smalltalk- 80 servindo como ferramenta de campo a aplicação Squeak que é uma versão rápida, open source e altamente portátil de Smalltalk possuindo uma máquina virtual inteiramente escrita em Smallatlk[Squ10][Wik10c]. 4
  • 7. Capítulo 2 Nomes, Vinculação, Checagem de Tipos e Escopos 2.1 Formas de Nomes Um nome, ou identificador em Smalltalk é uma cadeia de caracteres iniciada por uma letra e seguida de letras ou dígitos, onde o caracter inicial deve ser uma letra qualquer do alfabeto (maíuscula ou minúscula) e o restante do identificador pode conter os dígitos correpondentes aos números de 0 a 9 ou outras letras. Em expressão regular teríamos : Identificador letra(letra + digito)* As implementações baseadas em Smalltalk-80 são sensíveis ao caso, ou seja, diferem caracteres maiúsculos de minúsculos. 2.1.1 Caracteres Reservados Smalltalk também possui alguns caracteres reservados. São eles: • := (ou ), que indica atribuição; • ^ (ou ), que indica o retorno de um método; • |var1 var2 var3|, declaração de variáveis temporárias (Ver seção Variáveis); • $a, caractere a; • #(abc 123), array contendo dois literais: o símbolo ‘abc’ e o número 123; • . (ponto), fim de expressão; • ; , mensagem em cascata; • [ ], bloco de código (que também é visto como um objeto); 5
  • 8. • "“, comentários; • ‘’, cadeia de caracteres. 2.2 Palavras Especiais A implementação Smalltalk-80 possui seis pseudo-variáveis que funcionam como pala- vras reservadas.[BDNP07] São elas: • nil, instância singleton da Classe UndefinedObject; • true, instância singleton da Classe True; • false, instância singleton da Classe False; • self, o objeto atual, recebedor da mensagem correspondente; • super, referencia o mesmo objeto que self, mas, quando uma mensagem é enviada a super, a busca por um método se inicia na classe pai daquela a qual super foi chamada; • thisContext, o contexto de execução ativo, ou o ambiente de execução corrente, (usando os métodos MethodContext ou BlockContext). 2.3 Variáveis Em Smalltalk-80, variáveis podem ser privadas ou compartilhadas, possuindo diferen- tes tipos: • Variáveis de instância, que representam objetos (instâncias das classes); • Variáveis temporárias, que existem apenas durante alguma atividade, ou seja, no decorrer da execução de um método. • Variáveis de classe, que são compartilhadas por todas as instâncias de uma deter- minada classe. • Variáveis globais, que são compartilhadas por todas as intâncias de todas as classes, ou seja, compartilhadas por todos os objetos do ambiente. • Variáveis pool, que são compartilhadas por todas as intâncias de algumas classes (pré-determinadas). 6
  • 9. 2.3.1 Nomes Os nomes de variáveis seguem as mesmas regras discutidas anteriormente. Exceto as variáveis privadas que devem iniciar-se com letras minúsculas. Já as compartilhadas devem iniciar-se com maiúsculas. Vale lembrar que tal padrão é seguido apenas a título de convenção. 2.3.2 Apelidos Todas as variáveis em Smalltalk são referenciadas: “Smalltalk enxerga variáveis uni- formemente como referências para objetos”[GJ97]. Dessa maneira, nenhuma variável ar- mazena o objeto em sí, mas sim uma referência ao mesmo. Com as atribuições e passagem de parâmetros sendo feitas por referência apenas. Os apelidos (aliases) passam a ser parte integral da linguagem. 2.3.3 Tipos Em Smalltalk as variáveis não possuem tipo a priori, pois são automaticamente inici- alizadas com uma instância da classe UndefinedObject, dessa forma podem armazenar uma referência a qualquer objeto. 2.3.4 Valores O valor de uma variável em Smalltalk é sempre uma referência a um objeto. 2.4 Vinculação de Atributos para Variáveis 2.4.1 Vinculação de Tipos As implementações baseadas em Smalltalk-80 exigem que toda variável seja decla- rada antes de seu uso, dessa maneira a linguagem evita erros comuns, como a criação de variáveis indesejadas por acidente ou descuido. Apesar disso, em algumas implementações de Smalltalk não é necessário declarar o tipo da variável. Na verdade, as variáveis em Smalltalk são inicializadas como uma instância da classe UndefinedObject, dessa forma, toda variável deixa de ser vinculada a um tipo específico a priori e pode guardar a referência a um objeto de qualquer classe. 2.4.2 Vinculação de Armazenamento e Tempo de Vida Variáveis em Smalltalk não possuem tipo a priori (são inicializadas com Undefi- nedObject), assim qualquer variável pode apontar para um objeto, que pode ser uma instância de qualquer classe, por esse motivo afirmamos que as variáveis em Smalltalk são 7
  • 10. dinamicamente tipadas. Todas são alocadas no heap implicitamente no momento em que um valor é atribuído a mesma. Apesar disso, todas as variáveis precisam ser declaradas antes de seu uso, o que evita erros como a criação de variáveis indesejadas a partir de erros de digitação. Uma variável é alocada assim que sua declaração é encontrada. Inicialmente toda variável aponta para o objeto nil, e continua assim até o momento em que é feita uma atribuição. Toda de- salocação é executada implicitamente pelo garbage collector do sistema, quando identifica uma variável que não está mais sendo usada. 2.5 Verificação de tipos A verificação de tipos em Smalltalk é dinâmica pois a mesma é realizada em tempo de execução[Wik10d]. 2.6 Escopo e Tempo de Vida Smalltalk possui escopo dinâmico pois é dinamicamente tipada. 2.7 Ambiente referêncial Como em Smalltalk todo o processamento se dá por meio do envio de mensagens a partir de métodos definidos em classes, o que nos interessa saber é qual o ambiente referencial de tais métodos. As variáveis que um método em uma classe pode acessar são classificadas em cinco diferentes tipos[GR83]. Dois deles são as variáveis privadas, disponíveis apenas para um único objeto, que são subdivididas em: variáveis de instância e variáveis temporárias. Os outros três tipos podem ser acessados por mais de um objeto, são elas: as variáveis de classe, as variáveis globais e as variáveis de pool. Assim, o ambiente referencial de um determinado método é definido pelo conjunto de tais variáveis definidas na classe do mesmo, e no próprio método. 2.8 Constantes com Nome Smalltalk não possui uma sintaxe especial para distinguir constantes de variáveis [BDNP07]. Na verdade, variáveis em Smalltalk são tratadas como ‘constantes’, devido a natureza de manipulação de referências a objetos e não valores primitivos dos mesmos. 2.9 Inicialização de Variáveis Toda variável em Smalltalk é atribuída inicialmente e de maneira automática com o objeto nil, assim, qualquer variável dentro do ambiente sempre irá se referir a um objeto. 8
  • 11. Referências Bibliográficas [BDNP07] Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz, and Damien Pollet. Squeak by Example, chapter 2.6, page 37. Square Bracket Associates, Switzer- land, first edition, September 2007. [Com10] Smalltalk Community. Welcome to Smalltalk.org - Community and industry meet inventing the future.TM . http://www.smalltalk.org/main/, 2010. [On- line; accessed 17-April-2010]. [Gas10] Scott Gasch. Biography Alan Curtis Kay. http://ei.cs.vt.edu/~history/ GASCH.KAY.HTML, 2010. [Online; accessed 17-April-2010]. [GJ97] Carlo Ghezzi and Mehdi Jazayeri. Programming Language Concepts. John Wiley & Sons, Inc., New York, NY, USA, 1997. [GR83] Adele. Goldberg and David. Robson. Smalltalk-80 : the language and its im- plementation / Adele Goldberg and David Robson. Addison-Wesley, Reading, Mass. :, 1983. [Gro10] European Smalltalk User Group. European Smalltalk User Group. http: //www.esug.org/, 2010. [Online; accessed 17-April-2010]. [Int10] Intelius. Intelius People Search - Alan Curtis Kay. http://search.intelius. com/Alan-Kay, 2010. [Online; accessed 17-April-2010]. [Kay93] Alan C. Kay. The early history of smalltalk. In HOPL-II: The second ACM SIGPLAN conference on History of programming languages, pages 69–95, New York, NY, USA, 1993. ACM. [Squ10] Squeak. Squeak. http://www.squeak.org/, 2010. [Online; accessed 10-May- 2010]. [Wik10a] Wikipedia. English Wikipedia - Alan Curtis Kay. http://en.wikipedia.org/ wiki/Alan_Kay, 2010. [Online; accessed 17-April-2010]. [Wik10b] Wikipedia. Portuguese Wikipedia - Alan Curtis Kay. http://pt.wikipedia. org/wiki/Alan_Kay, 2010. [Online; accessed 17-April-2010]. 9
  • 12. [Wik10c] Wikipedia. Squeak. http://en.wikipedia.org/wiki/Squeak, 2010. [Online; accessed 10-May-2010]. [Wik10d] Wikipedia. Type System. http://en.wikipedia.org/wiki/Type_system# Type_checking, 2010. [Online; accessed 10-May-2010]. 10