Unidade02
-
Upload
ialis-cavalcante -
Category
Education
-
view
877 -
download
3
Transcript of Unidade02
Evolução das linguagens de Evolução das linguagens de Evolução das linguagens de Evolução das linguagens de programaçãoprogramaçãop g çp g çProf. Iális Cavalcante
Engenharia da Computação – UFC/Sobral
1. 1. GenealogiaGenealogia de de linguagenslinguagens de de programaçãoprogramação de altode alto--nívelnível
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de Linguagens
Os primeiros computadoresOs primeiros computadores◦ lentos, caros, limitados, pouco confiáveis◦ ausência de software básico
programação trabalhosalinguagem de máquinacodificação à mão
◦ ausência de reutilização
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de Linguagens
ENIACENIACLinguagem de máquina◦ falta de legibilidade◦ endereçamento absolutoendereçamento absoluto
Linguagem de montagem◦ montadores◦ uso de mnemônicos◦ endereçamento relativo
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de LinguagensFORTRAN (Formula Translator)FORTRAN (Formula Translator)◦ John Backus, 1957
IBM 704◦ IBM 704
A l õ ífAplicações científicas
2. 2. EvoluçãoEvolução de de LinguagensLinguagens –– FORTRAN (FORTRAN (ExemploExemplo))
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de LinguagensALGOL 60 (Algorithmic Language)ALGOL 60 (Algorithmic Language)◦ GAMM e ACM, 1960
◦ linguagem universalg g
Objetivosj◦ Sintaxe familiar
◦ Descrição de algoritmos
em publicações
◦ Tradução Genealogia de ALGOL 60
BNF (Backus-Naur Form)
2. 2. EvoluçãoEvolução de de LinguagensLinguagens –– ALGOL 60 (ALGOL 60 (ExemploExemplo))
2. 2. EvoluçãoEvolução de de LinguagensLinguagens –– ALGOL 60 (ALGOL 60 (GenealogiaGenealogia))
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de LinguagensCOBOLCOBOL◦ Dept. de Defesa
A li õ i i◦ Aplicações comerciais
“B ” d ilê i◦ “Bug” do milênio
G l i d COBOLGenealogia de COBOL
2. 2. EvoluçãoEvolução de de LinguagensLinguagens –– COBOL (COBOL (exemploexemplo 1)1)
2. 2. EvoluçãoEvolução de de LinguagensLinguagens –– COBOL (COBOL (exemploexemplo 2)2)
2. 2. EvoluçãoEvolução de de LinguagensLinguagens –– COBOL (COBOL (exemploexemplo 3)3)
2. 2. EvoluçãoEvolução de de LinguagensLinguagens2. 2. EvoluçãoEvolução de de LinguagensLinguagensProgramação Funcional: LISP◦ John McCarthy, MIT ◦ Influenciada pelo λ–cálculo (Alan Church)
Inteligência ArtificialDescendentes◦ Scheme◦ Common LispCommon Lisp◦ Haskell◦ MLML
CaracterísticasP t d li t◦ Processamento de listas
Representação interna de duas listas em LISPRepresentação interna de duas listas em LISPRepresentação interna de duas listas em LISPRepresentação interna de duas listas em LISP
2 2 EvoluçãoEvolução de de LinguagensLinguagens2. 2. EvoluçãoEvolução de de LinguagensLinguagens
Exemplo LispExemplo LispCommon Lisp:(defun fatorial (n)(defun fatorial (n)
(if (= n 0)
11
(* n (fatorial (‐ n 1)))))
Scheme:(define fatorial
(lambda (n)
(if (= n 0)
1
(* n (fatorial ( n 1))))))(* n (fatorial (‐ n 1))))))
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de LinguagensBASIC (Beginner’s All-Purpose Symbolic ( g p yInstruction Code)◦ J Kemeny e TKurtz 1965 Dartmouth College◦ J.Kemeny e T.Kurtz, 1965, Dartmouth College
Uso com microcomputadoresSi l i dSimples e interpretada
Genealogia de BASIC
2. Evolução de Linguagens 2. Evolução de Linguagens –– BASIC BASIC (exemplo)(exemplo)
2 2 EvoluçãoEvolução de de LinguagensLinguagens2. 2. EvoluçãoEvolução de de LinguagensLinguagensPL/I◦ Espectro largo de áreas de aplicação◦ Dois grupos de usuários separados
SHARE FORTRANSHARE: FORTRANGUIDE: COBOL
◦ IBM 360IBM 360Ponto-flutuanteAritmética decimal
◦ CaracterísticasRecursividade e estrutura em blocosCompilação separada
Genealogia de PL/I
Compilação separadaEstrutura de dados, input/output, facilidades para geração de relatórios
2 2 EvoluçãoEvolução de de LinguagensLinguagens2. 2. EvoluçãoEvolução de de LinguagensLinguagens
PL/I (Exemplo)PL/I (Exemplo)
HELLO: PROCEDURE OPTIONS (MAIN);
/* A PROGRAM TO OUTPUT HELLO WORLD *// A PROGRAM TO OUTPUT HELLO WORLD /
FLAG = 0;
LOOP: DO WHILE (FLAG = 0);
PUT SKIP DATA('HELLO WORLD!');
END LOOP;
END HELLO;
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de Linguagens
APL (A Programming Language)APL (A Programming Language)◦ Kenneth Iverson, IBM, 1960◦ Aplicações científicas◦ Características
manipulação poderosa de arraysgrande número de operadoresgrande número de operadores
◦ Conjunto de caracteres incomum Terminais especiaisTerminais especiais
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de Linguagens
SNOBOL (StriNg Oriented symBOlic SNOBOL (StriNg Oriented symBOlic Language)◦ Farber, Griswold and Polensky, Bell Labs.,
início de 1960s◦ Processamento de texto◦ CaracterísticasCaracterísticas
Coleção de operações para pattern matching(“casamento de padrões”) de cadeias ( p )Usada para programação de editores de texto
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de LinguagensSIMULA I 1962 1964SIMULA I, 1962-1964SIMULA 67◦ Dahl and Nygaard, NCC◦ Simulação e pesquisa operacional◦ Características
Co-rotinasClClasse
Dados e rotinas empacotados
Instâncias de classe
Genealogia de SIMULA 67g
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de LinguagensALGOL 68ALGOL 68◦ Wijngaarden
A li õ i ífiAplicações científicasCaracterísticas◦ Tipos de dados
definidos pelo usuárioG l i d ALGOL 68◦ Arrays dinâmicos
◦ Descrita através de W-grammars
Genealogia de ALGOL 68
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de Linguagens
ALGOL: DescendentesALGOL: Descendentes◦ Pascal
Nikl Wi h 1971Niklaus Wirth, 1971Uso: Ensino
◦ Modula 2◦ Modula-2◦ Modula-3◦ Oberon◦ Oberon◦ Object Pascal
(D l hi)(Delphi)
Genealogia de Pascal
2. 2. EvoluçãoEvolução de de LinguagensLinguagensçç g gg g
C◦ Denis Ritchie, Bell Labs, 1972Denis Ritchie, Bell Labs, 1972◦ Programação de sistemas◦ CaracterísticasCaracterísticas
Falta de verificação de tipos completaParte do UNIX
Genealogia de CGenealogia de C
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de Linguagens
Prolog (Programming Logic)Prolog (Programming Logic)◦ Colmerauer, France, 1972
Programação não-procedimental◦ Usa cálculo de predicadosUsa cálculo de predicados◦ Usa resolução
Método de prova (Robinson 1965)Método de prova (Robinson, 1965)
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de LinguagensAda 83Ada 83◦ DoD, 1975-1983
Li i ◦ Linguagem mais cara e commaior esforço de projeto
í i◦ característicaspacotesmanipulação de exceçõesmanipulação de exceçõesgenéricostarefas
◦ Primeiro compilador: 1985
Ada 95 Genealogia de AdaAda 95
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de Linguagens
SmallTalkSmallTalk◦ Alan Kay, 1972◦ Dynabook
Características◦ Classes e objetos◦ Dinâmica◦ Máquina virtual
Bytecodes
◦ Ambiente de Programação
Genealogia de Smalltalk
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de Linguagens
CC++Bjarne Stroustrup, Bell Labs, 1985j p, ,Evolução a partir de C (C com tipos)
C õ i i◦ Construções imperativas◦ Construções orientadas a objetos
ANSI standard: November, 1997
2 2 EvoluçãoEvolução de de LinguagensLinguagens2. 2. EvoluçãoEvolução de de LinguagensLinguagens
EiffelEiffel◦ Meyer, 1992◦ Linguagem orientada a objetos◦ Sintaxe similar a Pascal e ALGOL◦ Características
Heranças múltiplas;S b d dSobrecarga de operador;Classes genéricas;Projeto por contrato:Projeto por contrato:
Manipulação dos programas e seus resultadosPrés e pós-condições que devem ser satisfeitas
2 2 EvoluçãoEvolução de de LinguagensLinguagens2. 2. EvoluçãoEvolução de de LinguagensLinguagens
Exemplo de Eiffel (Hello World):Exemplo de Eiffel (Hello World):
class HELLO_WORLDcreate
akemakefeature
make ismake isdo
io.put_strring("Hello World!%N")end
end
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de Linguagens
Java◦ James Gosling, Sun MicroSystemsJ g, y◦ Baseada em C++, mas projetada para ser
MenorMais simplesMais confiávelPortável
◦ Java 1 – 1995J 2 1998◦ Java 2 - 1998
Genealogia de Java
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de Linguagens
Linguagens de script para a WebLinguagens de script para a Web◦ JavaScript
Usada para programação de aplicações Web (cliente) para criar documentos HTML dinâmicosRelacionada a Java apenas através da sintaxe similar
◦ PHPUsada para programação de aplicações Web (servidor)Gera código HTML como saída
2 Evolução de Linguagens2 Evolução de Linguagens2. Evolução de Linguagens2. Evolução de LinguagensLua
tipada dinamicamenteinterpretada a partir de bytecodes para uma máquina p p y p qvirtual baseada em registradoresgerenciamento automático de memória com coleta de lixo incrementallixo incremental.
◦ Essas características fazem de Lua uma linguagem ideal para configuração automação (scripting) e ideal para configuração, automação (scripting) e prototipagem rápida.◦ Lua é inteiramente projetada implementada e ◦ Lua é inteiramente projetada, implementada e
desenvolvida no Brasil, por uma equipe na PUC-Rio.Rio.