Published on

Critérios para avaliação de linguagens de programação

Authors

Introdução

Na ciência da computação, utilizamos de linguagens de programação para criar programas. No entanto, muitas vezes somos introduzidos a linguagens por vários motivos, a linguagem utilizada na faculdade, o conjunto de ferramentas da empresa que utilizam uma linguagem em comum. Logo muitas vezes a escolhemos por necessidade, em vez de objetivos. Esse artigo vamos debater um pouco como ter critérios para escolher uma linguagem de programação, independente da objetivo.

Razões para estudar profundamente os conceitos de linguagens de programação

Antes de conversamos sobre os critérios, vamos entender um pouco de porque devemos entender como funcionam as linguagens de programação.

Capacidade para aumentar ideias

Sabemos muito bem que conhecimento aprofundado nos permite observar soluções antes não percebidas. Ter conhecimentos aprofundados, além dos fundamentos, nos permitem explorar mais recursos da linguagem. Aumentando nossa capacidade de ideias.

Base para escolha de novas linguagens

Isso nos leva a criar nossos próprios critérios, de quando usar um recurso e mais importante, quando não usar. Criando um embasamento para escolher linguagens adequadas para cada problema. Eliminando o problema que muitos programadores (eu incluso) temos, em escolher uma linguagem por necessidade, em vez de por objetivo.

Habilidade de aprender novas linguagens

Linguagens de programação tem seu paralelo com linguagem natural, quando conhecemos os fundamentos de linguagens de programação. Nossa capacidade para relacionar conceitos melhora, facilitando aprender novas linguagens.

A importância da implementação

Em programação, podemos resolver um problema de várias formas, ter maior domínio dos fundamentos, nos permitem relacionar conceitos e criar novas soluções.

Melhor uso das linguagens já conhecidas

Nesse conjunto de informações fundamentais, nos permitem ter melhor domínio da própria linguagem.

Avanço geral das linguagens na computação

Com isso, permite facilidade em ler novas atualizações e melhorias de linguagens. Ler papers de temas relacionados a avanços de linguagens.

Domínios da programação

A programação tem muitas aplicabilidades, vamos debater um pouco, passando um pouco da história de algumas linguagens.

Aplicações Científicas

Fortran (acrônimo de IBM Mathematical FORmula TRANslation System) é uma linguagem de programação voltada para a computação científica e engenharia, com ampla aplicabilidade de processadores e de alta performance. Desenvolvida inicialmente na década de 1950. Até hoje é utilizada amplamente, e recebe atualizações até hoje.

Muitos casos de uso hoje ela é aplicada, por exemplo:

  • Análise de elementos finitos;
  • Previsão do tempo e estudos atmosféricos e oceânicos;
  • Simulações de nanopartículas, genomas, DNA e estruturas atômicas.

Aplicações empresarias

A partir de 1950 começamos a ter aplicações com foco empresarial. A primeira linguagem com esse foco foi o COBOL. Ainda é possível encontrar projetos ativos em COBOL, embora podem ser considerados projetos legados.

Inteligência Artificial

Antes de 1990, a linguagem de alto nível amplamente usada foi da família LISP. No caso de Inteligência Artificial, é uma área caracterizada por elementos simbólicos, em vez de numéricos. Por exemplo:

  • Em cenários lógicos SE ENTÃO:
`SE` sintoma `=` febre `E` dor de cabeça `ENTÃO` diagnostico = gripe

Embora temos sistemas que integram computação numérica e simbólica:

  • Assistentes de IA (Large Language Model);
  • Sistemas híbridos (redes neurais para inferência probabilística);

Programação de Sistemas

Linguagens com base para sistemas operacionais. São extremamente eficientes e usam recursos de baixo nível(acesso a recursos do hardware). Em 1960 e 1970, fabricantes como IBM, Digital e a Burroughs (UNISYS). Desenvolveram suas a linguagens de alto nível para lidar com os softwares de sistemas. A IBM construiu a linguagem PL/S, um dialeto de PL/I. A digital utilizou o BLISS, que era um nível acima do assembly. Já o Burroughs utilizava o ALGOL estendido. Nessa fase que sistemas operacionais como o UNIX foram escritos, todo em linguagem C(ISO, 1999).

Software para Web

Nesse momento, com o surgimento da web global, que surgiram linguagens de Script para apresentação de conteúdos em HTML. PHP, Javascript, Python e outras linguagens de script.

Critérios para a avaliação de linguagens

Existem alguns critérios que podemos usar para avaliar uma linguagem de programação. Os três fundamentais são, Legibilidade, Facilidade de Escrita e Confiabilidade. Cada critério desse tem características, que variam de contexto a contexto. Que vamos explorar em seguida. Por exemplo, existem elementos, de linguagem que facilitam a confiabilidade, mas dificultam a legibilidade e facilidade de escrita.

Legibilidade

É a facilidade de entendimento na escrita de determinada linguagem. Até os anos 1970, o software era orientado a máquina, ou seja, era apenas legível para máquina, desconsiderando os usuários que a escreviam. Pós anos 1970, a manutenção tornou-se um custo, e foi requirido desenvolver softwares mais legíveis;

Simplicidade Geral

Medimos o quão simples pode ser a linguagem. No entanto, o excesso de simplicidade afeta a legibilidade. Um software é legível quando o leitor consegue entender o programa, usando os próprios elementos da linguagem de programação, sem precisar de novos conceitos.

Ortogonalidade

É a possibilidade de construir estruturas maiores (controle e dados da linguagem) com elementos primitivos. Existem linguagens que nos permitem ter acesso a ponteiros, tem linguagens que gerenciam isso por baixo dos panos. Cada linguagem tem alguma restrição, cada paradigma, abdicamos de algo na linguagem. A simplicidade da linguagem, pode gerar complexidade para realizar certas tarefas. Muitos casos de exceção pode criar "gambiarras" para realizar certas atividades em uma linguagem.

Tipos de dados

Ter os tipos de dados em uma linguagem, nos permite ser claros em seu significado. Exemplo, se uma linguagem não tivesse boolean, poderíamos representar seu estado com um número:

	isActive = 1 // isso não deixa claro a intenção
	isActive = true // o tipo boolean cria essa clareza

No entanto, colocando como tipo número, sem um pré-conceito dessa informação, não fica claro. Por isso tempos o tipo boolean.

Projeto de Sintaxe

A formatação dos identificadores nos ajudam a entender melhor o código. Identificadores de variáveis, de funções, de classes.

-As palavras especiais ou reservadas, nos permitem escrever estruturas de controle mais concisas (for, while, do).

  • Estruturas de início e finalização { e }, essa forma é pouco legível para saber o que exatamente foi fechado. Na linguagem Ada, temos o end if e o end loop. Que nos informa com clareza quando um bloco foi fechado ou não. Embora essa clareza depende de programador a programador.

  • Forma e aparência, ser semântico na escrita da linguagem. Sempre escrevemos o código para outro ser-humano, e não para máquina.

  • Um exemplo clássico de falta de clareza é o comando grep do UNIX, ele por si só, não informa nada sem conhecimento prévio.

  • g de global, buscar todos os matches no arquivo;

  • re de expressão regular

  • p imprimir as sub-cadeias encontradas;

Facilidade de Escrita

A facilidade de escrita, depende exclusivamente de qual a projeção da linguagem. Qual o motivo da sua criação, é importante saber qual a proposta inicial de cada linguagem.

  • A simplicidade e ortogonalidade da linguagem podem ajudar a criação de programas complexos, conhecendo de suas estruturas internas.
  • Suporte a abstrações, podemos abstrair por processos, ou por dados; Seja por a instalação de um subprograma que resolve o problema, ou a estrutura da linguagem que está mais próximo do domínio do problema;

Expressividade da linguagem

Cada linguagem ter formas diferentes de resolver o mesmo problema, mas existem linguagem que nos entrega formas de nos expressar de forma mais enxuta. Por exemplo:

	count++; // exemplo enxuto
	count = count + 1; // exemplo completo com a mesma solução

Confiabilidade

Escrevemos programas para clientes, e é importante sabermos o quão confiável é a linguagem que utilizamos. Existem formas de garantir isso.

  • Verificação de confiabilidade de tipos, tanto por parte do compilador, quanto por parte na execução do programa;
  • Tratamento de exceções, também é um recurso que nos ajuda a dar mais confiabilidade em nosso código;
  • Testes unitários e de software;
  • A legibilidade e facilidade de escrita;

Custos

Um dos grandes fatores de influência da linguagem é seu custo. Custo de manutenção, de portabilidade, generalidade, flexibilidade e legibilidade. Então ao escolher a linguagem, devemos observar sua plataforma, e quanto de tempo/dinheiro pode ser investido para alcançar bons resultados.

Conclusão

A linguagem de programação é a ponta do iceberg quando desenvolvemos software. Com ela, vem toda uma bagagem de ferramentas, plataformas que integram em conjunto quando desenvolvemos produtos. É importante antes de considerar qual caminho seguir, entender os elementos básicos do que faz a linguagem, analisando sua legibilidade, facilidade de escrita e confiabilidade.

Referências