Sie sind auf Seite 1von 22

Linguagens de Programao

Captulo II Evoluo das Principais Linguagens de Programao


Baseado em Conceitos de Linguagens de Programao 4 Edio Robert W. Sebesta Bookman

Engenharia Informtica Linguagens de Programao 2002/2003

A Torre de Babel

Engenharia Informtica Linguagens de Programao 2002/2003

Algumas das mais de 2300 L.P.


ABC, Ada, Alan, ALF, Algol, Alloy, Amiga E, AMPL, APL, AWK, B, BASIC, BCPL, BETA, Bliss, Blue, Business Rules, C, C++, Charity, CLAIRE, Clean, COBOL, COMAL, cT, DCL, Dialect, Dylan, E, Eiffel, elastiC, Elf, Erlang, Escher, Euphoria, Forth, Fortran, FPL, GNU E, Guile, Gdel, Haskell, Hugo, ICI, Icon, Inform, J, Java, Joy, Juice, K, Lava, LIFE, Limbo, LISP, LOGO, Lua, Matlab, MCPL, Mercury, Miranda, ML, Modula-2, Modula-3, NeoBook, NESL, NetRexx, Oberon, Object Oriented Turing, Objective-C, Obliq, Occam, Octave, Oz, Pascal, Perl, Phantom (Phi), PHP, Pike (LPC), PiXCL, PL/B, PL/I, Pliant, Postscript, Prolog, Python, R, REBOL, Rexx, RPG, RPL/2, Ruby, S, Sather, Scheme, Self, SETL, Simula, Sisal, Smalltalk, SNOBOL, SR, TADS, Tcl, Theta, TOM, V, Visual Basic, Yorick, ZPL
Engenharia Informtica Linguagens de Programao 2002/2003

Genealogia das L.P.

Engenharia Informtica Linguagens de Programao 2002/2003

Principais pocas
1955-1965

FORTRAN (FORmula TRANslation) COBOL (COmmon Business Oriented Language) ALGOL 60 (ALGorithmic Oriented Language) LISP (LISt Processing) APL (A Programming Language) BASIC (Beginners All-purpose Symbolic Instruction Code) PL/I (Programming Language I) SIMULA 67 ALGOL 68 (ALGorithmic Oriented Language) PASCAL
Engenharia Informtica Linguagens de Programao 2002/2003

1965-1971

Principais pocas
1971-1980

(cont.)

PROLOG (PROgramming in LOGic) SMALL TALK C MODULA 2 ADA C++ EIFFEL MODULA 3 VISUAL BASIC
Engenharia Informtica Linguagens de Programao 2002/2003

1985-1990

O que estudar em tantas L.P.?


1. Contribuies e influencias para as linguagens futuras; 2. Motivao do seu desenvolvimento; 3. Pontos fortes e fracos da L.P..

Engenharia Informtica Linguagens de Programao 2002/2003

Porque existem tantas L.P.?

O mito de muitas religies, explica a razo pela qual as raas falam tantas linguagens diferentes. Ser que mesma razo, tambm pode explicar a super abundncia prejudicial de tantas L.P.? Alguns motivos:

Os grupos de investigao necessitam inventar novas linguagens e novos conceitos para suas publicaes. As empresas de Hardware e Software necessitam de novos recursos para ganharem cotas de mercado:

SUN - Java Microsoft -C# (L-se C-Sharp) e plataforma .NET (L-se DotNet)
Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P.

1. Plankalkl - 1945

Linguagem criada por Konrad Zuse No foi implementada; Estruturas de dados avanada:

floating point, arrays, records;

Invariantes.

Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P. 2. Pseudocdigos - 1949


Problemas do cdigo mquina?

(cont.)

Fraca legibilidade; Dificuldades em efectuar alteraes (problema de endereamento absoluto); Cdigo de expresses muito complicado; Deficincia das mquinas - no havia instrues de virgula flutuante, estas tinham de ser implementadas em software.
Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P.


3. FORTRAN I 1957
(FORTRAN 0 - 1954 - no foi implementado)

(cont.)

Criado por John Backus na IBM em 1954 Projectado para o novo IBM 704, que j continha operaes de virgula flutuante em hardware. Ambiente de desenvolvimento:

Computadores pequenos e no confiveis; Aplicaes para computao cientifica; Inexistncia de metodologias de programao; A eficincia das aplicaes era o factor mais importante.
Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P.

(cont.)

Caractersticas da Linguagem:

Nomes de variveis at seis caracteres; Instruo de ciclo (DO loop); Entrada/Sada de dados formatada; Possibilidade de definir subrotinas; IF aritmticos: IF(expresso) N1, N2, N3; No existncia de tipos de dados; No existncia de compilao separada; Programas maiores que 400 linhas raramente eram compilados correctamente, em geral pela no confiabilidade do IBM 704; Cdigo era muito rpido; Rapidamente tornou-se conhecido e usado.
Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P.


4. FORTRAN II 1958

(cont.)

Compilao independente de subrotinas; Correco de diversos erros do Fortran I. Foi desenvolvido, mas sem grande distribuio. Declarao do tipo de dados explicita; Comando de seleco lgico (if lgico); Subprogramas podem receber como parmetros outros subprogramas; Padro ANSI em 1966.
Engenharia Informtica Linguagens de Programao 2002/2003

5. FORTRAN III

6. FORTRAN IV - 1960-62

Evoluo das Principais L.P.


7. FORTRAN 77 - 1978

(cont.)

Manipulao de cadeias de caracteres (strings); Controle lgico de ciclos; Instruo IF-THEN-ELSE. Definio de mdulos; Arrays dinmicos; Funes pr-definidas para manipulao de arrays Apontadores; Recursividade; Seleco mltipla: instruo CASE; Verificao do tipo de dados dos parmetros.
Engenharia Informtica Linguagens de Programao 2002/2003

8. FORTRAN 90 - 1990

Evoluo das Principais L.P.


Avaliao:

(cont.)

Primeira linguagem de alto nvel muito utilizada (na poca). O sucesso global do FORTRAN difcil de exagerar (este mudou drasticamente e para sempre a utilizao de computadores); Eficincia a cima de tudo, para computao cientifica; Linguagem ainda hoje muito estudada nos cursos de engenharia, de muitas universidades.
Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P.


9. LISP 1959 (LISts Processing language)

(cont.)

Linguagem projectada no MIT por John McCarthy Investigadores necessitavam em Inteligncia Artificial de uma linguagem para:

Processamento de dados em listas (em vez de arrays); Computao simblica (em vem de numrica).

Caractersticas: Somente dois tipos de dados: tomos e listas Sintaxe baseada em lambda calculus Primeira linguagem de programao funcional

Sem variveis e sem atribuies; Controle atravs de recursividade e expresses condicionais.


Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P.

(cont.)

Representao interna de duas listas em LISP: 1. (A B C D) 2. (A (B C) D (E (F G) ) )

Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P.

(cont.)

Avaliao:

Paradigma alternativo ao modelo imperativo Ainda a linguagem dominante na rea de Inteligncia Artificial Dialectos do LISP:

COMMON LISP; Scheme. ML; Miranda; Haskell,


Engenharia Informtica Linguagens de Programao 2002/2003

Linguagens modernas relacionadas:


Evoluo das Principais L.P.

(cont.)

10. ALGOL 58 1958 (ALGorithmic Oriented Language)


Ambiente de desenvolvimento:

FORTRAN tinha acabado de chegar para IBM 70x; Muitas outras linguagens estavam sendo desenvolvidas, todas para mquinas especficas; No existiam linguagens portveis. Todas eram dependentes de maquina; Inexistncia de linguagem de programao universal para representar algoritmos.

Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P.

(cont.)

Objectivos da linguagem:

Proximidade com a notao matemtica; Facilidade em descrever algoritmos; Ser traduzvel para cdigo de mquina. O conceito de tipo foi formalizado Nomes poderiam ter qualquer tamanho Arrays podiam ter um nmero qualquer de elementos Parmetros foram separados por modo (entrada/sada) Indices do arrays foram colocados entre chavetas Definio de blocos de comandos (begin ... end) Ponto e vrgula ; definido como separador de comandos Operador de atribuio definido como := if possui uma clusula else-if
Engenharia Informtica Linguagens de Programao 2002/2003

Caractersticas da Linguagem:

10

Evoluo das Principais L.P.

(cont.)

Avaliao:

No era inteno implement-la, mas outras variantes da linguagem foram (MAD, JOVIAL) Apesar de, inicialmente, a IBM estar muito interessada no projecto, todo o suporte foi retirado em meados de 1959.

Genealogia do ALGOL
Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P.


11. ALGOL 60 - 1960

(cont.)

Modificao de ALGOL 58 num encontro de 6-dias em Paris Novas caractersticas:


Estrutura de Bloco (escopo local); Dois modos de passagem de parmetros (valor e nome); Subprogramas recursivos; Arrrays dinmicos;

Inexistncia de instrues de Entrada/Sada e de manipulao de strings.


Engenharia Informtica Linguagens de Programao 2002/2003

11

Evoluo das Principais L.P.

(cont.)

Avaliao: Sucessos:

Foi o modo padro para publicar algoritmos por mais de 20 anos; Todas as novas linguagens imperativas foram baseadas nesta; Primeira linguagem independente de mquina; Primeira linguagem cuja sintaxe foi formalmente definida (BNF). Linguagem pouco utilizada (EUA e Europa) Inexistncia de instrues de Entrada/Sada; Linguagem muito flexvel tornando difcil a sua implementao; Concorrente do FORTRAN; Descrio formal de sintaxe (estranho e complicado para a poca); Falta de apoio por parte da IBM.

Falhas:

Razes:

Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P.

(cont.)

Contribuies:

Descrio sintctica da linguagem atravs de gramticas BNF;

Engenharia Informtica Linguagens de Programao 2002/2003

12

Evoluo das Principais L.P.


12. COBOL - 1960

(cont.)

Ambiente de desenvolvimento:

UNIVAC comeava a usar o FLOW-MATIC USAF comeava a usar o AIMACO (variante do FLOW-MATIC) IBM desenvolvia o COMTRAN (COMmercial TRANslator)

Definio COBOL baseado em FLOW-MATIC Caractersticas de FLOW-MATIC:


Nomes at 12 caracteres, com hfenes includos Nomes em Ingls para operadores aritmticos Dados e cdigo eram completamente separados Verbos eram a primeira palavra em cada comando
Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P.

(cont.)

Contribuies:

Primeira facilidade de macros em Linguagem de alto nvel Estrutura de dados Hierrquica (records) Comandos de seleco aninhados Nomes longos (at 30 caracteres), com hfenes Data Division (unidade de dados) Primeira linguagem solicitada pelo Departamento de Defesa Americano (grande impulsionador). Ainda muito utilizada em aplicaes comerciais.
Engenharia Informtica Linguagens de Programao 2002/2003

Avaliao:

13

Evoluo das Principais L.P.


13. BASIC - 1964

(cont.)

Criada por Kemeny & Kurtz em Dartmouth Objectivos:

Fcil de aprender e usar pelos estudantes das reas no cientificas; Deve ser agradvel e amigvel; Rpido para resolver exerccios; Deve permitir acesso livre e privado; Deve considerar o tempo do programador mais importante que o tempo do computador.
Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P.

(cont.)

Avaliao:

Estrutura de programao pobre; No destinada a projectos de grande porte; Facilidade de aprendizagem e implementao; Popularizao com a entrada do computador pessoal. QuickBASIC Visual BASIC

Dialectos populares:

Engenharia Informtica Linguagens de Programao 2002/2003

14

Evoluo das Principais L.P.

(cont.)

Genealogia do BASIC

Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P.


14. PL/I - 1965

(cont.)

Projectado pela IBM e SHARE O objectivo principal foi a criao de uma linguagem para obter o melhor de:

ALGOL

Recursividade; Definio de blocos. Compilao em separado; Comunicao por dados globais. Estrutura de dados; Manipulao de Entrada/Sada; Facilidades para gerao de relatrios.
Engenharia Informtica Linguagens de Programao 2002/2003

FORTRAN IV

COBOL 60

15

Evoluo das Principais L.P.

(cont.)

Contribuies:

Primeira linguagem a permitir tarefas concorrentes Primeiro tratamento de excepes Recursividade (Switch-selectable recursion) Apontador como tipo de dado Referncias e seco de arrays Linguagem muito grande e complexa Foi (e ainda ) utilizada para aplicaes cientficas e comerciais
Engenharia Informtica Linguagens de Programao 2002/2003

Avaliao:

Evoluo das Principais L.P.


15. SIMULA 67 - 1967

(cont.)

Linguagem desenvolvida na Noroega por Nygaard e Dahl. Projectada para simulao de sistemas Baseada em ALGOL 60 e SIMULA I Contribuies:

Co-rotinas - um tipo de subprograma que podia ser reiniciado a partir do ponto onde tinha parado; Implementada em um estrutura chamada classe; Classes so a base para abstraco de dados; Classes so estruturas que incluem dados locais e funcionalidade.
Engenharia Informtica Linguagens de Programao 2002/2003

16

Evoluo das Principais L.P.


16. ALGOL 68 - 1968

(cont.)

Continuao do desenvolvimento de ALGOL 60, mas no um super conjunto dela Projecto baseado no conceito de ortogonalidade Contribuies:

Estrutura de dado definida pelo utilizador; O tipo referencia; Arrays dinmicos (chamados flex arrays). Foi menos utilizada que ALGOL 60; Forte influncia em linguagens subsequentes, especialmente Pascal, C, e Ada.
Engenharia Informtica Linguagens de Programao 2002/2003

Avaliao:

Evoluo das Principais L.P.


17. Pascal - 1971

(cont.)

Projectada por Niklaus Wirth; Projectada para o ensino de programao estruturada; Pequena, simples, nada de realmente novo; Ainda a linguagem mais utilizada para o ensino de programao em universidades (mas a sua utilizao est diminuindo).
Engenharia Informtica Linguagens de Programao 2002/2003

17

Evoluo das Principais L.P.


18. C - 1972

(cont.)

Projectada para programao de sistemas (por Bell Labs e Dennis Richie) Evoluo principalmente de B, mas tambm de ALGOL 68 Poderoso conjunto de operadores, pobre verificao de tipo Inicialmente difundida atravs do UNIX
Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P.

(cont.)

Genealogia da linguagem C

Engenharia Informtica Linguagens de Programao 2002/2003

18

Evoluo das Principais L.P.

(cont.)

19. Outras linguagens descendentes de ALGOL


Modula-2

Criada em meados de 1970, por Niklaus Wirth na empresa ETH; Pascal + mdulos e algumas caractersticas de baixo nvel para programao de sistemas. Criada nos finais de 1980, na Digital & Olivetti; Modula-2 + classes, tratamento de excepes, colectores de lixo e concorrncia.
Engenharia Informtica Linguagens de Programao 2002/2003

Modula-3

Evoluo das Principais L.P.

(cont.)

Oberon

Criada nos finais de 1980, por Wirth na ETH; Suporte para POO Muitas caractersticas de Modula-2 foram eliminadas (ex., comando for , tipos enumerados, comando with, etc.). Pascal + suporte para POO; Mais elegante e seguro que C++.
Engenharia Informtica Linguagens de Programao 2002/2003

Delphi (Borland)

19

Evoluo das Principais L.P.


20. Prolog - 1972

(cont.)

Desenvolvido na Universidade de Aix-Marseille, (Frana) por Comerauer e Roussel, com alguma ajuda de Kowalski da Universidade de Edinburgh Baseado em lgica formal No procedimental Pode ser definida como: um sistema de base de dados inteligente que utiliza um processo de inferncia para decidir a veracidade de uma dada interrogao.

Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P.


21. Smalltalk - 1972-1980

(cont.)

Desenvolvida na Xerox PARC, inicialmente por Alan Kay, mais tarde por Adele Goldberg Primeira implementao completa de uma linguagem Orientada a Objectos (abstraco de dados, herana e binding dinmico de tipo - dynamic type binding) Pioneira no tipo de interface grfica que hoje todos utilizamos.
Engenharia Informtica Linguagens de Programao 2002/2003

20

Evoluo das Principais L.P.


22. C++ - 1985

(cont.)

Desenvolvida nos laboratrios Bell por Stroustrup; Baseado no C e no SIMULA 67; Facilidades para programao orientada a objectos, derivadas parcialmente de SIMULA 67, que foram adicionadas linguagem C; Padro ANSI aprovado em Novembro de 1997. Possui tratamento de excepes; Avaliao:

Tornou-se rapidamente muito popular; Quase totalmente compatvel com a linguagem C; uma linguagem grande e complexa; Herdou a maioria da insegurana da linguagem C.
Engenharia Informtica Linguagens de Programao 2002/2003

Evoluo das Principais L.P.


23. Eiffel - 1992

(cont.)

Projectada por Bertrand Meyer; Linguagem que suporta POO; No directamente derivada de nenhuma outra linguagem; Menor e mais simples que C++, possuindo um grande poder de expressar algoritmos. Nota:

Alguns aspectos da linguagem vo ser desenvolvidos nas aulas prticas.

Engenharia Informtica Linguagens de Programao 2002/2003

21

Evoluo das Principais L.P.


24. Java (1995)

(cont.)

Desenvolvida pela Sun no incio de 1990 Baseada em C++


Significantemente mais simples; Suporta apenas POO; Contm referncias (references), mas no apontadores; Inclui suporte para applets e uma forma de concorrncia.
Engenharia Informtica Linguagens de Programao 2002/2003

22

Das könnte Ihnen auch gefallen