You are on page 1of 38

Paradigmas de Linguagens de Programao

Sistemas de Informao
Professores: Fabiano Fagundes Jackson Gomes

Segundo Aurlio:
Paradigma . [Do gr. Pardeigma, pelo lat. paradigma] S. m. 1. modelo, padro, estalo: "D. Lus de Meneses ....parece constituir o paradigma da sntese ideal .... entre a coragem militar e o academismo cultural." (Antnio Jos Saraiva e Oscar Lopes, Histria da Literatura Portuguesa, pp. 455-456.) 2. Gram. Modelo ou tipo de conjugao ou declinao gramatical.

Linguagem
" A linguagem o veculo pela qual expressamos nossos pensamentos e a relao entre esses pensamentos Nossa linguagem sutil e complexa. A natureza da linguagem realmente molda e modela a maneira como pensamos Um projeto de linguagem deve pelo menos fornecer meios que permitam a expresso compreensvel de algoritmos

Contextualizao
Dcada de 1950: primeira linguagem de programao de alto nvel Linguagem de Programao: notao formal para descrio de algoritmos em computador Paradigma de programao como um estilo Uma linguagem pode seguir mais de um paradigma (ex.: C++)

Linguagens e Ambiente de Desenvolvimento


Ferramentas que auxiliam a programao (editores de texto, depuradores etc..) Ambiente de desenvolvimento deve ser um conjunto integrado de ferramentas que auxilia o desenvolvedor na construo do software Controle de verso para desenvolvimento em equipes Automao de algumas etapas - "Wizards" Uso de ferramentas CASE (Computer Aided Software Engineering)

Por que estudar Paradigmas?


Aumento da capacidade de expressar idias Maior embasamento para escolher linguagens apropriadas Capacidade aumentada para aprender novas linguagens Entender melhor a importncia da implementao Aumento da capacidade de projetar novas linguagens Avano global da computao

Domnios da Programao
Aplicaes Cientficas
Com os primeiros computadores (anos de 40) Preocupao com a performance Estruturas de dados simples Grande nmero de computaes aritmticas (geralmente com nmero reais) Arrays e laos de controle Exs: FORTRAN e ALGOL 60

Domnios da Programao
Aplicaes Comerciais
Dcada de 50 1: COBOL Planilha Eletrnicas (?) Sistemas de Banco de Dados (?)

Domnios da Programao
Inteligncia Artificial
rea abrangente das aplicaes de computador Computao simblica Listas encadeadas de dados 1 linguagem de programao desenvolvida para IA: LISP em 1959 PROLOG, Haskell, Eiffell, Scheme

Domnios da Programao
Programao de Sistemas (software bsico)
Linguagens de alto nvel orientadas para a mquina PL/S, BLISS, Extended Algol Unix - C

Domnios da Programao
Linguagens de Scripting
Foram desenvolvidas lentamente nos ltimos 25 anos A primeira foi a sh (shell) pequena coleo de comandos aos quais foram adicionadas variveis, instrues de controle de fluxo, funes e outras capacidades TCL usada associada a TK (TCL/TK) para aplicaes X Window PERL com o uso de CGI JavaScript

Domnios da Programao
Linguagens de Propsitos Especiais
RPG Usada em relatrios especiais APT Ferramentas de mquinas programveis GPSS Simulao de Sistemas

Linguagens e Mtodos de Desenvolvimento


Um mtodo serve de "guia" para o processo de desenvolvimento Estruturado, top-down, orientado a objeto Desenvolver um casamento entre o modelo de desenvolvimento e a linguagem de programao O relacionamento entre uma linguagem de programao e um mtodo de desenvolvimento leva a adoo de um estilo de programao <-> paradigma de programao

Linguagens e Arquitetura de Computadores


Mtodos estabelecem requisitos para melhorar o suporte ao desenvolvimento de software Arquitetura de computadores restringem o uso das linguagens Baseado na Arquitetura de Von Newman Linguagens convencionais so uma abstrao da arquitetura de Von Newman Linguagens de programao funcionais e lgicas no seguem a abstrao da arquitetura de Von Newman

Principais paradigmas
Programao Procedural / Procedimental / Estruturada / Imperativa
Os programas so decompostos em passos que executam operaes mais complexas. Exemplos: Pascal, C

Programao Funcional (PF)


Se origina na teoria das funes matemticas; enfatiza o uso de funes como bloco primrio de construo. Exemplos: Scheme, LISP, Haskell

Principais paradigmas
Programao de Tipos Abstratos de Dados
Um TAD a principal unidade do programa; Exemplo: CLU

Programao Orientada a Objetos (POO)


Enfatiza a definio de classes e objetos; estilo baseado na definio de hierarquias de classes. Exemplo: Smalltalk, Java, C++, Ada

Principais paradigmas
Programao Declarativa (PD)
Enfatiza a descrio declarativa, ao invs da decomposio do problema em uma implementao algortmica. Exemplo: PROLOG, OPS5, CLIPS Linguagens lgicas e baseadas em regras

Por que estudar paradigmas de linguagens de programao?


LP a forma de comunicao entre pessoa e computador e entre pessoas Melhorar o entendimento de uma linguagem j utilizada Fazer melhor uso de uma linguagem de programao, entendendo suas estruturas e peculiaridades Permitir a escolha de uma linguagem para uma tarefa especfica, a partir do conhecimento de uma variedade de opes

Por que estudar paradigmas de linguagens de programao?


Para facilitar o aprendizado de uma nova linguagem Para tornar mais fcil o projeto de uma linguagem

Linguagem de Programao
Linguagem (lngua ou idioma) o meio mais eficaz de comunicao entre pessoas Consiste em um conjunto de convenes e regras para apresentao de idias ou troca de informaes Na linguagem de programao a comunicao entre pessoa e computador e entre pessoas

Linguagem de Programao (LP)


Programas representam o contedo de uma conversa ou as mensagens Definio
Uma linguagem de programao uma linguagem com o objetivo de ser usada por uma pessoa para expressar um processo atravs do qual um computador pode resolver um problema

Componentes da comunicao em LP
Computador: a mquina que executa o processo descrito atravs do programa Pessoa: programador, serve como origem da comunicao Processo: atividade que est sendo descrita Problema: sistema atual ou ambiente que inspira a comunicao

Outra definio
Linguagem de programao um conjunto de termos e de regras que permitem a formulao de instrues a um computador Elementos importantes
Vocabulrio: conjunto de smbolos Gramtica: conjunto de regras para se utilizar o vocabulrio

Como descrever uma LP


Sintaxe
Conjunto de regras que determina quais construes so corretas para formao dos programas e quais no so; a preocupao a forma

Semntica
Descrio da maneira que um programa, sintaticamente correto, interpretado ou executado; a preocupao o significado

Caractersticas [desejveis] de LP
Simplicidade: clareza e conciso semntica (conceitos e estruturas) e sinttica (representar um conceito apenas de uma maneira) Suporte para abstrao de dados: representao de um dado ou tipo de dado Expressividade: facilidade na representao de tipos

Caractersticas [desejveis] de LP
Ortogonalidade: interao entre conceitos, ou seja, o grau com que diferentes conceitos podem ser combinados uns com os outros, de maneira consistente Suporte manuteno e portabilidade: facilidade em alterar e manter programas Eficincia: eficcia na execuo do programa; traduo do programa; criao, teste e uso do programa

Classes e Geraes
Definio
Um programa uma abstrao da realidade; abstrao o processo de identificar as qualidades ou propriedades relevantes ou no do fenmeno que est sendo modelado

De acordo com o conceito da abstrao, existem trs classes de linguagens de programao

Classes e Geraes
Linguagem de Mquina: baseada em cdigo binrio, especfico para cada tipo de (micro)processsador Linguagem de Baixo Nvel: uso inicial da abstrao: cdigos binrios so substitudos por mnemnicos. Um assembler interpreta o cdigo e converte para binrio; tambm caracterstico de cada dispositivo fsico

Classes e Geraes
Linguagem de Alto Nvel: mais prxima linguagem humana; no requer conhecimento da arquitetura da mquina e deve ser portvel (independente de mquina); o programa (cdigo-fonte) traduzido para uma linguagem de mquina para poder ser executado, o resultado o programa (objeto) quando usado um compilador ou interpretador

1 Gerao
Linguagens baseadas na estrutura dos computadores; incio da dcada de 1960; Estruturas de controle dependem de instrues como goto; Procedimentos recursivos so exceo (Basic); Passagem de parmetro tipicamente por referncia

1 Gerao
Tipos primitivos so nmeros de ponto flutuante e fixo, caracteres e valores lgicos; Organizadores de estruturas so vetores e registros; Estruturas de dados no podem ser aninhadas (Cobol uma exceo) No h gerenciamento dinmico de memria

2 Gerao
Primeira linguagem: Algol-60; Melhorias s caractersticas da 1 Gerao:
vetores dinmicos; tipos definidos pelo usurio; introduo das estruturas de bloco e de controle estruturado, eliminando o uso de goto; Procedimentos recursivos; Tipo da passagem de parmetro: valor e referncia; Distino entre variveis locais e globais.

3 Gerao
nfase na simplicidade e eficincia: smbolo principal: Pascal Tipos de dados definidos pelo usurio; conjuntos e enumeraes; Estruturas de dados aninhadas, organizadas hierarquicamente; Estrutura de controle simplificadas: uso de for e case.

4 Gerao
Suporte programao concorrente; Melhoria na abstrao de dados: encapsulamento; Polimorfismo; Mecanismo de tratamento de excees; Controle e preciso de tipos numricos; Exemplos: Ada, Modula-2, Clu.

5 Gerao
Paradigmas principais: funcional, lgico e orientado a objetos. Exemplos: LISP, Prolog, Smalltalk.

Fatores que influenciam na escolha de uma LP


Implementao: disponibilidade (considera a plataforma de uso do programa) e eficincia (considera velocidade de execuo dos programas) do interpretador/tradutor da LP; Conhecimento do programador Portabilidade: considera a plataforma de uso do programa;

Fatores que influenciam na escolha de uma LP


Sintaxe: algumas linguagens so criadas para aplicaes especficas, como Fortran para aplicaes matemticas; a sintaxe da linguagem est, muitas vezes, diretamente relacionada com sua aplicao principal; Semntica Ambiente de programao

Fatores que influenciam na escolha de uma LP


Modelo de processamento Reutilizao de software e abstrao Questes tticas
Modelagem Nvel Segurana Eficincia Compilao/interpretao Familiaridade do programador

You might also like