Вы находитесь на странице: 1из 29

Paradigmas de Programação

Paradigmas de Programação Au Au l l a a 3 3 H H i i s

AuAullaa 33

HHiissttóórriicoco ddaass LLiinngguuaaggeennss

Prof.: Edilberto M. Silva

hhttttpp::////wwwwww eeddiillmmss eettii bbrr

Prof. Edilberto Silva / edilms.eti.br

Definição

Linguagens de programação são usadas para descrever algoritmos; Seqüências de passos que levam à solução de um problema. Precisa suportar a definição de ações e prover meios para especificar operações básicas de computação Permite que os usuários especifiquem como estes passos devem ser seqüenciados para resolver um problema Notação que pode ser usada para especificar algoritmos com precisão.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Classificação das Linguagens de Programação

As linguagens de baixo nível são restritas a linguagem de máquina e tem uma forte relação entre as operações implementadas pela linguagem e as operações implementadas pelo hardware.

A programação mesmo sendo com algoritmos simples resulta em longos programas, o que dificulta o processo de validação e detecção de erros. O cálculo de endereços de memória devem ser feitos manualmente, com um árduo trabalho e uma grande probabilidade de erros. Indicada para funções que precisam implementar instruções de máquina específicas A grande eficiência e o reduzido tamanho dos programas desenvolvidos

PP - Prof. Edilberto Silva - http://edilms.eti,br

Classificação das Linguagens de Programação

As linguagens de alto nível aproximam-se das linguagens utilizadas por humanos para expressar problemas e algoritmos.

Cada declaração numa linguagem de alto nível equivale a várias declarações numa linguagem de baixo nível A vantagem principal das linguagens de alto nível é a

abstração.

Provê facilidades para a depuração, como visualização dos valores das variáveis, dos registradores e da pilha.

Inclui instruções na geração de código para detectar erros em tempo de execução, como overflow numéricos e violação de limites de vetores e matrizes.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Processamento de Linguagens

Problema básico:

linguagem de nível mais alto implementada para/em baixo nível

Interpretação

Diretamente executadas

Sequência:

1. Obter a próxima instrução (aquela cujo endereço é especificado no indicador de instruções da máquina). 2. Deslocar o indicador de instruções (obtendo o endereço da próxima instrução a ser executada). 3. Decodificar a instrução. 4. Executar a instrução.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Processamento de Linguagens

Tradução

traduzidos para versões equivalentes em linguagem de máquina, antes de serem executadas.

Sequência:

Subprogramas podem ser inicialmente traduzidos para código Assembly (compilador) este pode depois ser traduzido para código relocável (objeto), em linguagem de máquina (montador) em seguida, unidades em código relocável (objeto) podem ser ligadas em uma única unidade relocável /um único código objeto (linker) e, finalmente, o programa inteiro é carregado na memória principal, como código executável de máquina (carregador)

PP - Prof. Edilberto Silva - http://edilms.eti,br

Um breve histórico

1

1950

FORTRAN

PL/I
PL/I

C

19

60

ALGOL-60

Um breve histórico 1 1950 FORTRAN PL/I C 19 60 ALGOL-60 COBOL LISP SIMULA Smalltalk ALGOL-68

COBOL

LISP

histórico 1 1950 FORTRAN PL/I C 19 60 ALGOL-60 COBOL LISP SIMULA Smalltalk ALGOL-68 BASIC 1970
histórico 1 1950 FORTRAN PL/I C 19 60 ALGOL-60 COBOL LISP SIMULA Smalltalk ALGOL-68 BASIC 1970
histórico 1 1950 FORTRAN PL/I C 19 60 ALGOL-60 COBOL LISP SIMULA Smalltalk ALGOL-68 BASIC 1970

SIMULA

Smalltalk

ALGOL-68

BASIC

1970

Pascal

Ada

COBOL LISP SIMULA Smalltalk ALGOL-68 BASIC 1970 Pascal A da Modula-2 ML Miranda Haskell 1980 DBASE-II

Modula-2

ML Miranda Haskell
ML
Miranda
Haskell

1980

DBASE-II

Eifell

C++

Java

Delphi

990

Orientado a objetos

Imperativo

Funcional

PP - Prof. Edilberto Silva - http://edilms.eti,br

PROLOG

990 Orientado a objetos Imperativo Funcional PP - Prof. Edilberto Silva - http://edilms.eti,br PROLOG Godel Lógico

Godel

Lógico

Histórico

Primeira geração

Remonta aos dias da codificação em linguagem de máquina, surgidas com o início da computação na década de 50, especificamente de 1950 a 1962. A Linguagem de máquina e Assembly representam esta primeira geração das linguagens de programação. Totalmente dependentes da máquina, exibem o mais baixo nível de abstração que uma linguagem pode ser representada

PP - Prof. Edilberto Silva - http://edilms.eti,br

Histórico

Segunda geração

Desenvolvida de 1962 a 1974

Serviu de base para o desenvolvimento das

modernas linguagens de programação Amplo uso com grande familiaridade e aceitação no mercado e a grande quantidade de bibliotecas de software permitiram a programação multi-usuário, sistemas de execução em tempo real e desenvolvimento de gerenciadores de base de dados As linguagens Fortran, Cobol, Algol e algumas extensões como Basic, foram os representantes dessa geração.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Histórico

Terceira geração

São caracterizadas pela grande capacidade procedural e estrutural de seus dados - de 1974 a 1986

Possibilidade de criar sistemas distribuídos, incorporar recursos mais inteligentes, e exigir um hardware menos robusto

Categorias: linguagens de propósito geral

linguagem Algol: aplicações envolvendo desde a área científica a área comercial: linguagens C, Pascal, PL/1 e Modula-2

e linguagens especializadas

forma sintática não usual Lisp (lista/símbolos); Prolog (conhecimento); SmallTalk (objetos); APL (vetores) e Forth (microprocessadores)

PP - Prof. Edilberto Silva - http://edilms.eti,br

Histórico

Quarta geração A quarta geração das linguagens de programação foram desenvolvidas a partir de 1986 Geração de sistemas especialistas, o desenvolvimento de inteligência artificial e a possibilidade de execução dos programas em paralelo. Conhecidas também como linguagens artificiais contém uma sintaxe distinta para representação de estruturas de controle e dos dados.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Histórico

Quarta geração

categorias: linguagens de consulta, geradoras de programas e outras linguagens (4GL)

consulta

manipular bases de dados, permitindo o gerenciamento de um grande número de informações armazenados em arquivos.

geradoras de programas

criar facilmente programas complexos em linguagens de terceira geração, utilizando bem menos declarações e comandos

Outras

apoio à decisão, linguagens utilizadas para modelagem de sistemas, linguagens de prototipação, e linguagens de especificação formal que produzem código de máquina.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Histórico

1957 FORTRAN

1958 ALGOL

1960 LISP

1960 COBOL

1962 APL

1962 SIMULA

1964 BASIC

1964 PL/1

1966 ISWIM

1970 Prolog

1972 C

1975 Pascal

1975 Scheme

1977 OPS5

1978 CSP

1978 FP

1980 dBase II

1983 Smalltalk 80

1983 Ada

1983 Parlog

1984 Standard ML

1986 C++

PP - Prof. Edilberto Silva - http://edilms.eti,br

1986 CLP(R)

1986 Eiffel

1988 CLOS

1988 Mathematica

1988 Oberon

1990 Haskell

1995 Delphi

1995 Java

Tendências

aplicação com metodologias orientadas a objetos.

ambiente de geração automática de código, onde o

programador especifica através de ferramentas visuais as características do programa e a ferramenta se encarrega de gerar a codificação na linguagem específica. “Quinta geração” baseada em métodos de consulta e utilizam comandos escritos em linguagens naturais, permitindo uma fácil comunicação com o computador.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Evolução

A linguagem COBOL (Common Business Language) foi publicada pelo Departamento de Defesa em1960, logo após o surgimento de FORTRAN. Sua área de aplicação é a de computação de negócios. Ela teve pouco efeito no desenvolvimento de outras linguagens, em função de sua área específica de aplicação. Desde o seu surgimento, houveram poucas iniciativas de desenvolvimento de novas linguagens de negócios, uma vez que COBOL já atendia aosprincipais requisitos desta área.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Evolução

Fortran IV (1962)

. . Algol 60 (1960) . . BASIC (1964) QuickBasic (1988)
.
.
Algol 60 (1960)
.
.
BASIC (1964)
QuickBasic (1988)

. VisualBasic (1990)

A linguagem BASIC (Beginner’s All-purpose Symbolic Instruction Code) foi projetada em 1964 por dois matemáticos, John Kemeny e Thomas Kurtz, da universidade de Dartmouth.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Evolução

BASIC teve como objetivos:

ser uma linguagem fácil de aprender e usar; ser amigável; permitir acessos públicos e privados; considerar o tempo do usuário mais importante que o do computador.

As razões para a sua popularidade foram a facilidade de aprendizado para iniciantes e a sua implementação em computadores com memórias pequenas. As versões contemporâneas de BASIC são o QuickBASIC e o Visual BASIC.

PP - Prof. Edilberto Silva - http://edilms.eti,br

ALGOLW (1966)

Evolução

Pascal (1971)

ALGOLW (1966) Evolução Pascal (1971) . . . . Algol 68 (1968) Algol 60 (1960) 

.

ALGOLW (1966) Evolução Pascal (1971) . . . . Algol 68 (1968) Algol 60 (1960) 

.

.

. Algol 68 (1968) Algol 68 (1968)

(1966) Evolução Pascal (1971) . . . . Algol 68 (1968) Algol 60 (1960)  A

Algol 60 (1960)

A linguagem Pascal, assim como diversas outras linguagens imperativas, evoluiu de ALGOL. desenvolvida por Niklaus Wirth, que propôs uma versão com pequenas contribuições e alterações de ALGOL 60. Esta versão foi chamada de Pascal (1971) e foi amplamente utilizada no ensino de linguagens de programação.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Evolução

Pascal foi projetada para ser uma linguagem de ensino de programação;

Em função disso, ela não possui algumas características necessárias para projetos de grande porte, como arrays de tamanhos variáveis.

Como características positivas de Pascal estão a simplicidade e a expressividade. Além disso, é uma linguagem um pouco mais segura do que FORTRAN e C. Na metade dos anos 90 a popularidade de Pascal entrou em declínio.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Evolução

A linguagem C (1972) deriva de ALGOL 68, CPL, BCPL e B, e foi desenvolvida e implementada por Dennis Ritchie, dos laboratórios BELL.

O sistema operacional Unix foi originalmente escrito em linguagem assembly, e posteriormente reescrito em linguagem C.

C possui declarações de controle e facilidades de estruturação de dados que permitem o seu uso em diversas áreas de aplicação. Além disso, possui um grande conjunto de operadores.

A inclusão de C em Unix permitiu a sua gratuidade e consequente popularidade.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Evolução

PROLOG

Baseada em lógica utiliza notações de lógica formal para comunicar processos computacionais ao computador.

A programação lógica é não procedural.

Os programas em linguagens lógicas não definem como um resultado deve ser calculado, mas sim a forma do resultado.

O que é necessário para prover esta capacidade à linguagem é um processo de inferência desenvolvido por Robinson em 1965.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Evolução

O nome Prolog vem de programação logica

Um programa em Prolog consiste de uma coleção de

declarações que podem ser bastante complexas. Existem dois tipos de declarações em Prolog: fatos e regras.

Os fatos são representados como no exemplo a seguir:

mae (maria, joão). Pai (pedro,maria). Neste exemplo, maria é mãe de joão e pedro é pai de maria.

Uma regra é declarada da seguinte forma:

avo(X,Z) :- pai(X,Y),pai(Y,Z).

PP - Prof. Edilberto Silva - http://edilms.eti,br

Evolução

A base de dados de Prolog pode ser interativamente requerida com declarações de objetivos, como no exemplo:

pai(Jonas, Lucas). que pergunta se Jonas é o pai de Lucas. A resposta do sistema Prolog é do tipo verdadeiro ou falso.

A programação lógica provou ser útil apenas em algumas áreas de aplicação, como em alguns tipos de bases de dados e algumas áreas de Inteligência Artificial.

A programação lógica não é tão eficiente como a imperativa.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Evolução

.

.

Pascal (1971) ADA 83(1983)

. Ada 95 (1995)

A linguagem Ada foi criada em função da grande quantidade de linguagens diferentes existentes em computadores do Departamento de Defesa em 1974. O objetivo principal da criação de Ada foi o de desenvolver uma linguagem de alto-nível para sistemas embarcados.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Evolução

Ada possui quatro características principais:

pacotes para o encapsulamento de dados, especificações para tipos de dados e procedimentos; manuseio de exceções; procedimentos com tipos genéricos definidos em tempo de execução; execução concorrente de unidades especiais de programas, chamadas de tarefas.

A extensão mais recente de Ada (Ada 95) provê o suporte para a programação orientada a objetos e o compartilhamento de dados.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Evolução - Smalltalk

Os computadores no final dos anos 60 eram usados

exclusivamente por programadores profissionais e cientistas. Alan Kay desenvolveu em seu trabalho de doutorado em 1969 uma previsão de que os futuros computadores seriam poderosos, e utilizados por nãoprogramadores.

Suas idéias foram apoiadas pela Xerox e foi desenvolvida a linguagem Smalltalk (1980).

Smalltalk introduziu os conceitos de sistemas de janelas e de desenvolvimento orientado a objetos.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Evolução - C++

A linguagem ”C++” (1985) combina as

características dos paradigmas imperativo e orientado a objetos (O.O.); C++ evoluiu de C através de uma seqüência de modificações para melhorar as suas características imperativas e suportar a O.O.;

A parte mais essencial do suporte à orientação a objetos é o mecanismo de classes e objetos.

C++ provê uma coleção de classes pré-definidas, juntamente com a possibilidade de o usuário definir suas classes.

As classes de C++ podem ser instanciadas inúmeras vezes.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Evolução - C++

As definições de classes especificam objetos de dados e funções.

C++ tornou-se uma linguagem popular em função

de sua compatibilidade com a linguagem C. Outro fator de popularidade foi a disponibilidade de compiladores bons e gratuitos. Além disso, há um interesse grande na orientação a objetos atualmente.

Como aspectos negativos da linguagem, pode-se citar:

o fato de C++ ser uma linguagem complexa e ser mais insegura que as linguagens Delphi, Ada e Java.

PP - Prof. Edilberto Silva - http://edilms.eti,br

Evolução - Java

Algumas características de Java o diferenciam de outras linguagens de suporte à orientação a objetos.

não é possível escrever subprogramas independentes em Java. Os subprogramas sempre são métodos e estão definidos em classes.

em Java é relativamente fácil de se criar processos concorrentes, que são chamados de Threads.

existe um mecanismo automático de desalocação de memória, chamado de garbage collection, que livra o programador da tarefa de eliminar variáveis e posições de memória não mais utilizadas.

ocorre a conversão implícita de tipos de dados de um tipo menor para outro maior, p.ex. de int para float

O uso de Java vem crescendo mais do que o das outras linguagens. Uma das razões para isso é que ela se adequa bem à programação para a Web.

PP - Prof. Edilberto Silva - http://edilms.eti,br