Baixe o app para aproveitar ainda mais
Prévia do material em texto
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
Compartilhar