- Published on
Critérios para avaliação de linguagens de programação
- Authors
- Name
- Dheyson Alves
- @dheysonlalves
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 oend if
e oend 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
- Fortran: https://fortran-lang.org/pt/
- Lisp: https://lisp.com.br/#sec-
- Akitando - Python? Java? Rust? Qual a Diferença? | Discutindo Linguagens: https://www.youtube.com/watch?v=MI9cdxETA4c
- SEBESTA, R. W. - Conceitos de Linguagens de Programação - Nona Edição