[ADAPTADO DO MEU LINKEDIN] A Arte na Programação: As Nuances da Sintaxe
Você pode ter clicado aqui pelo título ou pela completa bagunça do código da capa. Independentemente do motivo, eu vou chegar lá. Continue lendo.
Falando sobre o título, programação realmente é uma arte ou não? Já perdi a conta de quantas vezes me vi entrando em discussões sobre esse assunto, e todas as vezes saí com a mesma conclusão: programação PODE SER arte. Na maioria esmagadora dos casos atuais, programação não passa de uma ferramenta para resolver problemas, e não há nada de errado com isso. Porém, se você for um pouco além e usar a programação como forma de expressão, ela pode, sim, ser considerada arte. Seja de acordo com o que eu carinhosamente apelidei de Sintaxismo, seja criando um projeto qualquer pelo simples fato de você gostar.
Já vi diversos argumentos do 'outro lado da moeda' dizendo que a programação não pode ser considerada arte por infinitos motivos, mas os principais que chegaram até mim foram que códigos podem ser gerados por IA, enquanto arte não pode, então códigos não podem ser arte, e que programação faz parte de uma ciência exata, e nada de ciências exatas pode ser considerado arte.
Usando uma analogia simples de desenho, que é amplamente reconhecido como forma de arte: se você for um artista e fizer um esboço completo de um desenho, e dentro de cada lugarzinho escrever exatamente a cor que você quer, e depois der para alguém pintar de acordo com o que você fez, foi realmente a pessoa que pintou que fez? Claro que não. O trabalho criativo, a intenção e a escolha das cores foram suas. A pessoa só seguiu as instruções. Em paralelo a isso, os códigos também funcionam assim: a IA pode gerar códigos, sim, mas toda a lógica e o pensamento por trás precisam ser feitos por um ser humano. A IA pode ser uma ferramenta, mas o processo criativo e a direção do trabalho continuam sendo responsabilidade do programador.
Quanto à ideia de que ciências exatas não podem ser consideradas arte, isso por si só já é algo errado. Essa ideia parte do pressuposto de que nas ciências exatas o observador é isento de culpa ou influência em qualquer uma das conclusões. Mas isso é uma grande mentira. Ciências exatas não são, como muitas pessoas imaginam, áreas frias e sem espaço para subjetividade. Elas são apenas formas de interpretar o mundo ao nosso redor. Usando a matemática como exemplo, ela é uma maneira de expressar ideias, entender fenômenos e até criar representações do nosso ambiente, tudo isso por meio de números, fórmulas e funções. De maneira análoga, um desenho também é uma forma de interpretar o mundo ao nosso redor e expressar ideias, mas por meio de linhas, cores e formas. Em ambos os casos, há um processo criativo, de escolha e interpretação, que os conecta muito mais do que se imagina.
A última discussão que tive sobre programação ser arte ou não, me foi pedido uma prova de que realmente é arte. Tentei usar simplesmente um projeto qualquer que eu tenha feito por puro gosto, e, para minha surpresa, isso não foi aceito como resposta. Na hora, eu deixei aquilo quieto e fiquei pensando sobre. Eu já tinha pensado diversas vezes num conceito de expressar sentimentos, emoções, expressões e coisas do tipo usando puro código, pura lógica, mas nunca tinha tirado isso do papel. Sempre foi apenas uma ideia na minha cabeça. Depois do ocorrido, eu me senti na obrigação de tirar isso do papel, de escrever algo que, ainda que usando código, se abstraísse completamente do mesmo para expressar ideias. E você pode me achar louco. Expressar ideias abstratas com algo que é, por definição, concreto? Sim.
Aqui começa a explicação que tanto falei sobre o código da capa. Antes de tudo, quero deixar claro que isso é apenas uma prova de conceito. Foi algo mais simples, pois é a primeira vez que faço isso, mas pretendo trazer um segundo artigo com algo mais complexo expresso em forma de código. Para começar, vou colocar novamente o código em questão aqui abaixo para melhor entendimento.
Apenas olhando o código e agora o nome do arquivo "Grama.js", você consegue ter alguma ideia do que se trata? Se quiser, pare de ler agora e comente o que você acha que significa antes de ler a minha explicação.
Pensando em como eu faria o que precisava fazer, pensei em realizar uma simples prova de conceito. Resolvi que iria escolher algum ditado e expressá-lo em código. Precisava ser algo mais simples, pensei em várias opções e escolhi seguir com "A grama do vizinho é sempre mais verde".
Propositalmente, escolhi utilizar nomes completamente desconexos e sem sentido, visto que, se eu usasse nomes como "gramaVizinho", "minhaGrama" ou qualquer coisa do tipo, você poderia entender a ideia pelo português usado e não só pela pura lógica e código. Fazendo dessa forma, eu te obrigo a entender a lógica por trás, a pensar em todas as nuances e escolhas de código que eu fiz.
Primeiro, definimos duas variáveis de tipos completamente diferentes. A primeira é um número e a segunda, um texto. Por si só, elas não podem ser comparadas ou realizar qualquer tipo de operação entre elas, afinal, são coisas diferentes. Utilizando uma função recursiva, ou seja, uma função que se chama repetidamente até que uma condição seja atendida, primeiro verificamos se a variável 1 é maior ou igual à variável 2, ou seja, se a minha grama é mais verde ou pelo menos tão verde quanto a grama do meu vizinho. Então, se essa condição for satisfeita, eu finalmente saio do loop infinito com um retorno. Caso essa condição não seja atendida, eu aumento +1 na minha variável (grama) e chamo novamente a função, dando a entender que estou continuamente tentando chegar na tão sonhada grama tão verde quanto a do meu vizinho. Por serem dois tipos diferentes, a condição necessária para um retorno nunca será atendida, ou seja, uma hora o programa vai simplesmente parar com um erro de stack overflow, o que pode ser traduzido como o destino final de todo mundo que tenta incansavelmente chegar na grama "mais verde". Independente do quanto você tente, o final sempre será você esgotado de tanto tentar e nunca chegar lá.
Para finalizar este artigo, não se prenda a apenas uma explicação. O mesmo código pode ter diferentes significados. Acredito que a arte não leva em consideração apenas quem a fez, mas também quem está a interpretando. Talvez você veja um outro significado em tudo isso, talvez não. De qualquer forma, gostaria que essa visão fosse mais difundida entre a bolha tech. Gostaria que mais pessoas usassem programação não só como ferramenta, mas como arte, diversão e as outras infinitas coisas que ela pode ser. Se você leu até aqui, muito obrigado pela sua atenção. Volto em breve com, espero eu, algo mais complexo expresso em Sintaxismo.