DESIGNLAB

Design, Tipografia e Multimédia.

AS2, Python, Processing, Lingo, AS3, Java, ou C++?

Parece uma frase em código, certo? Mas, normalmente, esta é uma das perguntas que surge sempre que se fala de um artista ou de um designer aprender a programar… afinal qual é a melhor linguagem ou programa que podemos utilizar para começar a programar?

Há uns dias, estive a ver a conferência do Ricardo Lafuente no Libre Graphics Meeting. Ele, e de certa forma a Ana Carvalho também, passam brevemente por este tópico (que já temos tido oportunidade de discutir). É sempre uma questão complicada. Para o Lafuente, o ShoeBot é a aplicação de eleição. Percebo e subscrevo, até certo ponto. Mas não partilho completamente a opinião dele. É preciso fazer uma escolha ponderada.

A minha resposta prende-se sempre com os objectivos a alcançar…

Em 40-60% das vezes respondo Flash / AS2. Para um artista ou designer que quer começar a programar, é um excelente ponto de partida. Não foi exactamente o meu, mas também serve. Para Flash, há bastante documentação on e off line. É uma ambiente visual e fornece um feedback quase imediato do que se está a passar (tal como o Lafuente diz) motivando os utilizadores. Permite a criação de gráficos e animações de forma visual e depois interagir através do código de forma bastante eficiente. A eficiência e o poder de processamento são especialmente evidente na versão As3 (bem mais complexa e menos recomendada para iniciantes).  É preciso dizer que, normalmente, a pergunta vem associada à criação de um site. Ou,  pelo menos, com a intenção de divulgar o trabalho à posteriori. O Flash é também a ferramenta mais utilizada na indústria (de criação web). Estas são vantagens inigualáveis em qualquer outra aplicação.

Mas, se vejo que as pessoas são interessadas, ou que querem começar a fazer algo que realmente envolva a criação (sem grandes condicionantes, ou agenda comercial), a minha resposta automática e universal é o Processing—é muito simples de aprender (a documentação necessária está online e é muito simples de estudar), suficientemente poderoso para fazer algum processamento em tempo real e permite usar todos os recursos de input e de output do computador. Recursos como a entrada e análise de vídeo, áudio e dados locais ou a partir da Internet. Saída de gráficos em vídeo, imagem ou PDFs para o disco do computador (uma limitação séria no Flash/AS), para a Web, ou mesmo para interagir com dispositivos físicos (através do Arduino).

Para além disto, o Processing é altamente extensível através de bibliotecas que já existem. Ao contrário do Flash, não temos um auxílio de ferramentas de desenho, nem uma timeline. Mas criar gráficos em Processing é MESMO muito simples—o feedback visual é imediato. Uma das principais vantagens, para mim, é colocar o utilizador mais em contacto com os princípios da programação—não temos as “distracções” da timeline, dos símbolos, nem da biblioteca do Flash. Isto é, se queremos manipular tempo, eventos, triggers, etc, temos que aprender a usa-los. No início custa, mas a longo prazo é um conhecimento muito útil. Podemos usar uma linguagem procedimental simples em Processing, mas assim que precisamos de mais, rapidamente escalamos para uma linguagem orientada aos objectos. Isto permite uma aprendizagem gradual e universal (?). Para mim, o AS2 e o PHP foram muito mais fáceis de aprender depois de aprender estas noções com Processing. Ah!… o Processing é gratuito! ;)

Por isso, sempre que surgir esta pergunta, devem sempre ter em conta os objectivos a cumprir, o tempo e recursos necessários e a utilidade posterior da ferramenta/linguagem.

Deixo aqui uma lista, uma apreciação de cada ferramenta que conheço para a criação digital, visual e interactiva. Deixem-me um comentário e digam-me qual é a vossa experiência com estas, ou outras ferramentas!

Flash: ActionScript 2.0 (AS2);

  • Plataformas: Mac OS X / Windows (Software proprietário)
  • Dificuldade (1-5): 2 Média-baixa;
  • Poder de processamento/possibilidades (1-5): 2 Médio-baixo;
  • Documentação (1-5): 4 Boa;
  • Publicação: On e Offline;
  • Pontos fortes: Gráficos vectoriais, facilidade de animação. Publicação multiplataforma + web. Tempos de compilação rápidos (bom para prototipagem);
  • Pontos fracos: Não faz síntese de áudio, “fechado” nas capacidades do próprio player;

Flash: ActionScript 3.0 (AS3);

  • Plataformas: Mac OS X / Windows (Software proprietário)
  • Dificuldade (1-5): 3 Média-alta;
  • Poder de processamento/possibilidades (1-5): 3 Médio-alto;
  • Documentação (1-5): 4 Boa;
  • Publicação: On e Offline;
  • Pontos fortes: (milhões de ) Gráficos vectoriais, facilidade de animação, manipulação 3D. Publicação multiplataforma + web. Tempos de compilação rápidos (bom para prototipagem);
  • Pontos fracos: Ainda não faz síntese de áudio (?), “fechado” nas capacidades do próprio player;

Processing: Processing (Java simplificado);

  • Plataformas: Mac OS X / Windows / Linux;
  • Dificuldade (1-5): 3 Média-alta;
  • Poder de processamento/possibilidades (1-5): 4 Alto;
  • Documentação (1-5): 5 Excelente!
  • Publicação: On e Offline;
  • Pontos fortes: Projecto Open Source académico com uma comunidade de utilizadores e developers extremamente activos, facilidade de aprendizagem, exemplos, extensível e versátil (através de bibliotecas). Publicação multiplataforma + web. Tempos de compilação rápidos (bom para prototipagem);
  • Pontos fracos: fraco em processamento em tempo real, não tem qualquer tipo de timeline, ou auxílio visual (apesar da versão do Kaleido existente para Mac);

Java: Linha de comandos (ou um IDE como o Eclipse ou Aptana)

  • Mac OS X / Windows / Linux;
  • Dificuldade (1-5): 4 Alta;
  • Poder de processamento/possibilidades (1-5): 4 Alto;
  • Documentação (1-5): 3 Média (linguagem para engenheiros ;)
  • Publicação: On e Offline;
  • Pontos fortes: Multiplataforma;
  • Pontos fracos: Aprendizagem demorada e complexidade de criação de gráficos;

DrawBot: Python (simplificado):

  • Mac OS X;
  • Dificuldade (1-5): 2 Média-baixa;
  • Poder de processamento/possibilidades (1-5): 3 Média;
  • Documentação (1-5): 3 Média (curta);
  • Publicação: Offline;
  • Pontos fortes: Linguagem simplificada, criação de gráficos imediata;
  • Pontos fracos: Poder de processamento limitado ao Python e portabilidade e publicação do código/app;

NodeBox: Python (simplificado);

  • Mac OS X;
  • Dificuldade (1-5): 2 Média-baixa;
  • Poder de processamento/possibilidades (1-5): 3 Média;
  • Documentação (1-5): 3 Média (curta);
  • Publicação: Offline;
  • Pontos fortes: Linguagem simplificada, criação de gráficos imediata;
  • Pontos fracos: Poder de processamento limitado ao Python e portabilidade e publicação do código/app

NodeBox 2: Python (simplificado);

  • Mac OS X / Windows / Linux;
  • Dificuldade (1-5): 2 Média-baixa;
  • Poder de processamento/possibilidades (1-5): 3 Média;
  • Documentação (1-5): (ainda não analisei);
  • Publicação: Offline;
  • Pontos fortes: Linguagem simplificada, criação de gráficos imediata. Tempos de compilação rápidos (bom para prototipagem);
  • Pontos fracos: Poder de processamento limitado ao Python e portabilidade e publicação do código/app

ShoeBot: Python (simplificado);

  • Linux;
  • Dificuldade (1-5): 2 Média-baixa;
  • Poder de processamento/possibilidades (1-5): 3 Média;
  • Documentação (1-5): (ainda não analisei);
  • Publicação: Offline;
  • Pontos fortes: Linguagem simplificada, criação de gráficos imediata. Tempos de compilação rápidos (bom para prototipagem);
  • Pontos fracos: Poder de processamento limitado ao Python e portabilidade e publicação do código/app

Spryte: Python (simplificado);

  • Windows;
  • Dificuldade (1-5): 2 Média-baixa;
  • Poder de processamento/possibilidades (1-5): 3 Média;
  • Documentação (1-5): (ainda não analisei);
  • Publicação: Offline;
  • Pontos fortes: Linguagem simplificada, criação de gráficos imediata;
  • Pontos fracos: Poder de processamento limitado ao Python e portabilidade e publicação do código/app

OpenFrameworks: C++ (simplificado, através de um editor com o XCode);

  • Mac OS X / Windows / Linux;
  • Dificuldade (1-5): 4 Alta;
  • Poder de processamento/possibilidades (1-5): 5 limitado pela imaginação?;
  • Documentação (1-5): 3 Média-Boa (tudo no site deles. Dá para começar a usar, ams às vezes é críptica…);
  • Publicação: Offline;
  • Pontos fortes: Open Source com um desenvolvimento em comunidade bastante activo. Elevado poder de processamento e versatilidade (através de bibliotecas complementares), criação de gráficos (quase) imediata. Publicação multi-plataforma;
  • Pontos fracos: Difícil de aprender e complexo (os próprios builds de cada aplicação levam tempo a compilar, aumentando o tempo de desenvolvimento e teste);

Cinder: C++ (mais ou menos simplificado, através de um editor com o XCode);

  • Mac OS X / Windows / Linux;
  • Dificuldade (1-5): 5 Alta;
  • Poder de processamento/possibilidades (1-5): 5 Alto;
  • Documentação (1-5): 2 Média-baixa (Tudo? online, mas é demasiado críptica para mim);
  • Publicação: Offline;
  • Pontos fortes: Open Source com um desenvolvimento a partir da própria Barbarian Group, com a promessa de adopção pela comunidade. Elevado poder de processamento e versatilidade (logo de raiz, mas com a possibilidade de incremento de bibliotecas especializadas), criação de gráficos (pouco?) imediata. Publicação multi-plataforma;
  • Pontos fracos: Mais difícil de aprender do que OpenFrameworks e complexo (os próprios builds de cada aplicação levam tempo a compilar, aumentando o tempo de desenvolvimento e teste);

HTML 5 (Canvas): HTML5 (editor de texto, ou um IDE como o Aptana)

  • Plataformas: Mac OS X / Windows / Linux / etc…
  • Dificuldade: (ainda não experimentei);
  • Poder de processamento/possibilidades (1-5): 2 Médio (limitado ao browser?);
  • Documentação (1-5): (ainda não analisei);
  • Publicação: On e Offline;
  • Pontos fortes: Candidato a standard de indústria (em 2012?)—corre em qualquer dispositivo com um browser actualizado (alguém consegue soletrar iPhone?);
  • Pontos fracos: limitado ao browser (?), interacção bastante limitada, técnicas de animação e de scripting difíceis de dominar (baseio-me apenas no que li até à data);

Max/MSP:  C++ (Visual Programming)

  • Mac OS X / Windows (Software proprietário)
  • Dificuldade (1-5): 3 Média-alta (é fácil de começar, mas a algoritmia torna-se muito complexa para o meu gosto);
  • Poder de processamento/possibilidades (1-5): 5 Alto;
  • Documentação (1-5): (ainda não analisei);
  • Publicação: Offline;
  • Pontos fortes: Linguagem visual (node compositing), manipulação de objectos, construção de patches e compilação muito rápida (excelente para prototipagem), poder de processamento em tempo (quase, ou mesmo) real. Perfeito para aúdio. Extensível;
  • Pontos fracos: Torna-se facilmente crítico/complexo à medida que os programas (patches) aumentam em funções. Desvia a nossa atenção da aprendizagem (dos conceitos) da programação revelando ser um investimento pouco versátil a longo prazo (para quem está a começar);

PureData: C++ (Visual Programming)

  • Plataformas: Mac OS X / Windows / Linux;
  • Dificuldade (1-5): (ainda não analisei);
  • Poder de processamento/possibilidades (1-5): 3 Médio (limitado ao ecrã?);
  • Documentação (1-5): (ainda não analisei);
  • Publicação: Offline;
  • Pontos fortes: Open Source. Linguagem visual (node compositing), manipulação de objectos, construção de patches e compilação muito rápida (excelente para prototipagem), poder de processamento em tempo (quase, ou mesmo) real. Perfeito para aúdio. Extensível;
  • Pontos fracos: Mais “feio” do que o Max. Torna-se facilmente crítico/complexo à medida que os programas (patches) aumentam em funções. Desvia a nossa atenção da aprendizagem (dos conceitos) da programação revelando ser um investimento pouco versátil a longo prazo (para quem está a começar);

VVVV: C++ (Visual Programming):

  • Plataformas: Windows (Software Proprietário)
  • Dificuldade (1-5): 3 Média-alta;
  • Poder de processamento/possibilidades (1-5): 5 Alto;
  • Documentação (1-5): (ainda não analisei);
  • Publicação: Offline;
  • Pontos fortes: (não analisei, mas parece-me que é) Ideal para programação e criação de gráficos 3D complexos;
  • Pontos fracos: (não analisei) ;

Director: Lingo

  • Plataformas: Mac OS X / Windows (Software Proprietário)
  • Dificuldade (1-5): 2 Média-baixa;
  • Poder de processamento/possibilidades (1-5): 3 Médio-alto;
  • Documentação (1-5): 4 Alto (ainda não analisei para as últimas versões);
  • Publicação: On e Offline;
  • Pontos fortes: Manipulação e integração de múltiplos (todos?) formatos de ficheiros multimédia, talvez o melhor do mercado para Vídeo, Áudio e 3D. Linguagem de Script simples e escalável (Lingo). Publicação multiplataforma + web. Tempos de compilação rápidos (bom para prototipagem);
  • Pontos fracos: “fechado” nas capacidades do próprio player, depende muito de bibliotecas externas (Xtras);

(imagem do topo do post retirada do site do Nodebox 2)

About these ads

12 Comments»

  guictx wrote @

Belo resumo! Talvez queiras acrescentar o Director que apesar de velhinho e com morte anunciada há vários anos, continua a ser actualizado pela Adobe.

  Pedro Amado wrote @

Obrigado guictx!
Na realidade não o incluí na lista, porque não o considerei como uma ferramenta de criação artística… Actualmente não o considero, mas talvez seja um erro preconceituoso da minha parte… Até porque foi com o (Macromedia) Director que me iniciei nesta área.
Vou incluir!

Já não o uso desde a versão 10 (mais ou menos desde 2004), o último trabalho que fiz com este Software foi para um trabalho de Laboratório Multimédia no Mestrado… já lá vão uns aninhos, e por isso o meu estado de actualização em relação ao Adobe Director é… fraco!

  Pedro Amado wrote @

Actualizei a entrada com o Director.

Adicionei também um esboço de Pontos fortes e Pontos fracos para cada software. É baseado na minha experiência e opinião, claro. Como não é consensual, gostava de saber mais sobre a experiência de quem lê este post (iniciados e ou veteranos ;)

  Cristina wrote @

Estou a fazer um trabalho em processing…
que apesar de me desenrascar bem com este software…me esta a dar muitas dores de cabeça…trata-se de um editor gráfico realizado em processing…
Eu sou do Porto e estou a precisar de ajuda…
Será que posso contar com a sua ajuda???
ou dar-me algumas dicas???

Obrigada,

Cristina

  Pedro Amado wrote @

Olá Cristina:
Sim, claro. Tenho todo o gosto em ajudar no que puder, dentro do pouco tempo que me resta no dia-a-dia… :(
Talvez seja mais fácil explicar-me primeiro no que consiste o trabalho (resumo, objectivos, algoritmos,…) e para que vai servir (escola, trabalho comercial…)

  Pedro Amado wrote @

P.S.: Tenho vários recursos online e links neste site. Para além de um manual das formações que dei faz já alguns anos na FBAUP (http://repositorio-aberto.up.pt/handle/10216/1848), tenho os slides da última edição na Audiência Zero (http://pedamado.files.wordpress.com/2008/03/slides_final.pdf) e um PDF do código organizado e comentado para cada uma das aplicações (http://pedamado.files.wordpress.com/2008/03/apps.pdf)

Talvez não fosse má ideia começar por ver se a solução já não está por aí?

  Cristina wrote @

Obrigada por me responder Pedro,
Enviei um mail para si com tudo o que o trabalho requer.
Este é o meu email: [removido pelo Pedro A.]
Desde já agradeço, ficando a aguardar a sua resposta.

Muito Obrigada

  Antonio wrote @

Tava procurando na internet quais linguagens eu poderia usar pra criar animações e tal, quando achei esse tópico. Muito bom o resumo! Nem sabia que existiam tantas linguagens assim, hehehe (até porque com relação a essas coisas só tenho mesmo a vontade de aprender, =P, kkk). A partir do que li acima, acho que vou começar a me aventurar pelo processing. Poderia me indicar algum livro bom para iniciantes (iniciantes com pouco conhecimento em linguagem de programação) ? Ah, vou abusar novamente! =P kkkkkk. Para começar a usar frameworks preciso de conhecimentos em c++, não é?

Grato desde já.

  Pedro Amado wrote @

Ainda @António:
Em relação ao OpenFrameworks e Cinder… confesso que não sei o suficiente sobre C++ para poder dar essa resposta… Diria que sim. Que necessita de conhecimentos básicos de programação em C++ para usar estas plataformas.

Pessoalmente, a manipulação da memória com apontadores e afins ainda me ilude. Mas creio que basta uma leitura cuidada da documentação (como http://www.cplusplus.com/doc/tutorial/) para ajudar a começar. Os próprios tutoriais do OpenFrameworks também são muito bons.

De resto, a minha abordagem a estas plataformas foi muito curta e apenas para conseguir colocar meia dúzia de gráficos a mexer em ecrã. Não costumo usar estas plataformas, e, por isso,… :(

  Pedro Amado wrote @

@António:
Olá. Aprovo completamente a decisão de usar o Processing para começar a programar. Alguns dos pontos fortes desta plataforma/linguagem residem no facto de ser livre (open source) e de toda a documentação necessária para a aprender estar publicada no próprio site!

No entanto, se continuar a pretender adquirir um livro para aprender recomendo o livro “oficial”: http://www.amazon.com/dp/0262182629?tag=designlab05-20&camp=0&creative=0&linkCode=as1&creativeASIN=0262182629&adid=1HZG9YHMCGRD35AQ6SYQ&

Existem muitos outros (e tenho-os todos…), mas considero este o mais completo e equilibrado.

  Antonio wrote @

Muito obrigado, Pedro.

Adquiri esse livro que vc citou (inclusive ele é muito bem recomendado em muitos fóruns).

Agora é esperar ele chegar e me preparar pra quebrar a cabeça (risos).

Valeu pela força!

[...] outra entrada que tem sido alvo recorrente neste blog é a análise de ferramentas criativas (neste caso de programação gráfica). Uma adição à lista que tenho que fazer neste post antigo é o do Raphael. Vista e muito bem [...]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 133 other followers

%d bloggers like this: