Sujeitos Ocultos e Indeterminados da Computação
O significado de uma expressão é o que ela quer dizer.
Quem quer dizer? Ela?
O estudo da linguagem é fascinante e a ele dediquei minha graduação, mestrado e doutorado. Mesmo tendo migrado de Letras para a Informática há mais de três décadas, a fascinação nunca foi menor. Pelo contrário, quando conheci as muitas variedades de linguagens que há na computação, tudo se tornou ainda mais irresistível. A linguagem faz o elo entre a capacidade humana de pensar e a de agir no mundo. Estudar a linguagem é, por isto, uma atividade extensamente reflexiva (pensar sobre a linguagem é pensar sobre o que nos ajuda a pensar) e reveladora da nossa relação com a realidade.
Entre as belezas da linguagem humana estão as nossas habilidades inatas de aprender a falar e a reagir a falas, mesmo sem frequentar a escola (ou antes disso). Todo ser humano sadio aprende a falar, e não por decisão própria. Somos biologicamente programados para usar e reagir ao uso da linguagem e nos é impossível não fazer isso. Nos quadrinhos das figuras 1 e 2, tento ilustrar duas cenas corriqueiras onde se pode observar o rastro deste nosso talento natural para o comportamento linguístico.
Na Figura 1, um menino, que chamaremos de Pedrinho para chegarmos mais perto dele, fala para a mãe que “quebraram o vaso”. Mesmo sem saber o nome dos recursos linguísticos que está usando e de certamente nunca os ter aprendido na escola, pela idade que parece ter, ele usa uma retórica muito esperta. Não tira da cena (ou da frase) a referência a quem fez a travessura (“quebraram” tem um sujeito gramatical “eles”), e assim tenta se manter fora do círculo de suspeitos e levar a mãe a procurar quem quebrou o vaso. Tanto como Pedrinho usa instintivamente esta retórica, a mãe reage também instintivamente a ela. Não estamos dizendo que a reação da mãe na Figura 1 é a única possível. Estamos apenas querendo dizer que uma reação é instintiva e inevitável, e que aquela que ilustramos é provável. Já na Figura 2, a estratégia de Pedrinho é outra. Ele tenta não deixar rastro perceptível de quem quebrou o vaso, ao dizer para a mãe que “o vaso quebrou”. A reação da mãe é diferente: vasos não costumam se quebrar espontaneamente. Por que motivo seu filho poderia estar tentando esconder tão bem o(s) autor(es) da travessura? Aqui também, não estamos afirmando que a reação da mãe na ilustração, suspeitando de que seja o próprio Pedrinho quem quebrou o vaso, é a única possível. Mas, certamente, é uma reação plausível.
O domínio retórico da linguagem, a ponto de usá-la com destreza para causar os efeitos que se quer sobre diferentes interlocutores, é um conhecimento muito importante e em geral preconceituosamente tratado como uma forma de enganar ou manipular os outros. Usar tal conhecimento para o bem ou para o mal, é uma questão de caráter, como tudo o mais, e entre os lados positivos da retórica está o fato de possibilitar uma interação social entre as pessoas e a de construir e realizar muitas coisas valiosas no mundo. A natureza instintiva desta habilidade humana aponta para o fato de que nem sempre estamos conscientes da retórica que estamos usando, seguindo impulsos ou crenças inconscientes que a psicanálise estuda e sobre os quais nos ensina desde o século passado. E justamente quando não estamos conscientes, sendo apenas instintivos, dificilmente podemos pensar com clareza sobre o efeito de nossa retórica sobre o mundo à nossa volta.
O título desta seção inicial alude a uma retórica recorrente entre nós: a de transferir para as coisas aquilo que está em nossas mentes, tal como Pedrinho, no contexto das figuras 1 e 2, transfere para o vaso a responsabilidade de se ter quebrado. Dizer que uma expressão significa é omitir, instintivamente ou não, o fato de que alguém quer que ela signifique. Mas, quem? Toda expressão linguística de uma linguagem natural ou artificial (criada não importa para que finalidade) quer dizer algo para alguém e ao ser usada carrega a intenção de quem a está usando. Quando um interlocutor (ouvinte, leitor, observador) se depara com esta expressão, como vimos acima, é inevitável e instintivo interpretar a intenção que ela carrega. E cada um de nós, ao fazer esta interpretação, associa consciente e inconscientemente a ela uma série de significados resultantes de nossa mera experiência de estar no mundo, imersos em linguagem, e valendo-nos dela o tempo todo para simplesmente viver.
Paralelos entre o uso da linguagem e o uso da computação
Toda disciplina cujo objeto pode ser usado se debruça sobre a descrição deste objeto e a descrição de seu uso. E também toda disciplina elege seus fundamentos, a partir dos quais os estudiosos que se dedicam a ela seguem o caminho do conhecimento especializado, focado especificamente em certos aspectos e deixando outros intocados. Uma das questões mais difíceis para qualquer disciplina é, então, estabelecer seus fundamentos. O que todos os que trabalham com ela devem saber? O que constitui a base de conhecimentos compartilhados, sem a qual a ação em campos especializados pode acontecer em detrimento de algo fundamentalmente importante?
Outro aspecto relevante dos fundamentos de uma disciplina é que eles devem ser suficientes para caracterizar solidamente o que ela é, ou seja, para defini-la. A história dos estudos da linguagem (ou Linguística) tem uma passagem interessante, na segunda metade do século XX. Do final da década de 1950 até o início da década de 1980, uma das figuras mais influentes da Linguística e da Ciência da Computação, Noam Chomsky, postulou e desenvolveu uma teoria de descrição da linguagem que, comparada a outras teorias da linguagem, podemos classificar como algébrica. A teoria Chomskyana da linguagem deste período [Chomsky 1957, 1965, 1981] descrevia o seu objeto de estudo como um sistema formal baseado em representações estruturadas e regras transformacionais definidas para diferentes estratos e componentes representacionais. Tal como até hoje estudamos na Computação, a descrição deste objeto “linguagem” se dava em função de um vocabulário (componente lexical), uma gramática (componente morfo-sintático) e regras de atribuição de significado conceitual (componente semântico). Sobre a atribuição de significado, ainda como vemos na Computação, a teoria Chomskyana da época desconsiderava quaisquer aspectos que pudessem modular o significado da linguagem em função de diferentes contextos sociais, atitudes intencionais dos falantes, e tudo o mais que dissesse respeito à linguagem em uso. A teoria descrevia seu objeto como uma abstração capaz de revelar inúmeros invariantes e princípios importantes, é verdade, mas desprovida de qualquer disposição ou mecanismo para tratar do fenômeno mais importante da linguagem: o de que ela aí está para nos permitir viver em sociedade e realizar o nosso potencial humano. Sem negar a relevância crucial dos estudos sobre a linguagem em uso, a teoria linguística descritiva de então deixava para outras disciplinas ou subdisciplinas (e. g. a Sociolinguística, a Filosofia da Linguagem, a Retórica, a Semiótica) a incumbência e a liberdade de teorizar sobre o uso da linguagem da forma que melhor lhes conviesse. E assim, Linguística viu-se diante de duas ameaças importantes para a consistência científica interna da disciplina. A primeira delas, a de oferecer uma caracterização de seu objeto tal que não se vê nele o rastro de que pode ser usado (e a isto se destina). A segunda, a de não fazer pontes sistemáticas para a integração teórica entre os estudos realizados em seu núcleo fundamental e os realizados nas subdisciplinas ou demais disciplinas dedicadas a investigar a linguagem humana em situação de uso. As ligações teóricas ficavam ao sabor da conveniência e do interesse de cada campo de estudo.
Em 2018, publiquei numa coluna da revista interactions da ACM SIGCHI [de Souza, 2018] um artigo curto em que estabelecia um paralelo entre o que aconteceu na Linguística e não aconteceu ainda na Computação. Em meados da década de 1980, o núcleo fundamental da descrição linguística incorporou um novo componente para expressar aspectos do uso do objeto central de interesse da disciplina, o pragmático. Esta virada pragmática resultou do enfrentamento das duas ameaças científicas mencionadas no parágrafo anterior. Estará a Ciência da Computação diante de ameaças similares? Será hora de uma virada como a que aconteceu há mais de trinta anos na teoria linguística? No momento estou convencida de que é este o caso, com algumas nuances de que vou tratar nos próximos parágrafos.
Se tivesse de descrever o objeto de estudo da Ciência da Computação depois de três décadas de trabalho na área de Interação Humano-Computador (IHC), eu diria que se trata das formas, condições, propriedades e limites de processos lógico-matemáticos de manipulação de representações linguísticas e de suas aplicações em tecnologias utilizáveis no mundo real. Nesta caracterização, como se vê, está também incluído o aspecto de uso dos objetos computacionais, pois a meu ver (e ao de muitos) a computação existe para ser usada. Se não for, estará de alguma forma descaracterizada, ou degenerada, para sermos precisos. Apesar de ser uma descrição totalmente pessoal do objeto da Ciência da Computação (e portanto da própria disciplina), ela está fortemente articulada com pontos facilmente verificáveis nos currículos dos cursos de formação profissional (graduação) e acadêmica (pós-graduação) de nossa área. As disciplinas do núcleo duro da Computação têm origem na Matemática, na Lógica e na Linguagem. Infelizmente esta última toma por referência teorias linguísticas já antigas, que justamente foram superadas por não considerarem os aspectos contextuais e as atitudes psicológicas das pessoas sem as quais a linguagem (e a computação) faz(em) muito menos sentido, e muito se empobrece(m) cientificamente.
Ao falarmos de representações linguísticas na computação, estamos nos referindo ao fato de que a computação não toma como entrada para seus processos a realidade direta, mas sim representações desta realidade. Este fato é facilmente percebido e aceito na nossa disciplina. Suas consequências, porém, em geral são bem menos claras. Como dissemos na abertura deste artigo, nós seres humanos somos biologicamente programados para usar a linguagem e, inevitavelmente, para associar à nossa expressão linguística o contexto em que estamos e a intenção que temos ao usá-la. Nas figuras 1 e 2 ilustramos que Pedrinho necessariamente escolhe uma forma de expressão para dar a notícia sobre o vaso quebrado à sua mãe. Ele tem a sua disposição muitas formas, que ele adquiriu naturalmente, e é uma delas que ele vai usar, na expectativa de uma reação da mãe. Na computação acontece algo parecido. Mesmo que ao contrário das ilustrações acima as representações que usamos não sejam (elas) naturais, nós somos naturais. Ou seja, nós inscrevemos nelas os nossos contextos e intenções, e por sermos naturais é impossível não fazermos isso.
Ou seja, todas as representações computacionais carregam o rastro da nossa intencionalidade e do nosso contexto ao usá-las. Além disto, ainda olhando para as ilustrações dos quadrinhos, quem vê, lê, ouve, percebe as nossas representações as interpreta como representações artificiais, que são, mas o faz naturalmente, isto é, associando um contexto e uma intenção a ela. Como sugere o título da nossa primeira seção, é muito comum pensarmos e falarmos sobre o que “uma representação quer dizer”. Mas é ela que quer dizer? Assim como um vaso normalmente não quebra sozinho, uma representação computacional também não quer dizer nada sozinha. Tanto quanto há um agente oculto ou indeterminado que quebrou o vaso, há também agentes ocultos e indeterminados que querem dizer muita coisa através de representações que alimentam qualquer processo computacional.
Contribuições de IHC para os fundamentos da Ciência da Computação
Na Figura 3, resumimos vários pontos apresentados na seção anterior. Mostramos o núcleo fundamental da Ciência da Computação no círculo central da imagem no alto à esquerda, circundado por um leque de subdisciplinas que tratam da questão do uso da computação. Destacamos um anel de fronteira entre o núcleo e as subdisciplinas a seu redor, justamente a fronteira que, se não há uma provisão de elementos teóricos no núcleo capazes de dialogar com as questões de uso da computação, nos expõe a ameaças como as que mencionamos acima. Por um lado, o empobrecimento da caracterização teórica do objeto central de estudos da disciplina e, por outro, a possibilidade de cada subdisciplina (re)teorizar este objeto como lhe convém, sem ligações sistemáticas e comuns a todas as demais subáreas em questão.
A Figura 3 também destaca uma dentre as várias subdisciplinas equipadas para contribuir com um núcleo teórico fundamental da Ciência da Computação que abarque o uso de seu objeto: IHC. Como sugere seu próprio nome, Interação Humano-Computador, IHC está particularmente bem posicionada para realizar a missão de incluir humanos nos horizontes da teoria da computação, pois é deles que trata, em seus aspectos individuais e coletivos, numa perspectiva inspirada tanto pelas Ciências Humanas, quanto pelas Ciências Sociais. Entretanto, esta missão passa longe de ser fácil. Como obviamente não se trata de a área inteira se transferir para dentro do núcleo central, nossa tarefa como pesquisadores de IHC interessados em ampliar os horizontes teóricos da Ciência da Computação requer que encontremos respostas para estas quatro perguntas que imediatamente se impõem:
- Que elementos de IHC incluir nas teorias fundamentais da Ciência da Computação?
- Que papel estes elementos vão desempenhar?
- Como fazer para incluí-los?
- E como articular sua inclusão no interior do núcleo?
As respostas são muito espinhosas, mas nem por isto devemos deixar de buscá-las e de avançar a partir delas. Depois de muitos anos de trabalho na pesquisa em IHC, sempre imaginando poder talvez contribuir para a Ciência da Computação em sentido mais amplo, tenho algumas reflexões sobre cada pergunta, que compartilho a seguir, sem pretender que estejam totalmente corretas e convicta de que há muito mais a ser respondido do que aquilo que está no momento ao meu alcance.
Sobre que elementos incluir
Acredito que os elementos de IHC a serem incluídos no núcleo das teorias fundamentais são aqueles que permitirão a profissionais e cientistas da computação aprender e refletir sobre o fato de que representações expressas ou definidas por seres humanos carregam necessariamente o rastro da intencionalidade e, como tal, são interpretadas por (outros) humanos. Em IHC isto é totalmente óbvio nas linguagens de interface. Um botão na tela do dispositivo de um usuário é uma expressão da intenção do designer de interação fazer o usuário percebê-lo e usá-lo quando, por sua vez, tiver a intenção de fazer o que, na sua interpretação de usuário (idealmente compatível com a do designer), aquele botão significa. Concretamente, um botão de controle de interface de usuário rotulado com a expressão “Cancela” será sempre o ponto de encontro da intenção do designer de interação (e. g. permitir ao usuário cancelar uma opção ou processo corrente) com a intenção do usuário ao acioná-lo (e. g. cancelar um processo de impressão depois de perceber que está usando o arquivo errado).
Embora no design de interfaces esta confluência de intencionalidade humana mediada por processos computacionais seja clara, há outros exemplos a mencionar. Um deles seria o encontro da intenção de quem projeta uma nova linguagem de programação (como Lua [Ierusalimschy, 2016], por exemplo) ou uma API para aprendizado de máquina usando redes neurais profundas (como Keras [Chollet, 2017], por exemplo), com a intenção de programadores que utilizam estes recursos em suas tarefas de desenvolvimento. Uma consulta a fóruns de discussão comumente usados por programadores é bastante reveladora de como é importante entender a inevitável e instintiva atribuição de significado pragmático (relativo a contexto e a intenção) que todo ser humano faz, mesmo quando está usando uma linguagem não natural. Eis um exemplo concreto de um comentário do criador do Keras para um post de usuário no grupo Keras Users do Google [Keras Users Group]:
[Post de Usuário Anonimizado]:
Hi everyone,
I’m trying to add the weight decay regularization to my network (before this change it was working properly):
[… code …]
When I try to use my code, it throw the following Warning:
[… warning …]
As said the code, before adding the W_regularizer=l2(0.01) wasn’t throwing such error.
Thanks for your time
Reparem que, no post acima, o usuário do Keras, uma API que roda sobre outra API chamada Tensorflow (TF), presume que o aviso (“warning”) que está sendo comunicado pelo Keras ,depois de ser executado, é importante e representa um erro. A resposta do criador do Keras é, no entanto, um tanto surpreendente. Diz ele: “Não é um erro, pode ignorar.” Ora, se pode ignorar, por que está sendo avisado? A contradição pragmática está claramente exposta no texto de seu post:
[Post de François Chollet, criador do Keras]
It’s not an error, and you can ignore it. Which is what happens with TF.
Your model is configured to use the learning phase because it uses regularization. But in predict mode, the learning phase isn’t actually part of the graph (but it’s still part of the inputs). That’s all.
Além das representações que integram linguagens de interação e de programação, vale a pena lembrar também das representações presentes em data sets comumente utilizados hoje em dia em aplicações de Inteligência Artificial (IA), bem como da questão do viés (bias) contido em dados de amostra (ou suas representações) com que modelos neurais são treinados e testados. Os problemas delas são muito similares ao que estamos discutindo aqui.
Retomando então minha resposta ainda parcial e precária para a pergunta sobre que elementos de IHC incluir entre os fundamentos da computação, penso que se trata principalmente daqueles que darão conta de elementos intencionais, conscientes ou não, da expressão e interpretação de linguagens “feitas e usadas por humanos”, mesmo que sejam linguagens artificiais cujas sentenças passarão por processamento algorítmico. A intenção humana é sempre associadas a contextos internos (mentais, emocionais) e externos (sociais, ambientais), o que sugere que descrever e propor linguagens formais desprovidas de um componente pragmático (relativo ao uso) é dissociar sua caracterização teórica de sua mais valiosa função prática. A contribuição potencial de IHC para os fundamentos da computação se refere portanto à construção de uma descrição teórica adequada para o componente pragmático de linguagens formais e autômatos correspondentes.
Sobre o papel destes elementos
O papel preponderante dos elementos humanos que IHC pode acrescentar no núcleo central que fundamenta a Ciência da Computação é o de familiarizar (ou refamiliarizar) profissionais e cientistas da área com a subjetividade, isto é, com o fato de a computação não poder dispensar agentes humanos para existir. Há pelo menos dois aspectos reveladores para observar no afinco com que alguns professores e cientistas da computação perseguem uma espécie de descontaminação subjetiva do seu objeto de trabalho. Um deles é a abdicação do eu (eu, sujeito, origem da subjetividade) na produção, emprego e evolução do conhecimento especializado. Do momento em que reconhecemos os nossos eus presentes no que fazemos, por mais técnico ou científico que seja, somos forçados a aceitar a presença simultânea da subjetividade, não apenas nossa, mas de todos os que fazem o mesmo que nós, fazem algo que depende do que fazemos, ou fazem algo do que aquilo que fazemos depende. Um outro aspecto revelador ao observarmos tentativas de descontaminação subjetiva é a prevalência de metodologias objetivas de descoberta e geração de conhecimento, que privilegiam a razão como meio de conhecer e explicar a realidade que aí está.
Quando olhamos para a Ciência da Computação, vemos que tal como a Ciência da Linguagem ela só se consuma plenamente com a participação de “sujeitos”, dentre os quais nunca é demais destacar, por um lado, designers e desenvolvedores de sistemas e, por outro, seus clientes, usuários e prováveis outros afetados ou interessados. Esta cadeia social que pode chegar a centenas de milhões de pessoas, como é o caso de várias redes sociais hoje em dia, nos dá a dimensão dos componentes subjetivos — no plano psicológico, social e cultural — que precisamos compreender e endereçar ao caracterizar o objeto central da computação. O fato de não falarmos da subjetividade não a faz desaparecer. Pelo contrário, faz com que ela nos assuste e intimide quando revela sua força e seu tamanho em situações como a do conhecido caso da Cambridge Analytica e sua influência nas eleições de alguns países, a partir da coleta e manipulação de dados de usuários do Facebook. O significado que pessoas deram e dão a algoritmos e dados importa, e muito. A contribuição de IHC para os fundamentos da computação seria, repetindo, familiarizar todos aqueles que se dedicam a esta disciplina, independentemente de com que foco ou intuito, com a presença e o poder da subjetividade em pontos-chave de processos computacionais, tais como: na criação de representações da realidade (os dados); na criação de algoritmos para representar efeitos, inferências ou outros tipos de manipulação significativa dos dados; e, não menos importante, na orquestração de todos estes recursos representacionais na forma de artefatos interativos que significam algo para seus usuários ou observadores.
Sobre como fazer para incluí-los
A inclusão dos elementos de que estamos falando deveria se dar na forma de teorias, aplicadas, adaptadas, reconstruídas, ou de outra forma retoricamente formatadas para dialogar com os demais elementos teóricos que fundamentam a computação. Uma questão que se coloca é que não há consenso sobre o que é uma teoria, nem em IHC, nem em Ciência da Computação, nem — acredito — em parte alguma. Sutton e Staw (1995), por exemplo, abrem seu artigo intitulado “What theory is Not” dizendo que há (desde aquele ano de publicação) um aparente consenso nas Ciências Sociais (sua área) de que referências, dados, variáveis, diagramas e hipóteses não são sinônimo de teoria. No entanto, continuam, é impressionante ver quantas vezes os autores apresentam não-teorias como se fossem teorias. O objetivo mais modesto de Sutton e Staw, ao invés de apresentar uma definição universal do que teoria é, era estabelecer com maior clareza o que não é. Pessoalmente acho que neste conjunto de não-teorias o mais interessante é a presença de “hipóteses (ou previsões)” (op. cit. p.376). No entender dos autores, “hipóteses não contêm (nem deveriam conter) argumentos lógicos sobre o porquê de se poder esperar que certas relações empíricas ocorram. Hipóteses são enunciados concisos sobre o que é esperado, não sobre o por que é esperado.” Teorias, então, ao contrário de hipóteses comprovadas, não podem dispensar uma explicação lógica de fatos empiricamente observáveis. Em outras palavras, afirmar que algo é como é porque se verifica em 98,5% dos casos de uma amostra gigantesca é um fato e uma base preditiva. Mas não é, em si, uma teoria.
Estas observações já apontam grandes desafios de inclusão de elementos humanos entre os fundamentos da computação, a começar pela natureza das teorias sobre indivíduos e grupos sociais, quando comparadas com as teorias matemáticas, lógicas e linguísticas que constituem o núcleo duro da nossa disciplina. O estudo teórico da subjetividade e dos fenômenos sociais (ou, o que me parece melhor, sócio-culturais) não pode prescindir da experiência vivida, da empiria. Isto significa, portanto, que os métodos de construção e validação de conhecimento nas ciências humanas e sociais, como já sabemos, são muito diversos dos métodos de construção de conhecimento lógico e matemático. A despeito da presença da linguagem entre os pilares fundamentais da computação, uma vez que se trata de linguagem formal e algebrizada como mencionamos em seção acima, os métodos de investigação empírica da experiência humana são desnecessários para construir a teoria fundamental da computação tal como ela hoje se constitui. No entanto, a inclusão do elemento humano nesta base teórica nuclear da disciplina vai requerer a inclusão de perspectivas e métodos de investigação empírica e, em particular, de métodos qualitativos [Flick, 2018], ainda muito pouco entendidos e aceitos, não apenas no núcleo duro da Ciência da Computação, mas também em muitas das subdisciplinas desta grande área.
Quando dizemos, então, que a inclusão dos elementos que IHC tem para contribuir deve ser feita na forma de teorias retoricamente formatadas para dialogar com os demais elementos teóricos que fundamentam a computação, estamos nos referindo à tarefa nada simples de encontrar formas de contato e de trocas produtivas não apenas entre conceitos teóricos e metodologias, mas também e talvez principalmente entre paradigmas científicos que podem estar muito distantes um do outro. Infelizmente a distância alimenta mal-entendidos, preconceitos e presunções em todas as partes, coisas quais teremos de aprender a superar, num processo análogo ao que se deu com o surgimento das chamadas metodologias quali-quanti, ou mistas [Creswell e Clark, 2017]. Estas metodologias hoje mostram, claramente, que o conhecimento que se constrói a partir de uma combinação de procedimentos de coleta, análise e interpretação quantitativas e qualitativas pode ser muito mais profundo e potente do que aquele que se obtém apenas com uma das duas opções. Isto não significa, porém, que todos os fundamentos da computação tenham de usar todo o espectro de métodos e conhecimentos qualitativos e quantitativos, aplicados à matemática, à lógica, à linguagem e aos fundamentos humanos da computação. Significa, sim, que este núcleo expandido de fundamentos tem de, em conjunto, ser capaz de tratar de (o que é diferente de dar integralmente conta dos) aspectos abstratos e empíricos, quantitativos e qualitativos, computacionais e humanos, da nossa disciplina. Assim, acredito, estaremos preparando muito melhor os profissionais especialistas e os pesquisadores da área de Computação para as próximas décadas deste século.
Sobre como articular sua inclusão
Incluir e articular uma inclusão são coisas relacionadas, mas diferentes. Intencionalmente, desdobrei a questão da inclusão em duas perguntas separadas. Ao falar de articulação, nos referimos a formas de encaixe efetivo do que vai ser incluído. Nossa resposta para como incluir (acima) é objetiva, mas vaga. Assim, ilustramos a única articulação que conhecemos bem, a que é possível com a nossa Engenharia Semiótica [de Souza, 2005]. Na Figura 4 oferecemos uma referência visual para os pontos principais e abreviados que usaremos nesta seção.
A figura destaca uma grande fissura que existe entre estudos relacionados ao design e desenvolvimento de software, à esquerda, e estudos relacionados ao uso, apropriação e impactos de tecnologias digitais. A fissura é similar àquela de que vimos tratando, entre o que se estuda no núcleo duro da Ciência da Computação, e o que se estuda em várias das subdisciplinas a sua volta. Para os leitores informados sobre IHC, chamo a atenção para onde estou traçando a fissura, comparativamente ao muito famoso modelo da Engenharia Cognitiva proposta por Norman (1986). Neste, o “golfo” a ser atravessado se estende entre o sistema e o usuário. A Engenharia Semiótica, porém, o desloca “para trás”, postulando que o grande problema teórico é conectar significados inscritos no software ao longo do ciclo de design e desenvolvimento [de Souza et al., 2016] com os significados atribuídos a eles, pelos usuários, ao longo de toda sua experiência e história de interação. O que “liga” as duas pontas é exatamente o ser humano, o que todos compartilham pelo mero fato de estarem no mundo, de serem igualmente constituídos no que diz respeito a capacidades inatas, termos práticas sócio-culturais comuns, e tudo o mais que nos permite, independentemente de tecnologia, interagirmos uns com os outros na vida.
Na Figura 5 amplificamos dois personagens nas bordas da linha de separação. À esquerda um membro da equipe de design e desenvolvimento; à direita um usuário. De comum entre os dois, há pelo menos duas coisas certas: sua humanidade e o que têm em mãos — um sistema interativo. A Engenharia Semiótica parte deste ponto para ligar as duas partes. E faz isto caracterizando sistemas como um objeto de comunicação social entre pessoas, mediada por computadores e extensamente, embora não exclusivamente, automatizada. Quem produziu o sistema está tentando fazer a mesma coisa que Pedrinho nas figuras 1 e 2: causar um efeito sobre seu(s) interlocutor(es) do outro lado da linha. Como seres humanos que todos são, quem produziu e quem usa o sistema reage intuitivamente à presença da linguagem, mesmo que ela não seja “natural” como a de Pedrinho e sua mãe. E esta reação, lembremos, é repleta de pressuposições sobre as intenções recíprocas, nem sempre conscientes, das partes que se comunicam.
Como produtores conversam com usuários de tecnologias através das interfaces humano-computador, o projeto e desenvolvimento destas tecnologias é equivalente ao projeto de todas as conversas que o proxy (representante) dos produtores no plano de uso da tecnologia poderão ter com seus usuários. Este projeto é tanto mais interessante quanto mais percebemos que ele é de fato um projeto de explicitação (provavelmente incompleta) e codificação de nossas crenças, intenções, expectativas e atitudes relativamente a um outro visado, aquele com quem queremos nos comunicar, nossos usuários. A Semiótica é uma disciplina de origem muito antiga, que estuda signos, sistemas de significação, e seus muitos usos (o principal deles sendo a comunicação humana). Dentre a enorme variedade de teorias semióticas que existem, destacamos a teoria desenvolvida pelo filósofo americano Charles S. Peirce, segundo a qual um signo se define como sendo qualquer coisa que significa algo para alguém em determinada circunstância ou sob certo aspecto [Peirce, 1991]. Esta definição tão abrangente e aparentemente anárquica, sobretudo em contraste com o que aprendemos que é o significado de uma palavra ao estudarmos linguagens formais e autômatos, vai direto ao ponto deste artigo. Ela dá conta de tudo o que vimos dizendo sobre o uso humano da linguagem, sobre nossas capacidades instintivas de ação e reação em presença de falas nossas ou alheias, tanto quanto também — e isso é fundamentalmente importante para a computação — dá conta das linguagens artificiais que construímos para fins específicos (por exemplo, linguagens de programação ou linguagens de sinais para surdos), ou até mesmo de linguagens naturais de outros seres vivos (por exemplo, a linguagem das abelhas ou das baleias). Dito isto, o que os personagens em bordas opostas da linha de separação da Figura 5 têm em mãos é um signo computável de todas, e somente, as conversas que um pode ter com o outro, através da interface do sistema em questão. Este é o primeiro ponto de articulação a destacar: seres humanos estão se comunicando (e dizendo o que pretendem e pensam, um em relação ao outro) através de algoritmos e representações abstratas do que se passa à sua volta. Tanto para a criação, quanto para a interpretação destas representações é imprescindível a percepção subjetiva que os humanos envolvidos neste tipo de comunicação têm da realidade. Este tipo de enunciação do processo de interação humano-computador nos parece estar bem formatado para ser incluído entre os fundamentos da computação.
Um segundo aspecto muito elegante da teoria Peirceana, que nos ajuda a articular elementos de Engenharia Semiótica com os conteúdos do núcleo duro da Ciência da Computação, é a explicação de Peirce para o processo de interpretação (e, na realidade, para qualquer processo de descoberta ou geração de conhecimento). Muito abreviadamente (os interessados em aprofundar a questão podem consultar [Santaella, 2004 e Sowa, 2006]), para Peirce, a interpretação humana é um processo lógico, denominado “processo abdutivo”, onde, a presença de um signo dispara em nossa mente, de forma instintiva e inevitável, uma atribuição momentânea de significado a ele. Esta atribuição funciona como uma “explicação provisória” (i. e. até segunda ordem) da presença e do uso que, ao nosso ver, está sendo feito daquele signo. Por exemplo, se a mãe de Pedrinho, tivesse encontrado o vaso quebrado no chão e o gato sentado sobre a mesa onde o vaso estava, provavelmente interpretaria o signo “vaso quebrado” como uma evidência do mau comportamento do bichano (e se acreditasse em teorias conspiratórias que difamam felinos poderia chegar até a tomar o signo por evidência de que gatos são armas de destruição de objetos domésticos). Sua hipótese explicativa é uma espécie de teoria provisória que estabiliza o significado de signos da sua realidade imediata. Esta teoria fica valendo até a mãe de Pedrinho encontrar uma evidência em contrário (tecnicamente chamada de contrafactual), que a leva a abandonar a hipótese explicativa corrente e substituí-la por outra. Por exemplo, se Pedrinho chegar a ela com a bola de futebol debaixo do braço dizendo que “o vaso quebrou”, ela provavelmente aliviará a barra do gato e voltará suas suspeitas para Pedrinho. Apesar do tom prosaico desta descrição de raciocínio abdutivo, nós pesquisadores nos valemos dele o tempo todo em nossas pesquisas. Nunca estamos diante de descobertas definitivas; temos sempre em mãos hipóteses, que buscamos corroborar e comprovar com evidências a nosso alcance e que, ao longo do tempo (por vezes depois de décadas ou séculos), são corrigidas ou mesmo abandonadas. Este é o coração da filosofia e da epistemologia Peirceana, um segundo ponto importante de articulação para a Engenharia Semiótica, pois os rumos do raciocínio abdutivo humano são alimentados não só pela nossa razão, mas também (e há quem ache que principalmente) pelos nossos instintos. Comparativamente aos processos interpretativos computacionais, mesmo quando aumentados por recursos de inteligência artificial, podemos esperar que haja similaridades e diferenças muito importantes nos processos de significação e comunicação que passam por canais algorítmicos. Por um lado, podemos esperar que eles sofram um decaimento, dependendo da importância que damos aos instintos e propensões biologicamente programadas da nossa percepção, interpretação e atuação na realidade em que estamos imersos. Por outro, é fácil perceber que eles tornam possível coisas que estão totalmente fora de nosso alcance, como por exemplo interpretarmos um signo sempre da mesma forma. A cada vez que um ser humano encontra um signo, as contingências deste encontro integram a base de experiências e conhecimentos de que lançamos mão para interpretá-lo. Portanto, o significado de um signo, a cada reencontro, é sempre diferente (mesmo que sutilmente). Já o significado algorítmico, mesmo que diferente a cada vez, é “logicamente diferente”, ou seja, podemos prever, pela programação interpretativa da linguagem que o codifica, o que ele significa ou pode significar em todas estas situações. Afinal, ele foi “explicitamente programado” para isso. Esta características tem prós e contras sobre os quais não vamos nos aprofundar. O importante é entender a diferença, pois ela é responsável pelas belezas e agruras do uso de tecnologias digitais.
A Figura 6 resume a forma como até aqui vimos articulando a Engenharia Semiótica com conteúdos teóricos fundamentais da computação. Software é uma representação automática (i. e. uma representação na forma de autômato) das interações entre pessoas e efeitos destas interações no mundo. Que estas pessoas se desconheçam mutuamente, e que uma possa sequer pensar na presença oculta da outra, é irrelevante para que as interações aconteçam e seus efeitos se realizem. O que é impossível é que tudo isto aconteça sem a presença de pessoas nos papeis que discutimos, não importa quão distantes no espaço e no tempo possam estar os momentos de criação do autômato que fala pelos seus criadores e o uso efetivo que dele se faz em situações específicas. Esta articulação mostra, acreditamos, que IHC pode ter um papel muito diferente do que aquele que muitas vezes se atribui a esta subdisciplina. Como se vê, não se trata apenas de projetar e avaliar a interação entre usuários e sistemas, de criar tecnologias inovadoras para a interação, de certificar usabilidade ou acessibilidade, o que é muito importante, sem qualquer dúvida. Pode tratar-se também, e acredito que fundamentalmente se trate, de teorizar sobre os aspectos subjetivos da computação, desde as suas mais profundas raízes.
Horizontes
Concluindo a apresentação de nossa visão pessoal sobre a importância de incluir humanos nas teorias fundamentais da computação, retomamos o título que demos a este artigo: “Sujeitos Ocultos e Indeterminados da Computação.” Aproveitando a analogia linguística, defendemos que sujeitos ocultos e indeterminados não são sujeitos inexistentes, mesmo quando truques retóricos de linguagem tentam fazê-los desaparecer de vista. E sua presença é intuída pelos sensores naturais de qualquer pessoa que esteja usando ou construindo tecnologias digitais. Portanto, melhor trazermos tudo isto para a luz do dia e tirarmos partido da humanidade que temos em comum.
Talvez este movimento nos ajude a entender, discutir e resolver melhor, por exemplo, os desafios éticos que a sociedade tem lançado para nós, especificamente em relação ao uso de técnicas de aprendizado de máquina, máquinas autônomas, validação e justificativa de conhecimentos (sobretudo científicos) baseados no uso de grandes volumes de dados, muitas vezes heterogêneos e quase sempre deslocados de seu contexto original de ocorrência, e assim por diante.
Porém, tópicos profundos e importantes para nossa investigação não estão necessariamente relacionados a inteligência artificial e tecnologias de ponta, como a computação ubíqua e a Internet das coisas. Pessoalmente acho que no caminho das contribuições de teorias de IHC para os fundamentos da computação estão as consequências da natureza totalmente contingente da intenção e do contexto nos processos humanos de uso de qualquer linguagem, natural ou artificial, literal ou gestual, pouco importa. Uma das que mais me instiga e à qual acho que deveríamos nos dedicar seriamente é o reúso de software. Reusar software está no topo das consequências de um dos principais fundamentos da nossa disciplina: a abstração. No entanto, depois de passarmos por tudo o que foi mencionado acima, podemos (e devemos) nos perguntar: o que resta do significado humano se abstrairmos dele seus principais aspectos contingentes, intenções e contexto? A pergunta pode ser formulada também de maneira reversa: como definimos, em termos teóricos, a “abstração” de significados humanos operada na computação em geral, e em particular para fins de reúso de software (ou de dados)?
Há muito o que pensar sobre reúso. Por exemplo, não imagino o que possa ser o reúso de uma intenção. No meu entender, um dos componentes fundamentais das intenções é a atitude psicológica individual e momentânea de uma pessoa face à realidade que esta pessoa está percebendo no momento em que uma intenção emerge no seu consciente ou subconsciente. Intenção, portanto, não é sinônimo de objetivo. Indo um pouco adiante, faz sentido propormos para um grupo de trabalho um conjunto de objetivos compartilhados. Mas como propor um conjunto de intenções compartilhadas. Elas parecem ser, justamente, aquilo que vai qualificar de maneira individual e muito particular as razões, motivações e condições que cada membro do grupo terá para aderir, ou não, a objetivos comuns. Por isto não vejo como fazer reúso de intenções. No entanto, todo significado humano é carregado de intenções. Quais as consequências disto? Não tenho resposta, mas acho que precisamos ir procurá-la.
Gostaria que este artigo fosse lido como um convite a aproximações e colaborações inéditas, ou pelo menos muito raras, especialmente na Ciência da Computação brasileira. Gostaria também que o exemplo da Engenharia Semiótica — único que está a meu alcance oferecer — não seja interpretado como uma afirmação de que ela é a melhor opção para o desafio que se coloca, mas apenas como uma demonstração do que é possível fazer, e de quanto tempo e esforço é necessário para se concretizar planos nesta direção. A este respeito, é sempre bom lembrar uma das teorias de IHC mais profundamente sintonizadas com a computação, e provavelmente a que teve e ainda tem o impacto mais profundo e duradouro: o modelo HIP, o Human Information Processor, proposto por Card, Moran e Newell há mais de 40 anos [Card et al., 1983]. Como rápida informação sobre o HIP para leitores que não são de IHC, a magnitude do impacto deste modelo pode ser medida por como ele descrevia o processamento cognitivo (humano) de informação. Isso era feito através de uma analogia expressa entre estruturas de acesso e organização da informação na memória, em humanos e em computadores. Diagramas clássicos do modelo HIP em funcionamento podem ser vistos na entrada para um paper seminal de Stuart Card no Semantic Scholar ≫. O título é provavelmente a melhor tradução do impacto desta teoria: “The Model Human Processor: A Model for Making Engineering Calculations of Human Performance”. Com modelos análogos de processamento de informação, para a mente humana e para computadores, tornava-se possível calcular distâncias e cargas cognitivas impostas aos usuários em atividade de interação com computadores. Estes cálculos são a origem de toda uma área de estudos de usabilidade e ergonomia cognitiva que influencia até hoje o design de interfaces e interação para tecnologias digitais.
Há muito o que pensar e fazer a respeito da educação profissional e científica na Ciência da Computação hoje em dia. As ideias que apresentei acima são resultado de muitos anos como professora e pesquisadora no Departamento de Informática da PUC-Rio. Estou segura de que meus colegas também se preocupam com a formação de seus alunos de graduação e pós-graduação, e em particular com a evidente relevância e complexidade da introdução de perspectivas interdisciplinares nos currículos de nossos programas. Tudo o que disse acima pode ser resumido em uma frase, que merece nossa reflexão pelo que ela implica: Um dos primeiros passos no longo caminho de uma reforma curricular tão necessária é nos assegurarmos de que o conhecimento de que vamos necessitar para realizá-la já existe. Se não existir, mãos à obra!
Agradecimentos
Agradeço a todos os que comentaram a palestra que dei sobre este assunto no dia 25 de setembro de 2020 no ciclo de lives promovido pelo BR-CHI ≫, tanto no chat durante a apresentação, quanto em comentários comunicados depois, através de vários meios. Todos me fizeram pensar e aprender. Espero que este artigo, na comparação com o teor da palestra, faça justiça ao muito que lhes devo. O vídeo está disponível no Youtube (e abaixo) para quem desejar assistir.
Fonte: https://youtu.be/Q_XewQafMCc
Agradeço também, de maneira especial, aos editores da SBC Horizontes, Roberto Pereira e Clodis Boscarioli, por me estimularem a revisitar este tema, sobre o qual tive oportunidade de falar pela primeira vez numa palestra convidada do Simpósio Brasileiro sobre Fatores Humanos em Computação de 2017, em Joinville, Santa Catarina.
Agradeço ainda às agências de fomento e demais organizações que financiaram grande parte das pesquisas que realizamos no SERG – Grupo de Pesquisa em Engenharia Semiótica ≫, no Departamento de Informática da PUC-Rio, com destaque para o CNPq ≫, que até hoje me apoia com uma bolsa de produtividade em pesquisa.
E acima de tudo, e sempre, agradeço aos meus queridos alunos, vários deles hoje meus colegas, com quem tanto aprendi, e cujas perguntas, muitas das quais ressoando até hoje, me ajudaram a enxergar mais nitidamente o nosso objeto de estudo.
Sobre a Autora
* Clarisse Sieckenius de Souza é Professora Emérita do Departamento de Informática da PUC-Rio e uma das pioneiras na área de Interação Humano-Computador no Brasil. Criadora da Engenharia Semiótica, Clarisse já recebeu diversos prêmios nacionais e internacionais pelas suas contribuições científicas e educacionais. Mais informações sobre seu perfil e biografia podem ser consultadas em sua página institucional, no endereço www.inf.puc-rio.br/~clarisse ≫.
Referências
- Card, S. K., Moran, T. P., & Newell, A. (1983). The psychology of human-computer interaction. Hillsdale, NJ: Lawrence Erlbaum and Associates.
- Chollet, F. (2017) Deep learning with Python. Shelter Island, New York. Manning Publications.
- Chomsky, N. (1957). Syntactic Structures. The Hague. Mouton.
- Chomsky, N. (1965). Aspects of the theory of syntax. Cambridge, Massachusetts. The MIT Press.
- Chomsky, N. (1981). Lectures on government and binding. The Hague. Mouton.
- Creswell, J. W., & Clark, V. L. P. (2017). Designing and conducting mixed methods research. Sage publications.
- de Souza, C.S. (2005). The Semiotic Engineering of Human-Computer Interaction. Cambridge, Massachusetts. The MIT Press.
- de Souza, C. S., Cerqueira, R. F. G., Afonso, L. M., Brandão, R. R. M. & Ferreira, J. S. J. (2016). Software Developers as Users. Semiotic Investigations on Human-Centered Software Development. Cham, Switzreland: Springer International. doi: 10.1007/978-3-319-42831-4
- de Souza, C.S. (2018). A pragmatic turn in computer science. interactions 25,3 (May-June 2018), 20–21. DOI:https://doi.org/10.1145/3200147
- Flick, U. (2018). An introduction to qualitative research. Sage Publications Limited.
- Ierusalimschy, R. (2016) Programming in Lua, Fourth Edition. Lua.org (ISBN 85-903798-6-8).
- Norman, D. A. (1986). Cognitive Engineering. In User Centered System Design. User Centered System Design. Cham: Springer. doi: 10.1007/978-3-319-17885-1_100154
- Peirce, C. S. (1991). Peirce on Signs. Chapel Hill, NC: The University of North Carolina Press.
- Santaella, L. (2004). O método anticartesiano de C S Peirce. São Paulo. Editora da Unesp.
- Sowa, J. (2006). Peirce s Contributions to the 21ˢᵗ Century. In H. Schärfe, P. Hitzler, & P. Øhrstrøm, Conceptual Structures: Inspiration and Application: Proceedings of the 14ᵗʰ International Conference on Conceptual Structures, ICCS 2006 (pp. 54–69). Aalborg, Denmark: Springer Berlin Heidelberg. doi: 10.1007/11787181_5
- Sutton, R. I., & Staw, B. M. (1995). What Theory is Not. Administrative Science Quarterly, 40(3), 371–384. Retrieved from http://www.jstor.org/stable/2393788
Fórum de Usuários do Keras – string de busca utilizado em outubro de 2020 com o qual foi recuperado o exemplo: https://groups.google.com/forum/?nomobile=true#!searchin/keras-users/%22not$20an$20error%22%7Csort:date/keras-users/kYT6-m7o-Q8/-YuwdEMvBwAJ
Como citar esse artigo:
DE SOUZA, Clarisse Sieckenius. Sujeitos Ocultos e Indeterminados da Computação. SBC Horizontes, out. 2020. ISSN 2175-9235. Disponível em: <http://horizontes.sbc.org.br/index.php/2020/10/sujeitos-ocultos-e-indeterminados-da-computacao/>. Acesso em: DD mês. AAAA.