projeto por algoritmos: uma introdução à teoria do design computacional

13
Projeto por Algoritmos: Uma introdução à Teoria do Design Computacional 1 Prof. Hugo Cristo Sant’Anna, Msc. Universidade Federal do Espírito Santo Centro de Artes – Departamento de Desenho Industrial Laboratório de Psicologia da Computação – LabPC/UFES www.labpc.com.br / www.hugocristo.com.br Design, Computação, Psicologia, Algoritmos. Este capítulo descreve os fundamentos, níveis de análise, proposta metodológica e implicações pedagógicas da Teoria do Design Computacional, um sistema formal referente à abstração e automação de sistemas cognitivos. A Teoria foi elaborada com o intuito de ampliar os horizontes de atuação acadêmica e profissional dos designers a partir de contribuições da Ciência da Computação e Psicologia. 1 Introdução A necessidade de formulação de uma teoria do Design propriamente Computacional decorre do aumento da complexidade e diversidade das aplicações dos princípios da Computação nos mais diversos campos da atividade do homem. O Design, enquanto atividade essencialmente humana, desde sempre estabeleceu conexões com outras áreas do conhecimento visando materializar seus produtos. A perspectiva que viabiliza a formulação de uma Teoria do Design Computacional pensa o Design em sentido amplo, da programação visual ao projeto de produto; do sistema da moda à indústria de jogos; do branding à arquitetura e urbanismo; da animação à música eletrônica. Toda e qualquer atividade do homem, na interlocução com saberes diversos, poderá se beneficiar dessa discussão que propõe fundamentos, aplicações e delineamentos metodológicos para o projeto que emerge a partir do Pensamento Computacional (Wing, 2006). Parece razoável esclarecer desde o princípio que a Teoria do Design Computacional não é uma teoria acerca do uso dos computadores na realização de projetos como aqueles consolidados ao longo do séc. XX, especialmente representados pelos paradigmas do Desktop Publishing 2 . A Teoria defende, essencialmente, que a formação acadêmica e atuação profissional do designer na área de tecnologia devem mudar do consumo para o projeto de software e hardware. O Design Computacional, em linhas gerais, se propõe a: Transcender a interação humano-computador em direção à interação pervasiva e distribuída; Deslocar as relações com a matemática da linguagem geométrica para o discurso lógico-matemático; Transformar a dimensão instrucional dos produtos de design em comportamento inteligente; Expandir a noção de Design Centrado no Ser Humano (Human-Centered Design) para contemplar as interações de agentes e sistemas não humanos; Assumir o computador e os sistemas computacionais como fim e não como meio; Explorar a estética própria do que é computável: código como dados e dados como código. O presente capítulo sintetiza os fundamentos, níveis de análise, metodologia, implicações pedagógicas e referencial teórico da Teoria do Design Computacional, com o intuito de oferecer uma referência consolidada para estudantes de pesquisadores interessados na temática. 1 Este capítulo revisa a proposta original publicada no site www.designcomputacional.com.br em setembro de 2011. 2 Para uma breve discussão desse deslocamento, veja http://tinyurl.com/alem-do-desktop.

Upload: hugo-cristo

Post on 25-Jul-2015

36 views

Category:

Documents


2 download

DESCRIPTION

Texto base do Seminário do LabPC - 11, 12 e 13 de Julho - Universidade Federal do EShttp://labpc.com.br/seminarios/designcomputacional

TRANSCRIPT

Page 1: Projeto por Algoritmos: Uma introdução à Teoria do Design Computacional

Projeto por Algoritmos: Uma introdução à Teoria do Design Computacional1

Prof. Hugo Cristo Sant’Anna, Msc. Universidade Federal do Espírito Santo Centro de Artes – Departamento de Desenho Industrial Laboratório de Psicologia da Computação – LabPC/UFES www.labpc.com.br / www.hugocristo.com.br

Design, Computação, Psicologia, Algoritmos. Este capítulo descreve os fundamentos, níveis de análise, proposta metodológica e implicações pedagógicas da Teoria do Design Computacional, um sistema formal referente à abstração e automação de sistemas cognitivos. A Teoria foi elaborada com o intuito de ampliar os horizontes de atuação acadêmica e profissional dos designers a partir de contribuições da Ciência da Computação e Psicologia.

1 Introdução

A necessidade de formulação de uma teoria do Design propriamente Computacional decorre do aumento da complexidade e diversidade das aplicações dos princípios da Computação nos mais diversos campos da atividade do homem. O Design, enquanto atividade essencialmente humana, desde sempre estabeleceu conexões com outras áreas do conhecimento visando materializar seus produtos.

A perspectiva que viabiliza a formulação de uma Teoria do Design Computacional pensa o Design em sentido amplo, da programação visual ao projeto de produto; do sistema da moda à indústria de jogos; do branding à arquitetura e urbanismo; da animação à música eletrônica. Toda e qualquer atividade do homem, na interlocução com saberes diversos, poderá se beneficiar dessa discussão que propõe fundamentos, aplicações e delineamentos metodológicos para o projeto que emerge a partir do Pensamento Computacional (Wing, 2006).

Parece razoável esclarecer desde o princípio que a Teoria do Design Computacional não é uma teoria acerca do uso dos computadores na realização de projetos como aqueles consolidados ao longo do séc. XX, especialmente representados pelos paradigmas do Desktop Publishing2. A Teoria defende, essencialmente, que a formação acadêmica e atuação profissional do designer na área de tecnologia devem mudar do consumo para o projeto de software e hardware. O Design Computacional, em linhas gerais, se propõe a:

Transcender a interação humano-computador em direção à interação pervasiva e distribuída;

Deslocar as relações com a matemática da linguagem geométrica para o discurso lógico-matemático;

Transformar a dimensão instrucional dos produtos de design em comportamento inteligente;

Expandir a noção de Design Centrado no Ser Humano (Human-Centered Design) para contemplar as interações de agentes e sistemas não humanos;

Assumir o computador e os sistemas computacionais como fim e não como meio;

Explorar a estética própria do que é computável: código como dados e dados como código.

O presente capítulo sintetiza os fundamentos, níveis de análise, metodologia, implicações pedagógicas e referencial teórico da Teoria do Design Computacional, com o intuito de oferecer uma referência consolidada para estudantes de pesquisadores interessados na temática.

1 Este capítulo revisa a proposta original publicada no site www.designcomputacional.com.br em setembro de 2011.

2 Para uma breve discussão desse deslocamento, veja http://tinyurl.com/alem-do-desktop.

Page 2: Projeto por Algoritmos: Uma introdução à Teoria do Design Computacional

2

2 Uma teoria para o Design de sistemas autorregulados

A Teoria do Design Computacional (“TDC”) é um sistema formal referente à abstração e automação de sistemas cognitivos. A proposta articula conceitos da Psicologia, Ciência da Computação e Design na descrição de uma teoria própria para a análise, implementação e avaliação de máquinas computacionais contemporâneas. Apesar de sucinta, a definição da TDC requer uma discussão mais aprofundada sobre cada um dos termos mencionados, tendo em vista a acessibilidade do texto para leitores não familiarizados com as áreas de conhecimento envolvidas.

Design

A TDC considera o Design como uma atividade essencialmente humana e aberta a todas as áreas da práxis humana, na perspectiva ontológica de Bonsiepe (1997). O esquema usuário-objeto-ação efetiva é o ponto de partida para a explicação do domínio do Design, definido pela interface que emerge do acoplamento estrutural.

A idéia central do Design enquanto interface é o estabelecimento de interações estáveis ou recorrentes ao longo do tempo entre diferentes sistemas – usuário, objeto, meio. Nesse processo, há perturbações recíprocas entre os sistemas, desencadeando uma sequência de co-definições mútuas e concordantes , sem determinismos. Essa é a questão central do acoplamento estrutural (Maturana e Varela, 2005) ou enacção (Maturana e Varela, 1997).

Resumidamente, a TDC considera o Design como um histórico de interações que cria condições para a emergência de transformações interdependentes e entrelaçadas na existência do usuário, objeto e meio. Cada interação pode promover atualizações estruturais nos três sistemas, cada um adaptando-se para o futuro, conforme suas próprias dinâmicas internas (autonomia e autopoiese), a partir dos produtos do episódio interativo mais recente.

Computação

A Teoria do Design Computacional olha para a Computação numa perspectiva radicalmente distinta das demais abordagens do Design, adotando os princípios e fundamentos da Ciência da Computação como discurso projetual. Diverio (2011, p.246) destaca que o objeto do estudo da computabilidade é

[...] determinar a solucionabilidade de problemas, ou seja, investigar a existência ou não de algoritmos que solucionem determinada classe de problemas. Mais ainda, investigar os limites da computabilidade e, consequentemente, os limites do que pode efetivamente ser implementado em um computador.

Essa perspectiva articula paradigmas da matemática, ciências experimentais e engenharia (Denning et al, 1988) com vistas à pesquisa, modelagem e implementação de soluções para problemas em diversas áreas da atividade humana. Tal formulação evidencia que as contribuições da Computação para a área de Design não se resumiriam à oferta de software3, mas ao desenvolvimento de um conjunto particular de competências e habilidades de solução de problemas a partir de princípios como computação, comunicação, coordenação, armazenamento, avaliação, automação e projeto (Denning e Martell, 2007). Wing (2006; 2011) definiu esse conjunto de habilidades como Computational Thinking ou Pensamento Computacional, citando a Abstração e Automação como essências da Computação.

A popularização dos computadores pessoais nos anos 80 e emergência das ferramentas de Desktop Publishing (DTP) na vertente de alto-nível da informática (Moggridge, 2006) contribuíram para o fortalecimento de uma postura do designer – e de muitos outros profissionais – como usuário dos computadores. No entanto, a história da Computação também é a história do design das interfaces que permitiram abstrações das operações nos diversos níveis de representação dos computadores (Winograd e Flores, 1986), do físico, lógico e abstrato, normalmente restritos aos especialistas, em direção às linguagens de programação, sistemas operacionais e ferramentas de produtividade acessíveis aos usuários comuns (Dale e Lewis, 2011). Seja no projeto das interfaces de entrada e saída de dados, seja na concepção das metáforas que facilitam a realização de diversos tipos de atividades auxiliadas pelo

3 Tal oferta normalmente refere-se aos paradigmas do Desktop Publishing (DTP), Computer-Aided Design (CAD) e Computer-Aided Design and Drafting (CADD), Computer-Aided Industrial Design (CAID).

Page 3: Projeto por Algoritmos: Uma introdução à Teoria do Design Computacional

3

computador, o designer sempre desempenhou um papel ativo no planejamento e implementação das ferramentas computacionais.

As duas vertentes4 descritas por Moggridge para o Design de Interação descrevem bem o dilema atual dos designers: o projeto circunscrito ao universo da high road é apenas uma face do problema de design dos sistemas computacionais, de forma que seus produtos finais estão naturalmente limitados a um conjunto de possibilidades técnicas já previstas na própria forma de operação da plataforma utilizada. Vale ressaltar que não se está questionando o papel fundamental da criatividade do designer na dobra ou ruptura desses limites. Conforme sugere Meira (2010)

[...] Se você não souber escrever software – e não se trata de usar uma linguagem de programação sofisticada, complexa, mas saber qual é o software da sua profissão e como se ajuda a escrevê-lo –, definitivamente terá um problema de competitividade no futuro próximo.

Se você imaginar que conseguirá sobreviver sem saber programar em um mundo totalmente programável, está sendo basicamente levado pelos acontecimentos. Está sendo um objeto.

Temas emergentes no cenário tecnológico das últimas décadas como Computação Ubíqua e Pervasiva (Weiser, 1991; Weiser e Brown, 1996), Internet das Coisas (Sterling, 2005), Computação Afetiva (Picard, 1999), Inteligência Ambiental (Epstein, 1998) e Computação Vestível (Poli, 2003) redefiniram os limites da atuação do designer ao apontarem o surgimento de objetos inteligentes. Essa inteligência manifesta as duas faces das demandas de projeto contemporâneas: de um lado, o uso da tecnologia no sistema produtivo como auxílio à materialização de produtos e serviços (DTP, CAD, CADD, CAID); do outro, o projeto do comportamento inteligente desses produtos e serviços na interação com seus usuários.

Abstração

A abstração é um dos paradigmas da Computação (Denning et al, 1988), articulando-se com ciências experimentais e engenharia no conjunto de competências desejadas para a emergência do Pensamento Computacional. No entanto, a abstração própria da Computação seria simbólica e extrapolaria tempo e espaço, operando de forma distinta daquela discutida, por exemplo, nos campos da Física e Matemática.

Figura 1 – Processo de Abstração

Wing (2008) sugere dois níveis de análise das abstrações com o intuito de diferenciá-las das empregadas em outras áreas. O primeiro nível contempla a abstração de procedimentos em algoritmos5, os sistemas formais nos termos de expressões válidas em linguagens de programação, ou na previsão de falhas e erros a partir de restrições e limitações de projeto. O segundo nível descreve as abstrações na Computação como a realização do trabalho em camadas: 1) a de interesse; 2) aquela imediatamente abaixo onde ocorrem os processos

4 Moggridge descreve duas linhas evolutivas para o Design de Interação: 1) A high road ou via gráfica, descendente do NLS de Douglas Engelbart, que culminaria na World Wide Web e demais sistemas gráficos contemporâneos direcionados ao público em geral; e 2) a low road ou via do teletexto, representada principalmente pelos sistemas operacionais no modo terminal (Unix, Linux, MS-DOS) e linguagens de programação de baixo nível (Assembler) ou mesmo alto nível, desde que não sejam visuais (C, Pascal etc), voltadas aos especialistas.

5 Apesar de citarmos um algoritmo como uma sequência de procedimentos, somos fiéis à conceituação de Knuth (1997) que explica os algoritmos com base em cinco características importantes: finitude, distintividade, entradas, saídas e eficácia.

Page 4: Projeto por Algoritmos: Uma introdução à Teoria do Design Computacional

4

computacionais subjacentes; e 3) outra imediatamente acima, onde os resultados das ações na camada de interesse seriam observados.

A abstração é interface entre processos computacionais, conectando domínios distintos e possibilitando a compreensão (ou a construção) da relação entre eles. Nesse aspecto, a TDC descreve as transformações promovidas pelo acoplamento estrutural no domínio ontológico do Design nos termos de abstrações computacionais. Colocando de outra forma, o processo de Design Computacional articula ferramenta, usuário e ação efetiva por abstrações que estruturam os Níveis de Análise da Teoria, transformando:

Fenômenos físicos elementares em sentenças lógicas – do Nível Físico para o Lógico;

Sentenças lógicas em instruções – do Nível Lógico para o Abstrato;

Instruções em estruturas simbólicas – do Nível Abstrato para o Simbólico;

Estruturas simbólicas em comportamento da máquina no desempenhar de ações efetivas – do Nível Simbólico para o Esquemático.

Automação

O processo de automação consiste na mecanização das abstrações, das camadas de abstração e das relações entre elas (Wing, 2008). Os dispositivos computacionais, dentre os quais incluímos os objetos inteligentes citados anteriormente, são formados pela automação de diversas camadas de abstração. A TDC explica o processo de automação nos Níveis de Análise, abordando as transformações estruturais que ocorrem no processo de abstração. Essa conceituação parte da descrição original de Winograd e Flores (1986) acerca dos níveis de representação das estruturas simbólicas nos computadores com o intuito de detalhar aquilo que os autores chamaram de comportamento da maquina na execução de um programa.

Independentemente da natureza da máquina computacional, seu comportamento pode ser observado segundo abstrações entre os Níveis de Análise e sua automação resulta da mecanização das abstrações de um nível sobre o outro. Na TDC, as relações entre os elementos estruturantes de cada camada de abstração e automação consistem em um sistema formal. A automação é um processo relacional que age no sentido inverso da abstração:

Descrevendo esquemas para o comportamento pela coordenação de estruturas simbólicas – do Nível Esquemático para o Simbólico.

Codificando estruturas simbólicas nos termos de instruções – do Nível Simbólico para o Abstrato;

Implementando instruções via sentenças lógicas – do Nível Abstrato para o Lógico;

Traduzindo sentenças lógicas em fenômenos fisicos elementares – do Nível Lógico para o Físico.

Figura 2 – Processo de Automação

Pode-se propor uma aproximação, apenas para fins explicativos, entre as operações realizadas por designers nas metodologias tradicionais de projeto (levantamento de dados, geração de hipóteses, geração de alternativas, construção, experimentação) e o processo de automação. Dada a complexidade da modelagem conceitual de um determinado comportamento a ser implementado em uma máquina computacional, as tarefas frequentemente mencionadas como parte do processo de Design ocorrem na automação, mas não a explicam nem a definem.

Page 5: Projeto por Algoritmos: Uma introdução à Teoria do Design Computacional

5

Sistema Formal

A estratégia de descrever a Teoria do Design Computacional como um sistema formal deve-se, em grande parte, à influência do trabalho de William J. Mitchell6. Além de ser um dos pioneiros no uso do termo, o pesquisador criou condições para a discussão do Design em geral (e da Arquitetura em especial) nos termos de uma linguagem formal, incorporando temas das Ciências Cognitivas e Computação à prática projetual (Mitchell, 2008).

Um sistema formal precisa oferecer 1) um número finito de elementos primitivos a partir dos quais expressões possam ser formadas; 2) formas de validação daquelas expressões no contexto de uma gramática; 3) um conjunto de proposições ou axiomas passíveis de validação; 4) um conjunto de regras de inferência. Os dois processos fundamentais da TDC – Abstração e Automação – realizam-se por meio de operações (instanciamento, combinação, transformação, substituição, álgebras) sobre os objetos que compõem o vocabulário da linguagem formal da Teoria em cada Nível de Análise (físico, lógico, abstrato, simbólico, esquemático).

A recursividade da Teoria enquanto sistema formal permite abstrações sucessivas entre as proposições em cada um dos Níveis de Análise, de cima para baixo ou de baixo para cima: os elementos primitivos e axiomas em uma camada podem representar teoremas no nível inferior; a gramática de um nível necessariamente contém as gramáticas dos níveis inferiores e está contida na dos níveis superiores; regras de inferência são relativas a um determinado nível, mantendo-se a lógica intrínseca aos elementos dos níveis inferiores.

No que tange às implicações do sistema formal descrito para a atividade de projeto, a TDC se apresenta como um formalismo completo: todos os Níveis de Análise, seus elementos primitivos, as expressões e formas de validação na gramática, a própria gramática, os axiomas, regras de inferência e o sistema formal em si são máquinas computacionais capazes de serem implementadas em uma máquina computacional. Essa premissa conecta os fundamentos do Design, Computação, sistema formal e sistemas cognitivos ou máquinas computacionais na delimitação da Teoria.

Sistemas Cognitivos e Máquinas Computacionais

Na abordagem da TDC, o esquema ontológico de Bonsiepe (1997) é expandido para contemplar outros sistemas cognitivos além dos seres humanos. O Design não opera apenas nas interfaces entre os usuários-humanos e os objetos-ferramentas, mas na criação de relações estáveis e recorrentes ao longo do tempo entre diferentes sistemas cognitivos.

Figura 3 – Acoplamento Estrutural

A TDC, originalmente, discutiu os sistemas cognitivos nos termos de máquinas computacionais, mas a terminologia foi evitada deliberadamente para evitar possíveis leituras mecanicistas da proposta. No entanto, conforme será explicitado a seguir, tal desvio só foi possível em decorrência de uma relação explicativa direta entre a máquina e o sistema, entre a cognição e a computação. Uma máquina computacional é um tipo especial de máquina autopoiética (Maturana e Varela, 1997, p.71):

[...] Uma máquina autopoiética é uma máquina organizada como um sistema de processos de produção de componentes concatenados de tal maneira que produzem componentes que: I) geram os processos (relações) de produção que os produzem através de suas contínuas interações e transformações, e II) constituem à máquina como uma unidade no espaço físico. Por conseguinte, uma máquina autopoiética continuamente especifica e produz sua própria organização através da

6 Ver http://web.media.mit.edu/~wjm/

Page 6: Projeto por Algoritmos: Uma introdução à Teoria do Design Computacional

6

produção de seus componentes, sob condições de contínua perturbação e compensação dessas perturbações (produção de componentes).

Os processos de produção de uma máquina computacional são computações. A organização de uma máquina dessa natureza consiste em uma série de relações entre processos computacionais que definem seus limites e que a constituem enquanto unidade. Não se trata de uma máquina universal (Turing, 1936) transformando (computando) entradas em saídas (função computada), mas de um formalismo distinto que privilegia os processos autônomos e homeostáticos daquela organização. Uma máquina computacional não realiza computações, ela é a relação entre as computações que a definem.

Maturana e Varela (1997, p.73) listam consequências para a formulação autopoiética de máquinas como as computacionais:

I) As máquinas autopoiéticas são autônomas; quer dizer, subordinam todas as suas mudanças à conservação de sua própria organização, independentemente de quão profundas sejam as outras transformações que possam sofrer durante o processo [...]

II) As máquinas autopoiéticas possuem individualidade: isto é, por meio da manutenção invariável de sua organização conservam ativamente uma identidade que não depende de suas interações com um observador [...]

III) As máquinas autopoiéticas são definidas como unidade por, e apenas por, sua organização autopoiética: suas operações estabelecem seus próprios limites no processo de autopoiese [...]

IV) As máquinas autopoiéticas não possuem nem entradas nem saídas. Podem ser perturbadas por fatos externos, e experimentar mudanças internas que compensam essas perturbações [...] qualquer série de trocas internas que se produzam está sempre subordinada à conservação da organização da máquina, sendo esta condição definitória das máquinas autopoiéticas [...]

O resultado da interação entre uma máquina computacional, um usuário, o meio ou outra máquina computacional está circunscrito ao conjunto de processos que a organização da própria máquina define. Em termos projetuais, a TDC enfatiza a incompatibilidade entre os inputs e outputs de alguns modelos populares do Design de Interação (por exemplo, Card, Moran e Newell, 1986) e as noções de feedback e feedforward da cibernética. No primeiro caso, fala-se em respostas a determinadas classes de informação sem que haja necessariamente algum tipo de transformação no design ou usuário como consequência.

Apesar da maioria dos sistemas interativos contemporâneos não permanecerem estáticos após a produção de uma “saída”, as abordagens vigentes no Design de Interação concentram-se na construção de sentido apenas pelo usuário. Wiener (1970, p.17) explica a informação nos termos do “conteúdo daquilo que permutamos com o mundo exterior ao ajustar-nos a ele, e que faz com que nosso ajustamento seja nele percebido”. A face cognitiva das máquinas computacionais revela-se no entendimento da percepção como construção: todo fazer é um conhecer e todo conhecer é um fazer (Maturana e Varela, 2005).

Uma teoria sobre máquinas computacionais, consideradas como sistemas cognitivos autopoiéticos, precisa contemplar o outro extremo do Design de Interação: a construção de sentido pelos objetos em si. Mais do que isso: precisa considerar que a interface existe apesar do uso, não simplesmente pelas affordances (Gibson, 1977; Norman, 1999; Norman, 2002) ou pela dinâmica de um determinado sistema de objetos em uma cultura (Baudrillard, 2000), mas pela construção ativa do objeto que se faz interface.

A possibilidade de intercâmbio entre os conceitos de máquina computacional e sistema cognitivo fundamenta-se, portanto, no entendimento de que 1) uma máquina computacional se constrói enquanto percebe, significa e age sobre o meio; 2) tal construção (percepção, significação, ação) é essencialmente computacional e tem como produto nenhuma outra ação sobre o meio além da perpetuação da existência da própria máquina.

3 Níveis de Análise

A TDC descreve cinco níveis de análise para as máquinas computacionais, ampliando o esquema original de Winograd e Flores (1986) acerca dos níveis de representação das estruturas simbólicas nos computadores, com o intuito de detalhar aquilo que os autores chamaram de comportamento da maquina durante a execução de um programa.

Page 7: Projeto por Algoritmos: Uma introdução à Teoria do Design Computacional

7

Figura 4 – Níveis de Análise da TDC

Conforme descrito nos fundamentos da Teoria:

Cada nível é uma camada de abstração das máquinas computacionais, e a análise deve observar as relações entre a camada de interesse, seus processos subjacentes na camada inferior, e os resultados da sua ação na camada superior;

A estrutura de cada nível é descrita nos termos de um sistema formal, de maneira que a análise visa formalizar tal estrutura;

A separação entre os níveis é puramente teórica. O comportamento de uma máquina computacional emerge das interações entre as camadas de abstração e a análise desse comportamento deve privilegiar o sistema e suas relações, não seus elementos constituintes;

A análise deve considerar a interdependência dos processos de Abstração e Automação: um determinado fenômeno é sempre produto e produtor de si mesmo. A máquina computacional é a primeira Abstração e a Automação última da análise.

Para o detalhamento dos níveis a seguir, assume-se o sentido de baixo para cima (bottom-up) para as Abstrações e de cima para baixo (top-down) para as Automações:

Nível Físico

As Abstrações e Automações neste nível estão subordinadas às leis da física. De baixo para cima, busca-se compreender as perturbações do ambiente, do usuário ou de outras máquinas levando-se em consideração a gravidade, eletrostática, mecânica, termodinâmica e assim por diante. A gravidade, por exemplo, não se apresenta como um índice objetivo, sendo necessária a Automação de estruturas, de cima para baixo, capazes de processar tal perturbação do meio conforme as operações internas da máquina computacional em questão.

Nível Lógico

O processamento das perturbações observadas no Nível Físico requerem uma arquitetura não necessariamente implementada na camada sensorial. O Nível Lógico constrói Abstrações sobre as atividades dos sensores no Nível Físico transformando, por exemplo, um fluxo contínuo de dados em verdadeiros ou falsos (sentenças lógicas) no que diz respeito à atividade daquele sensor. Por outro lado, o Nível Lógico também é responsável pela Automação de estruturas capazes de traduzir instruções complexas das camadas superiores em sentenças lógicas capazes de serem realizadas pelos atuadores no Nível Físico.

Nível Abstrato

Mesmo sem considerar o funcionamento de baixo nível das estruturas no Nível Físico, o Nível Lógico ainda está distante do comportamento da máquina computacional propriamente dita. Construir sentenças lógicas para representar comportamentos complexos é uma tarefa árdua, pouco produtiva e sujeita a erros. No Nível Abstrato, tais sentenças são sistematizadas como instruções sequenciais ainda relativamente simples, considerando-se o comportamento da máquina como um todo, mas que nas camadas inferiores representam padrões lógicos e físicos completos.

Pode-se sugerir que no Nível Abstrato emergem as formas mais primitivas e observáveis do comportamento da máquina computacional. Se nos níveis inferiores os sensores e atuadores

Page 8: Projeto por Algoritmos: Uma introdução à Teoria do Design Computacional

8

eram centrais para a análise das operações em curso, no Nível Abstrato tais componentes são incorporados a um conjunto de ações mais gerais: andar e correr ao invés de acionamento de motores; sentir ao invés de calcular distâncias. Também é no Nível Abstrato que surgem os primeiros problemas de desempenho, à medida que as ações gerais distanciam-se dos processos elementares.

Nível Simbólico

Conjuntos de instruções do Nível Abstrato organizadas em regras de produção (Newell e Simon, 1976; Anderson, 2004) podem formar algoritmos, que na prática descrevem sequências de procedimentos que produzirão os comportamentos observáveis da máquina computacional no Nível Simbólico.

Todo comportamento é simbolico na máquina e para a máquina. É o significado instrumental das ações que tanto explica seus desdobramentos abstratos, lógicos e físicos quanto faz parte da explicação dos esquemas do comportamento na camada superior. Em termos computacionais, no Nível Simbólico observa-se a formação de conceitos, estruturas simbólicas decorrentes dos acoplamentos estruturais da máquina com o usuário, meio ou outras máquinas. Nesse processo, a máquina requer a automação de procedimentos de memória capazes de representar conceitos e permitir a comparação de informações novas com aquelas já conhecidas.

A análise das operações no Nível Simbólico tem como objetivo principal a representação do conhecimento, seja para a busca e recuperação sobre episódios de perturbações anteriores na memória, seja para assimilar ou acomodar (Piaget, 2010) novas perturbações. Considerando a formalização das máquinas computacionais como sistemas cognitivos cujo fazer é um conhecer, é no Nível Simbólico os esforços de projeto se acentuam para possibilitar a construção de sentido para além do usuário.

Nível Esquemático

Os conceitos emergentes no Nível Simbólico são a base para a formação e aplicação de esquemas que finalmente descrevem o comportamento observável de uma máquina computacional. O conceito de esquema assim como suas bases teóricas são recorrentemente discutidas nas Ciências Cognitivas (ver, por exemplo, as revisões de Rumelhart, Smolensky, McClelland e Hinton, 1986; Marshall, 1995; Sabella, 1999), mas a definição de Rumelhart e Ortony (1971) é especialmente interessante para os Níveis de Análise da TDC.

Segundo os autores, os esquemas teriam as seguintes funções: a) compreensão, nos termos da seleção de um esquema que lidará com a informação a ser compreendida, seguida da avaliação se o esquema efetivamente dará conta daquela informação; b) memorização, como conseqüência da compreensão, baseada no armazenamento dos efeitos, cópias ou cópias parciais dos esquemas instanciados na interpretação da informação recebida; c) inferência, tendo em vista tanto a realização de predições sobre informações ainda não recebidas com base nos esquemas existentes na memória, quanto no preenchimento de lacunas de informações incompletas ou parciais; d) estruturação das ações, de forma a estabelecer relações entre planos em um nível mais abstrato e suas execuções na prática.

As análises no Nível Esquemático precisam investigar como as estruturas simbólicas de uma máquina computacional são formadas, atualizadas e selecionadas (abstração) para orientar o comportamento (automação) do sistema. A tomada de decisões e o raciocínio são questões próprias do Nível Esquemático, especialmente no que tange às transformações das estruturas simbólicas da máquina: a eficiência (ou ineficiência) de um determinado esquema para a solução de um problema deve fortalecer (ou enfraquecer) as conexões entre aquele esquema e a perturbação percebida.

Por fim, cabe ressaltar que o Nível Esquemático geralmente corresponde ao ponto de vista do observador em relação ao diversos estados de uma máquina computacional, pelo menos no que diz respeito às operações nesta camada. Outras máquinas, o meio e o usuário elaboram representações sobre aquela máquina com base no comportamento orientado pelas operações do Nível Esquemático numa perspectiva similar à da formação da imagem do sistema de Norman (2002).

Page 9: Projeto por Algoritmos: Uma introdução à Teoria do Design Computacional

9

Da Análise para a Síntese

Os níveis de análise da Teoria do Design Computacional são ferramentas descritivas, orientadas à explicação do comportamento das máquinas computacionais. Entretanto, conforme sugere a breve exposição acima, tais ferramentas descritivas estão intimamente ligadas à dimensão construtiva da Teoria.

A observação de máquinas, animais, seres humanos, do ambiente ou de qualquer outro sistema autopoiético pode contribuir para a elaboração de esquemas possíveis de serem implementados como máquinas computacionais. É nessa direção que a Metodologia da TDC estabelece suas bases.

4 Metodologia

A metodologia de projeto e implementação das máquinas computacionais realiza os fundamentos da TDC nos Níveis de Análise em um processo iterativo de três fases, onde a complexidade do acoplamento estrutural entre os sistemas e seus subsistemas ora muda de grau, ora muda de natureza.

Apesar da separação didática das fases, o processo é um só: Automação, Abstração e Interação devem acontecer simultaneamente, de forma iterativa, tendo em vista a composição de estruturas que contribuam para a emergência do comportamento desejado para a máquina.

Figura 4 – Esquema metodológico da TDC

Fase de Abstração

Em termos gerais, a Fase de Abstração compreende uma elaboração bottom-up que orienta a atividade da máquina computacional, descrevendo seu comportamento do nível físico ao esquemático. Os produtos finais desta fase são as relações informacionais, computacionais e de controle entre os níveis, descrevendo como uma determinada perturbação é recebida, processada e transformada de maneira a orientar as ações nos níveis superiores. Da mesma forma, tal perturbação também pode ser entendida como o produto das operações realizadas na camada inferior, cabendo ao designer descrever como esse fluxo informacional afeta o comportamento da máquina. O foco de interesse da Fase de Abstração é descrever as estruturas de construção de sentido da Máquina na interação com o meio, com outras máquinas ou com o usuário. A última questão a ser respondida nesta fase deve ser condizente com o comportamento observável da Máquina.

Fase de Automação

Cada percepção, processamento e transformação realizadas na Fase de Abstração depende da implementação top-down, seja em hardware ou software, das estruturas de construção de sentido. Uma estrutura implementada numa máquina informa ou recebe informação, computa ou entrega funções computadas, e controla ou é controlada.

Page 10: Projeto por Algoritmos: Uma introdução à Teoria do Design Computacional

10

Toda e qualquer estrutura resultante da Fase de Automação deve ser modular, autônoma e autopoiética conforme descrito nos fundamentos da teoria.

Fase de Interação (ou de Acoplamento)

A máquina só pode manifestar seu comportamento na interação com o usuário, o meio ou outras máquinas. A Fase de Interação visa realizar o acoplamento ou acoplamentos estruturais da máquina e é nesse contexto que a experimentação e avaliação do seu funcionamento acontecem. Pode-se entender que os resultados da Fase de Interação foram satisfatórios quando os acoplamentos observáveis da máquina são recorrentes e relativamente estáveis, assim como seus desdobramentos mútuos.

5 Implicações pedagógicas e um exemplo prático

Retomando as intenções originais da Teoria do Design Computacional apresentadas na introdução deste capítulo, faz-se necessário rever como os fundamentos, níveis de análise e metodologia apresentados até aqui representam mudanças de paradigmas no processo de ensino-aprendizagem em cursos superiores ou técnicos de Design.

Em primeiro lugar, cabe ressaltar como a centralidade do pensamento algorítmico na Teoria transforma os produtos finais do processo de Design nos próprios algoritmos e não em objetos ou sistemas de signos. A metodologia descrita no item 4 gera, em última instância, código, que é modificado de forma iterativa e incremental.

Em segundo lugar, a realização do projeto, no sentido consolidado para a área de Design, reposiciona os momentos dedicados ao levantamento de dados, geração de alternativas, construção e experimentação em um continuum espiralado e crescente onde o código projetado para os Níveis Físico, Lógico, Abstrato, Simbólico e Esquemático é atualizado na interação com o meio, o usuário ou outra máquina computacional. Ao invés de entender as diferentes abordagens para a solução de problemas de projeto como hipóteses e alternativas, adota-se o controle de versões nos mesmos moldes daquele praticado na engenharia de software. Pode-se observar que não há, na implementação de projetos segundo a perspectiva da TDC, o mesmo distanciamento entre geração de alternativas e experimentação inerente às abordagens tradicionais de Design, pelo simples fato de as linguagens e ambientes de programação a serem utilizados são, em si mesmos, sistemas formais completos. A validação dos algoritmos começa na escrita, pela sintaxe e semântica da linguagem empregada. Em outros termos, no projeto de algoritmos, a experimentação acontece simultaneamente (via interpretadores) ou imediatamente após a geração da hipótese (via compiladores)7.

Em terceiro e último lugar, a abstração-automação-interação em espiral como atividade básica do método permite ao usuário, meio ou outra máquina computacional interagirem com o sistema em desenvolvimento desde a versão zero. As operações em cada um dos níveis de análise mudarão de grau a cada geração, não de natureza, de maneira que é possível realizar, já no fim do primeiro ciclo, um acoplamento estrutural relativamente estável da máquina computacional. Essa característica deve-se às conexões do método da TDC com a biologia do conhecimento de Maturana e Varela: o sistema construído é pensado e projetado como vivo e em evolução. Uma perturbação do meio pode não desencadear transformações na dinâmica interna do sistema na geração n, mas essa situação pode ser modificada na geração n+1 a partir da mudança de grau das operações em qualquer um dos níveis de análise.

Por definição, um objeto de Design Computacional interage enquanto evolui e evolui enquanto interage. Talvez essa seja a maior mudança didática para os estudantes de Design, pois não parece muito simples conceber em uma cadeira cujo assento emerge das suas matérias primas à medida que o usuário se senta e reconhece aquele processo como assento.

7 A diferença entre os dois paradigmas escapa ao escopo deste texto, mas um exemplo simples pode esclarecer a distinção. Algumas linguagens e ambientes de programação interativos validam o código escrito imediatamente, podendo informar ao designer eventuais problemas de sintaxe, semântica ou mesmo da lógica adotada. Esse paradigma é mais comum entre os interpretadores de código ou ambientes integrados de desenvolvimento (IDEs). Já os compiladores adotam uma perspectiva ligeiramente distinta: a validação é realizada em tempo de execução (runtime) ou na transformação do código em linguagem de máquina (compilação), de forma que o algoritmo pode ser escrito inteiramente antes de passar por qualquer tipo de teste. Em qualquer uma das alternativas, não há distinção entre gerar a hipótese e construí-la, uma vez que o código é o produto final.

Page 11: Projeto por Algoritmos: Uma introdução à Teoria do Design Computacional

11

A problematização pedagógica da Teoria estaria, portanto, na criação de discussões que favorecessem o entendimento do caráter emergente das máquinas computacionais. A Figura 5 descreve um sistema cognitivo completo8 cuja construção é exemplificada a seguir nos moldes de uma dinâmica didática:

Figura 5 – Aplicação da TDC na implementação de uma máquina teórica M

Como o comportamento observável desse sistema se manifesta? O primeiro passo consiste em descrever o que a máquina faz (parte inferior da Figura 5).

// Nível Esquemático Transformar cor-luz em pigmento.

Como o comportamento descrito foi possível, considerando os sentidos bottom-up e top-down dos níveis de análise? Partindo-se do Nível Esquemático, a discussão segue tentando detalhar, da maneira mais simples possível, o conjunto de operações e transformações ocorridas nível a nível para que tal comportamento ocorresse (parte superior da Figura 5).

// Do Físico (1) ao Esquemático (5), abstração bottom-up 1. Captar estímulos luminosos do meio. 2. Analisar o estímulo luminoso como espectro cromático. 3. Para o espectro analisado, identificar os índices R, G, B. 4. Para cada índice RGB, encontrar o CMYK correspondente. 5. Transformar cor-luz em pigmento.

8 Não faz parte do exemplo a implementação das operações de memória da máquina computacional, que apesar de ser fundamental para o caráter efetivamente cognitivo do sistema, requereria uma discussão própria acerca da sua construção. Em termos gerais, a memória da máquina exemplificada teria papel importantíssimo na ativação dos esquemas de reconhecimento de cores em situações adversas (pouca luz, fonte de luz matizada ou amostra prejudicada), completando as perturbações parciais recebidas com dados de interações anteriores semelhantes. O principal caminho para a implementação dessas operações seria pelo projeto de redes neurais.

Page 12: Projeto por Algoritmos: Uma introdução à Teoria do Design Computacional

12

// Do Nível Esquemático (5) para o Físico (1), automação top-down 5. Transformar cor-luz em pigmento. 4. Para cada cor CMYK, escrever índices C, M, Y e K. 3. Para cada índice, quantificar a porcentagem de tinta em pontos do plotter. 2. Para cada ponto do plotter, abrir e fechar o dispensador de tinta. 1. Pigmentação do meio.

Como cada operação definida em termos gerais pode ser detalhada nível a nível, considerando a relação entre os produtos de um e as perturbações que desencadearão transformações no outro? Neste momento, a discussão deve concentrar-se na abstração e automação da camada de interesse, contemplando as consequências da sua atividade nas camadas acima e abaixo. A principal questão é compreender a comunicação das informações entre as camadas.

// Exemplo de operações apenas no Nível Abstrato // Abstração bottom-up 3.1. Receber comprimento e frequência de onda do Nível Lógico. 3.2. Traduzir comprimento de onda e frequência em índices R, G, B. 3.3. Enviar ao Nível Simbólico uma estrutura R, G, B. // Automação top-down 3.1. Receber índices C, M, Y, K do Nível Simbólico. 3.2. Traduzir índices em informações de controle do plotter de tinta. 3.3. Enviar ao Nível Lógico as informações de controle do plotter.

Finalmente, como implementar cada uma das suboperações identificadas? Com base no detalhamento, começa-se a pesquisa acerca das possibilidades de construção e experimentação efetivas do conjunto de operações de cada nível, visando o comportamento geral da máquina observado no Nível Esquemático.

Desde o início do projeto, o sistema pode e deve ser colocado em condições de acoplar-se ao meio, ao usuário ou às máquinas que a informam com perturbações, mesmo que estas não sejam totalmente compreendidas na primeira interação. O processo se desenrolará por meio da diminuição da diferença entre o comportamento desejado para o sistema e aquele efetivamente observável a cada geração.

Apesar da complexidade aparente dos projetos de natureza computacional, o método pode ser aplicado mesmo em contextos simples. Recomenda-se o congelamento de alguns níveis para facilitar o acesso do estudante ao processo – por exemplo, discutindo a abstração, automação e interação da máquina teórica da Figura 5 apenas nos Níveis Simbólico e Esquemático, o que resultaria em outra máquina mais simples que apenas converte ao invés de captar, converter e plotar – ou abordando alguns níveis e operações como caixas pretas – suas entradas e saídas são conhecidas, mas não seu funcionamento interno.

Uma última possibilidade didática é a construção de middlewares, máquinas que apesar da simplicidade inserem-se em outras maiores e mais complexas que são o ponto de referência para a observação do comportamento do conjunto – projetar, por exemplo, a máquina computacional que controla o painel de um automóvel, considerando os sensores que fornecem informações acerca do veículo como “dados”.

5 Considerações finais

Nesta breve introdução sobre a Teoria do Design Computacional, buscou-se iniciar uma discussão sobre seus fundamentos, níveis de análise, metodologia e implicações pedagógicas com o intuito de preparar o caminho para futuros trabalhos que abordarão de maneira aprofundada os problemas de projeto típicos das máquinas computacionais.

Uma série de experiências de aplicação da Teoria em situações práticas encontra-se em curso, tendo em vista a construção de um conjunto de referências que possam auxiliar professores e estudantes a desenvolverem seus próprios projetos segundo a abordagem da Teoria.

Mais do que uma metodologia do projeto, a TDC consiste no projeto de uma metodologia.

Page 13: Projeto por Algoritmos: Uma introdução à Teoria do Design Computacional

13

6 Referências

Baudrillard, J. (2000). O sistema dos objetos. São Paulo: Perspectiva.

Bonsiepe, G. (1997). As sete colunas do Design in Design: do Material ao Digital. Florianópolis: FIESC/IEL.

Card, S. K., Moran, T. P. e Newell, A. (1986). Handbook of Perception and Human Performance. New York: John Wiley and Sons.

Dale, N., e Lewis, J. (2011). Ciência da Computação 4ª ed. São Paulo: LTC.

Denning, P. J., Comer, D. E., Gries, D., Mulder, M. C., Tucker, A., Turner, J., & Young, P. R. (1988). Computing as a discipline: preliminary report of the ACM task force on the core of computer science. SIGCSE Bulletin, 20 (1), 41-41.

Denning, P. J., e Martell, C. (2007). Summary of Great Principles. Disponível em http://cs.gmu.edu/cne/pjd/GP/gp_summary.html. Acesso em 20 de março de 2011.

Diverio, T. A. (2011). Teoria da Computação: máquinas universais e computabilidade. Porto Alegre: Bookman.

Epstein, B. (1998). Script for Digital Living Room Conference Keynote. Disponível em http://www.epstein.org/brian/ambient_intelligence.htm. Acesso em 16 de setembro de 2011.

Gibson, J. J. (1977). The Theory of Affordances. In Shaw, R., Bransford, J., Perceiving, Acting, and Knowing. New Jersey: Elrbaum.

Maturana, H., e Varela, F. (1997). De máquinas e seres vivos – Autopoiese: a organização do vivo. Porto Alegre: Artes Médicas.

Maturana, H., e Varela, F. (2005). A árvore do conhecimento: as bases biológicas da compreensão humana. São Paulo: palas Athena.

Meira, S. (2010). Futuro do trabalho? Software. Disponível em http://smeira.blog.terra.com.br/2010/07/30/futuro-do-trabalho-software/. Acesso em 17 de setembro de 2011.

Mitchell, W. (2008) A Lógica da Arquitetura. Campinas: Editora Unicamp.

Moggridge, B. (2006). Designing Interactions. Massachussets: MIT Press.

Norman, D. A. (1999). Affordances, Conventions and Design. Interactions 6(3), 38-43.

Norman, D. A. (2002). The Design of Everyday Things. New York: Basic Books.

Picard, R. W. (1999). Affective Computing for HCI. Proceedings HCI. Munich, 1999.

Poli, A. (2003). The Equiped Body: Wearable Computers and Intelligent Fabrics. In Fortunati, L., Katz, J., Ricini, R. (eds) Mediating the Human Body: Technology, Communication and Fashion. New Jersey: Lawrence Erlbaum.

Turing, A. M. (1936). On Computable Numbers, with an Application to the Entscheidungsproblem. Proceedings of the London Mathematical Society. 2 (42), 230–65.

Wiener, N. (1970). Cibernética e Sociedade: o Uso Humano de Seres Humanos. São Paulo: Cultrix.

Weiser, M. (1991). The computer of the 21st century. Disponível em http://www.ubiq.com/hypertext/weiser/SciAmDraft3.html. Acesso em 16 de setembro de 2011.

Weiser, M., e Brown, J. (1996). The coming age of Calm Technology. Disponível em: http://www.ubiq.com/hypertext/weiser/acmfuture2endnote.htm. Acesso em 16 de setembro de 2011.

Wing, J. M. (2006) Computational Thinking, Communications of the ACM, 49(3), March 2006.

Wing, J. M. (2011). Computational Thinking: What and Why? Link Magazine. Disponível em http://link.cs.cmu.edu/article.php?a=600. Acesso em 16 de setembro de 2011.

Winograd, T., Flores, F. (1986). Understanding Computers and Cognition. MA: Addison-Wesley.