Beruflich Dokumente
Kultur Dokumente
A Torre de Babel
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 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
1. Plankalkl - 1945
Linguagem criada por Konrad Zuse No foi implementada; Estruturas de dados avanada:
Invariantes.
(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
(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
(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
(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
(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
(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
(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
(cont.)
(cont.)
Avaliao:
Paradigma alternativo ao modelo imperativo Ainda a linguagem dominante na rea de Inteligncia Artificial Dialectos do LISP:
(cont.)
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.
(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
(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
(cont.)
Estrutura de Bloco (escopo local); Dois modos de passagem de parmetros (valor e nome); Subprogramas recursivos; Arrrays dinmicos;
11
(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:
(cont.)
Contribuies:
12
(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)
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
(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
(cont.)
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
(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:
14
(cont.)
Genealogia do BASIC
(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
(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:
(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
(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:
(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
(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
(cont.)
Genealogia da linguagem C
18
(cont.)
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
(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
(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.
(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
(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
(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:
21
(cont.)
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