A maior rede de estudos do Brasil

Grátis
25 pág.
Aula 05 - Noções de Software Básico

Pré-visualização | Página 1 de 1

Prof. Rodrigo Hübner
rodrigohubner@utfpr.edu.br
IC31A – Introdução à Ciência da Computação
Universidade Tecnológica Federal do Paraná – UTFPR
Bacharelado em Ciência da Computação
Aula 05
Noções de Software Básico e Construção 
de Linguagens de Programação
 2 
• São também chamados de Toolkits ou ferramentas
• São programas que auxiliam o usuário na construção de 
aplicações. 
• Alguns bastantes utilizados são:
• Montador
• Tradutores
• Compiladores
• Linkers
• Depuradores
Ferramentas e utilitários
 3 
Assembler Linguagem de Máquina Memória
: : :
LD A,(10H) F210H 10
F2
E300
E301ADD A,B E4H
E4E302JMP (E090H) A2H
E090H E303
E304
A2E305
90
E0
:
: :
Montador
 4 
Assembler Linguagem de Máquina Memória
: : :
LD A,(10H) F210H 10
F2
E300
E301ADD A,B E4H
E4E302JMP (E090H) A2H
E090H E303
E304
A2E305
90
E0
:
: :
Montador
 5 
Assembler Linguagem de Máquina Memória
: : :
LD A,(10H) F210H 10
F2
E300
E301ADD A,B E4H
E4E302JMP (E090H) A2H
E090H E303
E304
A2E305
90
E0
:
: :
Montador
 6 
Programa
na linguagem
A
Programa
na linguagem
B
Tradutor
Compilador/Tradutor
 7 
Programa
Fonte
Léxica
Sintática
Semântica
Cód. Inter
Otimização
Cód. Objeto
Tabelas do 
Compilador
Tratamento de 
Erros
Binário
Organização de Um Compilador
 8 
Faz a ligação de um ou mais objetos em um executável.
Linker
 9 
Linker
 10 
Linker
 11 
• Facilidade de leitura (legibilidade)
• Facilidade de escrita
• Confiabilidade
• Custo
Critérios para avaliar linguagens
 12 
• Simplicidade
• Várias formas de fazer a mesma coisa
–incrementar uma variável em C/Java
• Muitas construções básicas
–Cada programador utiliza um subconjunto
• Sobrecarga de operador
• Muito simples não é bom
–Assembly
Facilidade de leitura
 13 
• Ortogonalidade
• Poucas características podem ser combinadas de 
todas as maneiras
• Uma característica deve ser independente do contexto 
que é usada
–Mainframe IBM vs VAX
• Exceções são ruins
–Exceções gramaticais em português
• Muito ortogonalidade não é bom (Algol68)
• Linguagens funcionais oferecem uma boa combinação 
de simplicidade e ortogonalidade
Facilidade de leitura
 14 
• Estruturas de controle
• Problema do goto
• Não é um critério tão importante quanto era 
no passado
Facilidade de leitura
 15 
• Tipos de dados e estruturas
• Falta de tipo booleano
–timeOut = 1
–timeOut = true
• Registro é melhor que um conjunto de 
arrays
Facilidade de leitura
 16 
• Sintaxe
• Identificadores
• Palavras reservadas
–Início e fim de bloco
• Forma e significado
–static em C
»Se usada na definição de variável dentro de uma função, significa que a 
variável é criada no momento da compilação.
»Se usada na definição de uma variável fora de todas as funções, significa 
que esta é visível somente no arquivo.
Facilidade de leitura
 17 
• As mesmas características que afetam a leitura
• Simplicidade e ortogonalidade
–Muitas construções, você usa poucas 
construções combinadas
• Suporte a abstração
• Definir e usar estruturas ou operações de 
maneira que os detalhes possam ser ignorados
• Processos e dados
• Expressividade
Facilidade de leitura
 18 
• Verificação de Tipos
● Tempo de execução
● Tempo de compilação
• Manipulação de Exceções
• Apelidos
• Legibilidade e capacidade de escrita
Confiabilidade
 19 
• Treinamento dos programadores
• Escrever programas
● Ambiente de programação (custo reduzido)
• Compilar programas
• Executar programas
● Custo/benefício de otimização
• Implementação da linguagem
• Má confiabilidade
• Manutenção dos programas
● Legibilidade
• etc
Custo
 20 
Influências no Projeto da Linguagem
•Arquitetura do Computador
● Arquitetura de von Neumann
– Arquiteturas multicore
● Outras?
•Metodologias de Programação
 21 
Categorias de Linguagem
• Imperativas
• o programador especifica como fazer, ações, comandos que mudam o estado 
do programa.
• Algol68, Fortran, Cobol, Ruby, Python, Go!, Java, Pascal, 
B/C/C++/C--/Tiny C/D, ... 
• Funcionais ou Aplicativas
• computação como uma avaliação de funções matemáticas e que evita 
estados ou dados mutáveis. Funções que podem ter ou não parâmetros e 
um simples valor de retorno.
• LISP, Haskell, ML, Scheme, Erlang, Ocaml, F#, Miranda, ...
• Lógicas ou Declarativas
• Declarações a partir de uma base de conhecimento e um conjunto de 
regras.
• Planner, QA-4, Popler, Conniver, QLISP, Prolog, Mercury, 
Oz, Frill, ...
 22 
Métodos de Implementação
• Compilação • Interpretação
Programa-fonte
Interpretador
Dados de entrada
Dados de entrada
 23 
Métodos de Implementação
• Sistemas de Implementação Híbridos
Analisador
léxico
Analisador
sintático
Gerador de
código
intermediário
Interpretador
ResultadosPrograma
fonte
Unidades léxicas
Árvores de análise (parse trees)
Dados de
entrada
Código intermediário
 24 
Ambientes de Programação
• Unix
● CDE (Common Desktop Environment)
● Gnome, KDE (GNU Linux)
– Glade + linguagens
– QT Designer + linguagens
• Eclipse / Netbeans
• Borland C++ (Existe ainda?)
• Microsoft Visual C++
• Visual BASIC
• Delphi / Lazarus
• Implementações Smalltalk
 25 
Mais detalhes
SEBESTA, Robert W. Conceitos de linguagens de programação. 
5. ed. Porto Alegre: Bookman, 2003. 638 p. ISBN 8536301716.
• Capítulo 1: Aspectos Preliminares
• Capítulo 2: Evolução das Principais Linguagens de 
Programação
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25