Aprenda tudo sobre o que é uma linguagem de programação e para que ela serve
Parece papo de nerd? Soa como muito abstrato e difícil? Será mesmo? Ao longo deste pequeno artigo, vamos explicar o que é uma linguagem de programação, quais os tipos mais usados, as mais populares, e uma série de aspectos relacionados e você verá que o “bicho” não é tão feio como imagina.
A origem da linguagem de programação
Compreender o que é e como começou, de certa forma passa por saber porque precisamos de uma linguagem de programação, ou várias na verdade. É uma questão que tem relação com os computadores – como você deve imaginar – e a obtenção de algum tipo de resultado por parte deles.
Em termos históricos, considera-se como primeiro mecanismo que poderia ser programado, ou seja, estabelecer-se uma sequência de ações para produzir algum tipo de resultado, a máquina analítica ou máquina de Babbage, que basicamente consistia de um engenho projetado pelo matemático Charles Babbage para produzir cálculos.
Para que a máquina de Babbage produzisse o resultado que se esperava, era necessário um conjunto definido de ações as quais se dão o nome de algoritmo e que foram concebidas por Ada Lovelace, uma matemática contemporânea do inventor do engenho.
Costuma-se dizer que a máquina de Babbage e os algoritmos de Lovelace, são respectivamente o primeiro esboço do que viríamos chamar mais tarde de computador e programa. Embora fossem extremamente simples comparados ao que temos hoje, conceitualmente é verdade, já que os princípios de um e outro, mantém-se basicamente os mesmos.
Qual a diferença entre Algoritmo e Linguagem?
Na verdade o que Ada Lovelace fez, foi colocar um conjunto de etapas ou passos que deveriam ocorrer para produzir resultados necessários e previsíveis para gerar a sequência de Bernoulli e que hoje chamamos de algoritmo. Ainda não poderia ser considerado uma linguagem tal como conhecemos hoje e logo você vai entender porquê.
Qualquer rotina ou trecho de instruções de programação corresponde a um algoritmo, que nada mais é do que passos detalhados de como se fazer algo. Assim, um algoritmo simplificado para verificar a iluminação de um ambiente e acender a lâmpada caso esteja apagada, seria algo como:
SE LÂMPADA APAGADA ENTÃO ACENDER LÂMPADA SENÃO NÃO FAZER NADA FIM
O que temos acima é chamado em computação de linguagem algorítmica ou simplesmente algoritmo.
Já a linguagem de programação propriamente dita, é análoga ao que as pessoas de diferentes nacionalidades usam para se comunicar entre si e que conhecemos como idiomas. Portanto, as mesmas instruções do algoritmo para acender a luz, podem ser escritas em diferentes idiomas ou no caso, de programação, usando diferentes linguagens, mas todas produzindo o mesmo resultado.
Mas a linguagem de programação é um pouco mais do que simplesmente diferentes conjuntos de palavras para representar ações. Por exemplo, cada linguagem tem sua própria sintaxe, que é um conjunto de regras de como as palavras devem ser escritas e como agrupá-las entre si, bem como a forma de utilizar caracteres específicos para que tenham sentido e sejam compreensíveis para o sistema em que são executadas.
Por que precisamos de linguagens de programação?
As linguagens de programação são um meio de se passar aos computadores instruções para ações que esperamos deles, como por exemplo, imprimir um documento, mas computadores não “falam e não entendem” português ou inglês.
Genericamente, por tradição, associa-se programação com computadores, mas atualmente há uma gama incrível de dispositivos (máquinas industriais, robôs, aparelhos eletrônicos, eletrodomésticos, etc) que têm programação embutida. Assim, em uma fábrica automobilística, os robôs responsáveis pela soldagem de várias partes de um automóvel, recebem uma programação específica para efetuarem os movimentos relativos à sua operação.
As máquinas, dispositivos diversos e computadores “compreendem” apenas sinais elétricos e que no caso de processadores, significam presença ou ausência de tensão elétrica. A correspondente representação humana compreensível disso, são os numerais inteiros ZERO e o UM, que se traduzem um sistema binário de números. Isso dá origem ao que se convencionou chamar linguagem de máquina.
Houve até em certo momento da história da computação em que se programou usando linguagem de máquina ou uma linguagem muito próxima disso e que se chama Assembly ou linguagem de montagem. As instruções Assembly são um pouco mais “amigáveis” do que 0s e 1s, mas exigiam apenas um interpretador, chamado de Assembler, que fazia a montagem do Assembly para ser usado pela “máquina”.
Mas linguagens como Assembly eram pouco amigáveis, visto que tratavam de instruções bem simples e diretamente relacionadas ao hardware. Ou seja, para armazenar um valor numérico qualquer, era necessário reservar um endereço na memória física e passar para esta posição de memória o dado que deveria ser armazenado. Em função disso, este tipo de linguagem foi chamada de linguagem de baixo nível.
Linguagens de alto nível
Por conta da dificuldade de se programar, tanto pelas características do código empregado para se fazer as coisas, bem como pela quantidade deste código, começaram a surgir linguagens cuja semântica e sintaxe eram mais simples, mais compreensíveis e ao mesmo tempo mais poderosas.
Se antes vários trechos de programação que antes não diziam nada a um leigo, agora instruções como CLEAR ou PRINT, faziam tudo o que se necessitava e tinha um significado mnemônico. A este conjunto de linguagens chamou-se de linguagens de alto nível. A maior parte das linguagens que conhecemos, são linguagens de alto nível.
Por que ter diferentes linguagens?
O surgimento das linguagens de alto nível, como Fortran ou Pascal, foi um grande avanço. Mas não bastava ser simples. Conforme a computação tornou-se acessível do ponto de vista econômico, diferentes áreas do começaram a beneficiar-se do uso dos computadores e com isso, começaram a surgir linguagens voltadas a atender necessidades específicas.
Por exemplo, a linguagem Fortran 77 nasceu para atender aplicações matemáticas e de engenharia, visto que continha bibliotecas matemáticas que eram fundamentais para os cálculos necessários aos profissionais destas áreas. Até então, nenhuma outra linguagem existente atendia este tipo de carência.
O Pascal foi a primeira linguagem estruturada e que desenvolveu-se no meio acadêmico e por um tempo serviu ao desenvolvimento de programas, até que uma linguagem mais poderosa em termos de funções e de estruturas tomasse seu lugar, a linguagem Delphi. que muitos consideram como uma evolução do Pascal, inclusive por ambas serem da Borland, e porque com o surgimento do Delphi, foi encerrada a evolução do Pascal.
No universo de programação, tivemos até linguagem com propósito educativo, que foi o BASIC (acrônimo para Beginner's All-purpose Symbolic Instruction Code), criada por 3 professores que tinham por objetivo ensinar os fundamentos de programação e por isso criaram um linguagem bastante simples.
Na mesma época do Turbo Pascal, começou a ganhar adeptos a linguagem C e o C++ e junto com o Delphi, tornaram-se populares no desenvolvimento de aplicações para Windows, ainda nas suas primeiras versões: 3.0 e 3.1. Isso foi determinante para seu sucesso e os ambientes destas linguagens seguiu a evolução dos sistemas Windows, garantindo sua vida útil.
Houve ainda linguagens destinadas a aplicações comerciais e negócios, como foi o caso do COBOL, que possivelmente represente uma das linguagens de programação mais antigas e que é ainda relativamente utilizada. Ela é escolhida em cálculos financeiros por suportar números muito grandes ou muito pequenos.
Portanto, o surgimento e sobretudo, o sucesso de muitas linguagens, foi resultado de demandas que surgiram e como cada uma das linguagens conseguia atender as necessidades dos programadores para produzir soluções suficientemente boas.
Aspectos de linguagens de programação
Como dissemos, muitas linguagens surgiram para suprir determinadas necessidades que as linguagens existentes não atendiam ou produzir resultados mais específicos ou ainda para que o trabalho de programação fosse mais simples. Sendo assim, vamos listar alguns aspectos que foram fundamentais para o surgimento de novas linguagens ou apenas a consolidação de algumas já existentes:
-
Linguagens estruturadas – o nome é praticamente autoexplicativo, na medida que consiste de programação de bem definida, composta por blocos de código similares a estruturas que têm sentido por si só ou que funcionam independente do restante do código, como laços de repetição, subrotinas, funções, etc;
-
Orientação a Objetos – foi um modelo de programação que se baseou no conceito de diversos trechos de códigos independentes que interagem entre si. Isso gera facilidade na construção do código, torna-o reutilizável, diminui a quantidade de programação e facilita a depuração, entre outros benefícios;
-
Programação linear – não tem a ver com a execução linear de código de programação, mas com a programação objetivando a resolução de problemas como por exemplo, otimização de recursos no emprego de matéria prima. Um exemplo real, é código usando funções de máximo e mínimo para cálculo de área de superfície e volume de sólidos. Muito empregado por matemáticos.
-
Linguagem compilada – as linguagens compiladas geram um programa final, que é compilado em uma linguagem que a máquina ou o sistema operacional executam. Normalmente o desempenho destas linguagens, é superior e geralmente há compiladores para os mais diversos sistemas, fazendo com que as linguagens sejam multiplataforma. Um exemplo deste tipo de linguagem, é a linguagem C;
-
Linguagem interpretada – estas linguagens exigem um interpretador, que basicamente é um programa que transcreve o código a medida em que ele é executado para “compreensão” por parte do sistema em que ele roda. Em função disso, normalmente as linguagens interpretadas são mais lentas, visto que a cada execução o processo de “tradução” é repetido. Possivelmente o exemplo de linguagem mais usada nesta categoria, seja o PHP.
Vale destacar que computação e consequentemente programação, trata de resolver problemas através de algo que automatiza tarefas e gera resultados a partir de outros dados. Assim, como a quantidade de problemas possíveis para serem tratados é literalmente infinita, a quantidade de soluções possíveis, também é, o que gera tantos paradigmas e consequentemente aspectos de linguagens.
Por esta razão os aspectos de programação mudam com o tempo e com as necessidades, fazendo com que novas características e conceitos surjam.
Quais as melhores linguagens de programação?
Como acabamos de abordar, cada uma das linguagens existentes nasceu para suprir determinadas necessidades e assim se desenvolveram. Portanto, apontar a melhor, não faz muito sentido. Uma determinada linguagem pode produzir resultados muito bons em determinado tipo de aplicação e em outro, não. O que hoje pode parecer uma solução bastante razoável, amanhã pode já não ser.
Embora a adoção de uma linguagem de programação tenha fundamentação técnica, há um componente pessoal também na escolha e sempre haverão defensores de uma ou outra. Não é nosso papel fazer este tipo de escolha.
Sendo assim, ao invés de apontar quais são as melhores ou elaborar algum ranking, vamos listar algumas das mais populares na atualidade e em que escopo cada uma tem tido destaque. Escolher será algo que caberá a você, com base no que precisa fazer como programador:
JAVA
É uma linguagem razoavelmente “jovem”, visto que surgiu na década de 90, criada pela Sun Microsystems. Uma das particularidades é que ela é interpretada por uma Máquina Virtual, conhecida como Java Virtual Machine. Atualmente o sucesso do Java está relacionado à aplicações Android, visto que é a mais usada com este objetivo, embora também tenha muitos outros usos;
Javascript
Apesar do nome, não tem relação com o Java. Foi desenvolvida como um linguagem para ser executada nos navegadores e assim permitir que parte do processamento fosse feito diretamente na máquina do usuário, o que se chama client-side. É uma linguagem interpretada e é a principal linguagem executada no lado do cliente, embora já exista a variação executada no servidor, chamada de Node.JS;
Python
Linguagem interpretada, que nasceu com objetivo de produzir um código mais conciso e legível. É usada desde a criação de pequenas aplicações até sistemas complexos. Contém várias ferramentas para Interface Gráfica do Usuário (GUI) e bibliotecas para programação web, o que tem favorecido seu uso na Internet. Executada no lado do servidor;
Ruby
Como é dito no próprio site da linguagem, “O Ruby é totalmente livre. Não somente livre de custos, mas também livre para utilizar, copiar, modificar e distribuir”. É multiplataforma, ou seja, suportada em sistemas operacionais como Linux, Windows, Solaris. Graças ao Framework Ruby on Rails, a criação de aplicações para Web é bastante simplificada e assim tem ganho mais e mais adeptos neste meio. É interpretada;
PHP
Ganhou popularidade na medida em que se tornou a principal linguagem para sites de Internet, atuando no lado do servidor e combinada com HTML. É interpretada. Alguns dos sites mais populares do mundo são construídos a partir desta linguagem e estima-se que mais de 30% de todos eles, sejam feitos usando PHP
ASP
É a sigla para - Active Server Pages (Páginas Ativas de Servidor) para uma linguagem interpretada. Foi criada pela Microsoft com o objetivo principal de criar aplicações para Internet, rodando do lado do servidor. É integrável com o HTML, assim como o PHP, com o qual por algum tempo tenha rivalizado na disputa de linguagem mais usada para criação de sites. Embora ainda bastante usada, tem perdido terreno por rodar apenas em servidores web sob o sistema Windows.
Perl
Considerada entre as atuais linguagens uma das mais robustas, é também a linguagem open source utilizada para os mais diversos fins. Mesmo sendo multiplataforma e sendo usada em várias áreas, é no tratamento e manipulação textos que encontra seu maior poder.
C
Entre as linguagens utilizadas em larga escala, é a mais antiga. Por ser compilada, presta-se muito bem para criação de software como aplicações / programas. Deu origem à também popular C++, que diferia-se da linguagem mãe por conter orientação a objetos, mas conforme ambas ganharam novas versões, cada uma assumiu características próprias.
C++
Embora tenha tido como origem a linguagem C e ganho classes / objetos, o C++ assumiu características próprias que fizeram dela uma das principais linguagens para criação de aplicações para os mais diversos fins. Por ser compilada e existir compiladores para ambientes diversos, é multiplataforma.
C#
Outra linguagem compilada e apesar de ser baseada em aspectos a linguagem C, não é exatamente uma derivação desta. Foi criada pela Microsoft para integrar a plataforma .NET (diz-se dot net) e otimizar a interoperabilidade de diferentes aplicações e tecnologias da empresa de Redmond.
Swift
É uma linguagem compilada, criada pela Apple com o objetivo de desenvolver aplicações para os sistemas operacionais da empresa. Embora tenha nascido a partir do Objective-C, é independente e não deve substituir a sua geradora.
Objective-C
O nome sugere – e comprova-se – que tenha tido origens no C, mas ganhou a orientação a objetos e o conceito de reutilização de código. Popularizou-se quando foi incorporada pela Apple para produção de aplicações.
BASH/Shell
Nascido para poder executar os comandos das linhas de comandos do sistema operacional o Shell e o Bash (Acrônimo para "Bourne-Again Shell"), tem por finalidade automatizar tarefas que exigiam várias operações manuais do usuários sobre o sistema operacional.
A lista de linguagens, suas características, aplicações, histórias e curiosidades pode ser muito extensa, já que existem muito mais do que as que mencionamos até aqui. Este mesmo artigo feito 10 anos antes ou 10 depois, certamente daria destaque a outras linguagens que nem mesmo citamos aqui, já que a popularidade de cada uma é reflexo das necessidades e desejos momentâneos.
Conclusão
Pudemos entender o que é uma linguagem de programação, suas origens, para que servem, como e quando utilizá-las e que não há uma linguagem que seja a melhor, mais prática ou mais simples, mas aquela que cumpre um papel para um momento específico e de acordo com um resultado que esperamos. Linguagens são ferramentas da mesma forma que as diferentes que são usadas para construir uma casa.