Professional Documents
Culture Documents
Programao
PLP-2017
Prof. Dr. Ruiter Braga Caldas
Viso Geral de Linguagens
e
Paradigmas de Programao
Objetivos:
Apresentao dos conceitos das linguagens de programao
(LP) modernas;
Sintaxe e Semntica das LP;
Diferentes paradigmas de programao: Funcional,
Procedural, Orientao por Objetos e Lgico;
Estudo comparativo das LP;
Elementos das LP modernas: sistemas de tipos, estruturas de
dados e de controle, ambiente de execuo; reflexo;
programao de alta-ordem funcional, lgica e OO; meta-
programao;
Aspectos de projeto de LP.
Avaliao:
A avaliao ser feita com base em 2 (duas) listas de
exerccios (L1 e L2) e um trabalho prtico (TP) realizados
ao longo do perodo, concluindo com uma prova final (PF).
As duas 2 listas so com atividades prticas.
A Mdia Parcial (MP) ser calculada da seguinte maneira:
MP = (L1 + 2 L2 + 3 TP) / 6
A Mdia Final (MF) ser calculada a partir da seguinte
frmula:
MF = (2 MP + PF) / 3
Avaliao:
Segundo resoluo No. 023/2017- CONSEPE, considera-se
aprovado os alunos que atenderem aos dois critrios a
seguir:
Tiverem frequncia igual ou maior a 75% nas atividades
contidas no plano (equivale a um nmero mximo de 14
horas-aula de faltas, para esta disciplina)
Mdia final igual ou superior a 5,00 (cinco).
Ao aluno que conseguir alcanar a MEE igual ou superior a
8.00, fica facultado realizar a prova final, sem prejuzo da
nota da MF, em caso de no realizao da PF.
Bibliografia:
Aspectos Preliminares
Conceitos de Linguagens de Programao Robert W. Sebesta
Tpicos do Captulo 1
Razes para estudar conceitos de linguagens de programao
Domnios de programao
Critrios de avaliao de linguagens
Influncias no projeto de linguagens
Categorias de linguagens
Trade-offs no projeto de linguagens
Mtodos de implementao
Ambientes de programao
Conceitos de Linguagens de Programao Robert W. Sebesta
Domnios de programao
Aplicaes cientficas
Aplicaes empresariais
Inteligncia artificial
Programao de sistemas
Software para a Web
Conceitos de Linguagens de Programao Robert W. Sebesta
Domnios de programao
Aplicaes cientficas
Os primeiros computadores que surgiram na dcada de 40 foram projetados e
utilizados para aplicaes cientificas.
Nesta categoria se enquadram todos os problemas que necessitam um grande
volume de processamento, com operaes geralmente feitas em ponto flutuante
e com poucas exigncias de entrada e sada.
Uma da preocupaes primarias neste tipo de aplicao a eficincia.
As aplicaes cientficas incentivaram a criao de algumas
linguagens de alto nvel, como por exemplo o Fortran:
program teste
real a, b, s
read *, a, b s=a+b
print *, a, ' + ' , b print *, ' = ' , s
end
Conceitos de Linguagens de Programao Robert W. Sebesta
Domnios de programao
Aplicaes empresariais
Domnios de programao
Exemplo Cobol
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NAME PIC A(30).
01 WS-ID PIC 9(5) VALUE '12345'.
PROCEDURE DIVISION.
A000-FIRST-PARA.
DISPLAY 'Hello World'.
MOVE 'TutorialsPoint' TO WS-NAME.
DISPLAY "My name is : " WS-NAME.
DISPLAY "My ID is : " WS-ID.
STOP RUN.
Conceitos de Linguagens de Programao Robert W. Sebesta
Domnios de programao
Inteligncia artificial
O desenvolvimento de aplicaes para inteligncia artificial teve inicio no
final da dcada de 50.
Essas aplicaes caracterizam-se pelo uso de computaes simbolicas em
vez de numricas (so manipulados nomes e no numeros);
A primeira linguagem desenvolvida para IA foi a funcional LISP (1959).
No incio dos anos 70 surge a programao logica: Prolog.
Conceitos de Linguagens de Programao Robert W. Sebesta
Domnios de programao
Inteligncia artificial
Domnios de programao
Programao de sistemas
O software bsico (sistema operacional) deve possuir eficincia na execuo
por propiciar suporte a execuo de outros aplicativos.
As linguagens de programao para este tipo de sistema devem oferecer
execuo rpida e ter recursos de baixo nvel que permitam ao software fazer
interface com os dispositivos externos.
O sistema operacional UNIX foi desenvolvido quase inteiramente em C
(tornando-o fcil de portar para diferentes mquinas).
Conceitos de Linguagens de Programao Robert W. Sebesta
Simplicidade geral
A simplicidade geral de uma linguagem de programao afeta
fortemente sua legibilidade;
Uma linguagem com um grande numero de componentes bsicos
mais difcil de ser manipulada do que uma com poucos desses
componentes.
Os programadores que precisam usar uma linguagem grande
tendem a aprender um subconjunto dela e ignorar seus outros
recursos.
Isso pode ser um problema quando o leitor do programa aprende
um conjunto diferente de recursos daquele que o autor aplicou em
seu programa.
Conceitos de Linguagens de Programao Robert W. Sebesta
Simplicidade geral
Uma segunda caracterstica que complica a legibilidade a
multiplicidade de recursos
(mais que uma maneira de realizar uma operao particular);
Exemplo em C:
count = count + 1 Mesmo significado
quando usadas em
count += 1 expresses separadas!
count++
++count
Conceitos de Linguagens de Programao Robert W. Sebesta
Simplicidade geral
Um terceiro problema a sobrecarga de operadores, na qual
um unico smbolo tem mais que um significado.
Apesar de ser um recurso util, pode ser prejudicial a
legibilidade se for permitido aos usurios criar suas proprias
sobrecargas.
Exemplo: sobrecarregar o + para adicionar inteiros, reais,
concatenar strings, somar vetores...
Conceitos de Linguagens de Programao Robert W. Sebesta
Simplicidade geral
A simplicidade de linguagens, no entanto pode ser levada ao
extremo, por exemplo a forma e o significado da maioria das
instrues em Assembly so modelos de simplicidade,
entretanto torna os programas em Assembly menos legveis.
Falta instrues de controle mais complexas, o que torna
necessrio o uso de mais comandos para expressar
problemas do que os necessrio em linguagens de alto nvel.
Conceitos de Linguagens de Programao Robert W. Sebesta
Ortogonalidade
A ortogonalidade diz respeito a possibilidade de combinar
entre si, sem restries, os componentes bsicos da
linguagem para construir estruturas de controle e dados.
Ortogonalidade
A linguagem C possui dois tipos de dados
estruturados, arrays e registros (struct), sendo que:
Instrues de controle:
A revoluo da programao estruturada da dcada de 70 foi,
em parte, uma reao a m legibilidade causada pelas limitadas
instrues de controle das linguagens das dcadas de 50 e 60.
Reconheceu-se que o uso indiscriminado de instrues goto
reduz criticamente a legibilidade de programas.
Em certas linguagens, entretanto, instrues goto que se
ramificam para cima, as vezes, so necessrias;
Exemplo: goto usado na construo de laos while em
FORTRAN.
Conceitos de Linguagens de Programao Robert W. Sebesta
Instrues de controle:
Restringir instrues goto das seguintes maneiras pode tornar os
programas mais legveis:
As instrues goto devem preceder seus alvos, exceto
quando usadas para formar laos;
Os seus alvos nunca devem estar to distantes;
O numero de usos deve ser limitado;
A partir do final da dcada de 60, as linguagens projetadas
passaram a ter instrues de controle suficientes e portanto a
necessidade da instruo goto foi quase eliminada.
Conceitos de Linguagens de Programao Robert W. Sebesta
int v; int v;
cin >> v; Scanner entrada;
entrada = new Scanner(System.in);
v = entrada.nextInt();
Conceitos de Linguagens de Programao Robert W. Sebesta
try {
try {
... }
... }
catch(Exception e)
catch (Exception &exception)
{
{
... }
... }
Conceitos de Linguagens de Programao Robert W. Sebesta
Competncia:
Experincia do programador;
Competncia do grupo envolvido;
Portabilidade:
Necessidade de executar em vrias mquinas diferentes;
Conceitos de Linguagens de Programao Robert W. Sebesta
Semntica:
Algumas linguagens so mais adequadas para
processamento concorrente, outras so mais otimizadas para
recursividade;
Conceitos de Linguagens de Programao Robert W. Sebesta
Ambiente de programao:
Ferramentas para desenvolvimento de software diminuem o
esforo de programao;
Existncia de bibliotecas;
Modelo de computao
O Paradigma Logico pode ser mais adequado para algumas
aplicaes de inteligncia artificial, enquanto que o
Paradigma Orientado a Objeto mais adequado para
aplicaes comerciais;
Conceitos de Linguagens de Programao Robert W. Sebesta
Influncias na arquitetura de
computadores
Principal arquitetura de computadores: von Neumann
Linguagens imperativas, mais populares, por causa dos
computadores von Neumann
Dados e programas armazenados na memoria
A memoria separada da CPU
Instrues e dados so canalizadas a partir da memoria para CPU
Base para linguagens imperativas
Variveis modelam as clulas de memoria
Sentenas de atribuio so baseadas na operao de envio de dados
e instrues
Iterao eficiente
Conceitos de Linguagens de Programao Robert W. Sebesta
Categorias de linguagens
Imperativa
Caractersticas centrais so variveis, sentenas de atribuio e de iterao
Inclui linguagens que suportam programao orientada a objeto
Inclui linguagens de scripting
Inclui as linguagens visuais
Exemplos: C, Java, Perl, JavaScript, Visual BASIC .NET, C++
Funcional
Principais meios de fazer os clculos pela aplicao de funes para determinados
parmetros
Exemplos: LISP, Scheme
Logica
Baseada em regras (regras so especificadas sem uma ordem em particular)
Example: Prolog
De marcao/programao hbrida
Linguagens de marcao estendida para suportar alguma programao
Exemplos: JSTL, XSLT
Conceitos de Linguagens de Programao Robert W. Sebesta
Mtodos de implementao
Compilao
Programas so traduzidos para linguagem de mquina
Interpretao pura
Programas so interpretados por outro programa chamado
interpretador
Sistemas de implementao hbridos
Um meio termo entre os compiladores e os interpretadores puros
Conceitos de Linguagens de Programao Robert W. Sebesta
Compilao
Traduz programas (linguagem de fonte) em codigo de mquina
(linguagem de mquina)
Traduo lenta, execuo rpida
Processo de compilao tem vrias fases:
anlise lxica: agrupa os caracteres do programa fonte em
unidades lxicas
anlise sinttica: transforma unidades lxicas em rvores de anlise
sinttica (parse trees), que representam a estrutura sinttica do
programa
anlise semntica: gera codigo intermedirio
gerao de codigo: codigo de mquina gerado
Conceitos de Linguagens de Programao Robert W. Sebesta
O processo de compilao
Conceitos de Linguagens de Programao Robert W. Sebesta
Interpretao pura
Sem traduo
Fcil implementao de programas (mensagens de erro em tempo
de execuo podem referenciar unidades de codigo fonte)
Execuo mais lenta (tempo de execuo de 10 a 100 vezes mais
lento do que nos sistemas compilados)
Geralmente requer mais espao
Raramente usada em linguagens de alto nvel
Volta significativa com algumas linguagens de scripting para a
Web (como JavaScript e PHP)
Conceitos de Linguagens de Programao Robert W. Sebesta
Pr-processadores
As instrues de pr-processador so comumente usadas para
especificar que o codigo de outro arquivo deve ser includo
Um pr-processador um programa que processa um programa
imediatamente antes de o programa ser compilado para expandir
macros embutidos
Um exemplo conhecido: pr-processador de C
expande #include, #define e macros similares
Conceitos de Linguagens de Programao Robert W. Sebesta
Ambientes de programao
Coleo de ferramentas usadas no desenvolvimento de software
UNIX
Um ambiente de programao mais antigo
Agora bastante usado por meio de uma interface grfica com o
usurio (GUI) que roda sobre o UNIX
Microsoft Visual Studio .NET
Grande e complexo
Usado para desenvolver software em qualquer uma das cinco
linguagens .NET
NetBeans
Usado primariamente para o desenvolvimento de aplicaes Web
usando Java, mas tambm oferece suporte a JavaScript, Ruby e
PHP
Conceitos de Linguagens de Programao Robert W. Sebesta
Resumo
O estudo de linguagens de programao valioso por
diversas razes:
Aumenta nossa capacidade de usar diferentes construes
ao escrever programas
Permite que escolhamos linguagens para os projetos de
forma mais inteligente
Torna mais fcil o aprendizado de novas linguagens
Critrios mais importantes para a avaliao de linguagens:
Legibilidade, facilidade de escrita, confiabilidade e custo
geral
Conceitos de Linguagens de Programao Robert W. Sebesta
Resumo