Unidade02

37
Evolução das linguagens de Evolução das linguagens de Evolução das linguagens de Evolução das linguagens de programação programação Prof. Iális Cavalcante Engenharia da Computação – UFC/Sobral

Transcript of Unidade02

Page 1: 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

Page 2: Unidade02

1. 1. GenealogiaGenealogia de de linguagenslinguagens de de programaçãoprogramação de altode alto--nívelnível

Page 3: Unidade02

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

Page 4: Unidade02

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

Page 5: Unidade02
Page 6: Unidade02

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

Page 7: Unidade02

2. 2. EvoluçãoEvolução de de LinguagensLinguagens –– FORTRAN (FORTRAN (ExemploExemplo))

Page 8: Unidade02

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)

Page 9: Unidade02

2. 2. EvoluçãoEvolução de de LinguagensLinguagens –– ALGOL 60 (ALGOL 60 (ExemploExemplo))

Page 10: Unidade02

2. 2. EvoluçãoEvolução de de LinguagensLinguagens –– ALGOL 60 (ALGOL 60 (GenealogiaGenealogia))

Page 11: Unidade02

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

Page 12: Unidade02

2. 2. EvoluçãoEvolução de de LinguagensLinguagens –– COBOL (COBOL (exemploexemplo 1)1)

Page 13: Unidade02

2. 2. EvoluçãoEvolução de de LinguagensLinguagens –– COBOL (COBOL (exemploexemplo 2)2)

Page 14: Unidade02

2. 2. EvoluçãoEvolução de de LinguagensLinguagens –– COBOL (COBOL (exemploexemplo 3)3)

Page 15: Unidade02

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

Page 16: Unidade02

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

Page 17: Unidade02

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))))))

Page 18: Unidade02

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

Page 19: Unidade02

2. Evolução de Linguagens 2. Evolução de Linguagens –– BASIC BASIC (exemplo)(exemplo)

Page 20: Unidade02

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

Page 21: Unidade02

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;

Page 22: Unidade02

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

Page 23: Unidade02
Page 24: Unidade02

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

Page 25: Unidade02

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

Page 26: Unidade02

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

Page 27: Unidade02

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

Page 28: Unidade02

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

Page 29: Unidade02

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)

Page 30: Unidade02

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

Page 31: Unidade02

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

Page 32: Unidade02

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

Page 33: Unidade02

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

Page 34: Unidade02

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

Page 35: Unidade02

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

Page 36: Unidade02

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

Page 37: Unidade02

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.