Executando verificação de segurança...
2

[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.

texto

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.

Carregando publicação patrocinada...
7

Tem uma frase que eu gosto que é "Toda arte é meio inútil", ou algo do tipo. Aquele código que corporativo para fazer a transação bancaria não é arte, ele tem um propósito bem chato. Agora minha gambiarra pra fazer algo engraçadinho na internet, eu já gosto de pensar em ter seu valor artístico.

No mesmo sentido também que você pode usar uma engenharia para fazer uma engenhoca de engrenagens para fazer uma escultura de uma borboleta voando, ou usar as mesmas engrenagens para fazer uma furadeira

Pra mim tem o clássico exemplo da linguagem de programação ‘Piet’, que o código fonte é uma imagem pixelada mesmo. Mesmo que não seja bala de prata pra encerrar a discussão, eu gosto muito de ser uma maneira de programar que você pode imprimir e pendurar na sua parede

-2

Ciência X Arte

De maneira geral, é um bom texto, mas quero destacar um detalhe: a computação é, na verdade, uma ciência aplicada. Apesar de a chamarmos de exata, por ser bem próxima, ela tem nuances. A computação pura, de fato, é mais exata, mas essa pureza desaparece quando lidamos com problemas reais, como ao programar. No trabalho prático, estamos lidando mais com engenharia do que com computação pura, o que a torna aplicada. Esse aspecto traz certa subjetividade, embora, idealmente, essa subjetividade deva ser bem controlada.

Isso a distancia da arte. Pode haver algum elemento artístico na programação? Pode, mas não é o ideal. Isso não significa que não deva haver criatividade na programação, mas, idealmente, ela deve estar alinhada a princípios científicos e objetivos claros. Isso não exclui o uso do termo "arte" como uma forma de expressão ou analogia, mas é importante manter a distinção conceitual entre ciência e arte.

O que muitos fazem na programação é arte? Sim, é, e talvez por isso há tantos problemas. A arte envolve muita subjetividade, personalismo, crenças e liberdade total. Na verdade, muito do que hoje é classificado como arte nem se encaixa nisso, pois frequentemente está preso a padrões artificiais, e não à expressão genuína do artista. Boa parte do que se chama arte é apenas entretenimento.

É claro que, na programação, a forma como fazemos as coisas também importa, assim como na arte, mas de maneira diferente. Na programação, analisamos o contexto e tomamos decisões para atingir melhor ou pior expressão dentro de parâmetros estudados, geralmente consolidados. Tudo deve estar a serviço de alcançar o melhor resultado possível em múltiplos aspectos, desde a entrega de algo útil até a manutenção futura. Esse ciclo não existe na arte.

Por isso, algumas pessoas comparam a programação à jardinagem. Ela também poderia ser comparada a outras atividades, mas dificilmente à arte. Informalmente, podemos dizer que a programação tem "um pouco de arte" no sentido de envolver um aspecto humano, mas nem tudo que é humano é arte. As ciências humanas, por exemplo, ainda são ciências.

Isso gera debates em outras áreas também, como na psicologia. Por exemplo, a TCC (terapia cognitivo-comportamental) é mais científica, enquanto a psicanálise, apesar de ter uma base científica, não é tão científica na aplicação. Ainda assim, isso não a torna arte.

Não estou dizendo que a jardinagem seja uma analogia perfeita, mas provavelmente é uma das melhores que vi. Sua adequação depende do tipo de trabalho computacional que se está discutindo.

Sou defensor da criatividade na programação e, por isso, sou contra metodologias que restringem isso. Algumas dessas metodologias são amplamente difundidas por pessoas respeitadas. Ambas as abordagens possuem vantagens e desvantagens, sendo mais ou menos interessantes dependendo do contexto. Muitas vezes, até dizemos que "é uma arte" saber escolher a abordagem certa, mas isso não é arte verdadeira. Pelo menos, não deveria ser feito com base em crenças ou subjetivismo, embora, em muitos casos, a experiência pessoal acabe guiando as decisões, aproximando-se de crenças.

Não vou entrar na discussão sobre se a IA pode ou não gerar arte. Há bons argumentos para ambos os lados.

A própria definição de arte é debatível. Se eu fizer um círculo perfeito, pendurá-lo na parede e chamá-lo de arte, isso é válido? Se arte é subjetiva, então pode ser, não? Não estamos falando de qualidade ou valor. Por outro lado, algo elaborado com palavras, tintas, notas musicais ou movimentos corporais, mesmo que envolva criatividade, pode não ser arte.

É possível que uma IA gere código por conta própria (desde que alguém solicite, mesmo sem dar parâmetros, já que ela não tem vontade própria). Se esse código será bom ou não é outra questão. Alguns argumentam que, como a IA foi programada e alimentada por humanos, tudo o que ela faz também se relaciona ao ser humano, mesmo que de formas diferentes.

Discordo fortemente da ideia de que ciência e arte são similares, mesmo considerando áreas não exatas. Destaco a frase que diz que "a ciência (exata ou não) tem espaço para subjetividade". Só porque ambas são formas de expressão, isso não as torna iguais. Os objetivos e as metodologias para se expressar são completamente distintos.

Concordo que você pode usar programação como ferramenta para criar arte, mas esse não é o objetivo primário dela. A arte permite essa liberdade, mas, nesse caso, estaríamos utilizando ciência de forma não científica. São coisas distintas.

Do mesmo modo, o fato de a ciência estar presente na criação de tintas, ferramentas e equipamentos usados por artistas não torna arte e ciência a mesma coisa. É possível, por exemplo, pintar uma parede de branco apenas para protegê-la do ambiente, sem qualquer intenção artística.

É claro que podemos debater se pintar uma parede de branco é ou não arte, como mencionei antes.

Convido a discordâncias e questionamentos, pois esse é o espírito da ciência. Ainda que minhas reflexões sejam apenas um ponto de partida, espero que inspirem discussões produtivas.

Sintaxe

Vi a tal arte no LinkedIn, mas o link estava quebrado. Dá para chamar aquilo de arte? Talvez, no sentido estrito da palavra, ou até no sentido figurado pejorativo que usamos popularmente.

Programação é claramente uma forma de expressão, mas não como arte. Por isso, dizer que "linguagem é só ferramenta" é equivocado. A linguagem é a forma de expressão escolhida para resolver, idealmente, um problema de forma melhor em vários aspectos: legibilidade, eficiência, produtividade (a curto e/ou longo prazo), entre outros.

Sendo uma forma de expressão, e considerando que todas as linguagens "pagam as contas" nas mãos de uma pessoa competente, escolher a mais adequada para si, para o time e para o problema em questão é muito valioso.

A sintaxe tem peso nessa escolha, mas a semântica é ainda mais relevante. Outros fatores também têm impacto, como ecossistema, mercado e questões mais políticas do que técnicas. E isso vindo de alguém que adora sintaxe.

Gostaria de debater mais sobre sintaxe e outros aspectos de linguagens de programação, mas meu interesse está no ponto de vista científico, mesmo na ciência humana. Sou péssimo em arte e prefiro as mais mainstream.

Finalizando

Um debate mais conclusivo deveria incluir especialistas de diversas áreas. Por ora, estamos apenas em uma conversa de bar.

Obrigado pela oportunidade de refletir. Acho que ainda vou me aprofundar no tema, mesmo que não publique nada (pelo menos por enquanto; talvez um dia em meu canal/blog).


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).