Linguagens de Programação. Introdução: Motivação, Avaliação, Categorização e Implementação de Linguagens
|
|
- Gabriel Henrique César Castilho
- 5 Há anos
- Visualizações:
Transcrição
1 v.2016 Linguagens de Programação Introdução: Motivação, Avaliação, Categorização e Implementação de Linguagens Prof. Ricardo Couto A. da Rocha rcarocha@ufg.br UFG Regional de Catalão Material adaptado de: Slides de aula do Prof. Bruno Silvestre (UFG/INF/Goiânia) Slides de referência do livro Concepts of Programming Languages, Robert Sebesta.
2 Roteiro Domínios de Programação Critérios de Avaliação de Linguagens Projeto de Linguagens Categorias Implementação Prof. Dr. Ricardo Couto Antunes da Rocha - Depto. de Ciência da Computação Regional de Catalão 2
3 Domínios de Programação 3
4 Domínios de Programação Aplicações científicas Computação com ponto flutuante; uso de arrays Fortran Aplicações comerciais Relatórios, números decimais e caracteres COBOL Inteligência artificial Manipulação de símbolos em vez de números; uso de listas LISP, Prolog 4
5 Domínios de Programação Programação de sistemas Eficiência na execução por causa do uso contínuo C Software para web Coleção eclética de linguagens: markup (e.g., HTML), scripting (e.g., PHP, Javascript), propósito geral (e.g., Java) 5
6 Roteiro Domínios de Programação Critérios de Avaliação de Linguagens Projeto de Linguagens Categorias Implementação Prof. Dr. Ricardo Couto Antunes da Rocha - Depto. de Ciência da Computação Regional de Catalão 6
7 Critérios de Avaliação da Linguagem Legibilidade: facilidade com que os programas podem ser lidos e entendidos Redigibilidade: facilidade de uso de uma linguagem para criar programas para um domínio de problema escolhido Confiabilidade: um programa é confiável se ele se comportar de acordo com suas especificações em todas as situações 7
8 Critérios de Avaliação da Linguagem Legibilidade Redigibilidade Confiabilidade Simplicidade/ortogonalidade x x x Estruturas de controle x x x Tipos de dados e estruturas x x x Projeto de sintaxe x x x Suporte a abstrações x x Expressividade x x Checagem de tipos Tratamento de Exceções Restricted aliasing x x x 8
9 Critérios de Avaliação: Legibilidade Ponto de vista: Máquina x Homem Simplicidade como um todo Um conjunto gerenciável de características e construções Multiplicidade de recursos reduzida Sobrecarga de operadores mínima 9
10 Baixa Legibilidade: Exemplo 1 Foco: Máquina X Homem int main() max(int a, int b) { int int tmp; cont = 0; if cont++; (a > b) cont tmp = += a; 1; else cont++; ++cont; tmp = b; return tmp; 0; } } max: pushl %ebp movl %esp, %ebp subl $16, %esp movl 8(%ebp), %eax cmpl 12(%ebp), %eax jle.l2 movl 8(%ebp), %eax movl %eax, 4(%ebp) jmp.l3.l2: movl 12(%ebp), %eax movl %eax, 4(%ebp).L3: movl 4(%ebp), %eax leave 10
11 Baixa Legibilidade: Exemplo 2 Muitas maneiras de fazer a mesma coisa int main() { int cont = 0; count = count + 1; cont += 1; cont++; ++cont; return 0; } 11
12 Baixa Legibilidade: Exemplo 3 Sobrecarga de operador class Point { public: int x, y; Point(); Point(int, int); Point operator +(Point); }; Point::Point() { x = y = 0; } Point::Point(int a, int b) { x = a; y = b; } Point Point::operator +(Point param) { Point temp; temp.x = x + param.x; temp.y = y + param.y; return temp; } int main () { Point a(3,1); Point b(1,2); Point c; c = a + b; cout << c.x<< "," << c.y << endl; return 0; } 12
13 Critérios de Avaliação: Legibilidade Tipos de dados Tipos de dados adequados e pré-definidos Ex: C não tem booleanos (ou tem?) Considerações de sintaxe Formas dos identificadores: deve ser flexível Palavras especiais e bloco de sentenças Forma e significado: construções autodescritivas, palavras-chave significativas (e.g., static) 13
14 Critérios de Avaliação: Legibilidade Ortogonalidade Um conjunto relativamente pequeno de construções primitivas pode ser combinado em um número relativamente pequeno de maneiras Toda combinação possível é aceita, gerando menos exceções às regras da linguagem Exemplo em C: Retorno de arrays e structs? Criação de variável void? 14
15 Critérios de Avaliação: Legibilidade Ortogonalidade Qual o significado dos códigos destacados? int main() { int vet[3] = {10,20,30}; int *ptr; ptr = &vet[0]; ptr = ptr + 1; void hello() { printf( Hello\n ); } int main() { void x; } // Imprime 20 printf( %d\n, *ptr); return 0; } hello(); return 0; ptr (ptr+1) (ptr+2) vet 15
16 Critérios de Avaliação: Redigibilidade Geralmente os problemas que afetam a legibilidade também afetam a redigibilidade Cuidado ao comparar linguagens com focos diferentes: Visual Basic vs C Simplicidade e ortogonalidade Um número menor de construções primitivas e um conjunto consistente de regras para combiná-las é melhor do que ter um número grande de primitivas 16
17 Critérios de Avaliação: Redigibilidade Suporte à abstração Capacidade de definir e usar estruturas ou operações complicadas de uma maneira que permita ignorar muitos dos detalhes Abstração de processo Abstração de dados Exemplo: Função de ordenação em relatórios Implementação de árvore usando vetor 17
18 Critérios de Avaliação: Redigibilidade Suporte à abstração: Java vs Lua public class Obj { private int x; public Obj(int v) {x = v;} public void inc() {x++;} } Obj obj1 = new Obj(0); Obj obj2 = new Obj(2); obj1.inc() obj2.inc() local class = { index={}} function class. index.inc(self) self.x = self.x + 1 end obj1 = setmetatable({x=0},class) obj2 = setmetatable({x=2},class) obj1:inc() obj2:inc() 18
19 Critérios de Avaliação: Redigibilidade Expressividade Operadores ou funções que realizam operações poderosas e/ou complexas Por exemplo: APL Um conjunto de maneiras convenientes de especificar as operações. Por exemplo: cont++ vs count = count + 1 for vs while Número de operadores e funções pré-definidos 19
20 Critérios de Avaliação: Redigibilidade public class Foo { public static void main(string[] args) { int[] vet = new int[]{1,2,3,4,5}; for (int i = 0; i < vet.length; i++) System.out.println(vet[i]); } } for (int v : vet) System.out.println(v); 20
21 Critério de Avaliação: Confiabilidade Verificação de tipos Testar se existem erros de tipo Manipulação de exceções Interceptar erros em tempo de execução e realizar medidas corretivas r = fread (buf, 1, size, fd); if (r!= size) { // Erro } C try { fd.read(buf, 0, size); } catch(ioexception e) { // Erro } Java 21
22 Critério de Avaliação: Confiabilidade Legibilidade e redigibilidade Uma linguagem que não suporta maneiras naturais de expressar algoritmos usará, necessariamente, métodos não-naturais, reduzindo a confiabilidade Programas fáceis de escrever têm maior chance de estarem corretos Programas fáceis de ler são mais fáceis de entender, escrever e modificar 22
23 Critério de Avaliação: Custo Treinamento de programadores para usar a linguagem Custo de escrever programas: domínio da aplicação Custo de compilação: tempo e memória Compiladores estão melhores Custo de execução: requisitos mínimos do sistema Influenciado pelo projeto da linguagem Custo do sistema de implementação da linguagem Disponibilidade de compiladores gratuitos Confiabilidade: baixa confiabilidade eleva os custos Manutenção de programas 23
24 Critérios de Avaliação: Outros Portabilidade Facilidade de mudar programas de uma plataforma para a outra Generalidade Uso da linguagem em uma ampla variedade de aplicações Boa definição A completude e precisão da documentação oficial da linguagem 24
25 Resumo Razões para estudar conceitos de linguagens de programação Domínios de programação Critérios de avaliação da linguagem Legibilidade (readability) Redigibilidade (writability) Confiabilidade (reliability) Custo Portabilidade, generalidade e boa definição 25
26 Balanço no Projeto de Linguagens Confiabilidade vs Custo de execução Em Java todas as referências aos elementos de arrays são verificadas quanto à indexação correta. Isso aumenta os custos de execução. Legibilidade vs Redigibilidade APL fornece operadores muito poderosos (e um grande número de símbolos novos), permitindo que computações complexas sejam escritas em um programa compacto. No entanto, o custo da baixa legibilidade é alto. 26
27 Balanço no Projeto de Linguagens Redigibilidade vs Confiabilidade Ponteiros do C++ são poderosos e muito flexíveis, mas não são confiáveis. Java não adotou ponteiros. Alguns conflitos são óbvios, outros são mais sutis. 27
28 Roteiro Domínios de Programação Critérios de Avaliação de Linguagens Projeto de Linguagens Categorias Implementação Prof. Dr. Ricardo Couto Antunes da Rocha - Depto. de Ciência da Computação Regional de Catalão 28
29 Influências sobre o Projeto da Linguagem Arquitetura do computador: linguagens são desenvolvidas em função da arquitetura mais atual (hoje von Neumann) 29
30 Influências sobre o Projeto da Linguagem Linguagens imperativas dominantes por causa da arquitetura Dados e programas mantidos na memória Memória separada da CPU Variáveis modelam células de memória Instruções e dados canalizados (piped) da memória para a CPU 30
31 Ciclo Fetch-Execute Iteração é eficiente Desencoraja o uso de recursão Impacto em linguagens funcionais initialize the program counter repeat forever fetch the instruction pointed by the counter increment the counter decode the instruction execute the instruction end repeat 31
32 Influências sobre o Projeto da Linguagem Metodologias de Programação: novas metodologias de desenvolvimento levam a novos paradigmas de programação e a extensões, ou mesmo novas linguagens de programação Orientação a objetos 32
33 Influências sobre o Projeto da Linguagem Anos 1950 e início dos anos 1960: aplicações simples; preocupação com a eficiência da máquina Fim dos anos 1960: eficiência das pessoas torna-se importante; legibilidade, melhores estruturas de controle Programação estruturada Projeto top-down e refinamento Fim dos anos 1970: orientação aos processos para orientação aos dados Abstração de dados Meados dos anos 1980: programação orientada a objetos Abstração de dados + herança + polimorfismo 33
34 Roteiro Domínios de Programação Critérios de Avaliação de Linguagens Projeto de Linguagens Categorias Implementação Prof. Dr. Ricardo Couto Antunes da Rocha - Depto. de Ciência da Computação Regional de Catalão 34
35 Categorias de Linguagem Imperativa Características centrais são variáveis, declarações de atribuição, iteração Inclui as linguagens que suportam orientação a objetos Inclui linguagens de script Inclui linguagens visuais Exemplos: C, Java, Perl, JavaScript, Visual BASIC.NET, C++ Funcional Realiza computações aplicando funções aos parâmetros fornecidos Exemplos: LISP, Scheme, Haskell, ML 35
36 Categorias de Linguagem Lógica Baseada em regras Regras são especificadas sem uma ordem particular Exemplo: Prolog Marcação/híbrida Linguagens de marcação (markup) estendidas para suportar programação Exemplos: JSTL, XSLT 36
37 JSTL <c:choose> <c:when test="${el_expr1}">... </c:when> <c:when test="${el_expr2}">... </c:when>... <c:otherwise>... </c:otherwise> </c:choose> <c:foreach var="x" items="${m}" > ${x.key}: ${x.value} </c:foreach> <c:out value="el EXPRESSION" /> <c:set var="x" value="el EXPRESSION" /> <c:if test="el EXPRESSION" >... </c:if> 37
38 Roteiro Domínios de Programação Critérios de Avaliação de Linguagens Projeto de Linguagens Categorias Implementação Prof. Dr. Ricardo Couto Antunes da Rocha - Depto. de Ciência da Computação Regional de Catalão 38
39 Visão em Níveis 39
40 Métodos de Implementação Compilação Programas são traduzidos para a linguagem de máquina Interpretação pura Programas são interpretados por outro programa conhecido por interpretador Implementação híbrida Meio-termo entre os compiladores e os interpretadores. 40
41 Método 1: Compilação Traduz programas de alto nível (código fonte) para o código de máquina (linguagem de máquina) Tradução lenta, execução rápida Processo de compilação tem várias fases 41
42 Compilação programa fonte Tabela de Símbolos Analisador Léxico Analisador Sintático Gerador de Código Intermediário (e analisador semântico Unidades léxicas Árvores de parsing Otimização Linguagem de máquina Gerador de código Computador Código intermediário Entrada Resultados 42
43 Compilação 43
44 Compilação Alguns compiladores C++ transformavam o código em C em vez de código intermediário Muitos compiladores são self-hosting, i. e., são escritos na própria linguagem que compilam Problema do ovo e a galinha? Técnica de bootstrapping 44
45 Método 2: Interpretação Pura Não há tradução Implementação mais fácil de programas Erros em tempo de execução podem ser facilmente e imediatamente mostrados (debug?) Execução mais lenta 10 a 100 vezes mais lenta que de programas compilados Requer mais espaço Atualmente pouco empregadas em linguagens de alto nível Uso com algumas linguagens de script para web Ex.: JavaScript e PHP 45
46 Método 3: Implementação Híbrida Meio-termo entre compiladores e interpretadores puros Um programa em uma linguagem de alto nível é traduzido para uma linguagem intermediária que permita a interpretação fácil Mais rápido que a interpretação pura Ex.: Programas em Perl são parcialmente compilados para detectar erros antes da interpretação Em Java, a forma intermediária (byte code) fornece portabilidade para qualquer máquina que tenha um interpretador e um sistema de execução Java Virtual Machine 46
47 Implementação Híbrida programa fonte Analisador Léxico Analisador Sintático Unidades léxicas Árvores de parsing Gerador de Código Intermediário Código intermediário Interpretador Entrada Resultados 47
48 JIT Just-in-Time Inicialmente traduz os programas para uma linguagem intermediária É feita a compilação dos subprogramas (estão na linguagem intermediária) para código de máquina quando são chamados A versão em código de máquina é mantida para chamadas subsequentes Java e.net oferecem compilador JIT Outras linguagens estão compilando para essas plataformas a fim de ter ganhos de portabilidade e desempenho 48
49 Pré-processadores Pré-processadores são normalmente usados para especificar que código de outro arquivo deve ser incluído Um pré-processador processa um programa imediatamente antes do programa ser compilado Exemplo conhecido: pré-processador C #include, #define, #if, etc. Macros do usuário Cuidado com efeito colateral! 49
50 Pré-processadores Quais são os códigos que serão gerados a partir dos seguintes pré-processamentos? #define dobro(x) (x + x) x = 2; y = dobro(++x); #define calc(x, y) (x + y * 2) z = calc(2, 1+5); #define inc(x, y) x++; y++; if (z > 10) inc(x, y) 50
51 Resumo Balanço no projeto de linguagens Combinar características conflitantes Influências sobre o projeto da linguagem Arquitetura e metodologia Categorias de linguagem Imperativa, funcional, lógica e marcação/híbrida Métodos de Implementação Compilação, interpretação e híbrido 51
52 Referências Sebesta, Robert W. Conceitos de linguagens de programação. Bookman Editora, Prof. Dr. Ricardo Couto Antunes da Rocha - Depto. de Ciência da Computação Regional de Catalão 52
Capítulo 1. Aspectos Preliminares
Capítulo 1 Aspectos Preliminares Tópicos do Capítulo 1 Razões para estudar conceitos de linguagens de programação Domínios de programação Critérios de avaliação de linguagens Influências no projeto de
Leia maisLinguagens Computacionais (Conceitos Básicos)
Linguagens Computacionais (Conceitos Básicos) George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Tópicos Razões para estudar os conceitos de linguagens de programação Domínios de programação Critérios
Leia maisParadigmas de Linguagem de Programação
Paradigmas de Linguagem de Programação Aula 1 - Introdução Prof. Filipo Mór 2016/II - www.filipomor.com Apresentação do Professor B.Sc. SI FDBPOA 2012 M.Sc. em CC PUCRS/DALHOUSIE 2015 Atuação na área de
Leia maisAspectos preliminares
Aspectos preliminares Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl
Leia maisAula 1 Java Prof. Dr. Sylvio Barbon Junior
5COP101 Linguagens de Programação Aula 1 Java Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr barbon@uel.br 1 Sumário 1) Razões para Estudar Conceitos de LP; 2) Domínios das Linguagens de Programação 3)
Leia maisLinguagens de Programação. Introdução. Carlos Bazilio
Linguagens de Programação Introdução Carlos Bazilio carlosbazilio@id.uff.br http://www.ic.uff.br/~bazilio/cursos/lp ??? Pascal aux := 0 for i:=1 to 10 do aux := aux + i 10: i = 1 20: if i > 10 goto 60
Leia maisConceitos de Linguagens de Programação
Conceitos de Linguagens de Programação Aula 03 Processo de Compilação Edirlei Soares de Lima Métodos de Implementação Arquitetura de Von Neumann: A linguagem de máquina de um computador
Leia maisNomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisAspectos preliminares
Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisLinguagens de Programação
Linguagens de Programação Prof a Jerusa Marchi Departamento de Informática e Estatística Universidade Federal de Santa Catarina e-mail: jerusa@inf.ufsc.br Linguagens de Programação p. 1/5 Linguagens de
Leia maisAspectos preliminares
Aspectos preliminares Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisParadigmas de Programação
Paradigmas de Programação Prof.: Edilberto M. Silva http://www.edilms.eti.br Aula 2 Linguagens de Programação Desenvolvimento e execução de programas Características de linguagens Execução de programas
Leia maisNomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisConceitos de Linguagens de Programação - Características. Paavo Soeiro
Conceitos de Linguagens de Programação - Características Paavo Soeiro Motivação Para que possa escolher uma linguagem apropriada ao problema. Melhorar o entendimento da linguagem utilizada. Facilitar o
Leia maisLinguagem de Programação e Compiladores
Linguagem de Programação e Compiladores Fernando Antônio Asevedo Nóbrega Instituto de Ciências Matemáticas e de Computação USP SCC-206 Introdução à Compilação 24 de abril de 2012 1 / 20 Sumário 1 Introdução
Leia maisQuestões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO
Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO QUESTÃO 1 : Enviada por: Francisco Carlos Moraes Junior Duvidas: Thaise Domínios de programação são áreas onde os computadores são usados.
Leia maisLinguagens de Programação Funcional
Linguagens de Programação Funcional Conceitos de Linguagens de Programação Pedro Libório Setembro de 2013 2 Roteiro Introdução Funções matemáticas Fundamentos das linguagens de programação funcionais A
Leia maisPROGRAMAÇÃO ORIENTADA A OBJETOS I -CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc.
PROGRAMAÇÃO ORIENTADA A OBJETOS I -CONCEITOS PRELIMINARES Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza ROTEIRO O que é programação Linguagens de Programação Paradigmas de Programação História
Leia maisCompiladores. Introdução
Compiladores Introdução Apresentação Turma Noite Continuada I 20/03 Continuada II 22/05 Atividades Regimental 05/06 Total 1 Ponto 1 Ponto 1 Ponto 7 Pontos 10 Pontos Aulas expositivas teórico-práticas Exercícios
Leia maisPLANO DE UNIDADE DIDÁTICA- PUD
Professor: Marcus Vinícius Midena Ramos Coordenação: Ricardo Argenton Ramos Data: 03/08/2010 Página: 1 de 5 EMENTA: Conceitos básicos de linguagens. Histórico, classificação e principais aplicações de
Leia maisMétodos de implementação de linguagens. Kellen Pinagé
Métodos de implementação de linguagens Kellen Pinagé Sumário Métodos de implementação de linguagens Compilação Interpretação pura Híbrido Métodos de implementação de linguagens Principais componentes de
Leia maisIntrodução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Aula 03 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação Linguagens de Programação A primeira linguagem de programação foi criada por Ada Lovelace. Amiga
Leia maisCapítulo 5. Nomes, Vinculações e Escopos
Capítulo 5 Nomes, Vinculações e Escopos Tópicos do Capítulo 5 Introdução Nomes Variáveis O conceito de vinculação Escopo Escopo e tempo de vida Ambientes de referenciamento Constantes nomeadas Introdução
Leia maisAlgoritmos e Programação
ESTADO DE MATO GROSSO SECRETARIA DE ESTADO DE CIÊNCIA E TECNOLOGIA UNIVERSIDADE DO ESTADO DE MATO GROSSO CAMPUS UNIVERSITÁRIO DE SINOP FACULDADE DE CIÊNCIAS EXATAS E TECNOLÓGICAS Algoritmos e Programação
Leia mais1 Introdução à Programação O que é? Para que serve?... 1
Nesta aula... Conteúdo 1 Introdução à Programação 1 1.1 O que é?................................. 1 1.2 Para que serve?............................. 1 2 Linguagens de programação 2 2.1 Programação estruturada........................
Leia maisAlgoritmos e Programação
ESTADO DE MATO GROSSO SECRETARIA DE ESTADO DE CIÊNCIA E TECNOLOGIA UNIVERSIDADE DO ESTADO DE MATO GROSSO CAMPUS UNIVERSITÁRIO DE SINOP FACULDADE DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE ENGENHARIA ELÉTRICA
Leia maisCONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO
CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO ROTEIRO 1. INTRODUÇÃO 2. LINGUAGENS IMPERATIVAS 1. CONCEITO 2. PARADIGMA IMPERATIVO 3. ORIGENS 4. MODELO COMPUTACIONAL 1. ARQUITETURA DE VON NEUMANN 2. CARACTERISTICAS
Leia maisAs fases de um compilador
As fases de um compilador Compilando um programa simples estrutura de um compilador formas de organização de um compilador processo de execução de uma linguagem de alto-nível Compilando um programa simples
Leia maisCompiladores. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 38
Compiladores Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Fevereiro, 2017 1 / 38 Sumário 1 Compiladores 2 Linguagens de programação 3 Ciência dos compiladores
Leia maisCapítulo III - Linguagens de Programação
Capítulo III - Linguagens de Programação Porque Estudar Ling. de Programação? Quais são as formas de classificar Linguagens? Quais são os Conceitos Fundamentais de Linguagens de Programação? Como Avaliar/Projetar
Leia maisLinguagens de Programação
O estudante estuda muito. Regras: 7 9 12 14. . Regras: 2 4 . Regras: 1 Representar através de uma árvore de derivação. 77 O estudante estuda muito.
Leia maisFundamentos de Programação 1
Fundamentos de Programação 1 Slides N. 2 E / Prof. SIMÃO Slides elaborados pelo Prof. Robson Linhares elaborados pelo Prof. Robson Linhares http://www.dainf.ct.utfpr.edu.br/~robson/ Jean Marcelo SIMÃO
Leia maisMatéria Linguagens de Programação Prof Geraldo. 1) Estudo das Linguagens de Programação
Matéria Linguagens de Programação Prof Geraldo. 1) Estudo das Linguagens de Programação É muito importante o estudo dos conceitos de linguagens de programação, especialmente a análise de seus paradigmas.
Leia maisProjeto de Compiladores
Projeto de Compiladores FIR Faculdade Integrada do Recife João Ferreira 26 e 27 de fevereiro de 2007 Agenda da Aula Revisão Linguagem de Programação Tradutores Compilador As Fases de Um Compilador Linguagem
Leia maisAutômatos e Linguagens
Autômatos e Linguagens Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Agosto, 2016 1 / 41 Sumário 1 Compiladores 2 Linguagens de programação 3 Ciência dos compiladores
Leia maisHistórico de Linguagens de Programação
Bacharelado em Ciência da Computação PARADIGMAS DE PROGRAMAÇÃO Histórico de Linguagens de Programação Prof. Claudinei Dias email: prof.claudinei.dias@gmail.com Objetivos Geral: Estudar as características
Leia maisCompiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores
Motivação Prof. Sérgio Faustino Compiladores Conhecimento das estruturas e algoritmos usados na implementação de linguagens: noções importantes sobre uso de memória, eficiência, etc. Aplicabilidade freqüente
Leia maisLinguagens de Programação Conceitos e Técnicas. Amarrações
Linguagens de Programação Conceitos e Técnicas Amarrações Conceituação Amarração (ou binding) é uma associação entre entidades de programação, tais como entre uma variável e seu valor ou entre um identificador
Leia maisAs fases de um compilador
As fases de um compilador Paradigmas de LP Métodos de Implementação de LP Compilando um programa simples estrutura de um compilador formas de organização de um compilador processo de execução de uma linguagem
Leia maisLinguagens de Programação Aula 3
Aula 3 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada... Classificação das LPs (nível, geração e paradigma) Paradigmas Imperativo, OO, funcional, lógico e concorrente 2/33 Na aula de hoje...
Leia maisLinguagens de Programação. Marco A L Barbosa
Expressões e sentença de atribuição Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl
Leia maisExpressões e sentença de atribuição
Expressões e sentença de atribuição Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisLinguagens de Programação Classificação
Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Linguagem de programação C 3.1. Conceitos
Leia maisProgramação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Conceito de Algoritmo Pseudocódigo Tipos de
Leia maisConstrução de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.
Construção de Compiladores Capítulo 1 Introdução José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2014.2 1/22 1 Linguagens de programação 2 Compilação 2/22 Tópicos 1
Leia maisLinguagens de Programação
45 Linguagens de Programação O paradigma de programação imperativo está diretamente atrelado à arquitetura básica dos computadores sobre os quais os programas eram executados. Boa parte dos computadores
Leia maisCurso: Análise e Desenvolvimento de Sistemas. (Introdução a disciplina Algoritmos e Programação)
Curso: Análise e Desenvolvimento de Sistemas Disciplina Algoritmos e Programação (Introdução a disciplina Algoritmos e Programação) Prof. Wagner Santos C. de Jesus wsantoscj@gmail.com Conceito de Lógica
Leia maisEderson Luiz da Silva Ciência da Computação. Algoritmos e Programação
Ederson Luiz da Silva Ciência da Computação Algoritmos e Programação Linguagem de programação Linguagem de Programação Linguagem de máquina http://www.assemblyprogressivo.net/p/curso.html Linguagem de
Leia maisParadigmas de Linguagem de Programação. Aspectos Básicos
Paradigmas de Linguagem de Programação Aspectos Básicos Introdução Nesta segunda etapa de nossos estudos, veremos: aspectos básicos de programa e linguagem de programação; revisão de conceitos de compilador
Leia maisProgramação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Conceito de Algoritmo Pseudocódigo
Leia maisCapítulo 7. Expressões e Sentenças de Atribuição
Capítulo 7 Expressões e Sentenças de Atribuição Introdução Expressões são os meios fundamentais de especificar computações em uma linguagem de programação Para entender a avaliação de expressões, é necessário
Leia maisProjeto de Linguagem. Linguagens de Programação
Projeto de Linguagem Renato Ferreira Linguagens de Programação Linguagens são adotadas para preencher uma demada Facilitar uma aplicação outrora difícil/impossível Independente da qualidade da linguagem
Leia maisIntrodução à Programação
Introdução à Programação Linguagens de Programação: sintaxe e semântica de linguagens de programação e conceitos de linguagens interpretadas e compiladas Engenharia da Computação Professor: Críston Pereira
Leia maisParadigmas de Linguagens
Paradigmas de Linguagens Aula 1: Introdução e Conceitos Básicos Professora Sheila Cáceres O que é um paradigma??? Paradigmas de Linguagens - Sheila Cáceres 2 O que é um paradigma??? Paradigmas de Linguagens
Leia maisFundamentos de Programação. Linguagem C++ Introdução, identificadores, tipos de dados. Prof. Bruno E. G. Gomes IFRN
Fundamentos de Programação Linguagem C++ Introdução, identificadores, tipos de dados Prof. Bruno E. G. Gomes IFRN 1 Linguagem de Programação Constituída por símbolos e por regras para combinar esses símbolos
Leia maisNoções de compilação
Noções de compilação Compilador: o que é, para que serve e estrutura geral Parentes do compilador e programas correlatos Prof. Thiago A. S. Pardo 1 Exercício em duplas Para esquentar... 2 1 Compilação:
Leia maisLinguagens de Programação
Linguagens de Programação Propriedades Desejáveis Bruno Lopes Bruno Lopes Linguagens de Programação 1 / 1 Legibilidade: A leitura do programa é facilmente compreendida? Redigibilidade: A implementação
Leia maisEstudos de Linguagens de Programação - Revisão
Estudos de Linguagens de Programação - Revisão (marinho.mlm@gmail.com) O que é uma Linguagem de Programação? Linguagem usada por uma pessoa para expressar um processo através do qual um computador pode
Leia maisProgramação I Apresentação
Programação I Apresentação Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Referências JUNIOR, D. P.; NAKAMITI, G. S.; ENGELBRECHT, A. de M. E.; BIANCHI, F. Algoritmos e Programação
Leia maisProf. Rodrigo Rocha
: sobre : MATA56 - de Linguagens de Programação, UFBA, 2016.1 : sobre : Links interessantes sobre Comparação de sintaxe: http://merd.sourceforge.net/pixel/ language-study/syntax-across-languages/ Programa
Leia maisNoções de compilação
Noções de compilação Compilador: o que é, para que serve e estrutura geral Parentes do compilador e programas correlatos Prof. Thiago A. S. Pardo 1 Compilação: por que estudar? (parte 1) Compiladores:
Leia maisUniversidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução geovanegriesang@unisc.br Processadores de linguagem Linguagens de programação são notações para se descrever
Leia maisProjeto de Compiladores
Projeto de Compiladores FIR Faculdade Integrada do Recife João Ferreira 12 e 13 de fevereiro de 2007 Questionário 1. Em quais linguagens de programação você já programou? 2. O que você sabe sobre compiladores?
Leia maisIntrodução e Conceitos
Introdução e Conceitos Aula 1 11/08/2017 diegoquirino@gmail.com 1 Agenda 1. Motivações: porque estudar linguagens de programação? 2. Breve Histórico sobre as Linguagens de Programação 3. Processos de Tradução
Leia maisCompiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 32. Instituto de C
ompiladores Introdução Bruno Lopes Bruno Lopes ompiladores 1 / 32 Apresentação Em que período estão? O quanto sabem de programação? Quais linguagens? O quanto sabem de unix? O quanto sabem de Linguagens
Leia maisLinguagem de Programação
Linguagem de Programação aula 4 Engenharia Elétrica e Engenharia de Automação Introdução à Computação 1.o sem/2013 Profa Suely (e-mail: smaoki@yahoo.com) Programas Programas são seqüências de instruções
Leia maisLinguagens de Programação
Linguagens de Programação Aula 1 Celso Olivete Júnior olivete@fct.unesp.br Metodologia Aulas expositivas teórico-práticas Exercícios práticos Projetos individuais e/ou em grupos Seminários sobre tópicos
Leia maisProgramação de Computadores:
Instituto de C Programação de Computadores: Introdução a Linguagens de Programação Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Seis Camadas Problema
Leia maisLAPRO I. Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática - FACIN. Prof. Dr. Rafael Garibotti
Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática - FACIN LAPRO I Prof. Dr. Rafael Garibotti v Baseado no material cedido pelos Profs. Dr. Marco Mangan e Dr. Matheus Trevisan
Leia maisLinguagens de Programação
Linguagens de Programação de Linguagens de Programação Bruno Lopes Bruno Lopes Linguagens de Programação 1 / 11 Propriedades desejáveis Legibilidade: A leitura do programa é facilmente compreendida? Redigibilidade:
Leia maisProgramação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Paradigmas para linguagens de Programação
Leia maisIntrodução à Ciência da Computação. Prof. Dr. Rogério Vargas
Introdução à Ciência da Computação Prof. Dr. Rogério Vargas http://rogerio.in O que é dado? - Defino dado como uma sequência de símbolos quantificados ou quantificáveis. - Letras são símbolos quantificados.
Leia maisEspecificações Gerais do Compilador e Definição de FRANKIE
Especificações Gerais do Compilador e Definição de FRANKIE 1. Especificações Gerais do Compilador (Decisões de projeto) 2. Especificações da Linguagem Fonte Definição Informal Considerações Léxicas Considerações
Leia maisMCTA028 Programação Estruturada Aula 01: - Introdução à linguagem C - Teste de avaliação
MCTA028 Programação Estruturada Aula 01: - Introdução à linguagem C - Teste de avaliação Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 3Q-2017 1 Linguagens de programação 2 Linguagem de programação
Leia maisFACULDADE LEÃO SAMPAIO
FACULDADE LEÃO SAMPAIO Paradigmas de Programação Curso de Análise e Desenvolvimento de Sistemas Turma: 309-5 Semestre - 2014.2 Paradigmas de Programação Prof. MSc. Isaac Bezerra de Oliveira. 1 PARADIGMAS
Leia maisIntrodução a lógica e a Linguagem de Programação
Faculdade de Engenharia da Computação Disciplina: Lógica de Programação Introdução a lógica e a Linguagem de Programação Site : http://www1.univap.br/~wagner/ec.html Prof. Responsáveis Wagner Santos C.
Leia maisAnálise Semântica. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 40
Análise Semântica Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Outubro, 2016 1 / 40 Sumário 1 Conceitos 2 A linguagem Cool 3 Análise semântica Símbolos Tipos
Leia maisCompiladores. Conceitos Básicos
Compiladores Conceitos Básicos Processadores de Linguagem De forma simples, um compilador é um programa que recebe como entrada um programa em uma linguagem de programação a linguagem fonte e o traduz
Leia maisConceitos de Linguagens de Programação
Conceitos de Linguagens de Programação Aula 01 Introdução Edirlei Soares de Lima O que é uma Linguagem de Programação? Na programação de computadores, uma linguagem de programação
Leia maisCP Compiladores I Prof. Msc.. Carlos de Salles
CP 5017.9 Prof. Msc.. Carlos de Salles 1 - EMENTA O Processo de Compilação. Deteção e Recuperação de Erros. Introdução à geração de Código Intermediário. Geração de Código de Máquina. Otimização. Uma visão
Leia maisProgramação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1
Programação de Computadores IV Introdução a Linguagens de Programação Simone Martins simone@ic.uff.br SLIDES CEDIDOS POR BRUNO MARQUES 1 Arquitetura de programação 2 O Que é um Dado? Dado é o elemento
Leia maisCOMPILAÇÃO. Ricardo José Cabeça de Souza
COMPILAÇÃO Ricardo José Cabeça de Souza www.ricardojcsouza.com.br Programas Código-fonte escrito em linguagem de programação de alto nível, ou seja, com um nível de abstração muito grande, mais próximo
Leia maisSlides trabalhados durante a quinta aula
Slides trabalhados durante a quinta aula prática Estruturas de Controle de Fluxo 3. Laços de repetição (continuação) Exercício: Construa um algoritmo, representando-o através de um pseudocódigo e de um
Leia maisInformática I. Aula Aula 18-29/10/2007 1
Informática I Aula 18 http://www.ic.uff.br/~bianca/informatica1/ Aula 18-29/10/2007 1 Ementa Noções Básicas de Computação (Hardware, Software e Internet) HTML e Páginas Web Internet e a Web Javascript
Leia maisLinguagens e Compiladores
Linguagens e Compiladores Aula 1: a) Critérios b) Noções de Compiladores e Interpretadores c) Usos da tecnologia de compilação d) Compiladores, filtros e pré-processadores e) Estruturação lógica de compiladores
Leia maisProgramação de Sistemas (Sistemas de Programação) Semana 10, Aula 17
PCS3616 Programação de Sistemas (Sistemas de Programação) Semana 10, Aula 17 Linguagens e Compiladores Programação em linguagem de alto nível Escola Politécnica da Universidade de São Paulo Roteiro 1.
Leia maisMCTA028 Programação Estruturada Aula 01: - Introdução à linguagem C - Teste de avaliação
MCTA028 Programação Estruturada Aula 01: - Introdução à linguagem C - Teste de avaliação Prof. João Henrique Kleinschmidt Material elaborado pelo Prof. Jesús P. Mena-Chalco 3Q-2018 Linguagens de programação
Leia maisLinguagens de Programação
Linguagens de Programação 128 13 129 Linguagens de Programação Uma linguagem de programação é um vocabulário e um conjunto de regras gramaticais usadas para escrever programas de computador. Esses programas
Leia maisProgramação I A Linguagem C. Prof. Carlos Alberto
Programação I A Linguagem C Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br 2 Origem A linguagem C foi desenvolvida em 1972, nos Laboratórios Bell, por Dennis Ritchie. Implementada
Leia maisCapítulo 6: Linguagens de Programação
Capítulo 6: Linguagens de Programação Ciência da Computação: Uma Visão Abrangente 11a Edição by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Capítulo 6: Linguagens de programação 6.1 Perspectiva
Leia maisAula teórica 7. Preparado por eng.tatiana Kovalenko
Aula teórica 7 Tema 7. Introdução a Programação Ø Linguagens de Programação Ø LP Java ØEstrutura de um programa em Java ØIdentificadores, variáveis e constantes. ØTipos de dados básicos Preparado por eng.tatiana
Leia maisFERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS
FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS Acadêmico: Roger Anderson Schmidt Orientador : Marcel Hugo Supervisor : Ricardo de Freitas Becker Empresa
Leia maisINE5421 LINGUAGENS FORMAIS E COMPILADORES
INE5421 LINGUAGENS FORMAIS E COMPILADORES PLANO DE ENSINO Objetivo geral Conhecer a teoria das linguagens formais visando sua aplicação na especificação de linguagens de programação e na construção de
Leia maisRevisão: linguagens de programação
Revisão: linguagens de programação Definição, histórico, paradigmas e semântica Prof. Thiago A. S. Pardo taspardo@icmc.usp.br Definição Uma linguagem de programação é uma linguagem destinada a ser usada
Leia maisIntrodução à Computação
Introdução à Computação Jordana Sarmenghi Salamon jssalamon@inf.ufes.br jordanasalamon@gmail.com http://inf.ufes.br/~jssalamon Departamento de Informática Universidade Federal do Espírito Santo Agenda
Leia mais