Unidade02

Post on 30-Jun-2015

877 views 3 download

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.