Prefácio

Mensagem do autor

Escrever um livro de programação para um público eclético e disseminado nas áreas das artes, humanas, biológicas ou mesmo da vida em si é desafiador, especialmente perante ao contraste com o estranho mundo das exatas. Pessoas da área de exatas, autor incluído, costumam ser criaturas curiosas, movidas por um instinto que nos impelem a desmontar tudo que vemos pela frente para tentar entender como elas funcionam. Nesse processo nós escrevemos equações em cima de equações, redigimos instruções, desenhamos esquemas, fluxogramas e uma infinidade de símbolos que confundem até mesmo outros de nós. Foi mais ou menos isso que ocorreu no nascimento deste livro. Antes mesmo de começar a escrever, eu havia listado todos os tópicos que gostaria de incluir, ordenados e filtrados, respectivamente, pela sua complexidade matemática e computacional. Mal sabia eu que eles eram sementes de um intrincado espiral de letras e números, lentamente florescendo em labirintos de extensas equações e termos técnicos. Em uma autocrítica, percebi que se eu fizesse isso estaria condenando este livro a viver nos confins do diminuto grupo de pessoas que veneram a matemática e a arte que pode ser produzida através dela. Foi nesse exato momento que decidi rever toda a filosofia de escrita.

Após ponderar muito, decidi que iria reformular livro como um guia sobre conceitos necessários para produzir arte através da programação. Em vez de focar na matemática para dissecar tópicos de programação, decidi abraçá-la como ferramenta para auxiliar nos desenhos e animações. Os códigos, que antes eram explicados a nível de complexidade computacional, foram simplificados para cobrir apenas os pontos mais importantes quando se trabalha com programação voltada para visualização e arte gerativa. Em suma, não é mais necessário idolatrar a matemática, apenas entendê-la. O resultado é um manuscrito sucinto e com uma linguagem menos formal, concentrando os pontos mais interessantes desse universo que funde o técnico e o artístico. Todavia, não se engane quanto a abrangência do texto. Apesar de muitos tópicos terem sido abreviados, os restantes tornaram-se mais ricos com conceitos essenciais que combinam o melhor de cada uma dessas áreas.

Consequentemente o livro exige um foco maior de você, leitor, e ao mesmo tempo recompensa essa dedicação com uma aceleração no aprendizado. As várias seções foram meticulosamente desenvolvidas de maneira a expor ideias importantes e ilustradas com exemplos cuidadosamente concebidos para reforçá-las. Você perceberá que este livro, por estar relacionado à arte computacional, apresenta conceitos de programação sob uma ótica diferente daquela presente em textos puramente voltados para a programação. Isso permite que tanto pessoas experientes na área quanto aqueles que nunca tiveram contato com uma linguagem de programação assimilem os conceitos de forma clara e direta. Este é o principal objetivo do livro, pois se você entender como utilizar as ferramentas técnicas da programação para expressar as suas ideias, o que restará do ponto de vista artístico será unicamente o processo criativo.

Sobre o livro

Este livro foi projetado visando suprir duas necessidades recorrentes quando lidamos com a arte computacional gerativa. A primeira é apresentar o mundo da programação através de uma perspectiva diferente da habitual, na qual o resultado do seu código não se resuma a uma letra branca realçada pelo fundo preto de um console. Ele será uma imagem, uma animação, uma exposição visual, fator muitas vezes subestimado no estudo da programação e matemática. O que nos leva ao segundo ponto, relativo ao esclarecimento e eventual assimilação de como números, fórmulas e instruções integram a quintessência da beleza estética explícita de um padrão, ou capelada de uma sequência numérica infinita. Introduzir, de maneira prática, ambos os assuntos é a melhor maneira de promover a arte gerativa que ainda é muito tímida, e carente de recursos, no cenário brasileiro.

Em seu conjunto total, o livro está divido em três partes, sendo que a primeira é composta por dois capítulos e as outras duas, cada uma por três. Brevemente, eles cobrem os seguintes tópicos:

Parte I

  • Capítulo 1: Inicia com uma breve contextualização da arte gerativa, seguida da justificativa da escolha do Processing como ferramenta de programação. Posteriormente apresenta pontos relevantes relacionados ao Processing e à arte visual em geral.
  • Capítulo 2: Explora os conceitos primais da programação. É um capítulo técnico, balanceado sempre por aplicações na arte digital.

Parte II

  • Capítulo 3: Examina o papel essencial da aleatoriedade e do caos na composição imprevisível da arte gerativa.
  • Capítulo 4: Demonstra como abstrações puramente matemáticas são a base para gerar formas e movimentos naturais.
  • Capítulo 5: Exemplifica que a escolha do método de visualização de uma peça gerativa influencia profundamente em sua apresentação final.

Parte III

  • Capítulo 6: Introduz os fractais e a programação recursiva. Dedicado a mostrar como regras simples são capazes de originar padrões complexos.
  • Capítulo 7: Aplica conceitos avançados de programação para simular comportamentos emergentes, diversas vezes encontrados na natureza.
  • Capítulo 8: Extrapola o conteúdo do livro, apresentando aplicações elaboradas da programação criativa. Interpreta a programação pragmaticamente e conta com obras de artistas que a dobram em seu favor.

Pré-requisitos

Os principais pré-requisitos para você, leitor, é que possua uma mente aberta, vontade de aprender e uma participação ativa, fundamentais para garantir o seu desempenho. A programação direcionada para elementos visuais envolve posicionamentos de figuras que são mais facilmente entendidos se esboçados em papel e, sendo assim, desde agora estimulo que você faça constantemente anotações e desenhos.

Do ponto de vista material, ter um computador capaz de executar o software Processing auxilia no aprendizado uma vez que você terá a liberdade de experimentar com seus códigos, alterando parâmetros e observando as consequências. Mesmo assim, a maioria dos códigos possui uma respectiva figura de sua execução e, com um pouco de análise técnica e imaginação, é possível abstrair os resultados dos mesmos.

Códigos

Os códigos seguidos neste livro se baseiam no Processing que foi construído sobre a linguagem Java e beneficiado, adicionalmente, por uma simplificação na sintaxe. Eles serão evidenciados basicamente em dois meios: no texto, onde comandos e termos relacionados à programação estarão escritos na fonte sourcecodepro, e em uma caixa de contenção que destaca códigos completos:

Código 0.1 - Exemplo de código de programação -

String texto1 = "SEGUNDO";
String texto2 = "BLOCO";

// Exibe as variáveis:
println(texto1);
println(texto2);

Em geral, códigos desse tipo são funcionais e podem ser copiados diretamente da caixa de contenção e colados no editor do Processing. Caso seja necessária alguma ação adicional ela será mencionada no texto. Todos os códigos estão licenciados sob a MIT License e podem ser utilizados livremente por você. O download do arquivo contendo os exemplos mais relevantes de cada capítulo pode ser feito através do link de downloads.

Figuras e imagens

Este livro possui aproximadamente 200 imagens, esquemas, fluxogramas ou fotos, das quais 160 foram geradas diretamente utilizando funções do Processing. Dentre as poderosas funcionalidades desta linguagem existe a de exportação de imagens no formato .pdf ou .svg, ambas sem perdas por resolução. Sempre que possível foi dada prioridade a essa classe de imagem, e você verá que é possível magnificá-la em mais de 5000% sem borrar nenhum de seus detalhes. Algumas vezes você poderá perceber que existem figuras que não estão vinculadas explicitamente ao texto, elas servem como um mostruário de possibilidades da arte gerativa e do Processing, e visam provocar o sentimento de busca de conhecimento no leitor.

Os elementos visuais que foram produzidos pelo autor do livro não foram creditados e estão licenciados pela Creative Commons Attribution-NonCommercial 3.0 Unported License. Todas as demais figuras foram obtidas de fontes externas que autorizaram seu uso e a atribuição do crédito é feita imediatamente em suas legendas. Cabe ressaltar que cada uma delas estão sujeitas as suas próprias licenças, consideradas como propriedade do seus autores originais.

Distribuição livre

Em sua versão atualmente escrita, este livro é absolutamente livre de qualquer tipo de custo, sendo expressamente proibida a restrição de sua distribuição por uma transação de natureza financeira ou compensatória. O autor acredita na filosofia do conhecimento livre e espera que outros possam se beneficiar com as informações contidas neste livro. Ele também incentiva que o público em geral, sempre que possível, abrace a cultura do compartilhamento do conhecimento e da educação comunitária.

Você pode contribuir voluntariamente com este e futuros trabalhos através da página de perguntas frequentes.

O download da versão digital deste livro deve ser feito através do site original do projeto:

https://codigotranscendente.github.io/livro/.

Versão Online do livro

Em um último esforço para maximizar a acessibilidade a este documento, o autor se sentiu na necessidade de disponibilizar uma versão online do livro. Esta versão final, chamada de versão online, é uma transcrição fiel de todo o texto contido na versão .pdf do livro, podendo ser acessada de plataformas desktop ou mobile. A maior diferença entre as duas versões se resume a qualidade das imagens. O documento .pdf possui, em sua maioria, imagens do tipo .svg, sem perda de qualidade por resolução. A versão de navegador, por sua vez, é composta por imagens convertidas das .svg, apresentando distorções consideráveis se ampliadas demasiadamente. Isso se fez necessário para reduzir possíveis impactos no navegador. O autor sugere que, em momentos que for dado destaque à figuras, o leitor consulte o documento original. A diagramação é outro ponto de destaque, desta vez positivo: o documento online permite um posicionamento mais adequado de figuras do que o LaTeX que, por sua vez, costuma posicionar elementos gráficos conforme uma lógica própria. A navegação é outro ponto agradável em browsers que permitem uma agilidade extra devido a atalhos de avanço ou retorno entre páginas. Quanto ao escopo e futuras correções, o autor garante que quaisquer alterações no documento .pdf serão migradas para a versão online.