Evolução das linguagens de
p g
programação
         ç
Prof. Iális Cavalcante

Engenharia da Computação – UFC/Sobral
1. Genealogia de linguagens de programação de alto-nível
                                              alto-
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
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
2.
2 Evolução de Linguagens
 FORTRAN (Formula Translator)
 ◦ John Backus, 1957
 ◦ IBM 704


 Aplicações científicas
 A l    õ        íf
2. Evolução de Linguagens – FORTRAN (Exemplo)
                                    (Exemplo)
2.
2 Evolução de Linguagens
 ALGOL 60 (Algorithmic Language)
 ◦ GAMM e ACM, 1960
 ◦ linguagem universal
      g g


 Objetivos
   j
 ◦ Sintaxe familiar
 ◦ Descrição de algoritmos
    em publicações
 ◦ Tradução                  Genealogia de ALGOL 60


 BNF (Backus-Naur Form)
2. Evolução de Linguagens – ALGOL 60 (Exemplo)
                                     (Exemplo)
2. Evolução de Linguagens – ALGOL 60 (Genealogia)
                                     (Genealogia)
2.
2 Evolução de Linguagens
 COBOL
 ◦ Dept. de Defesa
 ◦ A li õ comerciais
   Aplicações      i i

 ◦ “B ” do milênio
   “Bug” d  ilê i




                         Genealogia d COBOL
                         G    l i de
2. Evolução de Linguagens – COBOL (exemplo 1)
                                  (exemplo
2. Evolução de Linguagens – COBOL (exemplo 2)
                                  (exemplo
2. Evolução de Linguagens – COBOL (exemplo 3)
                                  (exemplo
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
Representação interna de duas listas em LISP
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))))))
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
2. Evolução de Linguagens – BASIC
(exemplo)
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
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;
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
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
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
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
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
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
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
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,
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
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
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
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
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
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
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
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.

Unidade02

  • 1.
    Evolução das linguagensde p g programação ç Prof. Iális Cavalcante Engenharia da Computação – UFC/Sobral
  • 2.
    1. Genealogia delinguagens de programação de alto-nível alto-
  • 3.
    2. 2 Evolução deLinguagens 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 deLinguagens ENIAC Linguagem de máquina ◦ falta de legibilidade ◦ endereçamento absoluto Linguagem de montagem ◦ montadores ◦ uso de mnemônicos ◦ endereçamento relativo
  • 6.
    2. 2 Evolução deLinguagens FORTRAN (Formula Translator) ◦ John Backus, 1957 ◦ IBM 704 Aplicações científicas A l õ íf
  • 7.
    2. Evolução deLinguagens – FORTRAN (Exemplo) (Exemplo)
  • 8.
    2. 2 Evolução deLinguagens ALGOL 60 (Algorithmic Language) ◦ GAMM e ACM, 1960 ◦ linguagem universal g g Objetivos j ◦ Sintaxe familiar ◦ Descrição de algoritmos em publicações ◦ Tradução Genealogia de ALGOL 60 BNF (Backus-Naur Form)
  • 9.
    2. Evolução deLinguagens – ALGOL 60 (Exemplo) (Exemplo)
  • 10.
    2. Evolução deLinguagens – ALGOL 60 (Genealogia) (Genealogia)
  • 11.
    2. 2 Evolução deLinguagens COBOL ◦ Dept. de Defesa ◦ A li õ comerciais Aplicações i i ◦ “B ” do milênio “Bug” d ilê i Genealogia d COBOL G l i de
  • 12.
    2. Evolução deLinguagens – COBOL (exemplo 1) (exemplo
  • 13.
    2. Evolução deLinguagens – COBOL (exemplo 2) (exemplo
  • 14.
    2. Evolução deLinguagens – COBOL (exemplo 3) (exemplo
  • 15.
    2. Evolução deLinguagens 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
  • 16.
    Representação interna deduas listas em LISP
  • 17.
    2. 2 Evolução deLinguagens 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 deLinguagens 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
  • 19.
    2. Evolução deLinguagens – BASIC (exemplo)
  • 20.
    2. 2 Evoluçãode 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 deLinguagens 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 deLinguagens 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 deLinguagens 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 deLinguagens 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 deLinguagens 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 deLinguagens 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 deLinguagens 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 deLinguagens ç 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 deLinguagens 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 deLinguagens 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 deLinguagens 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 deLinguagens 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 deLinguagens 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 deLinguagens 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çãode 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 deLinguagens 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 deLinguagens 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.