Baixe o app para aproveitar ainda mais
Prévia do material em texto
Referência base: Capítulo I – Introdução Linguagens de Programação. Flávio Miguel Varejão Editora Campus, 2004 http://www.inf.ufes.br/~fvarejao/livroLP.html Introdução Linguagens de Programação 2 Razões para Estudar LPs Maior capacidade de desenvolver soluções computacionais para problemas. O conhecimento do conceito de tipos abstratos de dados estimula a utilização desse método de programação mesmo em LPs que não possuem mecanismos específicos para a sua implementação. Maior habilidade ao usar uma LP. Conhecendo como as LPs são implementadas pode-se entender porque algoritmos recursivos são menos eficientes. Introdução Linguagens de Programação 3 Razões para Estudar LPs Maior capacidade para escolher LPs apropriadas. Saber que a linguagem C não realiza a verificação dinâmica dos índices de acesso a posições de um vetor pode ser decisivo para escolher essa linguagem em aplicações em tempo real (online) que fazem o uso frequente de acessos a vetores. Maior habilidade para aprender novas LPs. Os programadores que aprenderam os conceitos de OO têm maior facilidade de aprender C++, Java e C#. Introdução Linguagens de Programação 4 Razões para Estudar LPs Maior habilidade para projetar novas LPs Ao construir as interfaces com o usuário de sistemas, pode ser necessário projetar e implementar uma linguagem de comandos para a comunicação entre usuário e o sistema. Introdução Linguagens de Programação 5 Papel de LPs no PDS O objetivo de LPs é tornar mais efetivo o processo de desenvolvimento de software (PDS) PDS visa geração e manutenção de software de modo produtivo e garantia de padrões de qualidade Introdução Linguagens de Programação 6 Papel de LPs no PDS Principais Propriedades Desejadas em um Software Confiabilidade Manutenibilidade Eficiência Introdução Linguagens de Programação 7 Papel de LPs no PDS Etapas do PDS Especificação de Requisitos Projeto do Software Implementação Validação Manutenção Introdução Linguagens de Programação 8 Propriedades Desejáveis em LPs Legibilidade Marcadores de Blocos if (x>1) if (x==2) x=3; else x=4; Desvios Incondicionais goto Duplicação de Significado de Vocábulos this (em JAVA) *p = (*p)*q; *p=(*p)*(*q); *p=*p**q; Introdução Linguagens de Programação 9 Propriedades Desejáveis em LPs Efeitos Colaterais int x = 1; int retornaCinco() { x = x + 3; return 5; } void main() { int y; y = retornaCinco (); y = y + x; } Introdução Linguagens de Programação 10 Propriedades Desejáveis em LPs Redigibilidade É a característica que melhor diferencia as linguagens de máquina (o programador se preocupa com detalhes de implementação) e linguagens de programação (o programador se concentra na descrição do algoritmo que resolve o problema). Tipos de Dados Limitados (FORTRAN) – requerem estruturas complexas. Ausência de Tratamento de Exceções Conflito Ocasional com Legibilidade void f(char *q, char *p) { for (;*q=*p; q++,p++); } Introdução Linguagens de Programação 11 Propriedades Desejáveis em LPs Confiabilidade Declaração de Tipos – verificação de tipos boolean u = true; int v = 0; while (u && v < 9) { v = u + 2; if (v == 6) u = false; } Tratamento de Exceções try { System.out.println(a[i]); } catch (IndexOutofBoundsException) { System.out.println(“Erro de Indexação”); } Introdução Linguagens de Programação 12 Propriedades Desejáveis em LPs Eficiência Verificação Dinâmica de Tipos – menos eficientes. Facilidade de Aprendizado Excesso de Características é Prejudicial c = c + 1; c += 1; c++; ++c; Modificabilidade const float pi = 3.14; Introdução Linguagens de Programação 13 Propriedades Desejáveis em LPs Ortogonalidade capacidade da LP permitir ao programador combinar conceitos básicos sem que se produzam efeitos anômalos nessa combinação. Uma LP é tão mais ortogonal quanto menor for o número de exceções aos seus padrões regulares. LPs ortogonais são interessantes porque o programador pode prever, com segurança, o comportamento de uma determinada combinação de conceitos. A falta de ortogonalidade dificulta o aprendizado da LP e pode estimular erros de programação. int x, y = 2, z = 3; byte a, b = 2, c = 3; x = y + z; a = b + c; Pascal retorna qualquer tipo de dado menos registros e vetores. Introdução Linguagens de Programação 14 Propriedades Desejáveis em LPs Reusabilidade void Trocar(int *x, int *y) { int z = *x; *x = *y; *y = z; } void Trocar(int & x, int & y) { int z = x; x = y; y = z; } function Trocar(int var x, int var y) var z : integer; begin z := x; x := y; y := z; end. void Trocar(ref int x, ref int y) { int z = x; x = y; y = z; } Introdução Linguagens de Programação 15 Propriedades Desejáveis em LPs Portabilidade Rigor no Projeto Pode Contrastar com Eficiência Introdução Linguagens de Programação 16 Especificação de LPs Léxico (vocábulos) x Sintaxe (regras) x Semântica (significado) a = b; O léxico estabelece que a, =, b e ; fazem parte do vocabulário da LP. O sintático indica que a sentença formada pelo identificador a, o símbolo =, o identificador b e o símbolo ; designa um comando válido de atribuição. A semântica indica que o comando deve ser executado de modo a substituir o valor de a pelo valor atual de b. Introdução Linguagens de Programação 17 Especificação de LPs Sintaxe (BNF – Backus-Naur Form) expressão valorvaloroperadorexpressão valor númerosinalnúmero número semsinalsemsinal.semsinal semsinal dígitodígitosemsinal dígito 0123456789 sinal + operador +* Introdução Linguagens de Programação 18 Especificação de LPs Semântica Enfoque Operacional Necessidade de Padronização ISO, IEEE, ANSI, NIST Introdução Linguagens de Programação 19 Implementação de LPs Compilação Interpretação Pura Híbrido Fonte Fonte Fonte LP LP LP Execução L.M. L.M. L.M. Compilação Compilação Interpretação Código Intermediário Interpretação Execução Execução Dados Dados Dados Introdução Linguagens de Programação 20 Implementação de LPs Compilação Eficiência Problemas com Portabilidade e Depuração Interpretação Pura Flexibilidade, Portabilidade e Facilidade para Prototipação e Depuração Problemas com Eficiência e Maior Consumo de Memória Raramente Usada Híbrido Une Vantagens dos Outros Métodos JVM Paradigma É o conjunto de características que servem para categorizar um grupo de linguagens. Introdução Linguagens de Programação 21 Introdução Linguagens de Programação 22 Paradigmas de LPs Paradigmas Imperativo Declarativo Estruturado Orientado a Objetos Concorrente Funcional Lógico Introdução Linguagens de Programação 23 Paradigmas de LPsImperativo Processo de Mudanças de Estados Variável, Valor e Atribuição Células de Memória Estruturado Refinamentos Sucessivos Blocos Aninhados de Comandos Desestímulo ao uso de desvio incondicional Introdução Linguagens de Programação 24 Paradigmas de LPs Orientado a Objetos Abstração de Dados Concorrente Processos Executam Simultaneamente e Concorrem por Recursos Introdução Linguagens de Programação 25 Paradigmas de LPs Declarativo Especificações sobre a Tarefa a Ser Realizada Abstrai-se de Como o Computador é Implementado Funcional Programa Composto por Funções Lógico Predicados Dedução Automática Introdução Linguagens de Programação 26 Evolução de LPs Dificuldade de Programação em Linguagens de Máquina Foco de Primeiras LPs era Eficiência de Processamento e Consumo de Memória Baixa Produtividade de Programação Programação Estruturada Tipos Abstratos de Dados Orientação a Objetos Introdução Linguagens de Programação 27 Origem de LPs FORTRAN (1957) aplicações numéricas LISP (1959) programação funcional ALGOL (1960) programação estruturada COBOL (1960) aplicações comerciais Introdução Linguagens de Programação 28 Origem de LPs BASIC (1964) ensino para leigos PASCAL (1971) ensino de programação estruturada simplicidade C (1972) implementação de UNIX PROLOG (1972) programação lógica Introdução Linguagens de Programação 29 Origem de LPs SMALLTALK (1972) programação orientada a objetos ADA (1983) programação concorrente C++ (1985) disseminação da programação orientada a objetos JAVA (1995) mais simples e confiável que C++ Internet
Compartilhar