7
Critérios Para Seleção de uma Linguagem de Programação Derick E. D. Rosa 1 , Renato R. M. Oliveira 1 1 Instituto de Ciências Exatas e Naturais (ICEN) – Universidade Federal do Pará Campus Universitário do Guamá, Av. Augusto Corrêa, no.1, CEP: 66.075 – 900 Cidade: Belém-PA {derick.rosa,renato.oliveira}@icen.ufpa.br 1. INTRODUÇÃO Diante da grande diversidade de linguagens e ferramentas, evolução tecnológica, expansão da computação móvel e crescente exigência de qualidade, escolher uma linguagem de programação se tornou uma tarefa árdua. Muitas vezes sua importância é ignorada e as escolhas são baseadas apenas em preferências dos desenvolvedores ou políticas da empresa, sem um critério realmente válido do ponto de vista técnico. Uma linguagem de programação é caracterizada em termos de uma gramática e um significado bem definidos. Além disso, a linguagem deve ser implementável (executável) com eficiência aceitável e deve ser universal, no sentido que deve ser possível expressar todo problema computável nessa linguagem; recursão, comandos de interação (como while loops) ou mesmo comandos de desvio (como go to) são suficientes para garantir universalidade a uma linguagem de programação. Ao se estudar os critérios de seleção das linguagens de programação, obtemos um conhecimento que nos ajuda a compreender e utilizar qualquer linguagem, uma vez que o conhecimento de diversas linguagens, seus paradigmas, limitações e vantagens são base de escolha da linguagem apropriada para resolver um determinado problema ou para desenvolver um projeto, logo, o programador fará um melhor uso da linguagem de programação. Este trabalho visa introduzir conceitos que podem auxiliar na escolha com

Critérios Para Seleção de uma Linguagem de Programação

Embed Size (px)

Citation preview

Page 1: Critérios Para Seleção de uma Linguagem de Programação

Critérios Para Seleção de uma Linguagem de Programação

Derick E. D. Rosa1, Renato R. M. Oliveira1

1Instituto de Ciências Exatas e Naturais (ICEN) – Universidade Federal do ParáCampus Universitário do Guamá, Av. Augusto Corrêa, no.1, CEP: 66.075 – 900

Cidade: Belém-PA

{derick.rosa,renato.oliveira}@icen.ufpa.br

1. INTRODUÇÃO

Diante da grande diversidade de linguagens e ferramentas, evolução tecnológica, expansão da computação móvel e crescente exigência de qualidade, escolher uma linguagem de programação se tornou uma tarefa árdua. Muitas vezes sua importância é ignorada e as escolhas são baseadas apenas em preferências dos desenvolvedores ou políticas da empresa, sem um critério realmente válido do ponto de vista técnico.

Uma linguagem de programação é caracterizada em termos de uma gramática e um significado bem definidos. Além disso, a linguagem deve ser implementável (executável) com eficiência aceitável e deve ser universal, no sentido que deve ser possível expressar todo problema computável nessa linguagem; recursão, comandos de interação (como while loops) ou mesmo comandos de desvio (como go to) são suficientes para garantir universalidade a uma linguagem de programação.

Ao se estudar os critérios de seleção das linguagens de programação, obtemos um conhecimento que nos ajuda a compreender e utilizar qualquer linguagem, uma vez que o conhecimento de diversas linguagens, seus paradigmas, limitações e vantagens são base de escolha da linguagem apropriada para resolver um determinado problema ou para desenvolver um  projeto, logo, o programador fará um melhor uso da linguagem de programação. Este trabalho visa introduzir conceitos que podem auxiliar na escolha com critérios, indispensáveis para conduzir a uma tomada de decisão mais consciente, não se trata de um indicativo das melhores linguagens, porém um conjunto de conceitos essenciais para se fazer uma escolha técnica e imparcial.

2. CRITÉRIOS PARA AVALIAÇÃO DE UMA LINGUAGEM DE PROGRAMAÇÃO

No processo de avaliação de uma linguagem de programação é necessário o entendimento de conceitos importantes são eles: legibilidade, simplicidade, expressividade, ortogonalidade, confiabilidade e portabilidade.

De forma geral, a Legibilidade diz respeito à facilidade que os programas podem ser lidos e compreendidos. Esta característica influi direta ou indiretamente na produtividade, depuração e manutenção do software. Por exemplo, um programa

Page 2: Critérios Para Seleção de uma Linguagem de Programação

que pode ser lido de cima a baixo, é muito mais fácil de entender do que aquele que exige do leitor pular de uma instrução à outra para seguir a ordem de execução. A sintaxe também influencia na legibilidade dos programas, reduzir os identificadores a tamanhos pequenos a prejudica; a aparência do programa é influenciada pelas formas das palavras especiais de uma linguagem; a presença de facilidades adequadas para definir tipos de dados e estruturas de dados em uma linguagem e projetar instruções para que sua aparência indique sua finalidade, é um auxílio para a legibilidade.

É totalmente importante que uma linguagem de programação seja fácil de ser aprendida e dominada. Isso representa a sua Simplicidade. A simplicidade pode ser tanto sintática quanto semântica. A simplicidade sintática exige que não haja ambigüidades na representação da linguagem, sendo tudo feito de um modo preciso. Já a simplicidade semântica refere-se a independência das palavras de uma linguagem de programação ao contexto. Quanto mais simples for uma linguagem, mais rápido será o seu aprendizado e mais rápido a solução para algum problema poderá ser encontrado.

A Expressividade refere-se à adequação das formas de especificar computações, dados e procedimentos a fim de que se apresentem de forma clara e simples.

Todas as linguagens de programação são igualmente expressivas, se um algoritmo/processo pode ser implementado numa certa linguagem, então também pode ser implementado noutra linguagem qualquer. A facilidade de expressão disponibilizada é muito importante! A expressividade de uma linguagem de programação depende dos conceitos primitivos por esta disponibilizados. A inclusão da instrução “for” em uma linguagem de programação torna mais fácil à escrita de laços de contagem do que com o uso de “while”, por exemplo,

Em Java.aList.get(aList.size -1)

Em Ruby.anArray.last

Fica claro que o código parece ser melhor expresso com Ruby. "Ser expressivo" pode facilitar futuras manutenções, ampliações e integrações no código.

Quando se fala de combinar estruturas de uma linguagem de programação, de forma que melhor se adapte ao problema a ser resolvido, isso se refere à Ortogonalidade de uma linguagem de programação. Desse modo é gerado um grande número de combinações de estruturas em uma linguagem de programação, ampliando ainda mais a sua área na resolução de diversos problemas.

Alguns exemplos de ortogonalidade são a combinação de arrays com registros, onde cada espaço do vetor abrangeria um registro. Outro exemplo é a interação entre ponteiros e os tipos primitivos de dados (inteiro, real, caractere), onde o ponteiro deve ser capaz de apontar para qualquer tipo de variável ou estrutura de dados.

A Confiabilidade está diretamente ligada à facilidade de escrita e a legibilidade (pois há mais facilidade na correção de um programa) e refere-se aos mecanismos que permitem o desenvolvimento de programas conforme o conjunto de requisitos.

Assim para se obter uma grande confiabilidade é interessante que a linguagem ofereça suporte as seguintes capacidades: (1) verificação de tipos; (2) manipulação de exceções; (3) legibilidade e Capacidade de Escrita.

Page 3: Critérios Para Seleção de uma Linguagem de Programação

O suporte a verificação de tipos, consiste em assegurar que as operações considerem os dados sempre conforme seus tipos corretos, ou seja, de acordo com a definição de tipo. Quanto ao tratamento de exceções a linguagem deve permitir que procedimentos especiais sejam executados em caso de comportamento não usual e ainda que seja permitido diagnosticar erros em tempo de execução.

A Portabilidade refere-se à capacidade de uma linguagem de programação ser multiplataforma, ou seja, de rodar em várias plataformas, sem que sejam necessárias adaptações, como a adaptação de hardware ou software. Uma outra coisa importante no critério da portabilidade é a longevidade, onde os ciclos de vida útil dos softwares e hardwares não precisam estar síncronos, sendo permitida, deste modo, a mudança de ambos, sem que afete a execução da linguagem de programação.

3. CRITÉRIOS PARA SELEÇÃO DE UMA LINGUAGEM DE PROGRAMAÇÃO

Quando propõe-se o projeto e desenvolvimento de um software, caso o cliente não apresente um requisito técnico especificando qual a linguagem deverá ser utilizada, deve-se avaliar e selecionar dentre as diversas tecnologias disponíveis a que vai trazer mais retornos para o projeto em questão. Nesse processo de seleção identificam-se vários aspectos importantes a serem considerados como a implementação, competência do programador na linguagem, semântica, ambiente de programação e o modelo de computação.

A Implementação refere-se ao tradutor da linguagem que é utilizado, e possibilita usar a linguagem mais inteligentemente, pois estará avaliando as conseqüências de suas decisões. Requer mais esforço implementar um linguagem de programação do que projetar um processador para a linguagem. O implementador também deveria ter “os recursos para escrever manuais de usuários, textos introdutórios e avançados; ele deveria construir ferramentas auxiliares de programação e procedimentos de bibliotecas; e, finalmente, deveria ter a vontade e os recursos, de natureza política, para vender a linguagem aos fregueses a que ela se destina. Como métodos de implementação existem a compilação, interpretação pura, implementação híbrida. (Hoare 1973).

Outro motivo que afeta fortemente a escolha de uma linguagem de programação é o conhecimento, a Competência do Programador na linguagem. É óbvio que dentre um leque de opções de linguagens de programação, se um programador souber utilizar uma certa linguagem do que as outras, essa linguagem será uma forte candidata a ser utilizada como linguagem principal. Porém, quando se trata de um grande número de programadores, como em uma empresa por exemplo, esse critério já não se torna tão decisivo, pois deve ser levado em consideração aos paradigmas que uma linguagem de programação possa resolver, para que a empresa tenha um bom desempenho. Por outro lado, se uma empresa optar por uma linguagem que a maioria dos programadores não saiba, já haveria um custo maior com os cursos que deveriam ser propostos a eles.

A Portabilidade trata da possibilidade de migração de um software, entre plataformas ou entre hardwares distintas, e pode ou não ser essencial dependendo do contexto e finalidade do desenvolvimento do software.

Page 4: Critérios Para Seleção de uma Linguagem de Programação

Por exemplo, um software desenvolvido em Java pode ser executado em qualquer equipamento que possua um interpretador Java instalado.

Como já comentado, pode ser que em alguma situação, mesmo que um programador saiba muito bem utilizar uma determinada linguagem de programação, ela pode não resolver uma certa quantidade de problemas, sendo assim, é bom que se escolha uma linguagem de programação levando em consideração o critério da sintaxe, pois algumas aplicações se adaptam melhor à sintaxe de uma linguagem do que as outras.

A Semântica é a característica relacionada ao significado (ou comportamento) das linguagens de programação, sendo complementar à sintaxe da linguagem, que se preocupa em descrever as estruturas de uma linguagem de programação, pois descreve o significado das estruturas do programa expressos na sua sintaxe. No entanto, ao contrário da sintaxe, não existe ainda um formalismo aceito globalmente para descrever a semântica da linguagem.

É possível ainda identificar dois tipos de semântica, a semântica estática que descreve as características de um programa válido e a semântica dinâmica que se refere aos resultados da execução do programa.

O Ambiente de Programação também é outro critério importante, pois tanto as ferramentas que serão utilizadas com a linguagem, tanto a biblioteca, irão afetar a utilização de determinada linguagem. Quanto melhor for o ambiente de programação, como um bom editor, um sistema de controle de códigos fontes, uma boa interface com o próprio desenvolvedor, menor será o esforço para produzir sistemas. Mesmo que algumas dessas ferramentas sejam independentes da linguagem, como o sistema operacional, elas podem estar especificadas quanto a uma determinada linguagem de programação.

Um ponto final para a seleção de uma linguagem de programação é o Modelo de Computação, ou do processamento. Por exemplo, se uma aplicação requer uma grande quantidade de busca heurística, seria mais apropriado uma linguagem que segue o modelo orientado a lógica. Por outro lado, simulações são geralmente mais facilmente implementadas usando uma linguagem de programação orientada a objetos.

4. REFERÊNCIAS

“Introdução a Paradigmas de Linguagem de Programação”Acessado em 19/03/2011http://www.estig.ipbeja.pt/~rmcp/estig/20052006/1s/lp/pdf/teorica/cap1.pdf

“Paradigmas de Linguagem de Programação”,Acessado em 19/03/2011http://www.do.ufgd.edu.br/valguimaodakura/aulas-plp/plp_aula01-cap1Sebesta.pdf

Manssour, Isabel, “Paradigmas de Linguagens I”Acessado em 19/03/2011http://www.inf.pucrs.br/~gustavo/disciplinas/pli/material/paradigmas-aula01.pdf