25
Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Embed Size (px)

Citation preview

Page 1: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 12011-01

Característicasdas

Linguagens de Programação

Page 2: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 22011-01

Exemplos de Linguagens de Programação (LPs)

• C++ (C), C#, Visual C

• Algol, Pascal, Delphi, Modula II,

• HPFortran (www.mhpcc.edu)

• Ada

• Smalltalk, Simula, Java, Java ME

• Scheme, Lisp, Haskell, Erlang

• Prolog

• Perl, PHP, Phyton, Ruby, Groovy, etc...

Page 3: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 32011-01

Linguagens de Programação (LPs)...

• Evolução das LPs• Paradigma de programação• Sintaxe e Semântica• Variáveis, Expressões e Comandos• Tipos de dados• Escopo e Extent• Procedures • Abstração de Dados • Tratamento de Exceções (Exception

Handling)• Concorrência

Page 4: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 42011-01

Linguagens de Programação (LPs)

• Input/Output

• Programação em Rede (Networking Programming)

• Acesso a Banco de Dados

• Outras características/features

Page 5: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 52011-01

Ambiente de evolução da LP

Situar a LP em questão no seu contexto histórico

Linguagens de que sofreu

influência

Suporte institucional

Audiência/faixas de uso

intencionadas

Page 6: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 62011-01

Paradigma de Programação

É um modelo (ou estilo) de

programação. Existem diferentes paradigmas de

programação. Os paradigmas diferem segundo

os conceitos ou abstrações usados para representar os elementos de um programa (objetos, funções, variáveis, restrições, etc.) e as etapas que compõem uma computação (atribuição, avaliação, fluxo de dados, message passing, etc.).

Page 7: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 72011-01

Paradigma Imperativo

Fundamenta-se em comandos que atualizam o estado de variáveis. (em latim imperare= comandar).

• A linguagem de programação provê comandos, tais como os comandos de atribuição, que explicitamente alteram o estado da memória do computador.

• Este paradigma está intimamente associado à arquitetura de von Neumann.

Muitos acham o paradigma imperativo o meio mais fácil de se expressar.

Adicionado-se subprogramas ou procedures à lp tem-se o paradigma procedural.

Page 8: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 82011-01

Paradigma Funcional

• A computação é expressa como a avaliação de funções matemáticas.

Evita alterações de estado e dados mutáveis. Tem suas raízes no lambda calculus. Lambda Calculus: sistema formal

desenvolvido por Alonso Church (1930's), para investigar a definição de funções, aplicação de funções e recursividade.

O paradigma funcional trata valores como entidades singulares. Valores nunca são modificados, mas sim dão origem a novos valores.

A computação nas linguagens funcionais é realizada através da aplicação de funções a valores. Ex.: (+ 6 8).

Page 9: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 92011-01

Exemplo: ALGOL60

Cálculo do produto interno de dois

vetores a[] e b[]

c = 0;

for i := 1 step 1 until n doc := c + a[i] x b[i];

Page 10: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 102011-01

Observações

Primeiramente devemos mentalmente executar o programa antes de compreendê-lo.

A maior parte do programa refere-se a comandos necessários ao controle da ordem na qual o valor é computado, embora qualquer ordem de avaliação da soma seja aceitável.

Requer que o tamanho exato dos argumentos seja passado como o valor de n.

Só funciona para arrays de nome a[] eb[]. (ou deve-se acrescentar os conceitos de passagem de parâmetros/procedures).

Page 11: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 112011-01

Exemplo em pf

Variante de lisp com as operações:

- NULL, tal que NULL (lista vazia) = true

- FIRST (x1, x2, …, xn) = x1

- REST (x1, x2, …, xn) = (x2, …, xn)

- assumindo a existência de expressões condicionais recursivas

function INNERP(X, Y)

if NULL(X) then 0

else FIRST(X)*FIRST(Y)+

INNERP(REST(X), REST(Y))

Page 12: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 122011-01

Outros Paradigmas

Orientado a Objetos

Declarativo

Orientado a Lógica

Orientado a Eventos

Data Flow

Etc.

Page 13: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 132011-01

Sintaxe & Semântica

A sintaxe de uma lp está relacionada à forma assumida pelos seus diversos comandos.

Ex.: diversas lps possuem comandos iterativos (loop) que variam em sua forma, mas são, de certo modo, equivalentes.

Em uma lp seqüências de palavras podem ser combinadas em sentenças, que formam os programas.

A sintaxe de uma linguagem é o conjunto de regras que determinam se uma sentença é bem formada (well-formed) ou não.

A notação BNF (Backus-Naur form) é utilizada para definir a sintaxe.

Alternativa para definir sintaxe: Context-Free Grammars (Noam Chomsky).

Page 14: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 142011-01

Semântica

Está relacionada com o significado dos comandos.

Existem diversos frameworks para se descrever a semântica de uma lp.

Classificam-se em: operacional, denotacional e axiomático.

Page 15: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 152011-01

Semântica: frameworks

Operational: a semântica é especificada como uma máquina abstrata ou sistema de transição, cuja computação representa uma possível execução de um programa.

Denotational: existem funções definidas indutivamente mapeando cada programa em uma entidade abstrata representando o seu comportamentoobservável e cada parte do programa a uma entidade abstrata representando sua contribuição para aquele comportamento.

Axiomático: compreende regras para deduzir assertivas sobre a correção ou equivalência do programa e suas partes.

Os projetistas raramente usam descrições formais da semântica (frameworks) durante o processo de criação de uma linguagem.

Page 16: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 162011-01

Tipos de Dados

Um tipo de dado (data type) representa um conjunto de elementos (objetos) que possuem características pré-definidas, bem como um conjunto das operações que podem ser aplicadas sobre estes elementos.

Page 17: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 172011-01

Abstração

Uma abstração surge do reconhecimento das semelhanças entre certos objetos, situações ou processos no mundo real, e da decisão de se concentrar nestas semelhanças e ignorar, naquele momento, as diferenças.

Ex.: árvores, rios, cavalos, carros, etc …

Uma abstração denota as características essenciais de um objeto, que o distingüe de todos os outros tipos de objetos e, assim, fornece fronteiras conceituais bem definidas, relativas à perspectiva do observador (Booch).

Page 18: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 182011-01

Abstração de Dados

Trata-se de um mecanismo que encapsula a representação e as operações relativas a um tipo de dados (data type) .

Page 19: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 192011-01

Tipos de Dados Abstratos

Um tipo de dados abstrato (abstract data type) é um tipo de dados com as suas respectivas operações, mas cuja representação é oculta ao usuário.

Page 20: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 202011-01

Escopo e Extent

Escopo refere-se ao modo pelo qual entidades nomeadas (eg. variáveis, labels, tipos e procedures) são controladas relativamente à sua capacidade de ter um efeito em um programa.

Escopo representa um contexto ao qual valores e expressões estão associadas

Page 21: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 212011-01

Static scoping [1]

Free-variable - trata-se de uma variável que não é declarada no bloco begin .. end em que é usada.

Escopo em ALGOL60

i

i

ii

i

Page 22: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 222011-01

Static scoping [2]

O escopo mais interno contendo o comando no qual a variável é utilizada é pesquisado para ver se a variável foi aí declarada. Se tal não aconteceu a busca continua no escopo que engloba o escopo anterior e assim sucessivamente, até que o escopo mais externo seja alcançado. Se a variável não foi aí declarada, ocorre um erro.

Page 23: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 232011-01

Dynamic scoping

Em tempo de execução (run-time) verifica-se aquelas procedures e blocos que ainda não terminaram, tentando-se encontrar a primeira ocorrência do nome em uma declaração. As procedures e blocos são examinados na ordem reversa de sua invocação. Se o identificador não é encontrado ocorre um erro. Em caso contrário, a primeira ocorrência do identificador faz com que os atributos sejam associados ao nome.

Page 24: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 242011-01

Exemplo

begin boolean b := true;

procedure P; print(b) end;

begin boolean b := false;

P

end

end

Qual é o valor que é impresso?

static scoping: true

dynamic scoping: false

Page 25: Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc. 252011-01

Referências

Internet → sites confiáveis (organizações, universidades, empresas, institutos de pesquisa, especialistas de renome...)

Utilizar o padrão UERJ para dissertações/teses

Sempre que incluir em sua monografia algo que se encontra em outro trabalho deve-se obrigatoriamente citar a fonte