Fala pessoal, tudo bem?
Pra você, qual a melhor linguagem de programação (LP)?
A resposta correta é... Depende!
Lá vem o depende...
Pois é, isso mesmo. Saber qual a melhor LP depende do contexto, da aplicação, do problema, do que precisa na aplicação, a arquitetura do cliente. E esse contexto precisa ser analisado de modo que essa escolha seja a melhor para a situação problema e não porque o colega A prefere a LP X ou Y.
Vamos por partes:
Antes de tudo: O que é uma LP?
Esse conceito peguei daqui.
É uma linguagem formal que, através de uma série de instruções, permite que um programador escreva um conjunto de ordens, ações consecutivas, dados e algoritmos para criar programas que controlam o comportamento físico e lógico de uma máquina.
1. LPs de baixo nível
a. Linguagem de máquina: coleção de binários que o computador lê e interpreta.
b. Linguagem Assembly: primeira tentativa para uma linguagem próxima da usada por seres humanos.
2. LPs de alto nível
Essas usam tradutores (a) ou compiladores (b):
a. os códigos são executados à medida que são traduzidos.
b. os códigos são traduzidos de uma só vez.
O que se leva em consideração em um projeto de LP
É importante ter alguns pontos que devemos levar em consideração quando vamos escolher uma LP para um projeto, como nos trás Sebesta (2011):
- A legibilidade diz respeito à facilidade com a qual os programas podem ser lidos e entendidos;
- A facilidade de escrita é a medida da facilidade que uma linguagem pode ser usada para criar programas;
- A confiabilidade diz respeito ao quanto um programa está de acordo com suas especificações em todas as condições;
- O custo diz respeito a treinar programadores para usar a LP, escrever programas na linguagem, compilar programas na linguagem, executar programas escritos em uma linguagem, sistema de implementação da linguagem, a confiabilidade baixa e manter programas (correções + modificações).
Algumas características que devem ser levadas em consideração:
a. simplicidade geral (construções básicas e multiplicidade de recursos);
b. ortogonalidade ( um conjunto construções primitivas pode ser combinado a um número de formas para construir as estruturas de controle e de dados da linguagem);
c. tipos de dados (presença de mecanismos adequados para definir tipos e estruturas de dados);
d. projeto de sintaxe (tem a ver com o formato dos identificadores, as palavras especiais e a forma e semântica);
e. suporte à abstração (habilidade de definir estruturas em que muitos dos detalhes sejam ignorados);
f. expressividade (existência de operadores que permitem muitas computações com um programa muito pequeno);
g. verificação de tipos (execução de testes para detectar erros de tipos em um programa);
h. tratamento de exceções (habilidade de um programa de interceptar erros em tempo de execução);
i. restrição de apelidos (permitidos quando é possível ter um ou mais nomes para acessar a mesma célula de memória);
j. portabilidade (a facilidade com a qual os programas podem ser movidos de uma implementação para outra);
k. reusabilidade (diminuir a necessidade de criar diferentes subprogramas que implementam o mesmo algoritmo em diferentes tipos de dados);
l. generalidade (a aplicabilidade da LP a uma ampla faixa de aplicações);
Programação procedural X Computação paralela
Na programação procedural, o programador descreve de forma detalhada o que a máquina deve fazer.
Já na computação paralela, resolvem-se os problemas com vários computadores trabalhando ao mesmo tempo, isso com o foco em um único alvo.
Os paradigmas
Dando um gugôu você encontra qual o significado do que é um paradigma: um exemplo que serve como modelo ou padrão.
Na programação, temos diversos paradigmas, diversos modelos e padrões para resolver diversos problemas:
1. Imperativo: o foco da solução está em como o problema deve ser resolvido pela máquina (procedural). Usado quando a aplicação requer manutenção e mudanças a longo prazo. Linguagens como Pascal e Fortran usam esse tipo de paradigma.
2. Orientado a Objetos: os atributos e comportamentos estão contidos dentro de um único objeto, geralmente usam classes para definir esses objetos. Além disso, as aplicações são desenvolvidas e interpretadas por diferentes plataformas. C++, Java, JavaScript e Python são exemplos de projetos de LP orientados a objetos.
3. Orientado a Eventos: aqueles que definem a execução de determinadas funções conforme os eventos são disparados pelo usuário. Visual Basic e Delphi são exemplos que usam esse paradigma.
4. Funcional: indicado quando a resolução do problema querer, majoritariamente, de uma base matemática. Aqui se destaca o uso das funções e, na hora de resolver um problema, o divide em blocos onde são implementadas funções. Linguagens que usam esse paradigma são LISP e Haskell.
5. Declarativo: foca em o que deve ser resolvido, nesse paradigma são utilizadas verdades lógicas imutáveis, possuindo nível de abstração maior que os outros paradigmas, XML e HTML são exemplos de linguagens de marcação que usam esse paradigma.
6. Lógico: ou restritivo é o uso de uma notação lógica formal para comunicar processos computacionais para um computador, sendo muito utilizado para resolver problemas na área de Inteligência Artificial, baseando-se em análises lógicas e matemáticas, além disso são usados fatos, regras de inferências e busca. A Prolog é uma LP que faz uso desse paradigma.
Muita coisa pra processar? É assim mesmo! Consegue perceber agora que não existe LP perfeita para todas as situações? Depois entro mais a fundo nesse tema de Conceitos de LPs. Recomendo a leitura do livro Conceitos de Linguagens de Programação do Robert W. Sebesta, nesse post usei a 9ª edição como base.
Top comments (0)