Linguagens de programação.

Qual a língua mais falada no mundo? Se você pensou inglês ou mesmo chinês, talvez não esteja sendo generoso o suficiente com o conceito do que configura uma língua. Vou partir do princípio que é um conjunto codificado de significados que pode ser compreendido por qualquer outra entidade que possa decodificá-los. Pessoas codificam significados em imagens e sons, principalmente, mas existem outras formas de comunicação por significados codificados. E se mantivermos essa definição aberta para acomodar os zeros e uns usados pelos computadores, temos aí a resposta da pergunta inicial: a língua mais falada no mundo é a das máquinas. Mas, como essa língua funciona?

Bom, como toda língua, essa precisa de dois lados: o que “fala” e o que “escuta”. Bem inútil uma língua que só uma pessoa saiba, não? Perde quase toda a função dela. No mundo das máquinas, podemos chamar o grupo das línguas faladas por cada uma delas de linguagens de programação. Porque são a partir delas que conversamos com máquinas e computadores em geral. E essas linguagens funcionam com a mesma lógica das que usamos entre nós: informar e compreender.

Mas como você deve ter aprendido ao ver sua vó conversando com a televisão durante a novela, máquinas não são naturalmente muito boas para entender o que queremos, até porque se não forem criadas especificamente com esse objetivo, sequer sabem que estamos por perto. Do mesmo jeito que a mocinha dá mais uma chance pro vilão apesar dos protestos dos presentes na sala, a máquina vai continuar fazendo o que está programada para fazer até alguém dizer algo que ela seja capaz de entender e fazer.

E é aqui que começamos a falar sobre os conceitos de linguagens de programação de alto e baixo nível (traduções fanfarronas de high-level e low-level): existe uma diferença considerável entre o que humanos são capazes de entender e o que máquinas (daquelas gigantes em fábricas até o seu celular) são capazes de entender. Os famosos zeros e uns do código binário são códigos humanos para explicar o funcionamento dos elementos mais fundamentais do funcionamento de chips de computadores: a presença ou ausência de energia elétrica em determinado lugar. Dentro do processador do seu computador (ou celular) existem bilhões de pequenos objetos que ligam ou desligam de acordo com a mensagem que recebem de fora.

Para falar com a máquina nesse grau fundamental do que entendem, só mandando zeros e uns para ela mesmo. Todo o resto são simplificações usadas por nós, seres humanos, para acelerar o processo de transformar nossas ideias em código binário. De uma certa forma, linguagens de programação são o que nos permitem mandar informações complexas para as máquinas, afinal, ninguém é rápido o suficiente para codificar o que está pensando nesse nível e ainda ter resultados aceitáveis.

Por isso, as linguagens sobem de nível: as mais básicas trabalham diretamente com zeros e uns, mas já são artefatos históricos para a imensa maioria das pessoas que sequer passam perto de programação. Já temos as bases definidas para esse grau de especificidade de zeros e uns, então podemos usar uma linguagem que converse com essa ao invés de sempre ficar reinventando a roda. Linguagens de baixo nível são aquelas que conversam diretamente com os circuitos das máquinas, não mais em zeros e uns, mas presumindo alguns conceitos básicos do funcionamento delas: informações precisam ser inseridas na memória da máquinas, serem mantidas e manipuladas lá dentro de acordo com a necessidade.

Uma linguagem básica como a Basic (ha) basicamente (ha!) diz para o computador como fazer esse gerenciamento de memória: “pegue a informação 1 e coloque no bloco 3, depois troque ela pela informação 2 e coloque a 1 no bloco 2, depois some as duas e coloque no bloco 1”… parece complicado, mas é uma das coisas mais óbvias e diretas que você pode fazer com uma máquina. Diz para ela se lembrar de algumas coisas, onde elas estão e como manipular elas, sem esquecer de nada no processo.

Apesar de ser um tema interessante, não precisamos ficar muito tempo nas linguagens de baixo nível, porque essa parte também já está bem definida e via de regra são os próximos níveis de linguagem de programação que interessam para a humanidade em geral, pelo menos nos dias de hoje. Perceberam o processo? Computadores entendem sequências de ligado e desligado, e existem linguagens que passam essa informação pra eles. A partir delas, existem linguagens que controlam como os computadores vão usar a memória que tem para fazer tarefas, sem a necessidade de zeros e uns sendo escritos diretamente por uma pessoa. Mas convenhamos que apesar de no fundo ser tudo a mesma coisa, é muito pouco intuitivo ficar decidindo como o computador vai gerenciar suas peças a cada ação que toma.

Por isso, temos as linguagens de alto-nível. Essas seriam aquelas que chegam mais perto das línguas humanas, e sem nenhuma surpresa, as mais conhecidas no mundo moderno. Ao invés de ensinar o computador a gerenciar sua memória, partimos do princípio que ele já vai entender isso quando nossa linguagem de alto-nível for traduzida para a de baixo-nível e depois para a binária. Com todo esse processo definido, podemos escrever o que queremos, desde que a nossa língua escolhida seja compreendida pelas línguas mais primordiais da máquina.

E o que são as linguagens de alto-nível? Bom, o próprio desfavor usa algumas delas – PHP e JavaScript – para mostrar o texto que estou escrevendo agora. Minha palavras e todo o arredor que você está vendo na sua tela são zeros e uns e gerenciamento de memória do seu computador ou celular, mas quando eu tenho que mexer em alguma coisa aqui, posso ser bem mais direto: há uma função do código desta página que manda o computador criar um quadrado branco, colocar letra por letra do texto, imagens e links. E se você for ler o código com calma e conhecendo as “palavras” dessa língua, vai perceber que foram ordens escritas: criar quadrado, pegar texto do banco de dados, mostrar dentro do quadrado, colocar foto específica na parte de cima do quadrado… e por aí vai.

Lógico que não é exatamente com essas palavras, mas quando eu fiz o layout desse site, por exemplo, não precisei pensar em como a memória do seu computador ou celular ia fazer o quadrado, só mandei fazer o quadrado! O seu sistema aí que está se virando para mostrar as coisas que o desfavor está pedindo para ele mostrar. Até por isso sites carregam mais rápido ou mais devagar dependendo da sua conexão e da velocidade da sua máquina. Ou mesmo se eu der uma ordem errada para a linguagem de programação, o seu computador pode sofrer com isso, tentando executá-la.

E como se fala com um computador em alto-nível? Bom, linguagens podem variar, mas a maioria delas segue alguns padrões mínimos, e na minha nunca humilde opinião, tem alguns conceitos básicos que explicam como essa língua das máquinas funciona: variáveis, condicionais e repetições. Tem mais que isso? Tem muito mais que isso, mas hoje é o que vai interessar. Antes disso, vamos entender o seguinte: computadores leem os códigos para executar de cima pra baixo, da direita pra esquerda, assim como nós ocidentais. O que ler primeiro acontece primeiro.

Variáveis são informações que queremos guardar na memória do computador para uso posterior. Normalmente são definidas em algum ponto do código e podem ser chamadas ou modificadas de acordo com o desejo do programador. O que importa é que elas ficam guardadinhas numa prateleira e o programa sabe onde elas estão, podendo vê-las e modificá-las sempre que precisar. Na linguagem que o desfavor é escrito, PHP, definir uma variável é questão de dizer pro computador que: 1) aquilo vai ser uma variável e 2) qual é o conteúdo dela.

$desfavor = 1;

Aqui eu estou dizendo que vai ser uma variável com o cifrão antes do nome, dando um nome e dizendo o que ela tem que significar. Neste caso, 1. Pronto, o computador sabe disso e coloca essa informação numa prateleira para uso futuro. O ponto e vírgula no final é um aviso pro computador que já dissemos o que queríamos aqui e que ele pode descer pra próxima linha procurando mais o que fazer.

Condicionais são essenciais para comparar e tomar decisões a partir dessas comparações. Sendo um dos elementos mais básicos de qualquer programação, as condicionais vão olhar para uma informação e decidir o que fazer depois de lê-la. De novo explicando no PHP:

if ($desfavor == 1) {
echo “oi”;
} else {
echo “tchau”;
}

Agora eu disse o seguinte pro computador. SE (if) ele pegar a variável desfavor e vir que o resultado dela é 1 (por isso os dois iguais), pode começar seguir pra linha de baixo e fazer alguma coisa. No caso era escrever oi. OU (else) escrever tchau se a variável desfavor tivesse qualquer outro significado que não 1. Se eu tivesse mudado o valor de desfavor pra zero, ele teria escrito tchau.

E depois disso, temos as repetições. Essa parte é bacana porque automatiza muita coisa repetitiva. Basicamente escrevemos um código dizendo pro computador pra repetir uma ação até chegar na condição final. Meio que como dizer para Fernandinho comer balas até as balas no pote acabarem. Talvez Fernandinho tente comer o pote, mas o computador é mais obediente. Acabaram as balas, acabou a tarefa.

for ($i=1; $i<=10; $i++) { echo $i; }

Neste código acontece o seguinte: ENQUANTO (for) a variável i (viram o símbolo de cifrão antes dele?) for menor que 10, pra adicionar mais um no número (++) e continuar. E a cada vez que isso acontecer, escrever o valor da variável i. O resultado desse código seria o computador contando de 1 até 10.

Parece pouco, mas só com essas bases já dá pra fazer muita coisa. E as linguagens de programação em média tem zilhões de outros truques na manga para gerenciar as informações que passamos pra ela. Se você nunca mexeu com nada de programação e ficou interessado(a), eu só espero que essa explicação extremamente básica te mostre que não é tão complicado quanto parece se você começar bem do comecinho. Hoje em dia, programar é conversar com uma máquina e pedir para ela fazer coisas. E ela vai te obedecer cegamente se você souber COMO dar ordens para ela.

Só parece complicado. Mas é apenas uma questão de conhecer as palavras. E como vocês podem ter visto, saber inglês acelera bastante as coisas. Sugiro começar aprendendo com a linguagem C, das quais derivam várias das outras mais famosas e utilizadas hoje em dia (inclusive a PHP que eu demonstrei, a mais usada pra fazer páginas de internet). O que não falta são cursos online grátis.

Os programadores que nos acompanham vão dar chiliques pela minha simplificação, ou mesmo dizerem quais são as melhores linguagens a aprender e porque as que eu mencionei são horríveis, mas isso tem em todos os campos. Inclusive, se alguém quiser indicar boas linguagens para aprender, adoraria ler aqui.

Para me chamar de nerd, para dizer que agora é nerd porque entendeu, ou mesmo para dizer que eu mereço um prêmio por não fazer piadas com garotos ou garotas de programa: somir@desfavor.com

Se você encontrou algum erro na postagem, selecione o pedaço e digite Ctrl+Enter para nos avisar.

3 desfavores sobre “Linguagens de programação.

Comecei uma faculdade na área de TI (apesar de não ter terminado, ainda tenho interesse em voltar). Lembro de ter aprendido um pouco de C++ e outro pouco de Java. De certa forma, foi por isso que larguei o curso: o enfoque em programação não era profundo, e eu queria aprender mais do que era mostrado ali. Lembrei dos bons tempos estudando programação, acho que vou procurar cursos online. Obrigado pelo impulso, Somir

Nota: apesar de eu ser das Letras, também aprendi um pouco de programação só por hobby e interesse próprio. Diria que aprender uma linguagem de programação é como aprender uma língua estrangeira: tu tens as palavras, a sintaxe, e as regras que coordenam a relação entre elas, então… Realmente, não é tão complicado como parece, é questão de lógica, de aprender a lógica que está por trás daquilo.
Já vi que PHP, sabendo mexer, dá pra fazer horrores com ela. Idem para C/C#/C+. Java eu achei bastante pesado e chatinho. Agora, uma linguagem que queria muito me aprofundar, e que vi também que dá pra fazer horrores com ela, é a python.

Responder

Não precisa preencher nada além do comentário. Seu e-mail não vai ser publicado.
You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>