À medida que as tecnologias se tornam mais acessíveis, é natural que mais pessoas se interessem em utilizá-las e, até mesmo, construir soluções. Em muitos países, aprender programação tornou-se um conteúdo nas escolas para estimular a criatividade, a interação e o aprendizado das crianças.
A profissão de programador é, hoje, uma das mais requisitadas pelo mercado de trabalho e vem deixando de ser algo específico. Até outras profissões que, anteriormente, não estavam relacionadas ao saber programar, hoje, demandam a necessidade desse conhecimento. Dessa maneira, nesta lição, aprenderemos um pouco sobre os tipos de linguagem de programação e seu funcionamento.
Um dos principais desafios, quando se fala em programação, é conseguir criar software ou sistemas por meio de tecnologias que consigam, mesmo com o passar do tempo, manter-se eficientes. Aqui, então, encontramos um aspecto muito discutido por quem atua nessa área: a questão das tecnologias legadas. Você já ouviu esse termo em algum momento de sua vida? Sabe do que se trata?
Muitas empresas deixam as decisões sobre qual tecnologia utilizar nas mãos do gerente de tecnologia, e este, muitas vezes, discute isso com sua equipe de programação. Acontece que os programadores, em geral, escolhem linguagens de programação e banco de dados de acordo com suas preferências (em muitos casos, a linguagem que ele mais gosta ou sabe utilizar melhor). Porém nem sempre a linguagem que eu tenho maior facilidade de uso é a melhor para aquele tipo de solução a ser implementada ou é a tecnologia que permitirá um ciclo de vida maior para o software. Isso tem sido um grande desafio e, a cada ano, a situação é ainda mais complicada, pois sempre haverá fatores positivos e negativos quando se avalia cada linguagem de programação a ser escolhida.
Será que uma linguagem de programação com quase 70 anos, ainda, poderia ser útil para a criação de determinadas soluções? A resposta é sim! Você sabe de qual linguagem de programação estamos falando? Ela contém seis letras apenas: FORTRAN.
Se você pesquisar alguns rankings de uso de linguagens de programação, você poderá perceber que a linguagem Fortran sempre está bem colocada, isso porque possui um excelente e superior formato para processamento científico de números. Essa linguagem foi desenvolvida para um modelo de computador, o IBM 704, entre os anos de 1954 e 1957, e, durante os anos 60, foi a linguagem mais utilizada no mundo, e isso se deu graças aos vários compiladores terem uma curva de aprendizado pequena e lidarem muito bem com números complexos.
Com o advento da linguagem C (essa é outra linguagem que também está entre as mais utilizadas e mais importantes), principalmente, durante os anos 1970, o Fortran perdeu um pouco a sua força. Porém, em anos recentes, a comunidade científica, que precisa trabalhar com números com muitas casas depois da vírgula, começou a perceber como ela era poderosa nesse sentido. Vida longa ao Fortran!
Se quiser aprender um pouco sobre a linguagem FORTRAN, recomendo a você a leitura de um guia básico de programação em linguagem FORTRAN. Você pode acessar o guia clicando aqui.
Na lição anterior, aprendemos sobre o papel dos compiladores e vimos que eles ganharam cada vez mais importância à medida que a computação precisou atender usuários e necessidades específicas de outras áreas (comerciais, estatísticas, científicas).
Dessa maneira, as linguagens de alto nível (mais próximas da linguagem humana) se tornaram essenciais para que a criação de softwares fosse acelerada. Mas, conforme vimos, isso obrigou a criação dos compiladores, para realizar a tradução do código fonte para o código objeto. Em outras palavras, facilitamos o trabalho das pessoas, mas aumentamos ou tornamos mais complexo o trabalho dos computadores.
Dessa forma, é importante entendermos os tipos de linguagens de programação disponíveis e como elas funcionam. O primeiro tipo de linguagem que temos é a Linguagem Algorítmica, ou Assembler. Esse tipo de linguagem funcionava para uma solução mais simples, direta, para rodar em uma estrutura apenas de máquina (GUIMARÃES; LAGES, 2005). Dessa maneira, ela apresenta desvantagens, como:
Precisa criar um número muito grande de instruções para conseguir criar a resolução do problema, o que afeta, diretamente, o tempo de execução.
Maior tempo para manutenção.
Maior tempo para entender a sua estrutura.
Não é possível a implementação da solução em outro tipo de máquina (portabilidade).
Tendo em conta essas desvantagens, buscou-se a implementação de linguagens de alto nível. Para essas, buscaram-se, então, as seguintes vantagens:
Palavras e comandos parecidos com nossa linguagem.
Soluções mais simples e diretas.
Ser portável (implementação em vários computadores).
Já que, em nosso case, falamos da linguagem Fortran, veremos um exemplo de um programa implementado nessa linguagem, conforme Guimarães e Lages (2005):
INTEGER VALOR, SOMA
READ SOMA
2 READ VALOR
IF (VALOR. EQ. O.) GO TO 5
SOMA = SOMA+VALOR
GO TO 2
5 PRINT SOMA
END
Percebeu como ele é fácil de entender? Ele foi escrito por comandos que são muito próximos da nossa linguagem! Descobriu o que ele faz? Se você respondeu que ele executa a soma de um conjunto de N valores fornecidos e mostra essa soma, você acertou! E como ficaria esse código fonte quando compilado para ser executado pelo computador? Mostraremos o trecho SOMA:
SOMA = SOMA + VALOR
LDA SOMA [carrega o valor contido no endereço SOMA no acumulador]
ADD VALOR [soma o conteúdo do acumulador com o valor contido no endereço VALOR e coloca o resultado no acumulador]
STA SOMA [armazena o conteúdo do acumulador no endereço SOMA]
Depois disso, será realizada a tradução para a linguagem objeto:
LDA SOMA → 58FE
ADD VALOR → 1AFF
STA SOMA → 50FE
Nesse caso, 58, 1A e 50 são referentes, respectivamente, a LDA, ADD e STA. FE e FF se referem ao endereço para SOMA e VALOR, respectivamente.
A partir dessa primeira linguagem de alto nível, foram surgindo outras, como: COBOL, LISP, BASIC, PASCAL, C, C++, C#, JAVA, JAVASCRIPT, Ruby, ASP, .NET, Python, entre outras.
As linguagens de programação podem ser entendidas como um arranjo que obedece a um padrão com regras, que, quando obedecidas, poderão gerar um código fonte, e este, quando compilado e transformado em um código objeto (linguagem de máquina), passará instruções para um computador. Assim, é por meio da linguagem de programação que um algoritmo é expresso e pode se transformar em uma solução para um problema anteriormente existente. As linguagens foram categorizadas de acordo com o seu formato de funcionamento:
Trata-se de um formato de programação que oferece apenas estruturas para a construção de uma solução, sendo elas: sequência, decisão e repetição. Por meio dessas três estruturas e do uso de subrotinas e funções, é possível implementar algoritmos. Esse tipo de programação foi muito utilizado até a criação do tipo de programação orientada a objetos, porém a grande maioria das escolas a utiliza para que as pessoas deem seus primeiros passos no mundo da programação por meio delas. Podemos citar, como exemplos, Fortran, Pascal, C, Cobol etc.
Como o nome diz, a ideia aqui é construir o código fonte por meio de módulos. A partir disso, deve-se interligar os módulos, por meio de uma interface que será comum a todos os módulos. Como exemplo, podemos citar, Modula-2 e Modula-3.
Essa foi, talvez, uma das maiores mudanças no mundo da programação. Em vez de pensar em uma programação sequencial ou, apenas, na interação entre variáveis, agora, existia o que chamamos de abstração do mundo exterior por meio da criação de objetos, do conceito de herança de características e a formação de classes. Além disso, esses objetos possuem interação. Foi por meio desse novo modelo de programação que outras evoluções aconteceram, como a criação de uma linguagem de modelagem (UML) para planejar a construção do software. Isso possibilitou agregar muito mais assertividade e qualidade para os softwares. Por meio dos diagramas possíveis de construção, a comunicação com as pessoas foi facilitada, pois, agora, era possível ter uma representação do que seria programado. Este aspecto não era possível com os modelos anteriores. São exemplos de linguagens orientadas a objetos: C++, Java, Python, Visual Basic e Delphi.
Se você quiser saber como anda a utilização das linguagens pelo mundo, há um site bem interessante, que é o TIOBE Index. Ele faz um ranking das linguagens mais utilizadas no mundo. Clique aqui para acessar o site.
Uma vez que já vimos os tipos de linguagem essenciais para essa imersão nas áreas de computação, você deve estar se perguntando se existe uma linguagem melhor que a outra.
Um professor, uma vez, disse-me que a melhor linguagem de programação é a que você sabe usar. Isso é verdade! No entanto não devemos ficar “presos” apenas à uma tecnologia. O mundo da computação é muito dinâmico e pode ser que, se você aprender apenas uma tecnologia, saia muito prejudicado(a), devido à possibilidade de não ser mais usada. Portanto, a ideia é sempre aventurar-se por novas linguagens de programação, não ter medo de aprender o novo e sempre estar disposto(a) a verificar as novidades.
As linguagens mais usadas atualmente não, necessariamente, são melhores do que as menos usadas, isso é apenas um indicativo de que, por uma série de razões, essas tecnologias são as mais escolhidas pelas empresas. Além disso, ainda temos outros aspectos que influenciam. Por exemplo, a área de banco de dados não era tão explorada até uns dez anos atrás. Hoje, em vista do Big Data e do Business Intelligence, é fundamental aprender uma linguagem que dê possibilidades de explorar bastante banco de dados, como a SQL.
Se tem interesse em softwares embarcados, Internet das Coisas, aprender a linguagem C pode abrir muitas portas. Se gosta de internet, aprender PHP e Pythom é uma boa. Além disso, nunca deixe de consultar as várias comunidades existentes de entusiastas das linguagens de programação. Isso mesmo! Existem muitas comunidades de apoio para quem está aprendendo e que auxiliam muito em sua curva de aprendizado.
Algo que você, também, deverá levar em conta são os chamados softwares de programação, que poderão auxiliar na escrita do código, por exemplo, na depuração e na sinalização de erros ainda na montagem do código. Estes são alguns dos principais softwares de programação:
Editores de texto: identifica erros no código fonte de acordo com as regras da linguagem. Você terá várias opções e poderá escolher a que se identificar mais ou a que a sua empresa indicar.
Debuggers: encontra erros e garante que o código “rodará”.
Integrated Development Environment (Ambiente de Desenvolvimento Integrado): reúne recursos de vários softwares em um único lugar.
O mundo da programação nunca esteve em uma fase tão valorizada. Há muita falta de profissionais nessa área e o mercado está bastante aquecido, com muitas vagas e ótimos salários, em comparação a pouco tempo atrás. O segredo para este tipo de profissão está em não ficar dependente de uma única tecnologia, mas ampliar os horizontes e conhecer várias possibilidades de tecnologias. Surgirão vários projetos e, se atuar assim, poderá sempre escolher a melhor tecnologia de acordo com o detalhamento do projeto. Isso fará de você um(a) profissional melhor preparado(a) para entregar os melhores produtos em software ou em hardware ou para internet.
Gostou de conhecer algumas novas linguagens computacionais de alto nível? Certamente, você está dando os primeiros passos nas implementações de códigos, com as linguagens de programação abordadas nos componentes curriculares de Programação Mobile e Programação Front-End, muito provável que esteja usando Javascript, PHP e outras linguagens de marcação, como HTML e CSS. Vamos em frente, desbravar o universo das máquinas!
Imagine que você foi contratado(a) por uma empresa, e a primeira missão dada a você seja a de integrar uma equipe de programação. A empresa, na maioria de seus projetos, utiliza uma linguagem orientada a objetos e, também, a UML (Linguagem de Modelagem Unificada) para estruturar a abstração do que precisa ser construído. Um dos diagramas existentes na UML e que “conversa”, diretamente, com a linguagem orientada a objetos é o diagrama de classes. Este é importante, porque consegue descrever o que o sistema precisa conter.
Por meio de uma representação, fica fácil entender o conceito de classe, e ela sempre será feita por meio de um retângulo com três linhas. Na primeira linha, temos o nome da classe; na segunda, os atributos da classe; e, na terceira, os métodos ou operações referentes à classe. Essa representação permite visualizar o que será implementado no software. Veja o exemplo de uma classe de acordo com o Diagrama de Classes da UML:
Viu como o diagrama ajuda no entendimento? Temos, na primeira linha, o nome da classe; na segunda, os atributos da classe; e, na terceira, os métodos ou operações que ela pode executar. A seguir, você poderia, por exemplo, criar subclasses que poderiam herdar determinadas funcionalidades. Com certeza, isso ajudaria bastante na construção de seu projeto.
GUIMARÃES, M. A.; LAGES, N. A. C. Introdução à Ciência da Computação. Rio de Janeiro: LTC. 2005.