Artigo original: We have been programming for thousands of years

Escrito por: Tautvilas Mečinskas

Programas de computador estão por toda parte. Interagimos com eles todos os dias. Parece que os softwares estão se tornando cada vez mais importantes para a nossa sociedade. Por que, no entanto, achamos os programas tão necessários? Por que e quando começamos a programar? Qual é a essência da programação? Essas perguntas podem parecer triviais, mas sinto que hoje ainda não temos uma boa definição do que é programação. Talvez este artigo possa ajudar a mudar isso.

É bastante difícil definir programação porque ela é muito diversa. Pode-se programar jogos, aplicações para dispositivos móveis, sites, compiladores, simulações e muito mais. Nesse caso, pode ser útil começar eliminando algumas ideias preconcebidas e esclarecer o que a programação não é.

Programação não é ciência. A ciência é a arte de examinar o mundo e descobrir padrões repetitivos nele. O método científico consiste em fazer uma hipótese e, em seguida, realizar experimentos para provar ou rejeitá-la. Não usamos esse método na programação – portanto, não é ciência. A programação não se trata de descoberta, mas de criatividade.

Programação não é matemática. Sim, há um aspecto matemático na programação. Algumas partes dos programas podem ser expressas como funções matemáticas. Escrever um gerador de números de Fibonacci é divertido, mas completamente inútil sem uma aplicação no mundo real. A matemática na programação é um meio para um fim, não uma parte central do processo.

Programação não se trata de computadores eletrônicos. Computadores são muito úteis, mas não são necessários. Os programas podem ser entendidos e interpretados por seres humanos também. Portanto, os computadores são apenas ferramentas que usamos na programação.

Então, do que se trata a programação? O que se encontra dentro de todo programa, seja ele ou pequeno?

Abstrações.

O que é abstração? É uma imagem reduzida do mundo. Ao abstrair, estamos convertendo a realidade em símbolos que podem ser transmitidos como informação. A palavra abstração origina-se de duas palavras latinas, que são abs, que significa longe de e trahere, que significa desenhar. A tradução latina sugere que abstrair implica separar algo do todo.

O processo de abstração é único da programação? De fato, não. É algo que os humanos fazem há bastante tempo. Nossas ferramentas de abstração mais básicas são o mapa e o relógio.

Arqueólogos descobriram mapas de pedra que os humanos fizeram há mais de 14 mil anos. Isso mostra que a cartografia é fundamental para os humanos. É um processo de transformar território em símbolos abstratos. Um mapa é um modo de abstrair o espaço. É uma ferramenta que nos ajuda a fazer sentido do território ao nosso redor para que a navegação seja mais fácil.

Um relógio, por outro lado, é um modo de abstrair o tempo. Achamos a natureza contínua do tempo confusa. Por isso, a abstraímos. Os humanos dividem o tempo em intervalos discretos: anos, meses, dias, horas, minutos, segundos. Enquanto um mapa nos ajuda a navegar no espaço, um relógio nos ajuda a navegar no tempo. O predecessor do relógio - o calendário - surgiu há mais de 10 mil anos.

K2-yzsletJjBjTnKwA7kvn4sz4Ynu1UOC3ou
O gigante calendário solar de Chankillo foi construído há 2.300 anos.

Já aos computadores são ferramentas que também lidam com abstrações. Há 3 partes fundamentais em todo computador:

  1. Relógio interno – a maneira de o computador abstrair o tempo
  2. Memória – a maneira de o computador abstrair o espaço
  3. Unidade de processamento – a maneira de o computador executar operações lógicas

Esses recursos dão aos computadores uma maneira de entender abstrações espaciais e suas interações no tempo abstrato. Isso significa que os programas são abstrações do espaço e do tempo. A programação é a arte de criar abstrações do espaço e do tempo. Essas abstrações nos ajudam a navegar na realidade, sendo, por isso, tão importantes para nós.

Existe um método de abstração que é muito semelhante à programação, mas que é ainda mais antigo que mapas, relógios e calendários: a linguagem.

Se você olhar de perto para nossa linguagem natural, verá que ela possui todas as características necessárias para abstrair o espaço e o tempo.

Vamos analisar um exemplo de frase:

Vá para o jardim e colha algumas flores esta noite.

O jardim e as flores referem-se a espaço abstrato. Esta noite é um modo de abstrair o tempo. E adiciona lógica à frase. Vá para e colha são sub-rotinas.

Podemos facilmente transformar a frase acima em JavaScript:

quandoNoite.then(()=>voce.irPara(jardim)).then(()=>voce.pegar(flor))

Essa frase pode ser entendida por um computador que tenha definições de noite, você, flores e as sub-rotinas necessárias definidas.

O problema da linguagem natural é que ela tem aplicações muito amplas. A linguagem pode ser usada não apenas para comunicar informações, mas também para expressar sentimentos e emoções. Os melhores exemplos de programas de linguagem natural pura são leis, regras de jogos de tabuleiro e manuais de instruções.

xQoLcFFm2PL69Hv3LpF1saAtoAn86lGejQ99
O Código de Hamurabi é um dos mais antigos programas de linguagem natural (foto de Richard / CC BY-NC-SA)

As linguagens de programação, por outro lado, são rigorosas e só podem criar abstrações. Os computadores são projetados para interpretar essas abstrações de uma maneira muito específica e determinística.

Para escrever programas de computador, você precisa aprender a programar a linguagem natural em símbolos que o computador possa entender. Isso geralmente requer conhecimento intrincado da arquitetura do computador e da sintaxe da linguagem de computador escolhida. Portanto, se você quiser que um computador entenda suas abstrações de realidade, você precisa aprender a programar.

Os computadores são ferramentas que podem executar regras definidas em programas com velocidade e precisão sobre-humanas. Eles nos capacitam a construir abstrações complexas e multicamadas e a transformar nossos programas em mapas da realidade verdadeiramente dinâmicos e interativos.

De muitas maneiras, programar é algo que todos nós já sabemos fazer. O processo de abstração da realidade é fundamental para os seres humanos. A programação de computadores é apenas a maneira mais eficaz de se fazer isso.