O código P5

P5 é uma modernização da linguagem Processing, promovida por Lauren McCarthy em 2013, que permitiu a migração do ambiente e das ferramentas do Processing para a web. O ambiente inicial, criado por Ben Fry e Casey Reas em 2001 era grafado como Proce55ing, pois o domínio "www.processing.org" já estava sendo usado por uma empresa. Em decorrência disso, ele era apelidado internamente de P5. Em sua adaptação para a web, McCarthy fez uma referência às origens e à história desta tecnologia.

P5 não é uma linguagem de programação. Ele é um framework: uma biblioteca de ferramentas de programação (API) voltada para as tecnologias criativas, que funcionam dentro de uma estrutura/mecanismo (pipeline) pré-definido. Tanto a biblioteca quanto esta estrutura foram herdadas do Processing, e se mantém praticamente idênticas, o que significa que qualquer pessoa com familiaridade em Processing poderá programar com P5 imediatamente, e vice-versa. A diferença entre as duas é que Processing utilza como base a linguagem Java, e P5 a linguagem Javascript, logo, diferenças de sintaxe, procedimentos e recursos que existem entre elas se refletirão na diferença entre Processing e P5.

P5, como 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.

P5 tem sido adotado amplamente para a criação de arte computacional, para instalações e projeções interativas, e para a visualização de dados. A comunidade OpenProcessing mantém uma série de obras criadas em sua própria plataforma usando Processing e P5. 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 P5. 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 P5.

O capítulo Funções auto-invocadas é dedicado às funções-tronco do P5, responsáveis por configurar o programa e realizar o trabalho permanente de desenho na tela.

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

P5 pode ser construído e executado sem a necessidade de ferramentas específicas para seu desenvolvimento. O código em sí é um arquivo de texto puro (UTF-8) que pode ser elaborado usando um editor como o Notepad (do Windows), o Text Editor (do MacOS ou Linux), ou mesmo através de um terminal (no Linux, MacOs, Windows, MS-Dos, ou qualquer outro sistema operacional). Há, contudo, ferramentas de produtividade destinadas a agilizar/facilitar seu desenvolvimento que incluem verificação de erros no código (Linting), marcação de sintaxe (Highlight), e outros recursos bastante úteis para o programador. Aqui está uma relação das ferramentas mais populares para edição de código:

p5.js Pad - Code Art Editor for Figma
Microsoft Visual Studio Code
Sublime Text
Brackets
Atom

Para trabalhar com estas ferramentas no seu ambiente local e off-line, será necessário o download da biblioteca P5:

P5.js Downloads

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 P5 nestes contextos:

LIVECODE

Observable: P5 Livecode
P5 no Observable
P5 Livecode Playground
P5 Live - P5 live coding

IDE ONLINE

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

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.




var count = 0;
var cor = '#78008A';
  
function draw () {
    
    stroke(cor);
    var x1 = random(300) - 75;
    var y1 = random(300) - 75;
    var x2 = random(300) - 75;
    var y2 = random(300) - 75;

    line(x1,y1,x2,y2);
    count++
    
    if (count > 1000) {
        count = 0;
        if (cor == '#78008A') { 
            cor = "#FFFFFF";
        } else {
            cor = '#78008A';
        }
    }
    
}
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