A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Linguagens de Programação

Apresentações semelhantes


Apresentação em tema: "Linguagens de Programação"— Transcrição da apresentação:

1 Linguagens de Programação
Linha Cronológica e Influências das Principais Linguagens de Programação Karane Mariano Vieira – Modificações: Virgínia Brilhante

2 A Linha Cronológica TeX/LaTeX SQL PDF FORTRAN 77 APL Eiffel PROLOG
PostScript FORTRAN I/II/IV Clipper HTML JavaScript BASIC MODULA-3 MODULA 2 C++ Python SIMULA C PHP PL/I XML PLANKALKÜL PASCAL Perl COBOL SMALLTALK ASSEMBLY JAVA ALGOL Delphi(89) Snobol ADA LISP Scheme COMMON LISP 1950 1960 1970 1980 1990 2000

3 PLANKALKÜL - 1945 Criada por Konrad Zuse; Nunca implementada;
Estruturas de dados avançadas: reais, arrays, records.

4 FORTRAN The IBM Mathematical FORmula TRANslating System: FORTRAN por John Backus, 1954 Projetado para o IBM 704 Ambiente de desenvolvimento: Computadores eram pequenos e não confiáveis Aplicações eram científicas Sem metodologia ou ferramentas de programação

5 FORTRAN I - 1957 Primeira versão implementada do FORTRAN I/O formatado
Nomes poderiam ter até 6 caracteres Subprogramas definidos pelo usuário Comando de seleção de três modos (IF aritmético) Loop de contagem pos-testado (DO)

6 FORTRAN I – 1957 (Cont) Compilador lançado em abril de 1957, depois de 18 homens-ano de esforço. Programas maiores que 400 linhas raramente compilavam corretamente, principalmente devido à baixa confiabilidade do 704 Código era muito rápido Rapidamente tornou-se popular

7 FORTRAN II - 1958 Corrigiu vários “bugs” do Fortran I
Compilação independente de subrotinas 50% do código escrito pro 704 era FORTRAN

8 FORTRAN IV - 1960-62 FORTRAN III nunca largamente distribuído
Declaração de tipos explícita Comando de seleção lógica Nomes de subprogramas podiam ser parâmetros Padrão ANSI em 1966

9 FORTRAN 77 - 1978 Manuseio de character string
Comando de controle de loop lógico Comando IF-THEN-ELSE

10 FORTRAN 90 - 1990 Funções builtin para operações c/arrays
Arrays dinâmicos Ponteiros Tipo registro Recursão Novas estruturas de controle ex: CASE Checagem de tipo de parâmetro Módulos

11 EXEMPLO DE PROGRAMA EM FORTRAN 90
SUM DO 10 COUNTER = 1 LIST_LEN READ *, INTLIST(COUNTER) SUM = SUM + INTLIST(COUNTER) CONTINUE COMPUTE THE AVERAGE AVERAGE = SUM/LIST_LEN COUNT THE VALUES THAT ARE GREATER THAN THE AVERAGE DO 20 COUNTER = 1, LIST_LEN IE (INTLIST(COUNTER) .GT. AVERAGE) THEN RESULT = RESULT + 1 END IF

12 Autor do FORTRAN John Backus

13 LISP - 1959 Características:
Somente dois tipos de dados: átomos e listas Sintaxe baseada no lambda calculus Pioneira da programação funcional Não necessita variáveis ou atribuição Controle via recursão e expressões condicionais Paradigma alternativo ao modelo imperativo Ainda uma das linguagens dominantes em IA

14 Exemplo de Função em LISP
; Função LISP que pega duas lsitas como argumentos e ; retorna True se as duas listas forrem iguais, e NIL (falso) caso ; contrário. (DEFUN equal (lis1 lis2)) (COND ( (ATOM lis1) (EQ lis1 lis2)) ( (ATOM lis2) NIL) ( (equal (CAR lis1) (CAR lis2)) (equal (CDR lis1) (CDR lis2))) ( T NIL) ))

15 ALGOL 58 - 1958 Características da linguagem:
Conceito de tipo foi formalizado Nomes podiam ter qualquer tamanho Arrays podiam ter um número qualquer de índices Parâmetros eram separados por modo (entrada/saída) Índices eram colocados entre colchetes Comandos de composição de blocos (begin ... end) Ponto e vírgula como separador de comandos Operador de atribuição era := IF possuía uma cláusula ELSE-IF

16 ALGOL Modificou o ALGOL 58 durante um encontro de 6 dias em Paris Novas características: Estrutura de blocos (escopo local) Dois modos de passagem de parâmetros Subprogramas recursivos Arrays em pilhas dinâmicas Ainda nenhum I/O nem manuseio de strings

17 ALGOL 60 – 1960 (Cont) Sucessos:
Foi o padrão para publicação de algoritmos por mais de 20 anos Todas as linguagens imperativas são baseadas nela Primeira linguagem independente de máquina Primeira linguagem cuja sintaxe foi definida formalmente (BNF)

18 ALGOL 60 – 1960 (Cont) Falha: Nunca foi amplamente utilizada, especialmente nos EUA Motivos: Nenhum I/O e o conjunto de caracteres faziam com que os programas não fossem muito portáveis Muito flexível, portanto difícil de implementar Falta de apoio da IBM

19 Exemplo de programa em ALGOL 60
begin integer array intlist [1:99]; integer listlen, counter, sum, average, result; sum := 0; result := 0; readint(listlen); if (listlen > 0) L (listlen < 100) then comment Read input into an array and compute the average; for counter := 1 step 1 until listlen do readint( intlist[counter]); sum := sum + intlist [counter]; end;

20 ALGOL A partir do desenvolvimento do ALGOL 60, mas não é um superconjunto daquela linguagem Projeto é baseado no conceito de ortogonalidade Fonte de várias idéias adotadas por outras linguagens Contribuições: Estruturas de dados definidos pelo usuário Referência de tipos Arrays dinâmicos (chamados flex arrays)

21 SIMULA Baseada no SIMULA I, criada por Kristen Nygaard e OleJohan Dahal, entre 1962 e 1964 na Noruega Projetada inicialmente para simulação de sistemas Baseada no ALGOL 60 e SIMULA I Contribuições: Corotinas um tipo de subprograma que pode ser reiniciado a partir do ponto onde previamente havia parado POO

22 Autores do SIMULA Nygaard Dahal

23 COBOL - 1960 Objetivos do projeto: Deve parecer com inglês simples
Deve ser fácil de usar, mesmo que signifique menos recursos (poder) Deve estender a base de usuários de computadores Não deve ser influenciado por problemas implementação (compiladores)

24 COBOL - 1960 Problemas de projeto: expressões aritméticas? indexação?
brigas entre fabricantes Contribuições: Primeiro recurso macro em uma linguagem de alto nível Estruturas de dados hierárquicas (registros) Comandos de seleção aninhados Nomes longos (até 30 caracteres), com hífens Data Division

25 Exemplo de programa em COBOL
IDENTIFICATION DIVISION PROGRAMID. PRODUCEREORDERLISTING. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE CONPUTER. DECVAX. OBJECT CONPUTER. DECVAX. INPUTOUTPUT SECTION. FILECONTROL. SELECT BALFWDFILE ASSIGN TO READER. SELECT REORDERLISTING ASSIGN TO LOCALPRINTER. DATA DIVISION. FILE SECTION. FD BALFWDFILE

26 PL/I - 1965 Projetado pela IBM e SHARE
Incluia o que era considerado o melhor do: ALGOL 60: recursão estrutura de blocos FORTRAN IV compilação em separado comunicação por dados globais COBOL 60 estrutura de dados I/O facilidades para geração de relatórios

27 PL/I – 1965 (Cont) Comentários:
Muitas características novas tinham problemas de projeto Muito grande e complexo Foi de fato usado para aplicações científicas e comerciais Um sucesso parcial Contribuições: Primeiro tratamento de exceção (23 tipos) Tipo de dado ponteiro Referência a seções de arrrays Etc.

28 EXEMPLO DE PROGRAMA EM PL/I
PLIEX; PROCEDURE OPTIONS (MAIN); DECLARE INTLIST (1:99) FIXED. DECLARE (LISTLEN, COUNTER, SUM, AVERAGE, RESULT) FIXED; SOM = 0; RESULT = 0; GET LIST (LISTLEN). IF (LISTLEN > 0) & (LISTLEN < 100) THEN DO; /* READ INPUT DATA INTO AN ARRAY AND COMPUTE THE SUM */ DO COUNTER = 1 TO LISTLEN; GET LIST (INTLIST (COUNTER)); SUM = SUM + INTLIST (COUNTER); END; /* COMPUTE THE AVERAGE */ AVERAGE = SUM / LISTLEN;

29 Pascal - 1971 Criada por Niklaus Wirth
Baseada no ALGOL W, proposta alternativa apresentada pelos que consideraram muito complexa tanto a linguagem quanto a metalinguagem do ALGOL68 Simplicidade e tamanho reduzido eram objetivos de projeto Projetada para o ensino de programação estruturada Ainda é a uma das mais usadas linguagens para o ensino de programação estruturada nas universidades

30 Exemplo de programa em Pascal
program pasex (input, output); type intlisttype = array[1..99] of integer; var intlist :intlisttype; listlen, counter, sum, average, result: integer; begin result := 0; sum := 0; readln(listlen); if ((listlen > 0) and (listlen < 100) then {read input into an array and compute the sum } for counter := 1 to listlen do readln(intlist[counter]); sum := sum + intlist[counter]; end;

31 Autor do Pascal Niklaus Wirth

32 BASIC - 1964 Criada por Kemeny & Kurtz em Dartmouth
Objetivos de Projeto: Fácil de aprender e usar (por outros que não fossem estudantes de ciências) Deve ser “agradável e amigável” Rápido de usar em trabalhos domésticos Acesso livre e particular Tempo do usuário mais importante que tempo de máquina Versão inicial era compilada, s/ entrada pelo terminal Simples (14 tipos de comandos e 1 tipo de dados) Dialetos populares atuais: QuickBASIC e Visual BASIC

33 Exemplo de programa em QUICKBASIC
DIM intlist(99) result = O sum = O INPUT listlen IF listlen > O AND listlen < 100 THEN REM Read input into an array and compute the sum FOR counter = 1 TO listlen INPUT intlist(counter) sum = sum + intlist(counter>

34 Autores do BASIC

35 Modula­2 Criada entre 1975­76 por Niklaus Wirth na ETH;
Recursos do Pascal mais módulos, suportando tipos abstratos de dados, procedimentos como tipos e características de baixo nível projetadas para programação de sistemas.

36 Modula­3 Criada no final dos anos 80 por Systems Research Center (Digital) e Olivetti Research Center; Baseada no Modula­2, Mesa, Cedar e Modula­2+; Adiciona ao Modula­2: POO; Tratamento de exceção; Garbage collection; Concorrência.

37 Delphi (Borland) Lançado em 1995
Pascal mais características de suporte a POO Mais elegante e seguro que C++ A linguagem é Object Pascal, projetada anos antes

38 C Projetada para a programação de sistemas (nos Lab. Bell por Dennis Richie) Ancestrais incluem CPL, BCPL, B e ALGOL68 Operadores poderosos, checagem de tipos pobre (Inicialmente?) propagada através do UNIX

39 Exemplo de programa em C
void main() { int intlist[98], listlen, counter, sum, average, result; sum = 0; result = 0; scanf(``%d'', &listlen); if ((listlen > 0) && (listlen < 100) { /* read input into an array and compute the sum */ for (counter = 0; counter < listlen, counter++) { scanf(``%d'', &intlist[counter]); sum = sum + intlist[counter]; }

40 Autor do C Dennis Richie

41 Prolog Desenvolvido na Universidade de AixMarseille, por Comerauer e Roussel, com ajuda de Kowalski da Universidade de Edinburgh Basedo na lógica formal Não procedural Comparativamente poderia ser definida como: um sistema de banco de dados inteligente que usa processos de inferência para inferir a verdade de expressões fornecidas

42 Exemplo de programa em Prolog
vel_max(ford,100). vel_max(chevy,105). vel_max(dodge,95). vel_max(volvo,80). tempo(ford,20). tempo(chevy,21). tempo(dodge,24). tempo(volvo,24). distancia(X,Y) :- vel_max(X,Velocidade), tempo(X,Tempo), Y is Velocidade * Tempo.

43 Ada - 1983 Contribuições: Suporte para abstração de dados
Facilidades para tratamento de exceções Unidades de programa genéricas: versões instanciadas geradas pelo compilador de acordo com tipos de dados específicos Suporte à execução concorrente de unidades de programa Comentários: Projeto via contrato competitivo Incluiu tudo que se conhecia sobre engenharia de software e projeto de linguagens Não confiável por causa da alta complexidade Compiladores de difícil construção. Primeiro compilador operacional surgiu 4 anos depois que o projeto da linguagem tinha sido completado

44 Ada 95 - 1988 Facilidades para interface gráfica Suporte para POO
Mecanismos de controle para dados compartilhados  Apesar de tão completa, Ada só foi largamente utilizada pela organização que promoveu seu desenvolvimento: o DoD do governo americano.

45 Exemplo de programa em ADA
with TEXT_IO; use TEXT_IO; procedure ADA_EX is package INT_IO is new INTEGER_IO (INTEGER); use INT_IO; type INT_LIST_TYPE is array (1..99) of INTEGER; INT_LIST : INT_LIST_TYPE; LIST_LEN, SUM, AVERAGE, RESULT: INTEGER; begin RESULT := 0; SUM := 0; GET (LIST_LEN);

46 Smalltalk – Desenvolvida pela Xerox PARC, inicialmente por Alan Kay, depois por Adele Goldberg Primeira implementação completa de uma linguagem orientada por objetos (abstração de dados, herança e binding de tipos dinâmico) Pioneira no tipo de interface gráfica que hoje todos utilizam

47 Exemplo de programa em Smalltalk
class name Polygon superclass Object instance variable name ourPen numSides sideLenght “Class methods” “Create an instance” new ^ super new getPen “Get a pen for drawing polygons” getPen

48 Autores do SmallTalk Adele Goldberg Alan Kay

49 C++ - 1985 Desenvolvida nos Lab. Bell por Stroustrup
Baseada no C and SIMULA 67: facilidades para POO do SIMULA 67 adicionadas ao C Possui tratamento de exceção Linguagem grande e complexa, em parte por suportar programação procedural e orientada por objetos Popularizou-se rapidamente, junto com POO Padrão ANSI aprovado em novembro de 97

50 Autor do C++ Stroustrup

51 Java - 1995 Desenvolvida pela Sun no começo dos anos 90 Baseada no C++
Significantemente simplificada Suporta apenas POO Tem referências, mas não ponteiros Inclui suporte a applets e concorrência

52 Outras Linguagens ML(1973) – Meta Language. Linguagem de programação funcional. Versão mais recente é o SML/NJ. Clipper(1984) – Linguagem de desenvolvimento de banco de dados para DOS. PHP(1995) - Linguagem script para o desenvolvimento de aplicações Web; embutível dentro do HTML. JavaScript(1995) – Linguagem script para aplicações executadas em Web browsers. HTML – Hipertext Markup Language, script para formatação de hipertextos. ASP – Active Server Page. Linguagem script para construção de páginas dinâmicas.

53 Outras Linguagens TeX/LaTeX(1985) – Linguagem para formatação de textos científicos. PostScript(1982) – Linguagem de formatação de textos para visualização. PDF – Portable Document Format. Linguagem de formatação de textos para visualização. XML – Extensible Markup Language. Usado para estruturação do conteúdo de páginas HTML. Perl(1987) – Linguagem script com facilidades para manipulação de texto.

54 Outras Linguagens SQL – Structured Query Language. Padrão para operações em bancos de dads relacionais. PYTHON(1991) – Linguagem interpretada, orientada a objetos similar ao Perl. Etc.


Carregar ppt "Linguagens de Programação"

Apresentações semelhantes


Anúncios Google