Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Referência base:
Capítulo I – Introdução
Linguagens de Programação.
Flávio Miguel Varejão
Editora Campus, 2004
http://www.inf.ufes.br/~fvarejao/livroLP.html
Introdução
Linguagens de Programação 2
Razões para Estudar LPs
Maior capacidade de desenvolver soluções
computacionais para problemas.
O conhecimento do conceito de tipos abstratos de
dados estimula a utilização desse método de
programação mesmo em LPs que não possuem
mecanismos específicos para a sua implementação.
Maior habilidade ao usar uma LP.
Conhecendo como as LPs são implementadas pode-se
entender porque algoritmos recursivos são menos
eficientes.
Introdução
Linguagens de Programação 3
Razões para Estudar LPs
Maior capacidade para escolher LPs apropriadas.
Saber que a linguagem C não realiza a verificação
dinâmica dos índices de acesso a posições de um vetor
pode ser decisivo para escolher essa linguagem em
aplicações em tempo real (online) que fazem o uso
frequente de acessos a vetores.
Maior habilidade para aprender novas LPs.
Os programadores que aprenderam os conceitos de
OO têm maior facilidade de aprender C++, Java e C#.
Introdução
Linguagens de Programação 4
Razões para Estudar LPs
Maior habilidade para projetar novas LPs
Ao construir as interfaces com o usuário de sistemas,
pode ser necessário projetar e implementar uma
linguagem de comandos para a comunicação entre
usuário e o sistema.
Introdução
Linguagens de Programação 5
Papel de LPs no PDS
O objetivo de LPs é tornar mais efetivo o
processo de desenvolvimento de software
(PDS)
PDS visa geração e manutenção de software
de modo produtivo e garantia de padrões de
qualidade
Introdução
Linguagens de Programação 6
Papel de LPs no PDS
Principais Propriedades Desejadas em um
Software
Confiabilidade
Manutenibilidade
Eficiência
Introdução
Linguagens de Programação 7
Papel de LPs no PDS
Etapas do PDS
Especificação de Requisitos
Projeto do Software
Implementação
Validação
Manutenção
Introdução
Linguagens de Programação 8
Propriedades Desejáveis em LPs
Legibilidade
Marcadores de Blocos
if (x>1)
if (x==2)
x=3;
else
x=4;
Desvios Incondicionais
goto
Duplicação de Significado de Vocábulos
this (em JAVA)
*p = (*p)*q; *p=(*p)*(*q); *p=*p**q;
Introdução
Linguagens de Programação 9
Propriedades Desejáveis em LPs
Efeitos Colaterais
int x = 1;
int retornaCinco() {
x = x + 3;
return 5;
}
void main() {
int y;
y = retornaCinco ();
y = y + x;
}
Introdução
Linguagens de Programação 10
Propriedades Desejáveis em LPs
Redigibilidade
É a característica que melhor diferencia as linguagens de
máquina (o programador se preocupa com detalhes de
implementação) e linguagens de programação (o programador
se concentra na descrição do algoritmo que resolve o
problema).
Tipos de Dados Limitados (FORTRAN) – requerem estruturas
complexas.
Ausência de Tratamento de Exceções
Conflito Ocasional com Legibilidade
void f(char *q, char *p) {
for (;*q=*p; q++,p++);
}
Introdução
Linguagens de Programação 11
Propriedades Desejáveis em LPs
Confiabilidade
Declaração de Tipos – verificação de tipos
boolean u = true;
int v = 0;
while (u && v < 9) {
v = u + 2;
if (v == 6)
u = false;
}
Tratamento de Exceções
try {
System.out.println(a[i]);
} catch (IndexOutofBoundsException) {
System.out.println(“Erro de Indexação”);
}
Introdução
Linguagens de Programação 12
Propriedades Desejáveis em LPs
Eficiência
Verificação Dinâmica de Tipos – menos eficientes.
Facilidade de Aprendizado
Excesso de Características é Prejudicial
c = c + 1; c += 1; c++; ++c;
Modificabilidade
const float pi = 3.14;
Introdução
Linguagens de Programação 13
Propriedades Desejáveis em LPs
Ortogonalidade
capacidade da LP permitir ao programador combinar
conceitos básicos sem que se produzam efeitos anômalos
nessa combinação. Uma LP é tão mais ortogonal quanto menor
for o número de exceções aos seus padrões regulares.
LPs ortogonais são interessantes porque o programador pode
prever, com segurança, o comportamento de uma
determinada combinação de conceitos.
A falta de ortogonalidade dificulta o aprendizado da LP e
pode estimular erros de programação.
int x, y = 2, z = 3; byte a, b = 2, c = 3;
x = y + z; a = b + c;
Pascal retorna qualquer tipo de dado menos registros e
vetores.
Introdução
Linguagens de Programação 14
Propriedades Desejáveis em LPs
Reusabilidade
void Trocar(int *x, int *y) {
int z = *x;
*x = *y;
*y = z;
}
void Trocar(int & x, int & y) {
int z = x;
x = y;
y = z;
}
function Trocar(int var x, int var y)
var z : integer;
begin
z := x;
x := y;
y := z;
end.
void Trocar(ref int x, ref int y) {
int z = x;
x = y;
y = z;
}
Introdução
Linguagens de Programação 15
Propriedades Desejáveis em LPs
Portabilidade
Rigor no Projeto
Pode Contrastar com Eficiência
Introdução
Linguagens de Programação 16
Especificação de LPs
Léxico (vocábulos) x Sintaxe (regras) x Semântica (significado)
a = b;
O léxico estabelece que a, =, b e ; fazem parte do vocabulário da LP.
O sintático indica que a sentença formada pelo identificador a, o símbolo =, o
identificador b e o símbolo ; designa um comando válido de atribuição.
A semântica indica que o comando deve ser executado de modo a substituir o
valor de a pelo valor atual de b.
Introdução
Linguagens de Programação 17
Especificação de LPs
Sintaxe (BNF – Backus-Naur Form)
expressão valorvaloroperadorexpressão
valor númerosinalnúmero
número semsinalsemsinal.semsinal
semsinal dígitodígitosemsinal
dígito 0123456789
sinal +
operador +*
Introdução
Linguagens de Programação 18
Especificação de LPs
Semântica
Enfoque Operacional
Necessidade de Padronização
ISO, IEEE, ANSI, NIST
Introdução
Linguagens de Programação 19
Implementação de LPs
Compilação Interpretação Pura Híbrido
Fonte Fonte Fonte LP LP LP
Execução
L.M.
L.M.
L.M.
Compilação
Compilação
Interpretação
Código
Intermediário
Interpretação
Execução
Execução
Dados
Dados
Dados
Introdução
Linguagens de Programação 20
Implementação de LPs
Compilação
Eficiência
Problemas
com Portabilidade e Depuração
Interpretação Pura
Flexibilidade, Portabilidade e Facilidade para Prototipação e
Depuração
Problemas com Eficiência e Maior Consumo de Memória
Raramente Usada
Híbrido
Une Vantagens dos Outros Métodos
JVM
Paradigma
É o conjunto de características que
servem para categorizar um grupo de
linguagens.
Introdução
Linguagens de Programação 21
Introdução
Linguagens de Programação 22
Paradigmas de LPs
Paradigmas
Imperativo Declarativo
Estruturado Orientado
a Objetos
Concorrente Funcional Lógico
Introdução
Linguagens de Programação 23
Paradigmas de LPs
Imperativo
Processo de Mudanças de Estados
Variável, Valor e Atribuição
Células de Memória
Estruturado
Refinamentos Sucessivos
Blocos Aninhados de Comandos
Desestímulo ao uso de desvio incondicional
Introdução
Linguagens de Programação 24
Paradigmas de LPs
Orientado a Objetos
Abstração de Dados
Concorrente
Processos Executam Simultaneamente e
Concorrem por Recursos
Introdução
Linguagens de Programação 25
Paradigmas de LPs
Declarativo
Especificações sobre a Tarefa a Ser Realizada
Abstrai-se de Como o Computador é Implementado
Funcional
Programa Composto por Funções
Lógico
Predicados
Dedução Automática
Introdução
Linguagens de Programação 26
Evolução de LPs
Dificuldade de Programação em Linguagens de
Máquina
Foco de Primeiras LPs era Eficiência de
Processamento e Consumo de Memória
Baixa Produtividade de Programação
Programação Estruturada
Tipos Abstratos de Dados
Orientação a Objetos
Introdução
Linguagens de Programação 27
Origem de LPs
FORTRAN (1957)
aplicações numéricas
LISP (1959)
programação funcional
ALGOL (1960)
programação estruturada
COBOL (1960)
aplicações comerciais
Introdução
Linguagens de Programação 28
Origem de LPs
BASIC (1964)
ensino para leigos
PASCAL (1971)
ensino de programação estruturada
simplicidade
C (1972)
implementação de UNIX
PROLOG (1972)
programação lógica
Introdução
Linguagens de Programação 29
Origem de LPs
SMALLTALK (1972)
programação orientada a objetos
ADA (1983)
programação concorrente
C++ (1985)
disseminação da programação orientada a objetos
JAVA (1995)
mais simples e confiável que C++
Internet