Escolar Documentos
Profissional Documentos
Cultura Documentos
2. 2 Evoluo de Linguagens
Os primeiros computadores
lentos, caros, limitados, pouco confiveis ausncia de software bsico
programao trabalhosa linguagem de mquina codificao mo
ausncia de reutilizao
2. 2 Evoluo de Linguagens
ENIAC Linguagem de mquina
falta de legibilidade endereamento absoluto
Linguagem de montagem
montadores uso de mnemnicos endereamento relativo
2. 2 Evoluo de Linguagens
FORTRAN (Formula Translator)
John Backus, 1957 IBM 704
Aplicaes cientficas A l f
2. 2 Evoluo de Linguagens
ALGOL 60 (Algorithmic Language)
GAMM e ACM, 1960 linguagem universal g g
Objetivos j
Sintaxe familiar Descrio de algoritmos em publicaes Traduo Genealogia de ALGOL 60
2. 2 Evoluo de Linguagens
COBOL
Dept. de Defesa A li comerciais Aplicaes i i B do milnio Bug d il i
Genealogia d COBOL G l i de
2. Evoluo de Linguagens
Programao Funcional: LISP
John McCarthy, MIT Influenciada pelo clculo (Alan Church)
Caractersticas
P Processamento de listas t d li t
2. 2 Evoluo de Linguagens
Exemplo Lisp
Common Lisp: (defunfatorial(n) (defun fatorial (n) (if(=n0) 1 (*n(fatorial( n1))))) Scheme: (definefatorial (lambda(n) (if(=n0) 1 (*n(fatorial( n1)))))) (* n (fatorial ( n 1))))))
2. 2 Evoluo de Linguagens
BASIC (Beginners All-Purpose Symbolic ( g p y
Instruction Code)
J Kemeny e T.Kurtz, 1965, Dartmouth College J.Kemeny TKurtz 1965
Genealogia de BASIC
2. 2 Evoluo de Linguagens
PL/I
Espectro largo de reas de aplicao Dois grupos de usurios separados
SHARE: SHARE FORTRAN GUIDE: COBOL
IBM 360
Ponto-flutuante Aritmtica decimal
Caractersticas
Recursividade e estrutura em blocos Compilao separada Estrutura de dados, input/output, facilidades para gerao de relatrios
Genealogia de PL/I
2. 2 Evoluo 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;
2. 2 Evoluo de Linguagens
APL (A Programming Language)
Kenneth Iverson, IBM, 1960 Aplicaes cientficas Caractersticas
manipulao poderosa de arrays grande nmero de operadores
2. 2 Evoluo de Linguagens
APL Programa APL que calcula a mdia aritmtica de uma lista de nmeros {(+/& ) &! } Aplicao {(+/& ) &!
2. 2 Evoluo de Linguagens
SNOBOL (StriNg Oriented symBOlic Language)
Farber, Griswold and Polensky, Bell Labs., incio de 1960s Processamento de texto Caractersticas
Coleo de operaes para pattern matching ( (casamento de p padres) de cadeias ) Usada para programao de editores de texto
2. 2 Evoluo de Linguagens
SIMULA I, 1962-1964 I 1962 1964 SIMULA 67
Dahl and Nygaard, NCC Simulao e pesquisa operacional Caractersticas
Co-rotinas Classe Cl
Dados e rotinas empacotados
2. 2 Evoluo de Linguagens
ALGOL 68
Wijngaarden
2. 2 Evoluo de Linguagens
ALGOL: Descendentes
Pascal
Niklaus Wi h Nikl Wirth, 1971 Uso: Ensino
2. Evoluo de Linguagens g g
C
Denis Ritchie, Bell Labs, 1972 Programao de sistemas Caractersticas
Falta de verificao de tipos completa Parte do UNIX
Genealogia de C
2. 2 Evoluo de Linguagens
Prolog (Programming Logic)
Colmerauer, France, 1972
Programao no-procedimental
Usa clculo de predicados Usa resoluo
Mtodo de prova (Robinson 1965) (Robinson,
2. 2 Evoluo de Linguagens
Ada 83
DoD, 1975-1983 Li Linguagem mais cara e com i maior esforo de projeto caractersticas i
pacotes manipulao de excees genricos tarefas
Ada 95
Genealogia de Ada
2. 2 Evoluo de Linguagens
SmallTalk
Alan Kay, 1972 Dynabook
Caractersticas
Classes e objetos Dinmica Mquina virtual
Bytecodes
Ambiente de Programao
Genealogia de Smalltalk
2. 2 Evoluo de Linguagens
C++ C Bjarne Stroustrup, Bell Labs, 1985 j p, , Evoluo a partir de C (C com tipos)
C Construes imperativas i i Construes orientadas a objetos
2. 2 Evoluo de Linguagens
Eiffel
Meyer, 1992 Linguagem orientada a objetos Sintaxe similar a Pascal e ALGOL Caractersticas
Heranas mltiplas; Sobrecarga de operador; S b d d Classes genricas; Projeto por contrato:
Manipulao dos programas e seus resultados Prs e ps-condies que devem ser satisfeitas
2. 2 Evoluo 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
2. 2 Evoluo de Linguagens
Java
James Gosling, Sun MicroSystems J g, y Baseada em C++, mas projetada para ser
Menor Mais simples Mais confivel Portvel
2. 2 Evoluo de Linguagens
Linguagens de script para a Web
JavaScript
Usada para programao de aplicaes Web (cliente) para criar documentos HTML dinmicos Relacionada a Java apenas atravs da sintaxe similar
PHP
Usada para programao de aplicaes Web (servidor) Gera cdigo HTML como sada
2. 2 Evoluo de Linguagens
Lua
tipada dinamicamente interpretada a p p partir de bytecodes para uma mquina y p q virtual baseada em registradores gerenciamento automtico de memria com coleta de lixo incremental incremental.
Essas caractersticas fazem de Lua uma linguagem ideal para configurao, automao (scripting) e configurao prototipagem rpida. Lua inteiramente projetada implementada e projetada, desenvolvida no Brasil, por uma equipe na PUCRio.