O que, afinal de contas, é programar? - PrograMaria

A resposta-curta-que-cabe-em-um-tweet:

Programar é dar ordens para que os computadores façam o que você quer que eles façam.

Agora desenvolvendo um pouquinho mais:

O que é um computador?
Um computador basicamente faz cálculos e armazena dados. (A propósito, durante muito tempo, “computador” foi uma profissão, desempenhada majoritariamente por mulheres!)

Apesar de termos conhecimento da existência de computadores automáticos bem antigos – de antes mesmo da invenção da eletricidade -, quem descreveu formalmente o que viria a ser chamado de computador foi Alan Turing, que teve a vida retratada no recente filme O Jogo da Imitação, sobre o trabalho de criptografia dos aliados para quebrar o código da Enigma alemã.

O britânico imaginou em 1936, quando tinha 23 anos (!), uma máquina universal que seria capaz de entender instruções básicas e executá-las: ler uma fita, imprimir ou apagar um item e passar para o próximo item da fita. É a chamada Máquina de Turing (Veja como funcionaria uma na vida real – feita de LEGO!)

E é isso que todo computador faz até hoje. Isso mesmo. Tudo que os computadores mais modernos do mundo fazem pode ser transcrito em uma sequência dessas ações básicas aí (pelo menos é isso que prega a Tese de Church-Turing).

A questão é que pedir para a máquina de Turing fazer alguma coisa real geraria uma sequência gigante de passos – nada funcional. No fundo, o computador moderno faz operações muito básicas, é verdade, mas ele é capaz de fazer bilhões de operações por segundo e é isso que faz ele ser uma maravilha da vida moderna.

Como se dá ordens para um computador?
Como a gente consegue pedir com carinho coisas para um computador? Escrevendo programas!

O primeiro passo é pensar como o computador pode resolver determinado problema, isso é o chamado algoritmo (não confundir com o logaritmo das aulas de matemática). Um algoritmo nada mais é do que uma sequência de passos para se realizar alguma coisa. O exemplo clássico para entender este conceito é pensar em uma receita de bolo. Nela, você tem ingredientes e uma ordenação de passos para fazer algo, no caso, um bolo. A tradução dessa sequência de passos em uma sequência de códigos é chamada de programa, o algoritmo concretizado.

Geralmente, assume-se que um algoritmo deve satisfazer os seguintes requisitos:

  1. Ser um conjunto finito de instruções simples e precisas, que são descritas com um número finito de símbolos;
  2. Sempre produzir resultado em um número finito de passos;
  3. Poder, a princípio, ser executado por um ser humano com apenas papel e lápis;
  4. Não requerer inteligência do ser humano além do necessário para entender e executar as instruções.

Veja como seria um algoritmo para encontrar uma palavra em um dicionário, escrito em pseudocódigo, isto é, uma linguagem que o computador não entende. Ela não tem o rigor sintático que as linguagens de programação têm, por isso, é mais fácil para a gente compreendê-lo.

  1. Pegue o dicionário
  2. Abra o dicionário no meio
  3. Olhe as palavras
  4. Se “programação” está entre as palavras
  5.     Copie o significado e fim! =)
  6. Senão, se “programação” está na primeira metade
  7.     Abra a lista na metade da esquerda
  8.     vá para a linha 3
  9. Senão, se “programação” está na segunda metade
  10.      Abra a lista na metade da direita
  11.      vá para a linha 3
  12. Senão
  13.      desista

E qual língua o computador fala?
O fato mais mind-blowing do universo (depois do “somos todos poeira de estrelas”) é pensar que tudo para um computador se resume em 0 e 1. 0 não passa corrente. 1 passa corrente.

Imagens? Música? Jogos? Sim, amigos, tudo 0 e 1. Vou dar um parágrafo para vocês respirarem.

(E um link para entender um pouquinho mais sobre isso)

O importante agora é saber que não escrevemos programas em 0 e 1! Graças a Deus! Nós usamos as famosas linguagens de programação. Existem várias delas. Várias. Algumas são mais próximas do chamado código de máquina (chamadas “linguagens de baixo nível”), outras, mais próximas da linguagem humana (chamadas “linguagens de alto nível”).

Cada um escolhe a(s) linguagem(ns) que quer aprender – mas é claro que existem as mais populares, que são aquelas utilizadas pela maioria das empresas de computação, como C, C++, C#, Python, PHP, Java, JavaScript etc… O Índice Tiobe lista quais são as linguagens mais populares no momento. Vale lembrar que os famosos HTML e CSS são linguagens utilizadas para construir páginas na web e não são considerados linguagem de programação, já que não construímos algoritmos com elas, apenas telas.

O algoritmo de estreia de 99,99% das pessoas é o “Hello, World” ou em bom português Olá, mundo. Ele basicamente faz a tela mostrar essa frase (imprimir, no termo técnico-histórico: antes de as telas surgirem, os desenvolvedores literalmente imprimiam os resultados dos códigos, nas máquinas de Telex).

Quem quiser comparar linguagens pode acessar o Rosetta Code, um wiki com diferentes algoritmos em que, em vez de escolher ler o artigo em inglês, espanhol ou português, você escolhe a linguagem de programação em que o algoritmo foi escrito.

Vejamos o “Hello, World” em algumas linguagens:

Python
print(“Goodbye, World!”)

C++
#include <iostream>
int main () {
std::cout << "Goodbye, World!" << std::endl;
}

Cobol
program-id. hello.
procedure division.
display "Goodbye, World!".
stop run.

Lua
print "Goodbye, World!"

[Disclaimer: repare que o artigo sobre o programa Hello, World mostra códigos que imprimem “Goodbye, World!”. Nossas pesquisas intensas concluíram que se trata de uma piada interna. :F]

É por isso que muita gente fala que aprender a programar é como aprender uma nova língua. Cada linguagem possui sua própria sintaxe, regras de pontuação e várias outras especificidades.

Mais alguma coisa que devo saber?
Sim, o computador é burro. Quer dizer, ele é lógico. E muitas vezes, a lógica é contra-intuitiva. Porque a lógica não se beneficia das ambiguidades da linguagem. O computador não raciocina ou reflete sobre qual era a intenção do programador ao escrever determinada instrução. Tem uma piada de programador que é mais ou menos assim:

A esposa dá as instruções para o marido programador ir ao supermercado: “Traga 6 ovos. Se tiver batata, traga 10”. O programador volta com 10 ovos e a esposa pergunta por que ele fez isso, ao que ele responde: “porque tinha batata”.

Assim como o marido programador, o computador interpreta as ordens de maneira literal, então, temos que refletir bem sobre como vamos pedir as coisas! É por isso que muita gente recomenda aprender a programar com lógica de programação.

Pronto! Agora você já sabe o básico sobre o fascinante mundo de fazer os computadores resolverem problemas! O que mais você gostaria de aprender? Deixe nos comentários e a PrograMaria vai se esforçar para te atender! 🙂

 


Este post contou com a colaboração e a revisão técnica de dois amigos incríveis:

Leandro “acidx” Pereira. http://tia.mat.br/posts/

Ricardo Bittencourt, o RicBit. http://blog.ricbit.com/


Aimeê Ferreira é ilustradora e designer formada pela FAU-USP. Seu trabalho pode ser visto em http://www.aimeesf.com/