/ #Criatividade #Reflexão 

Quando brinquedos se encaixam em programas

Durante a minha infância, eu tive a oportunidade de brincar com alguns brinquedos de montar bem interessantes: cópias de Lego, pinos mágicos e até outros que nem sei nomear. A ideia por trás desses brinquedos é bem simples: um conjunto de peças que podem se encaixar de maneira bem específica para formar coisas. Essa simplicidade talvez seja o que torna esta brincadeira tão incrível, ao mesmo tempo que fornece um estímulo à criatividade e ao raciocínio, além de instigar a curiosidade — característica inata de muitas crianças.

Vários anos mais tarde, quando comecei a programar, a semelhança entre esta e aquela atividade me despertou um interesse ainda maior pela última, bem como uma certa nostalgia. Na programação, assim como nos brinquedos citados, há um número bem limitado de variações de peças, que podem se encaixar de formas igualmente limitadas. No entanto, praticamente não há limites para o que pode ser construído com essas combinações e, por estar menos restrita a um mundo físico, a programação te dá ainda mais liberdade para criar.

Estruturas de controle de fluxo (if, else…), estruturas de repetição (for, while…), atribuição de valores, operações lógicas e aritméticas… é incrível imaginar que com tão poucos componentes podemos realizar qualquer coisa. Essa capacidade de construir grandes coisas a partir de pequenos blocos sempre me fascinou e embora, quando pequeno, eu nunca tenha conseguido copiar as esculturas que vinham como exemplo nas caixas dos brinquedos, atualmente me sinto orgulhoso da complexidade de sistemas computacionais que sou capaz de construir. Talvez você já tenha escutado a seguinte frase: “computadores só entendem 0 ou 1” – uma alusão ao sistema binário, uma das formas que temos de codificar informação. Olhando por este lado, até mesmo as peças que nos são fornecidas por uma linguagem de programação parecem sofisticadas, pois no final das contas, tudo se resume a 0s e 1s, mesmo que a gente não perceba.

Desconstruir para construir

Para além desse lado lúdico, a programação estimula uma forma de raciocínio analítico e lógico que com o tempo modifica a própria maneira como você pensa em soluções para os mais diversos problemas. É uma atividade que nos ensina a observar um todo e pensar em como fragmentá-lo em peças mais simples, que se encaixem para solucionar o problema atual e que possam ser reaproveitadas na construção de soluções para outros problemas. É um trabalho de desconstrução para reconstrução. A natureza determinística dos computadores exige que você consiga traduzir seus pensamentos em instruções precisas, sem margem para a ambiguidade inerente à comunicação humana, na qual a mensagem está sujeita à visão de mundo, cultura e interpretação de cada pessoa segundo contexto, humor e até mesmo o momento.

Apesar de haver menos restrições físicas, há regras muito bem definidas para programar. Há as regras definidas pela linguagem, que estabelecem quais peças temos à disposição e como podemos encaixá-las; e, por trás de tudo isso, há também a limitação material da máquina, do computador. Por mais abstratas que sejam as ideias, é preciso que consigamos representá-las dentro dos limites dos computadores, que apesar de serem elaborados e avançados, no fundo, eles são um conjunto de dispositivos físicos. Estes fatos fazem com que a programação e, num sentido mais amplo, a computação, viva em um espaço dicotômico, mantendo uma íntima relação entre o abstrato e o concreto.

Nesse quesito, o fundamento por trás da programação se aproxima muito da matemática. A matemática provê formas de comunicação sem ambiguidade e também ferramentas e modelos adequados para transportarmos uma ideia concreta para o nível abstrato, representarmos essa ideia dentro das limitações dos computadores e, então, obtermos resultados concretos com elas. Pare para pensar, não é incrível que você possa falar com uma pessoa do outro lado do planeta, ouvindo a sua voz e vendo o seu rosto em tempo real? É como se ela saísse do mundo real e passasse por uma etapa virtual para vocês, então, concretizarem uma conversa. E o que dizer da experiência proporcionada por jogos digitais com ambientes cada vez mais imersivos?

Evoluir e colaborar

À medida que você se torna mais experiente, você percebe que a maior parte da atividade de programar concentra-se na etapa de pensar e elaborar soluções com as peças que você tem à disposição, e menos no trabalho manual de escrever a solução, o código. É por essa razão que depois de entender a lógica de um paradigma de programação e aprender uma linguagem, torna-se muito mais fácil aprender a escrever em outras linguagens que sigam o mesmo paradigma. A nossa evolução na forma de pensar enquanto programadores pode ser sempre percebida ao olharmos para um código que escrevemos há alguns anos atrás e repararmos que somos capazes de reescrevê-lo aproveitando melhor os mesmos recursos.

Essa evolução não ocorre apenas na sua própria relação com a máquina, mas também nas relações interpessoais intermediadas pela máquina. Assim como todo feito grande da humanidade, na programação os resultados extraordinários são alcançados de forma colaborativa. Seja para servir a outras pessoas o até mesmo para o seu próprio reuso, com o tempo você aprende a relevância de se escrever um programa legível e documentado e a importância de se aderir a padrões e a boas práticas de programação, a fim de criar estruturas mais flexíveis e escrever códigos de maior qualidade.

É Divertido Programar

Para concluir, trago uma frase de Linus Torvalds, criador do Linux (e do Git!):

“Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.” - Linus Torvalds

Em uma tradução livre, a frase seria: *“A maioria dos bons programadores programa não porque eles esperam ganhar dinheiro ou serem bajulados pelo público, mas porque é divertido programar.” (grifo meu)*. De fato, considero a atividade de programar divertida, além de bastante desafiadora, e conheço outras pessoas que sentem algo similar. Ademais, observar o produto de sua própria criação tomar forma, produzir resultados e até mesmo ser utilizado por diversas outras pessoas constitui um fator de motivação intrínseca para a maioria dos que pensam assim.

A computação se tornou ubíqua e vem proporcionando avanços tecnológicos em diversas áreas em uma velocidade extraordinária, moldando a nossa própria relação com o mundo e com as outras pessoas. Carros autônomos, realidade aumentada, assistentes virtuais e até mesmo criptomoedas são assuntos cada vez mais presentes em nossas vidas e campos que demandam profissionais com genuíno interesse pelo desenvolvimento tecnológico.

E você, também se diverte programando? Como enxerga essa atividade? Compartilhe o seu ponto vista!

Author

Hallison Paz

Sonhador | Engenheiro de computação - pretende explorar outros corpos celestes