Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aspectos preliminares das linguagens de programação Fundamentos de Informática – Wilnice Tavares Complementação Linguagem de programação • Motivos para estudar os conceitos de linguagem de programação – Aumento da capacidade de expressar as idéias – Maior embasamento para a escolha da linguagem apropriada para determinada solução – Capacidade aumentada para aprender novas linguagens – Entender a importância da implementação – Aumento da capacidade de projetar linguagens – Avanço global da computação Linguagem de programação • Computadores usados em uma infinidade de áreas – Aplicação científicas • Assembly • Fortran • Algol – Aplicações comerciais • Cobol • Planilhas eletrônicas e os sistemas de Banco de Dados (negócios de pequeno porte) – Inteligência Artificial • Computação simbólica em vez de numérica - Primeira linguagem – LISP • Programação lógica (lógica de proposições) - Primeira linguagem – PROLOG – Programação de sistemas • Todos os S.O. são conhecidos como software básico – projetar um S.O. – linguagem deve ter recursos de baixo nível / execução rápida / permitir fazer interface com os dispositivos de E-S • IBM – desenvolveu a PL/S e PL/I • UNIX – foi desenvolvido em C (ANSI, 1986) – linguagem C perigosa para ser usada em sistemas grandes e importantes Linguagem de programação • Computadores usados em uma infinidade de áreas • Linguagem de scripiting – Surgiu nos últimos 25 anos – Lista de comandos em um arquivo para serem executados - A primeira delas SH (shell) - KSH - AWK - TC1 - PERL - Java Scripit • Linguagem de propósito especiais – RPG ( report program generator) – GPSS (general purpose simulation system) Mais convencionais Critérios de avaliação das linguagens • Objetivo – Avaliar cuidadosamente os conceitos fundamentais das várias construções e das capacidades das linguagens de programação – Critérios mais discutidos entre os cientistas da computação (importantes) • Legibilidade • Capacidade de escrita • confiabilidade Critérios de avaliação das linguagens • LEGIBILIDADE – Simplicidade/ortogonalidade – Estruturas de controle – Tipos de dados e estruturas – Projeto da sintaxe • CAPACIDADE DE ESCRITA – Nas 4 anteriores – Suporte para abstração – Expressividade Critérios de avaliação das linguagens • CONFIABILIDADE – Nas 6 anteriores – Verificação de tipos – Manipulação de exceções – Apelido (alising) Critérios de avaliação das linguagens • Legibilidade – Critério mais importante (1970 – ciclo de vida software) – Facilidade de um programa ser lido e entendido – Facilidade de manutenção / custo • Simplicidade/ortogonalidade – Capacidade da linguagem ter menos componentes básicos (usar subconjunto dela), menos multiplicidade de recursos (linguagem C), e não permitir sobrecarga de operadores (overloading) – definir o + para * Critérios de avaliação das linguagens - Legibilidade • Ortogonalidade – Relacionado diretamente com a simplicidade – capacidade de combinar um conjunto relativamente pequeno de primitivas, para criar um conjunto relativamente pequeno de estruturas de controle – Exige-se um certo controle, pois a liberdade de combinações permite construções extremamente complexas Critérios de avaliação das linguagens - Legibilidade • Estrutura de controle – Mais fácil de ser lido – Revolução da programação estruturada em 70 – Reação a má legibilidade causada pelo uso exagerados do goto de algumas linguagens – Usar apenas se: • Seus alvos nunca devem estar muito distante • Seu número deve ser limitado – Às versões antigas do Basic e Fortran faltavam as instruções de controle, que permitissem escrever programas altamente legíveis. Critérios de avaliação das linguagens - Legibilidade • Tipos de dados e estruturas – Capacidade de definir tipos de dados e estruturas de dados em uma linguagem – Usar um tipo numérico para sinalizar um tipo booleano • Soma_e_muito_grande=1 (criar um tipo) • Soma_e_muito_grande=true (booleano) – Símbolos dos operadores variam entre linguagens FORTRAN 77 FORTRAN 90 C Ada .AND. and && and .OR. or || or .NOT. not ! not xor – Um tipo de dados registro (record) é mais legível do que um conjunto de vetores similares, para cada item de dados de um registro de funcionários Critérios de avaliação das linguagens - Legibilidade • Sintaxe – A sintaxe de uma linguagem tem influência sobre a sua legibilidade, existem 3 projetos sintáticos que afetam a legibilidade de uma linguagem • Formas identificadoras – restringir os identificadores a tamanhos muito pequenos – (exemplo – Basic onde identificador com 1 letra ou 1 letra seguida de 1 dígito) • Palavras reservadas – permitir usá-las como nome de variáveis – usar como pares para formar grupos em construção de controle (begin- end / { } / ) torna confuso • forma e significado – Projetar instruções afim de que sua aparência indique sua finalidade Critérios de avaliação das linguagens • Capacidade de Escrita (writability) – Escrever um programa exige uma releitura frequente da parte que já foi escrita pelo programador – Deve ser considerada no contexto do domínio do problema-alvo de uma linguagem de programação • Capacidade de escrita do COBOL não serve/não é a melhor/nem a mais eficiente para lidar com estruturas de dados bidimensionais • Porém foi projetado para lidar com problemaa de contexto financeiro onde consegue gerar relatórios com formatos complexos e eficientes Critérios de avaliação das linguagens - Escrita • Suporte para abstração de dados – Domínio de solução de problemas de linguagem deve estar mais próximo do domínio do problema – Implementar uma árvore binária em C++ e Java é muito mais eficiente e menos confuso do que fazer a mesma implementação em Fortran Critérios de avaliação das linguagens - Escrita • Expressividade – Em uma linguagem se refere a diversas características • Em APL o fato da linguagem possuir operadores poderosos permite que uma grande quantidade de computação seja realizada em um programa muito pequeno • Em C a notação cont++ conveniente e mais breve do que se fosse cont = cont + 1 • Escrever laços em Java usando o FOR torna mais fácil a escrita de laços de contagem do que com o WHILE Critérios de avaliação das linguagens • Confiabilidade – Um programa é confiável se ele se comportar de acordo com suas especificações sob as condições: • Verificação de tipo – Capacidade da linguagem testar se existem erros de tipo em determinado programa, ou pelo compilador ou durante a execução do programa – Verificação durante a execução é mais dispendiosa – Verificação durante a compilação é mais desejável Critérios de avaliação das linguagens Confiabilidade • Manipulação de exceções – capacidade da linguagem lidar com situações não-errôneas, mas pouco comum • Exemplo – criar um programa cuja rotina inclua expressões com 10 operações de divisão onde pode ter um divisor zero, linguagem preparada para aceitar essa operação • Apelidos (aliasing) – Definido livremente é a capacidade de se ter 2 ou mais métodos ou nomes distintos para fazer referência à mesma célula de memória – Utilizado com o propósito de reutilizar o espaço de armazenamento – Linguagem que permite a criação de alias é um problema para a legibilidade – Muitos alias torna o programa pouco confiável Influência sobre o projeto de linguagem • Arquitetura do computador – Exerce um papel crucial sobre o projeto das linguagens – As mais populares dos últimos 45 anos – projetada em função da arquitetura Von Neumann – São denominadas de linguagens Imperativas – imita a arquitetura do hardware CPUINPUT OUTPUT MEMÓRIA Instruções e dadosResultado das operações Influência sobre o projeto de linguagem • Arquitetura Von Neumann – Dados e programas armazenados na mesma memória – CPU que executa realmenteas instruções – separada da memória – Instruções e dados canalizados da memória para a CPU – Os resultados das operações na CPU transferidos para a memória Influência sobre o projeto de linguagem • Arquitetura Von Neumann – Linguagem Imperativas • Recursos centrais das linguagens são as variáveis – Modelam as células de memória, as instruções de atribuição baseadas em operações que canalizam para a CPU • Os operandos das expressões são canalizados da memória para a CPU • O resultado da avaliação é canalizado de volta para a célula de memória representada pelo lado esquerdo da atribuição Categorias de linguagem • Categorizadas em 4 níveis – Imperativas (ordem das instruções e comandos deve ser explícita) – Funcionais (baseadas em funções) – Lógicas (baseadas em regras) – Orientada a objeto (baseada em classe) – Linguagem de marcação – HTML (não especificam computações e sim descrevem a aparência geral de documentos) Ambiente de programação • Um ambiente de programação é um conjunto de ferramentas usadas no desenvolvimento de softwares • Esse conjunto pode ser – um sistema de arquivos / editor de texto / linkeditor/ compilador / coleção de ferramentas integradas • Unix / C++ / Smaltalk Resumo • Estudar linguagem aumenta a capacidade de usar diferentes programas de maneira mais inteligente e mais simples; • O projeto e avaliação de uma linguagem dependem do domínio em que serão usadas; • Os critérios mais importante para avaliar uma linguagem são a legibilidade, a escrita e a confiabilidade e o custo global (o software, treinamento, desenvolvimento); • A principal influência sobre o projeto de uma linguagem tem sido a arquitetura de máquina; • Principais métodos para implementar linguagens são a compilação, a interpretação pura e a implementação híbrida; • Os ambientes de programação tornaram-se partes importantes dos sistemas de desenvolvimento de software, onde a linguagem é um dos componentes;
Compartilhar