O documento descreve a evolução de linguagens de programação, desde as primeiras linguagens de máquina até linguagens modernas. Ele discute linguagens como FORTRAN, ALGOL, COBOL, LISP, BASIC, C, Java e Lua, destacando suas características e aplicações.
3. 2.
2 Evolução de Linguagens
Os primeiros computadores
◦ lentos, caros, limitados, pouco confiáveis
◦ ausência de software básico
programação trabalhosa
linguagem de máquina
codificação à mão
◦ ausência de reutilização
4. 2.
2 Evolução de Linguagens
ENIAC
Linguagem de máquina
◦ falta de legibilidade
◦ endereçamento absoluto
Linguagem de montagem
◦ montadores
◦ uso de mnemônicos
◦ endereçamento relativo
5.
6. 2.
2 Evolução de Linguagens
FORTRAN (Formula Translator)
◦ John Backus, 1957
◦ IBM 704
Aplicações científicas
A l õ íf
15. 2. Evolução de Linguagens
Programação Funcional: LISP
◦ John McCarthy, MIT
◦ Influenciada pelo λ–cálculo (Alan Church)
Inteligência Artificial
Descendentes
◦ Scheme
◦ Common Lisp
◦ Haskell
◦ ML
Características
◦ P
Processamento de listas
t d li t
17. 2.
2 Evolução de Linguagens
Exemplo Lisp
Common Lisp:
(defun fatorial (n)
(defun fatorial (n)
(if (= n 0)
1
(* n (fatorial (‐ n 1)))))
Scheme:
(define fatorial
(lambda (n)
(if (= n 0)
1
(* n (fatorial (‐ n 1))))))
(* n (fatorial ( n 1))))))
18. 2.
2 Evolução de Linguagens
BASIC (Beginner’s All-Purpose Symbolic
( g p y
Instruction Code)
◦ J Kemeny e T.Kurtz, 1965, Dartmouth College
J.Kemeny TKurtz 1965
Uso com microcomputadores
Simples interpretada
Si l e i d
Genealogia de BASIC
20. 2.
2 Evolução de Linguagens
PL/I
◦ Espectro largo de áreas de aplicação
◦ Dois grupos de usuários separados
SHARE:
SHARE FORTRAN
GUIDE: COBOL
◦ IBM 360
Ponto-flutuante
Aritmética decimal
◦ Características Genealogia de PL/I
Recursividade e estrutura em blocos
Compilação separada
Estrutura de dados, input/output, facilidades para geração de
relatórios
21. 2.
2 Evolução de Linguagens
PL/I (Exemplo)
HELLO: PROCEDURE OPTIONS (MAIN);
/
/* A PROGRAM TO OUTPUT HELLO WORLD */
/
FLAG = 0;
LOOP: DO WHILE (FLAG = 0);
PUT SKIP DATA('HELLO WORLD!');
END LOOP;
END HELLO;
22. 2.
2 Evolução de Linguagens
APL (A Programming Language)
◦ Kenneth Iverson, IBM, 1960
◦ Aplicações científicas
◦ Características
manipulação poderosa de arrays
grande número de operadores
◦ Conjunto de caracteres incomum
Terminais especiais
23. 2.
2 Evolução de Linguagens
APL
Programa APL que calcula a média
aritmética de uma lista de números
{(+/& ) ÷ &! }
Aplicação
{(+/& ) ÷ &! } 3 4 5 7 21 8.875
4.5 8 875
24. 2.
2 Evolução de Linguagens
SNOBOL (StriNg Oriented symBOlic
Language)
◦ Farber, Griswold and Polensky, Bell Labs.,
início de 1960s
◦ Processamento de texto
◦ Características
Coleção de operações para pattern matching
(
(“casamento de p
padrões”) de cadeias
)
Usada para programação de editores de texto
25. 2.
2 Evolução de Linguagens
SIMULA I, 1962-1964
I 1962 1964
SIMULA 67
◦ Dahl and Nygaard, NCC
◦ Simulação e pesquisa operacional
◦ Características
Co-rotinas
Classe
Cl
Dados e rotinas empacotados
Instâncias de classe
Genealogia de SIMULA 67
g
26. 2.
2 Evolução de Linguagens
ALGOL 68
◦ Wijngaarden
Aplicações i ífi
A li õ científicas
Características
◦ Tipos de dados
definidos pelo usuário
Genealogia d ALGOL 68
G l i de
◦ Arrays dinâmicos
◦ Descrita através de W-grammars
27. 2.
2 Evolução de Linguagens
ALGOL: Descendentes
◦ Pascal
Niklaus Wi h
Nikl Wirth, 1971
Uso: Ensino
◦ Modula-2
Modula 2
◦ Modula-3
◦ Oberon
◦ Object Pascal
(Delphi)
(D l hi)
Genealogia de Pascal
28. 2. Evolução de Linguagens
ç g g
C
◦ Denis Ritchie, Bell Labs, 1972
◦ Programação de sistemas
◦ Características
Falta de verificação de tipos completa
Parte do UNIX
Genealogia de C
29. 2.
2 Evolução de Linguagens
Prolog (Programming Logic)
◦ Colmerauer, France, 1972
Programação não-procedimental
◦ Usa cálculo de predicados
◦ Usa resolução
Método de prova (Robinson 1965)
(Robinson,
30. 2.
2 Evolução de Linguagens
Ada 83
◦ DoD, 1975-1983
◦ Li
Linguagem mais cara e com
i
maior esforço de projeto
◦ características
í i
pacotes
manipulação de exceções
genéricos
tarefas
◦ Primeiro compilador: 1985
Genealogia de Ada
Ada 95
31. 2.
2 Evolução de Linguagens
SmallTalk
◦ Alan Kay, 1972
◦ Dynabook
Características
◦ Classes e objetos
◦ Dinâmica
◦ Máquina virtual
Bytecodes
◦ Ambiente de Programação
Genealogia de Smalltalk
32. 2.
2 Evolução de Linguagens
C++
C
Bjarne Stroustrup, Bell Labs, 1985
j p, ,
Evolução a partir de C (C com tipos)
◦CConstruções imperativas
õ i i
◦ Construções orientadas a objetos
ANSI standard: November, 1997
33. 2.
2 Evolução de Linguagens
Eiffel
◦ Meyer, 1992
◦ Linguagem orientada a objetos
◦ Sintaxe similar a Pascal e ALGOL
◦ Características
Heranças múltiplas;
Sobrecarga de operador;
S b d d
Classes genéricas;
Projeto por contrato:
Manipulação dos programas e seus resultados
Prés e pós-condições que devem ser satisfeitas
34. 2.
2 Evolução de Linguagens
Exemplo de Eiffel (Hello World):
class HELLO_WORLD
create
make
ake
feature
make is
do
io.put_strring("Hello World!%N")
end
end
35. 2.
2 Evolução de Linguagens
Java
◦ James Gosling, Sun MicroSystems
J g, y
◦ Baseada em C++, mas projetada para ser
Menor
Mais simples
Mais confiável
Portável
◦ Java 1 – 1995
◦ J
Java 2 - 1998
Genealogia de Java
36. 2.
2 Evolução de Linguagens
Linguagens de script para a Web
◦ JavaScript
Usada para programação de aplicações Web
(cliente) para criar documentos HTML dinâmicos
Relacionada a Java apenas através da sintaxe similar
◦ PHP
Usada para programação de aplicações Web
(servidor)
Gera código HTML como saída
37. 2.
2 Evolução de Linguagens
Lua
tipada dinamicamente
interpretada a p
p partir de bytecodes para uma máquina
y p q
virtual baseada em registradores
gerenciamento automático de memória com coleta de
lixo incremental
incremental.
◦ Essas características fazem de Lua uma linguagem
ideal para configuração, automação (scripting) e
configuração
prototipagem rápida.
◦ Lua é inteiramente projetada implementada e
projetada,
desenvolvida no Brasil, por uma equipe na PUC-
Rio.