O código Processing

A linguagem Processing foi criada por Ben Fry e Casey Reas em 2001 enquanto ambos eram estudantes de pós-graduação no MIT Media Lab do Aesthetic + Computation Group de John Maeda.

Processing é, originalmente, uma modificação e simplificação da linguagem de programação Java. Ele usa os mesmos princípios, sintaxe e infra-estrutura, mas retira diversos aspectos originais da linguagem que exigem um conhecimento mais profundo sobre a ciência da computação, como níveis de proteção das variáveis e classes, inicio do código já com uma orientação à objetos com herança de classes, etc. O intuito de Fry e Reas era criar uma linguagem de programação para que artistas e designers pudessem se apropriar, e que pudessem utilizar como ferramenta em seus processos produtivos. Desde o início, o Processing foi projetado como uma primeira linguagem de programação. Foi inspirado em linguagens anteriores como BASIC e Logo, criadas na década de 60/70 para ensinar programação à principiantes e que, de fato, ensinou programação à grande parte dos professores de programação da atualidade, mas que seriam muito limitadas para as possibilidades da computação de hoje.

O Processing é voltado para a criação de mídia visual e interativa, portanto, os primeiros programas começam com o desenho. Iniciantes em programação se sentem mais confortáveis no aprendizado quando vêem seus programas produzindo algo na tela visualmente, e não apenas resultados abstratos. Isso se provou motivador para levar os alunos de design, arte e arquitetura à programação.

A linguagem P5 é uma forma atualizada do Processing. Criada por Lauren McCarthy em 2013, ela substitui a base Java do Processing por Javascript, liguagem nativa nos navegadores web, permitindo que os códigos possam ser executados em documentos web. Não se trata de uma versão melhor, ou pior, que o original, mas da mesma estrutura de programação voltada a outro contexto.

Esta linguagem permanece sendo muito utilizada para a criação de arte computacional, para instalações e projeções interativas. A comunidade OpenProcessing mantém uma série de obras criadas em sua própria plataforma usando Processing. O autor mantém uma curadoria com algumas obras de expressão gráfica generativa:

Algumas obras feitas com código criativo. Veja o painel completo.

Organização do material técnico

Este texto amplia o conteúdo do "livro" com todo o material técnico já produzido, relativo ao código Processing. Este conteúdo está organizado de acordo com a relação de cada instrução, ou conjunto de instruções, com o código:

Em Fundamentos se encontram os princípios e elementos básicos de quase todas as linguagens de programação formal, dentro do contexto de Processing. Em Código Criativo estão explicações necessárias para o uso e aplicação das principais instruções gráficas utilizadas para construir programas nesta linguagem.

O capítulo Funções auto-invocadas é dedicado às funções-tronco do código Processing, responsáveis por configurar o programa e realizar o trabalho permanente de desenho na tela. As Funções por Eventos tratam das instruções executadas pelo próprio Processing quando certo acontecimentos se efetivam. Em Funções de Desenho estão detalhadas cada função responsável pelo efetivo desenho na tela, enquanto em Funções Especificadoras, aquelas responsáveis pelas definições e características utilizadas pelas anteriores.

Em Funções de Transformação estão as instruções utilizadas para utilizar modificadores na matriz de transformação.

Nas Funções de Controle você encontrará o detalhamento das funções úteis para averiguar o que acontece com o programa, necessárias, sobretudo, quando ele não funciona.

Na sequência, você encontrará as demais linguagens de programação incluídas nesta obra no capítulo +Linguagens, e, finalmente, em Solicitações, os documentos através dos quais é possível solicitar que outros elementos ou procedimentos sejam incluídos futuramente neste material.

Ferramentas necessárias

A construção e execução deste tipo de programação depende da instação do ambiente Processing no computador. Este ambiente é mantido e distribuido gratuitamente pela Processing Foundation. O pacote inclui tanto o ambiente integrado de desenvolvimento (IDE), um editor de código que possui ferramentas integradas para ajudar na sua construção, quanto o ambiente de execução. Seu download pode ser realizando no próprio website do Processing:

Processing Downloads
Processing for Android Install

Outras opções de desenvolvimento, atualmente, são o uso de ambientes online, utilizadas integralmente dentro do próprio navegador. Para isto, contamos com ambientes integrados de desenvolvimento (IDEs), e ferramentas de experimentação - chamadas de Live Code - que interpretam e executam o código em tempo-real, conforme ele vai sendo digitado. Aqui estão as opções para o desenvolvimento de Processing nestes contextos:

LIVECODE

Observable: Processing Livecode
Processing Livecode Playground

IDE ONLINE

Visual Studio Code online
Visual Studio Code online (Github)
OpenProcessing - HTML / JS / Processing / P5.js Online IDE
CodeSandbox Processing Container
CodePen Processing Template

Experimentações com o código podem ser realizadas em qualquer página do material técnico desta obra, no próprio editor live code incluído, como o que se encontra logo abaixo. Nenhuma modificação feita nos documentos é permanente, e o editor está inserido nas próprias páginas do "livro" para torná-lo interativo, e permitir ao leitor que modifique e experimente com os códigos, sem a necessidade de instalar ou configurar nenhum software previamente.

O editor, infelizmente, não funciona na plataforma iOS.


  
void setup() { 
  size(150,150);
  background(#FFFFFF);
  frameRate(20);
  stroke(#78008A);
  strokeWeight(2);
  fill(#78008A);
}

colorMode(HSB, 300);
int ang, cx, cy, cor = 0, d = 20;

float radiano(int angulo) {
  float r = (angulo * PI)/180;
  return r;
}

void polarline(int x, int y, int tamanho, int angulo) {
  line(x,y,x+(cos(radiano(angulo))*tamanho),y+(sin(radiano(angulo))*tamanho));
}

void draw() {
  stroke(240,cor,250);
  d = random(20)+20;
  cx = width/2 + (cos(radiano(ang))*d);
  cy = height/2 + (sin(radiano(ang))*d);
  polarline(cx,cy,50+random(20)-15,ang);
  ang = ang + 3;
  cor++;
  if (cor>300) { 
      cor = 0;
  }
}
BASIC (Beginner's All-purpose Symbolic Instruction Code) é uma linguagem de programação criada para ensinar principiantes a progamar. Foi criada com finalidade didática em 1964 por John George Kemeny, Thomas Eugene Kurtz e Mary Kenneth Keller.
Fundação criada por Casey Reas e Ben Fry, e hoje dirigida por eles junto com Daniel Shiffman e Lauren McCarthy, é responsável por manter a plataforma Processing e todos os projetos correlatos de forma aberta e livre, manter a comunidade que se formou ao redor dela, e financiar projetos de arte e tecnologia.
Processing Foundation
Linguagem e ambiente de programação criada por Casey Rease e Ben Fry, orientados por John Maeda durante seus doutorados no MIT Media Lab, originalmente constituída como uma simplificação da linguagem Java e destinada para criação de arte, design e computação cirativa.
Processing.org
Casey Reas
EUA, 1972
Professor da Universidade da California em Los Angeles (UCLA), criador, junto com Ben Fry, da linguagem e ambiente de programação Processing, diretor da Processing Foundation.
Benjamin Fry
EUA, 1972
Designer, fundador da Fathom Information Design, criou junto com Casey Reas a linguagem e ambiente de programação Processing, diretor da Processing Foundation.
Lauren McCarthy
EUA
Artista e professora da Universidade da Califórnia em Los Angeles (UCLA), é diretora da Processing Foundation, e criadora da linguagem P5, uma modernização da linguagem Processing.
John Maeda
EUA, 1966
Foi professor no Massachussets Institute of Technology (MIT) e posteriormente presidente da Rhode Island School of Design (RISD).
Java é uma linguagem de programação inovadora, criada pela Sun Microsystems na década de 1990, que permitia a execução de um mesmo código para qualquer tipo de computador e/ou sistema operacional através de uma máquina virtual instalada nos computadores. É também uma linguagem orientada à objetos de uso geral, considerada mais simples que o C++.
Interaction Design Institute Ivrea (IDII)
Programa de pós-graduação estabelecido entre 2001 e 2006 nos antigos escritórios de pesquisa e desenvolvimento da Olivetti, na cidade de Ivrea na Itália, foi um dos centros mais importantes para o desenvolvimento recente do design computacional.
Um arquivo não oficial é mantido como memória do programa, terminado por corte de verbas.
MIT Media Lab, 1985
Laboratório de pesquisa do Massachussets Institute of Technology (MIT), abriga inúmeros grupos de pesquisa no campo de design, artes, arquitetura e tecnologia.
Website, Grupos de pesquisa