Académique Documents
Professionnel Documents
Culture Documents
Tpicos do Captulo 2
Plankalkl de Zuse
Programao de hardware mnima: pseudocdigos
O IBM 704 e Fortran
Programao funcional: LISP
O primeiro passo em direo sofisticao: ALGOL 60
Informatizando os registros comerciais: COBOL
O incio do compartilhamento de tempo: BASIC
Conceitos de Linguagens de Programao Robert W. Sebesta
Tpicos do Captulo 2
Tudo para todos: PL/I
Duas das primeiras linguagens dinmicas: APL e SNOBOL
O incio da abstrao de dados: SIMULA 67
Projeto ortogonal: ALGOL 68
Alguns dos primeiros descendentes dos ALGOLs
Programao baseada em lgica: Prolog
O maior esforo de projeto da histria: Ada
Conceitos de Linguagens de Programao Robert W. Sebesta
Tpicos do Captulo 2
Programao orientada a objetos: Smalltalk
Combinando recursos imperativos e orientados a objetos: C++
Uma linguagem orientada a objetos baseada no paradigma imperativo:
Java
Linguagens de scripting
Uma linguagem baseada em C para o novo milnio: C#
Linguagens hbridas de marcao/programao
Conceitos de Linguagens de Programao Robert W. Sebesta
Plankalkl de Zuse
Desenvolvida em 1945, mas no publicada at 1972
Nunca foi implementada
Estruturas de dados avanadas
Ponto flutuante, vetores, registros
Invariante
Conceitos de Linguagens de Programao Robert W. Sebesta
Sintaxe de Plankalkl
Uma sentena de atribuio que atribui o valor da expresso A[4] + 1
para A[5]
| A + 1 => A
V | 4 5 (ndices)
S | 1.n 1.n (tipos de dados)
Conceitos de Linguagens de Programao Robert W. Sebesta
Pseudocdigos: Speedcoding
Speedcoding foi desenvolvido por John Backus em 1954 para
o IBM 701
Pseudoinstrues para operaes aritmticas e funes matemticas
Desvios condicionais e incondicionais
Facilidade para incrementar os registradores de endereo
automaticamente
Memria usvel restante aps carregar o interpretador de apenas 700
palavras
Conceitos de Linguagens de Programao Robert W. Sebesta
Fortran II
Distribudo em 1958
Compilao independente
Corrigiu falhas
Conceitos de Linguagens de Programao Robert W. Sebesta
Fortran IV
Evoluiu entre 1960-62
Declaraes de tipo explcitas
Sentenas de controle de laos lgicos
Nomes de subprogramas podem ser parmetros
Padro ANSI em 1966
Conceitos de Linguagens de Programao Robert W. Sebesta
Fortran 77
Tornou-se o novo padro em 1978
Manipulao de caracteres de cadeias
Sentenas de controle de laos lgicos
Um If com uma clusula opcional Else
Conceitos de Linguagens de Programao Robert W. Sebesta
Fortran 90
Drasticamente diferente do Fortran 77
Mdulos
Vetores dinmicos
Ponteiros
Registros
Sentena CASE
Parmetro de verificao de tipo
Conceitos de Linguagens de Programao Robert W. Sebesta
Avaliao de Fortran
Compiladores altamente otimizados (todas as verses antes de 90)
Tipos e armazenamento para todas as variveis so fixados antes
da execuo
Mudou drasticamente para sempre a forma como os computadores
so usados
Caracterizada como a lngua franca do mundo da computao
Conceitos de Linguagens de Programao Robert W. Sebesta
Representando as listas (A B C D)
e (A (B C) D (E (F G)))
Conceitos de Linguagens de Programao Robert W. Sebesta
Avaliao de LISP
Pioneira na programao funcional
Sem necessidade de variveis ou atribuio
Controle por recurso e expresses condicionais
Ainda a linguagem dominante em IA
COMMON LISP e Scheme so dialetos contemporneos de LISP
ML, Miranda e Haskell so linguagens relacionadas
Conceitos de Linguagens de Programao Robert W. Sebesta
Scheme
Desenvolvida no MIT no meio dos anos 1970
Pequena
Uso de escopo esttico
Funes como entidades de primeira classe
Sintaxe simples (e tamanho pequeno) o que a torna ideal para
aplicaes educacionais
Conceitos de Linguagens de Programao Robert W. Sebesta
COMMON LISP
Um esforo para para combinar caractersticas de diversos dialetos de
LISP em uma s linguagem
Grande, complexa
Conceitos de Linguagens de Programao Robert W. Sebesta
ALGOL 58
Formalizou conceito de tipo de dados
Identificadores podiam ter qualquer tamanho
O limite inferior dos vetores podia ser especificado pelo programador
Parmetros eram separados por modo
Sentenas de seleo aninhadas eram permitidas
Declaraes compostas (begin ... end)
Vrgula como separador de declaraes
Operador de atribuio era :=
if tinha uma clusula else-if
Conceitos de Linguagens de Programao Robert W. Sebesta
Implementao do ALGOL 58
No pretendia ser um produto finalizado para implementao, mas
variaes dele foram (MAD, JOVIAL)
Embora a IBM tenha sido inicialmente entusiasta, todo o suporte foi
descontinuado em meados de 1959
Conceitos de Linguagens de Programao Robert W. Sebesta
Avaliao do ALGOL 60
Sucessos
nica maneira formal aceitvel de comunicar algoritmos por mais
de 20 anos
Todas as linguagens de programao imperativas desde 60 so
baseadas nela
Primeira linguagem independente de mquina
Primeira linguagem cuja sintaxe foi formalmente descrita (BNF)
Conceitos de Linguagens de Programao Robert W. Sebesta
Avaliao do ALGOL 60
Fracassos
Nunca atingiu uso disseminado, especialmente nos Estados Unidos
Motivos
Entrada e sada dependentes fizeram com que os programas tivessem uma
portabilidade ruim
Muito flexvel difcil de implementar
Forte estabelecimento do Fortran
Descrio formal de sintaxe
Falta de apoio da IBM
Conceitos de Linguagens de Programao Robert W. Sebesta
Avaliao do COBOL
Contribuies
Primeira construo para macros de uma linguagem de alto nvel
Estruturas de dados hierrquicas (registros)
Sentenas de seleo aninhadas
Nomes longos (at 30 caracteres), com hifens
Diviso de dados
Conceitos de Linguagens de Programao Robert W. Sebesta
Perspectiva histrica
Em 1963
Programadores cientficos passaram a precisar de recursos mais
elaborados de entrada e sada, como COBOL tinha; as aplicaes de
negcios precisavam de dados de ponto-flutuante e vetores para sistemas
de informao de gerenciamento
Comeou a parecer que as instalaes de computao logo precisariam
de duas equipes tcnicas e de computadores diferentes
A soluo bvia
Construir um novo computador para fazer os dois tipos de aplicaes
Projetar uma nova linguagem para as aplicaes
Conceitos de Linguagens de Programao Robert W. Sebesta
O processo de projeto
Desenvolvido em cinco meses pelo Comit 3 x 3
Trs membros da IBM, trs membros do SHARE
Projeto inicial
Uma extenso do Fortran IV
Inicialmente chamado de NPL (New Programming Language - Nova
Linguagem de Programao)
Nome mudado para PL/I em 1965
Conceitos de Linguagens de Programao Robert W. Sebesta
Avaliao de PL/I
Contribuies
Permitido aos programas criar subprogramas executados
concorrentemente
Possvel detectar e manipular excees
Permitida a utilizao de subprogramas recursivamente
Ponteiros foram includos como um tipo de dados
Pores de uma matriz podiam ser referenciadas
Preocupaes
Muitos dos novos recursos foram mal concebidos
Muito grande e muito complexo
Conceitos de Linguagens de Programao Robert W. Sebesta
SNOBOL
Projetada para processamento de texto, no Bell Labs, por Farber,
Griswold e Polensky em 1964
Operaes poderosas para o casamento de padres de cadeias
Mais lenta do que linguagens alternativas (e no mais usada para
editores de texto)
Ainda em uso para uma variedade de tarefas de processamento
de textos
Conceitos de Linguagens de Programao Robert W. Sebesta
Avaliao do ALGOL 68
Contribuies
Estruturas de dados definidas pelo usurio
Tipos de referncia
Vetores dinmicos (vetores flex)
Comentrios
Menos uso do que o ALGOL 60
Teve forte influncia nas linguagens subsequentes, especialmente Pascal,
C e Ada
Conceitos de Linguagens de Programao Robert W. Sebesta
Pascal - 1971
Projetada por Wirth (ex-membro do comit do ALGOL 68)
Projetada para ser usada como veculo educacional
Pequena, simples, nada realmente novo
O maior impacto foi no ensino de programao
Do meio dos anos 1970 at o fim dos 1990, foi a linguagem mais usada
para o ensino de programao
Conceitos de Linguagens de Programao Robert W. Sebesta
C - 1972
Projetada para a programao de sistemas (no Bell Labs, por Dennis
Richie)
Evoluda a partir de BCLP, B e ALGOL 68
Poderoso conjunto de operadores, mas verificao de tipos pobre
Primeira linguagem de alto padro implementada no UNIX
Muitas reas de aplicao
Conceitos de Linguagens de Programao Robert W. Sebesta
Avaliao de Ada
Contribuies
Pacotes - suporte para abstrao de dados
Recursos elaborados para manipulao de excees
Unidades de programas genricas
Concorrncia de unidades de programas especiais
Comentrios
Projeto competitivo
Agrupa a maioria dos conceitos de engenharia de software e projeto de
linguagem do final dos anos 1970
Primeiros compiladores eram difceis; apenas em 1985, quase quatro
anos aps o projeto da linguagem estar completo, compiladores usveis
comearam a aparecer
Conceitos de Linguagens de Programao Robert W. Sebesta
Ada 95
Ada 95 (comeou em 1988)
Suporte para programao orientada a objeto por meio de derivao
de tipos
Melhor controle de mecanismos para dados compartilhados
Novos recursos para concorrncia
Popularidade sofreu porque o Departamento de Defesa no exigiu mais
seu uso e por causa da popularidade de C++
Conceitos de Linguagens de Programao Robert W. Sebesta
Linguagens relacionadas
Eiffel (projetada por Bertrand Meyer - 1992)
No diretamente derivada de outra linguagem
Menor e mais simples do que C++
No teve a popularidade de C++, porque muitos entusiastas de C++ j
eram programadores de C
Delphi (Borland)
Pascal mais recursos para suporte de programao orientada a objeto
Mais elegante e seguro do que C++
Conceitos de Linguagens de Programao Robert W. Sebesta
Avaliao de Java
Eliminou muitos recursos inseguros de C++
Suporta concorrncia
Bibliotecas de classes para interfaces grficas com o usurio, acesso a
bases de dados e redes
Portabilidade: Mquina Virtual Java (JVM), compiladores Just-in-Time
(JIT)
Amplamente usado para programao Web
Uso aumentou mais rapidamente do que qualquer linguagem anterior
Verso mais recente, 5.0, lanada em 2004
Conceitos de Linguagens de Programao Robert W. Sebesta
Resumo
Desenvolvimento, ambiente de desenvolvimento e avaliao de
importantes linguagens de programao
Perspectivas em relao as questes atuais do projeto de linguagens