aspectos preliminares - malbarbo€¦ · aspectos preliminares marco a l barbosa malbarbo.pro.br...
TRANSCRIPT
![Page 1: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/1.jpg)
Aspectos preliminares
Marco A L Barbosamalbarbo.pro.br
Departamento de InformáticaUniversidade Estadual de Maringá
cbaEste trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional.
http://github.com/malbarbo/na-lp-copl
![Page 2: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/2.jpg)
Conteúdo
Razões para estudar conceitos de linguagens de programação
Domínios de programação
Classes de linguagens
Métodos de implementação
Critérios para avaliação de linguagens
Influências no projeto de linguagens
2/47
![Page 3: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/3.jpg)
Razões para estudar conceitos de linguagensde programação
![Page 4: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/4.jpg)
Razões para estudar conceitos de linguagens de programação
• Aumentar a capacidade de expressar ideias
• Melhorar as condições de escolha da linguagem apropriadapara cada problema
• Aumentar a capacidade de aprender novas linguagens
• Melhorar o uso das linguagens já conhecidas
• Entender a importância da implementação
• Avanço da área de computação
3/47
![Page 5: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/5.jpg)
Domínios de programação
![Page 6: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/6.jpg)
Domínios de programação
Linguagens de programação com objetivos diferentes
• Desde controle de usinas nucleares até jogos em dispositivosmóveis
4/47
![Page 7: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/7.jpg)
Domínios de programação
Aplicações científicas
• Estruturas simples (arranjos e matrizes)
• Muitas operações com pontos flutuantes
• Fortran, C/C++
• Recentemente
• Hardware especializado (GPU, TPU)
• Python (numpy), Octave (Mathlab), Julia
5/47
![Page 8: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/8.jpg)
Domínios de programação
Aplicações comerciais
• Inicialmente
• Integração com banco de dados
• Produção de relatórios
• Armazenamento e manipulação de números decimais e texto
• Cobol
• Atualmente
• Muitos requisitos
• Muitas linguagens
6/47
![Page 9: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/9.jpg)
Domínios de programação
Inteligência artificial
• Manipulação de símbolos (estruturas encadeadas ao invés dearranjos)
• Criação e execução de código
• Lisp, Prolog
• Atualmente
• Métodos numéricos
• Python, C/C++
7/47
![Page 10: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/10.jpg)
Domínios de programação
Software de sistema
• Software básico e ferramentas de suporte a programação
• Sistemas operacionais
• Construções para interfaceamento com dispostos externos
• Eficiência devido ao uso contínuo
• Compiladores e interpretadores
• E os softwares que são executados continuamente?
• Navegadores, Sistemas web
• C/C++, D, Go, Rust
8/47
![Page 11: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/11.jpg)
Domínios de programação
Sistemas Web
• Apresentação de conteúdo dinâmico
• Código junto com a tecnologia de apresentação
• Inicialmente
• PHP, JavaScript
• Segurança
• Escalabilidade
• Desempenho
• Integração com sistemas existentes
9/47
![Page 12: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/12.jpg)
Classes de linguagens
![Page 13: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/13.jpg)
Classes de linguagens
É comum a seguinte classificação hierárquica:
• Imperativas
• Procedurais (Fortran, Pascal, C, …)
• Orientada a Objetos (Smalltalk, Java, C++, …)
• Declarativas
• Funcionais (Lisp/Scheme, Haskell, Ocaml, …)
• Lógicas (Prolog)
10/47
![Page 14: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/14.jpg)
Classes de linguagens
A maioria das linguagens é multiparadigma, por isso, ao invés declassificação hierárquica é mais útil identificar as características decada paradigma presente em uma linguagem.
11/47
![Page 15: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/15.jpg)
Classes de linguagens
A seguir, mostramos como o problema de encontrar o valormáximo em uma lista não vazia de números inteiros pode serresolvido utilizando os paradigmas imperativo, funcional e lógico.
12/47
![Page 16: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/16.jpg)
Imperativo
• Inicialize a variável max com o primeiro elemento da lista
• Para cada elemento x da lista a partir do segundo elemento,faça:
• Se x é maior do max, então atribua o valor x para max
• A variável max contém o maior valor da lista
13/47
![Page 17: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/17.jpg)
Imperativo
Código em C
int maximo(int lst[], size_t n){
assert(n > 0);int max = lst[0];for (size_t i = 1; i < n; i++) {
if (lst[i] > max) {max = lst[i];
}}return max;
}
14/47
![Page 18: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/18.jpg)
Funcional
• O valor maximo(lst) é definido como:
• O primeiro elemento de lst se lst só tem um elemento
• O primeiro elemento de lst se ele é maior do que o maximodo restante de lst
• maximo do restante de lst se ele é maior ou igual ao primeiroelemento de lst
• Para computar o valor de maximo de uma dada lista, expandae simplifique esta definição até que ela termine
15/47
![Page 19: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/19.jpg)
Funcional
Código em Racket
(define (maximo lst)(cond
[(empty? (rest lst))(first lst)]
[(> (first lst) (maximo (rest lst)))(first lst)]
[else (maximo (rest lst))]))
16/47
![Page 20: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/20.jpg)
Lógico
• A proposição maximo(lst, x) é verdadeira se:
• x é o único elemento de lst; ou
• x é primeiro elemento de lst e existe um valor m tal que m é omáximo do restante de lst e x é maior do que m; ou
• x é o máximo do restante de lst e existe um valor p que é oprimeiro elemento de lst e x é maior ou igual a p
• Para computar o valor máximo de uma dada lista, busque porum valor x que permita provar que a proposiçãomaximo(lst, x) é verdadeira.
17/47
![Page 21: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/21.jpg)
Lógico
Código em Prolog
maximo([X], X).maximo([X | Xs], X) :- maximo(Xs, M), X > M.maximo([P | Xs], X) :- maximo(Xs, X), X >= P.
18/47
![Page 22: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/22.jpg)
Classes de linguagens
Nível de abstração
• Baixo nível
• Poucas abstrações sobre os detalhes do computador
• Alto nível
• Abstrações sobre os detalhes do computador
19/47
![Page 23: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/23.jpg)
Classes de linguagens
Linguagens de scripting
• “Automatizar” execução de tarefas que poderiam serexecutadas manualmente
• Também usado para referenciar linguagens dinâmicas depropósito geral
20/47
![Page 24: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/24.jpg)
Métodos de implementação
![Page 25: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/25.jpg)
Métodos de implementação
• Compilação
• Interpretação
• Híbrido
21/47
![Page 26: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/26.jpg)
Interface emcamadas decomputadoresvirtuais,fornecida porum sistema decomputaçãotípico Interpretador
de comandos
do sistema
operacional
Interpretador
Scheme
Compilador C
Computador
virtual C
Computador virtual
Ada
Compilador
Ada
. . .
. . .
Montador
Computador
virtual de
linguagem
de montagem
Máquina
Virtual Java
Compilador
Java
.NET
Common
Language
Runtime
Compilador
VB.NET
CompiladorC#
Computador
virtual
VB.NET
Computador
virtual C#
Máquina
pura
Interpretador de
macroinstruções
Sistema operacional
Computador
virtual Java
Computador
virtual Scheme
![Page 27: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/27.jpg)
CompilaçãoPrograma
fonte
Analisadorléxico
Analisadorsintático
Gerador de códigointermediário e
analisadorsemântico
Otimização(opcional)
Tabela desímbolos
Geradorde código
Computador
Resultados
Dados de entradaLinguagemde máquina
Códigointermediário
Árvores de análise sintática
Unidades léxicas
![Page 28: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/28.jpg)
InterpretaçãoPrograma
fonte
Interpretador
Resultado
Dados de entrada
![Page 29: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/29.jpg)
HíbridoPrograma
fonte
Interpretador
Resultado
Dados de
entrada
Analisador
léxico
Analisador
sintático
Gerador de
código
intermediário
Árvores de análise sintática
Unidades léxicas
Códigointermediário
![Page 30: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/30.jpg)
Critérios para avaliação de linguagens
![Page 31: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/31.jpg)
Critérios para avaliação de linguagens
• Como os recursos das linguagens influenciam odesenvolvimento de software?
• Alguns critérios podem ser controversos
• Alguns critérios são objetivos, enquanto outros não
• Algumas pessoas valorizam mais alguns critérios do que outros
• O Sebesta valoriza muito as características que permitem queerros possam ser detectados em tempo de compilação, masestas características podem tornam os programas mais difíceisde serem mantidos do que o necessário
26/47
![Page 32: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/32.jpg)
Critérios para avaliação de linguagens
• Legibilidade (facilidade de leitura)
• Deve ser considerada em relação ao domínio do problema
• Facilidade de escrita
• Deve ser considerada em relação ao domínio do problema
• Confiabilidade
• Custo
27/47
![Page 33: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/33.jpg)
Critérios para avaliação de linguagens
Característica Legibilidade Facilidade de escrita Confiabilidade
Simplicidade • • •Ortogonalidade • • •Tipos de dados • • •Projeto de sintaxe • • •Suporte para abstração • •Expressividade • •Verificação de tipos •Tratamento de exceções •Apelidos restritos •
28/47
![Page 34: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/34.jpg)
Legibilidade
Simplicidade
• Um conjunto bom de características e construções
• Poucas formas de expressar cada operação
• Sobrecarga de operadores?
• Muito simples não é bom (assembly)
29/47
![Page 35: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/35.jpg)
Legibilidade
Ortogonalidade
• Poucas características podem ser combinadas de váriasmaneiras
• Uma característica deve ser independente do contexto que éusada (exceções a regra são ruins)
• Muito ortogonalidade não é bom (Algol68)
• Linguagens funcionais oferecem uma boa combinação desimplicidade e ortogonalidade
30/47
![Page 36: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/36.jpg)
Exemplo de falta de ortogonalidade em C
typedef struct par {int primeiro;int segundo;
} par;
void f(par x) {x.primeiro = 10;
}
void test_f() {par x = {1, 2};// passagem de parâmetro// por valorf(x);assert(x.primeiro == 1);
}
void g(int x[2]) {x[0] = 10;
}
void test_g() {int x[2] = {1, 2};// vetores não podem ser passados// como parâmetro por valor!g(x);assert(x[0] == 10);
}
31/47
![Page 37: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/37.jpg)
Legibilidade
Tipos de dados
• Tipos pré-definidos adequados
32/47
![Page 38: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/38.jpg)
Legibilidade
Sintaxe
• Flexibilidade para nomear identificadores
• Forma de criar sentenças compostas
• A forma deve ter relação com o significado
33/47
![Page 39: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/39.jpg)
Facilidade de escrita
Simplicidade e ortogonalidade
• Poucas construções e um conjunto consistente de formas decombinação
34/47
![Page 40: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/40.jpg)
Facilidade de escrita
Suporte para abstração
• Definir e usar estruturas e operações de maneira que osdetalhes possam ser ignorados
• Suporte a subprogramas
• Suporte a tipos abstratos de dados
35/47
![Page 41: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/41.jpg)
Facilidade de escrita
Expressividade
• Maneira conveniente de expressar a computação
36/47
![Page 42: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/42.jpg)
Facilidade de escrita
Algumas linguagens tem a sintaxe e/ou a semântica tão densas ebizarras que são chamadas de “Linguagens somente de escrita”!
37/47
![Page 43: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/43.jpg)
Confiabilidade
Um programa é dito confiável quando está de acordo com suasespecificações em todas as condições
• Verificação de tipos
• Tratamento de exceções
• Apelidos (um ou mais nomes para acessar a mesma célula dememória)
• Facilidade de leitura e escrita
38/47
![Page 44: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/44.jpg)
Confiabilidade
Os testes automatizados são extremamente importantes paraaumentar a confiabilidade/manutenibilidade dos programas
• Especificação executável
• Frameworks de testes
39/47
![Page 45: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/45.jpg)
Uso de apelidos em C++, Java e Rust
C++
vector<int> v = {10, 20, 30};int soma = 0;for (int &x : v) {
soma += x;if (x == 20) {
v.push_back(1);}
}assert(soma == 61);
Pode ou não falhar… x podereferenciar memória desalocada
Java
ArrayList<Integer> lista =new ArrayList<>(
asList(10, 20, 30));int soma = 0;for (Integer x : lista) {
soma += x;if (x == 20) {
lista.add(1);}
}assert soma == 61;
Falha na execução: lista.add gera oerrojava.util.ConcurrentModificationException
Rust
let mut v = vec![10, 20, 30];let mut soma = 0;for &x in &v {
soma += x;if x == 20 {
v.push(1);}
}assert_eq!(soma, 61);
Falha na compilação: cannot borrowv as mutable because it is alsoborrowed as immutable
40/47
![Page 46: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/46.jpg)
Custo
Os fatores que mais afetam os custos são
• Desenvolvimento
• Manutenção
• Confiabilidade
41/47
![Page 47: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/47.jpg)
Custo
• Treinar programadores
• Escrever programas
• Aspectos importantes
• Ambiente de desenvolvimento (IDE)
• Gerenciamento de pacotes
42/47
![Page 48: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/48.jpg)
Custo
• Compilar programas
• Executar programas
• Aspectos importantes
• Compiladores/Interpretadores (software livre)
• Linguagens com execução eficiente
43/47
![Page 49: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/49.jpg)
Custo
• Confiabilidade
• Manutenção
44/47
![Page 50: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/50.jpg)
Outros critérios para avaliação de linguagens
• Portabilidade
• Padronização
Diferentes visões
• Programador
• Projetista da linguagem
• Implementador da linguagem
45/47
![Page 51: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/51.jpg)
Influências no projeto de linguagens
![Page 52: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/52.jpg)
Influências no projeto de linguagens
Arquitetura do Computador
• Arquitetura de von Neumann
• Arquiteturas multicore
• Outras?
Metodologias de Programação
• Orientada a processos
• Orientada a dados
• Orientada a objetos
46/47
![Page 53: Aspectos preliminares - malbarbo€¦ · Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá Este trabalho está](https://reader034.vdocuments.pub/reader034/viewer/2022052518/5f08cff27e708231d423d724/html5/thumbnails/53.jpg)
Referências
• Robert Sebesta, Concepts of programming languages, 9ªedição. Capítulo 1.
47/47