Características
das
Linguagens de
Programação
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 1
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...
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 2
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
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 3
Linguagens de
Programação (LPs)
• Input/Output
• Programação em Rede
(Networking Programming)
• Acesso a Banco de Dados
• Outras características/features
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 4
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
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 5
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.).
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 6
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.

2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 7
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).
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 8
Exemplo: ALGOL60
Cálculo do produto interno de dois
vetores a[] e b[]
c = 0;
for i := 1 step 1 until n do
c := c + a[i] x b[i];
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 9
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).
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 10
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))
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 11
Outros Paradigmas

Orientado a Objetos

Declarativo

Orientado a Lógica

Orientado a Eventos

Data Flow

Etc.
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 12
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).
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 13
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.
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 14
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.
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 15
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.
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 16
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).

2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 17
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) .
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 18
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.
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 19
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
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 20
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
i
i
i
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 21
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.
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 22
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.
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 23
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
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 24
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
2011-01
Oscar Luiz Monteiro de Farias, D.Sc. 25
Download

trabalho_sobre_lps