Algorithm

De Governança Algoritmos
Ir para: navegação, pesquisa

Algoritmo = Lógica + Controle

A importância do algoritmo para estudos de software é indicada com admirável clareza e sintese por Les Goldschlager e Andrew Lister em seu livro de texto, Ciência da Computação: Uma Introdução Moderna. O algoritmo "é o conceito unificador de todas as atividades em que os cientistas da computação participam". Provisoriamente, uma "descrição do método pelo qual uma tarefa deve ser realizada", o algoritmo é a entidade fundamental com a qual os cientistas da computação operam. é independente de linguagens de programação e independente das máquinas que executam os programas compostos destes algoritmos. Um algoritmo é uma abstração, tendo uma existência autônoma independente do que cientistas da computação gostam de se referir como “detalhes de implementação”, isto é, sua incorporação em uma linguagem de programação particular para uma arquitetura de máquina particular (que são consideradas irrelevantes).

Mas o algoritmo não é simplesmente a entidade teórica estudada por cientistas da computação. Algoritmos têm uma existência real incorporada nas bibliotecas de classes de linguagens de programação, no software usado para renderizar páginas da web em um navegador (na verdade, no código usado para renderizar um navegador em uma tela), na classificação de entradas em uma planilha e assim por diante. Campos especializados de pesquisa, como vida artificial ou conexionismo na ciência cognitiva, utilizam algoritmos genéticos, algoritmos de retropropagação, algoritmos de menor quadratura média para a construção de modelos para simular processos evolutivos ou as capacidades de aprendizagem de redes neurais. Algoritmos têm efeitos materiais sobre os usuários finais - e não apenas quando um site comercial usa técnicas de mineração de dados para prever suas preferências de compra.

Em suma, teoricamente e praticamente, idealmente e materialmente, os algoritmos têm um papel crucial no software. Mas nada disso nos diz muito sobre o papel social, cultural e político que os algoritmos desempenham, no mínimo. Tampouco nos diz muito sobre os estratos da realidade material. As abstrações algorítmicas podem estar correlacionadas com: confi gurações brilhantes de pixels em uma tela? movimentos do mouse? o fluxo de elétrons ao redor de um circuito integrado? Situar-se diretamente ao lado das estratégias reducionistas das ciências exatas, da sociedade, da cultura e da política é muito marginal às preocupações da ciência da computação. A engenharia de software, por outro lado, preocupada com a eficácia pragmática de construir software para fins específicos, pode parecer oferecer um melhor ponto de partida para o fatoramento da cultura no software. No entanto, é improvável que a engenharia de software nos permita ver a cultura como algo diferente de algo que o software conecta, desde que não consigamos chegar a um melhor entendimento de alguns de seus blocos básicos de construção. A questão-chave, então, é o que, se é que existe alguma coisa, um estudo de algoritmos como tal pode nos dizer sobre o lugar da cultura no software.

Historicamente, o algoritmo ocupa a posição central na ciência da computação devido à maneira como ele encapsula a lógica básica por trás da máquina de Turing. O conceito de Alan Turing de uma máquina que poderia ser usada para determinar se algum problema particular é suscetível de ser resolvido mecanicamente foi uma interpretação altamente original do objetivo do famoso projeto de David Hilbert de decidir formalmente se uma proposição matemática pode ou não ser provada. O algoritmo, que Turing entendeu como um processo efetivo para resolver um problema, é meramente o conjunto de instruções inseridas na máquina para resolver esse problema.3 Sem o algoritmo, então, não haveria computação.

Embora os cientistas da computação trabalhem com eles como se fossem seres puramente formais da razão (com um pouco de notação matemática básica, é possível raciocinar sobre algoritmos, suas propriedades e assim por diante, da maneira como se pode raciocinar sobre outras entidades matemáticas), os algoritmos têm uma relação crucial, se problemática, com a realidade material. Isso era tácito na maneira como a máquina de Turing era vista em termos de processos efetivos: Afinal, um computador é uma máquina e, embora a máquina de Turing seja uma abstração imaginativa, suas conotações de materialidade são inteiramente reais. Robert Rosen sugeriu que a tentação de extrapolar de procedimentos formais para processos materiais era praticamente inerente ao empreendimento dos primeiros cientistas da computação.4 Tal tentação implica uma confusão entre a matemática dos algoritmos e a física dos processos reais, dos quais Stephen Wolfram especulações ousadas de que o universo é em si um computador gigante é um resultado possível.5 O restante deste artigo explora outra possibilidade, igualmente especulativa, mas talvez mais mundana.

Uma das implicações da caracterização do algoritmo como soma de lógica e controle é que ele sugere uma ligação entre algoritmos e ação. Apesar do arcabouço formal-lógico da teoria dos algoritmos e do fato de que as linguagens de programação são artefatos sintáticos, a construção de algoritmos como uma série de etapas precisamente controladas na realização de uma tarefa é uma indicação clara do que pode ser chamado de dimensão pragmática. de programação. Algoritmos fazem coisas, e sua sintaxe incorpora uma estrutura de comando para permitir que isso aconteça. Afinal, a máquina de Turing como uma abstração imaginativa teve como correlato material uma série de computadores reais. Por mais idiotas que sejam, sistemas de orientação de mísseis, bancos de dados de inteligência e testes biométricos são perfeitamente reais. Sem essa existência efetiva em máquinas de concreto, os algoritmos só teriam uma realidade de papel como os artefatos de uma linguagem formal.

No campo da linguística, a existência de uma dimensão pragmática para a linguagem - o fato de que as palavras fazem as coisas - criou enormes problemas para as tentativas de formalizar a estrutura da linguagem natural. Como a pragmática conecta a linguagem a fatores extrínsecos, torna-se impossível conceituar uma linguagem como um sistema auto-suficiente fechado em si mesmo. Talvez a tentativa de conceituar a dimensão pragmática do algoritmo possa produzir um resultado semelhante? Entretanto, enquanto a formalização vem depois com linguagens naturais, com algoritmos, a formalização vem em primeiro lugar, o objetivo expresso é divorciar a expressão (formal) do conteúdo (material) completamente. Compreensivelmente, então, o estudo da computação tendeu a se concentrar em questões de sintaxe e semântica, assumindo-se que os algoritmos podem ser apropriadamente compreendidos dentro de tal estrutura. Isso tendeu a resultar no salto do mundo teórico para o mundo prático, difícil de realizar. Sempre a trivialidade dos detalhes de implementação.

Uma concepção do algoritmo como uma afirmação como Michel Foucault usou o termo pode nos permitir entender um pouco melhor essa abordagem. Para Foucault, a afirmação não é analiticamente redutível às características sintáticas ou semânticas de uma linguagem; refere-se, em vez disso, à sua existência histórica e ao modo como essa existência histórica realiza ações particulares. A afirmação é uma espécie de linha diagonal traçando uma função da existência da linguagem, que está além de suas propriedades sintáticas e semânticas. Desta forma, o conceito da afirmação atua como um lembrete de que a distinção categórica entre forma e conteúdo é, paradoxalmente, insuficientemente abstrata para apreender a inteligência de constelações concretamente singulares da linguagem em sua existência efetiva. Como Foucault coloca em The Archaeology of Knowledge, “falar é fazer alguma coisa - outra coisa que não expressar o que se pensa, traduzir o que se conhece e outra coisa senão brincar com a estrutura da linguagem” .6 Para Foucault, essas ações são restritas à esfera humana, como é de se esperar de uma análise que enfoca a existência histórica de linguagens naturais. Apropriadamente traduzido no campo de estudos de software, no entanto, focar no desenvolvimento e na implantação de algoritmos e uma análise das ações que eles realizam tanto dentro do software quanto externamente pode nos levar a ver o segundo como um tipo de discurso maquínico, que aborda o maneiras pelas quais os algoritmos operam transversalmente, em si mesmos, nas máquinas e nos humanos. (Alternativamente, podemos querer começar a pensar em análise cultural como um processo de engenharia de software.)

Visualizar algoritmos dessa maneira como enunciados dentro de um discurso maquínico problematizaria sua existência de uma maneira que enfraquece as dicotomias “puro / aplicado” ou “teoria / prática” que surgem quando a distinção entre ciência da computação e engenharia de software é feita muito apressadamente. O objetivo formalista da abstração completa do conteúdo não apenas retransmite a divisão entre teoria e prática, mas também tende a impedir uma análise do elo entre as entidades cruciais da ciência da computação e o contexto histórico. Só porque o desenvolvimento de um algoritmo requer um nível de abstração formal de fato, que então permite que esse algoritmo seja aplicado a outros tipos de conteúdo, não significa que tenhamos exaurido tudo o que precisamos saber para entender os processos de que é uma parte. Tomando emprestada uma expressão de Gilles Deleuze e Félix Guattari, cuja análise do lugar da pragmática na linguagem é parte da inspiração para essa discussão, o problema com a concepção puramente formal do algoritmo como uma máquina abstrata não é que seja abstrato. É que não é abstrato o suficiente. Isto é, não é capaz de entender o lugar do algoritmo em um processo que atravessa a máquina e o humano.

Algoritmos obviamente não executam suas ações em um vazio. É difícil entender como funcionam sem a existência simultânea de estruturas de dados, o que também significa dados. Mesmo o algoritmo mais simples para ordenar uma lista de números supõe uma lista não ordenada como entrada e uma lista ordenada como saída (assumindo que o algoritmo está correto). Embora os cientistas da computação raciocinem sobre algoritmos independentemente de estruturas de dados, um deles é praticamente inútil sem o outro. Em outras palavras, a distinção entre os dois é formal. No entanto, do ponto de vista prático, o pré-requisito de que os dados estruturados realmente existem para que os algoritmos possam ser operados é fundamental, porque é indicativo de uma operação crítica de tradução necessária para que um problema seja tratável no software. Essa operação de tradução pode ser melhor entendida como uma transformação incorpórea, uma transformação que, ao recodificar coisas, ações ou processos como informação, altera fundamentalmente seu status. Essa operação pode ser realizada de inúmeras maneiras, mas geralmente requer uma estruturação de dados, seja por algo tão inócuo quanto o uso de um formulário em uma página web ou por processos sociais de uma forma mais complexa: a extração de conhecimento praticada pelos desenvolvedores de sistemas especialistas, a reestruturação de uma organização por consultores de gestão, e assim por diante.

Seria fácil deixar a análise de algoritmos neste ponto: Estamos de volta ao território familiar para a análise cultural, a da crítica da abstração. Nos estudos culturais e em muitos outros campos de pesquisa nas ciências humanas, a abstração é frequentemente vista como o inimigo. Muitos movimentos de pensamento filosófico, de empreendimento literário e artístico e de pesquisa científica humana se colocaram contra as consequências desumanas e destrutivas do reducionismo da matemática, da física e das disciplinas afins, como os debates perenes sobre as diferenças entre o humano e o humano. as ciências exatas sugerem. Poderíamos até mesmo entender os principais elementos do conceito de cultura como uma resposta à maquinaria abstrata do capitalismo industrial e à natureza bifurcada sobre a qual a racionalidade moderna é construída. Entender coisas, atividades, tarefas e eventos em termos algorítmicos parece apenas exacerbar essa situação. O que é um algoritmo, se não a incorporação conceitual da racionalidade instrumental dentro de máquinas reais?

Entretanto, simplesmente negar a abstração por um apelo a algum outro valor supostamente capaz de mitigar as conseqüências desumanizadoras do reducionismo perde um ponto crucial. Ele não questiona adequadamente os termos pelos quais o algoritmo, como um construto teórico supostamente auto-suficiente, mantém seu poder de hierarquização. Ao questionar a auto-suficiência do algoritmo como uma noção formal, chamando a atenção para seu funcionamento pragmático, entretanto, torna-se possível considerar a maneira como os algoritmos funcionam como parte de um conjunto mais amplo de processos. Os algoritmos agem, mas o fazem como parte de uma rede mal definida de ações sobre ações, parte de um complexo de relações de poder-conhecimento, no qual consequências não intencionais, como os efeitos colaterais do comportamento de um programa, podem se tornar criticamente importantes. Certamente, a qualidade formal do algoritmo como uma construção logicamente consistente traz consigo um enorme poder - particularmente em um universo tecnocientífico -, mas há um equívoco suficiente sobre a natureza puramente formal desse construto para nos permitir entender que é mais para o algoritmo do que forma logicamente consistente.

Lessig sugeriu que “código é lei”, mas se código é lei, é lei como “gerenciamento de infrações” .9 Lógicas formais são inerentemente incompletas e existem indiscerníveis. Máquinas quebram, programas têm bugs, projetos são abandonados e sistemas são hackeados. E, como demonstrou o filósofo Alfred North Whitehead, os seres humanos são literalmente infectados por abstrações.10 Isso não é ruim, porque, como o vírus que produziu tulipas variadas de uma beleza rara, a infecção também pode ser criativa.


Notes

1. Robert Kowalski, “Algorithm = logic + control.” 2. Les Goldschlager and Andrew Lister, Computer Science: A Modern Introduction, 2nd ed., 12. 3. See Rolf Herken, ed., The Universal Turing Machine: A Half- Century Survey for an excellent collection of appraisals of the Turing machine. 4. Robert Rosen, “Effective Processes and Natural Law” in Herken, ibid. 5. Stephen Wolfram, A New Kind of Science. 6. Replace the word “speak” with the word “program” and one might begin to get a sense of what is being suggested here. See Michel Foucault, The Archaeology of Knowledge. 7. Gilles Deleuze and Félix Guattari, “November 20, 1923: Postulates of Linguistics,” in A Thousand Plateaus. 8. See Philip Agre, Computation and Human Experience on the crucial role of side effects in software. Max Weber’s essay The Protestant Ethic and the Spirit of Capitalism is the classic text on the fundamental role of unintended consequences in human action. 9. Gilles Deleuze, Foucault, p. 39. 10. See for example, Alfred North Whitehead, Science and the Modern World, and the extended commentary by Isabelle Stengers, Penser avec Whitehead.