View
304
Download
0
Embed Size (px)
Citation preview
Algorithms and their others: algorithmic culture in context
Disciplina: Métodos DigitaisDocente: Dalton Martins
Discentes: Fabrícia Vilarinho e Johnathan Diniz
Sobre o autor:Paul Dourish Nascido em Glasgow (Escócia), em 1966. É professor de Informática na Faculdade de Ciências da Informação e
Computação da Universidade da Califórnia em Irvine, com nomeações de cortesia em Ciência da Computação e em Antropologia.
Sua pesquisa está na intersecção da ciência da computação e das ciências sociais, com um interesse particular na computação ubíqua e móvel e nas práticas culturais que cercam novas mídias.
http://www.dourish.com/
Estudos preliminares:Niklaus Wirth (1934 -) É Cientista da Computação (aposentado desde 1999);
Projetor de várias linguagens de Programação (entre elas a Pascal, baseada na estruturação de dados);
Escreveu vários artigos no campo de linguagem de programação;
Em 1975 ele escreveu o livro “algoritms + data structures =
programs”, que tiveram todos os exemplos da primeira edição feitos em Pascal.
https://www.inf.ethz.ch/personal/wirth/
Introdução Três tópicos principais que o artigo analisa: Os algoritmos, outrora objetos obscuros da arte técnica (technical art),
têm sido ultimamente objeto de considerável escrutínio popular e acadêmico.
O que significa adotar o algoritmo como um objeto de atenção analítica? O que está em vista e fora de vista, quando nós focamos no algoritmo?
O artigo examina como uma lente algorítmica forma a maneira pela qual podemos investigar a Cultura Digital contemporânea - usando a formulação de 1975 de Niklaus Wirth como ponto de partida: "algoritmos + estruturas de dados = programas"
Introdução
Estranho para o autor (Paul Dourish) descobrir que algoritmos agora são objeto de atenção pública, como tópicos em artigos de jornais e conversas em cafeterias; diferente do tempo em que era estudante de graduação em ciências da computação.
Antes, algoritmos eram usados somente na concepção de programas de computador; como formulações abstratas nos manuais; como enigmas matemáticos de testes (exam papers) etc.
Hoje, os processos digitais moldam e organizam nossas vidas, mesmo nas formas cotidianas.
Introdução A discussão pública de algoritmo está entrelaçada às discussões de ''Big
Data'': onde as atividades on-line criam fluxos de dados dos quais algoritmos extraem padrões que orientam a ação de instituições, corporações e Estados.
Desenvolvimentos algorítmicos estão transformando as relações de
trabalho. Ex: Uber e processos automatizados (que exigem alta velocidade): como negociação programada em mercados de ações, realizadas sem intervenção humana (Castells e A Sociedade em Rede)
Por tudo isso, os algoritmos se tornaram objetos de atenção acadêmica em
estudos sociais e culturais; pesquisadores usam ferramentas da análise cultural para entender a cultura digital contemporânea
No entanto, a incorporação do tópico Algoritmos nestes estudos levanta
algumas dificuldades. Exige que tenhamos cuidado sobre o que temos em vista quando os algoritmos são o objeto central de análise?
PAUSA. O que é um algoritmo? (Definições para leigos: para quem até agora tem uma ideia do que seja, acha que sabe, ou não tem a menor ideia...)
“Um Algoritmo é uma sequência de instruções ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema.”
Um algoritmo é formalmente uma sequência finita de passos que levam a execução de uma tarefa. Podemos pensar em algoritmo como uma receita, uma sequência de instruções que dão cabo de uma meta específica. Estas tarefas não podem ser redundantes nem subjetivas na sua definição, devem ser claras e precisas.
Ex.: manuais de aparelhos eletrônicos que explicam passo-a-passo como, por exemplo, gravar um evento.
Disponível em: http://www.ebah.com.br/content/ABAAABacgAB/linguagem-c-algoritmo
Outra definição Um programa de computador é essencialmente um algoritmo que diz ao
computador os passos específicos e em que ordem eles devem ser executados, como por exemplo, os passos a serem tomados para calcular as notas que serão impressas nos boletins dos alunos de uma escola.
Um exemplo de algoritmo implementável é o cálculo da média de um aluno.“Calcular média” • Receba a nota da prova mensal• Receba a nota da prova bimestral• Calcule a média com a fórmula media=(mensal+bimestral)/2• Exiba a média na telaO programa que realiza a tarefa acima poderia ser escrito em uma pseudo linguagem da seguinte forma:Variável mensal=0 Variável bimestral=0 Variável media=0ESCREVA “Digite a nota mensal:” RECEBA mensal ESCREVA “Digite a nota bimestral:” RECEBA bimestral CALCULE media=(mensal+bimestral)/2 ESCREVA “A média do aluno é:” ESCREVA media drSolutions
Logo, o algoritmo pode ser considerado uma sequência de operações que podem ser simuladas por uma máquina de Turing completa (filme O jogo da Imitação, 2014).
A maneira mais simples de se pensar um algoritmo é por uma lista de procedimentos bem definida, na qual as instruções são executadas passo a passo a partir do começo da lista, uma ideia que pode ser facilmente visualizada através de um fluxograma.
RETOMANDO O ARTIGO... (...) o que temos em vista quando os algoritmos são o objeto
central de análise?
Em 1975, o pioneiro cientista da computação Niklaus Wirth publicou um livro intitulado Algorithms+Data Structures=Programs. Nele, os sistemas de software enfatizavam o stepwise. Tradução: esta abordagem tornou os programas de computador mais fáceis de desenvolver e analisar, tornando-se prática industrial padrão.
Importante: Em um tempo em que o desenvolvimento e análise de
algoritmos era a prática dominante e a mais prestigiosa área da ciência da computação, Wirth quis enfatizar a concomitante importância da estrutura de dados para quem desenvolve os sistemas de software.
Ele destaca algumas preocupações importantes para os envolvidos com algoritmos e cultura digital:
A primeira: é que os algoritmos e programas são diferentes
conceitualmente e tecnicamente. Programas são mais do que algoritmos (no sentido de que os programas podem incluir material não algorítmico)
A segunda: uma vez que os algoritmos surgem na prática em relação a outros processos computacionais, como as estruturas de dados, eles precisam ser analisados e entendidos dentro destes sistemas de relação que lhes dão significado.
Pergunta: tem como pensar em algoritmo sem pensar em estrutura de dados?
O artigo aborda a questão dos algoritmos como objetos que vivem em relações dinâmicas com outros elementos materiais e discursivos de sistemas de software e o cenário que os produzem. Buscando entender qual é a interpretação técnica de algoritmos e que consequências poderá ter para as questões sociais e análise.
Então, dependendo da interpretação técnica (o entendimento que temos) dos algoritmos, as análises das questões sociais sofrerão consequências. Como você pensa o algoritmo?
Em termos de ciência da computação, um algoritmo é um resumo, descrição formal de um procedimento computacional. O significado se torna mais claro quando olhamos algoritmos no contexto de seus "outros" - fenômenos relacionados, mas distintos, que enfatizam diferentes aspectos da sociotechnical assembly (reunião sociotécnica...)
Algoritmos e seus outros: 1. Algoritmo e automação 2. Algoritmo e código 3. Algoritmo e arquitetura 4. Algoritmo e materialização
Os limites do termo algoritmo são determinados por papeis sociais (social engagements) e não por meio de restrições tecnológicas ou materiais (technological or material constraints).
Assim quando a pessoa diz, '' Eu faço algoritmos '' está fazendo uma declaração diferente da pessoa que diz: "Eu estudo engenharia de software" ou do que diz: "Eu sou um cientista de dados", e a natureza dessas diferenças são importantes para qualquer entendimento do relacionamento entre dados, algoritmos e sociedade.
Algoritmo e automação
Aqui, a preocupação não é com algoritmos como tal, mas com um sistema de controle e gerenciamento digital, através da detecção de dados de grande escala. Ex.: vigilância pública digitalmente melhorada; detecção de plágio;
Casos de monitoramento por computador e controle.
Certamente, questões cruciais do trabalho, política, justiça social, privacidade pessoal, responsabilidade pública, participação democrática etc. Os algoritmos desempenham um papel crítico nestes assuntos.
Algoritmo e código
Código é “software-como-texto” (software-as-text), e particularmente na forma de "código-fonte", as expressões legíveis (human-readable) de comportamento de um programa são o foco principal de programadores. Em livros didáticos e trabalhos de pesquisa, algoritimos são muitas vezes expressos no que é informalmente chamado "pseudocódigo".
Quatro Distinções Primeiro, enquanto a transformação de um algoritmo em código pode
ser relativamente simples, o processo inverso - para ler o algoritmo fora do código - não é de todo um processo simples. (?)
Muitos casos de erros no domínio da segurança na Internet, tem havido uma série de casos onde código não implementou corretamente o algoritmo que pretendia incorporar, deixando sistemas abertos para ataques e violações de dados; Ex: incidente "Heartbleed" está entre os mais conhecidos (Um programador alemão assumiu que criou o bug HeartBleed por acidente. O funcionário da companhia de softwares T-Systens (uma unidade da Deutsche Telekom) informou no blog da empresa que inseriu o bug no código-fonte aberto OpenSSL quando estava tentando melhorá-lo. O erro acidental resultou no abalo da indústria de segurança e serviços da web nos últimos dias e uma corrida de troca de senhas.
Disponível em: http://www.techtudo.com.br/noticias/noticia/2014/04/heartbleed-programador-assume-erro-e-confessa-que-criou-bug-por-acidente.html)
Quatro Distinções
Segundo, algoritmos e código têm diferentes propriedades locais. Mesmo que eles acontecem em sequência quando um programa é executado, eles podem não ocorrer em conjunto ou mesmo nas proximidades dentro do texto de um programa.
Terceiro, os algoritmos são manifestos diferentemente em diferentes plataformas de código. Diferentes arquiteturas de computador, diferentes tecnologias de armazenamento de dados, diferentes arranjos da hierarquia da memória, e outras características de uma plataforma significam que o código de um algoritmo é altamente variável e específico.
Quatro Distinções
Quarta distinção: há muito em um programa que não é "o algoritmo" (ou "um algoritmo").
Um algoritmo pode expressar o núcleo do que um programa é destinado a fazer, mas esse núcleo é cercado por uma vasta penumbra de operações auxiliares que também são da responsabilidade do programa e também se manifestam no código do programa.
Em outras palavras: enquanto tudo que um programa faz e que o código exprime é algorítmico no sentido que é especificada antecipadamente pela formalização, não é Algoritmo, no sentido de que ele vai além das coisas que Algoritmos expressam, ou mesmo o que o termo "algoritmo" sinaliza como um termo de prática profissional.
Algoritmo e arquitetura
A terceira distinção que é útil para relacionarmos algoritmo e arquitetura. A maioria dos programas contemporâneos, de qualquer complexidade, é
extremamente grande - muitas vezes centenas de milhares ou milhões de linhas de código - e devem ser organizados de acordo com algumas estruturas para ajudar programadores e equipes a gerenciar sua complexidade e compreender o todo.
A chamada "arquitetura de software" refere-se ao arranjo de unidades, módulos ou elementos de um sistema maior, e os padrões de interação entre essas unidades.
Por exemplo, podemos falar do algoritmo pelo qual a Internet gerencia o fluxo de dados em uma caixa de Control Protocol (TCP). O fluxo de dados deve ser regulado De modo a evitar o congestionamento nas linhas de transmissão, e, de facto, o desenvolvimento de um novo sistema de Algoritmo no final dos anos 80 foi crucial para permitir que a Internet tivesse seu tamanho atual.
Algoritmo e materialização A distinção final a explorar aqui é que entre a Algoritmo e sua manifestação não apenas em um pedaço
de código ou mesmo em um sistema de software maior, mas como um sistema em execução, executando em local, num computador específico, ligado a um determinada rede, com uma configuração de hardware específica. Todos estes fatores criam o efeito Algoritmo tem.
Que as configurações materiais limitam a eficácia ou alcance de algoritmos não é nenhuma surpresa; Porém, o inverso também é verdade - a nossa experiência de algoritmos pode mudar à medida que a infraestrutura muda.
Considere um exemplo tirado de simulação de armas nucleares. Devido tratados de proibição de testes nucleares, as potências nucleares não detonaram armas nucleares em várias décadas. Contudo, continuam a desenvolver e introduzir novas armas. Fazê-lo sem nenhum teste seria imprudente e assim, novos projetos são testados, mas apenas através da simulação. Na verdade, podemos argumentar que foi a capacidade de produzir simulações digitais de explosões nucleares críveis que tornaram a limitação do teste possível.
Neste momento, o desenho de novas ogivas nucleares e armas está tão intrinsecamente ligada à
tecnologia de simulação que se poderíamos considerar a tecnologia da simulação como um dos principais limites para a produção de novas armas.
A simulação - o algoritmo - permanece inalterado. Mas as novas tecnologias deslocam o efeito e impacto de um algoritmo sem alterar o próprio algoritmo; Elas expandem os limites das possibilidades algorítmicas.
Inscrutibility / “Inescrutável” Estendendo-se através de todas estas discussões que parecem ancorar a
análise social de algoritmos; Os algoritmos são apresentados como: Velozes, em vez de lento; automatizados, em vez de mão-de-obra;
mecânico, em vez de humano;► Cada uma dessas características apresentam uma série de problemas
quando os algoritmos são direcionados a novos domínios.► Talvez o contraste mais significativo seja, no entanto, os problemas de
inescrutabilidade (impenetrabilidade);► O foco de vários testes tem sido a questão da opacidade dos algoritmos.
Diversas avaliações e resultados tem sido amplamente estudados a respeito;► O funcionamento desses algoritmos são complexos, assim levam aos
pesquisadores a procurar novas formas de processos algoritmos visíveis, encontrando alguma forma para avaliá-los e testá-los.
Opacidade algorítmica Dourish cita o trabalho feito por Jenna Burrell (2016), no qual ela
estabelece algumas das bases para a opacidade algorítmica, a fim de solucionar problemas de verificação (auditoria);
Burrell começa a partir dos problemas colocados por algoritmos opacos;
Os algoritmos precisam estar disponíveis para auditoria; Burrell ressalta que existem variadas fontes (diferentes) de opacidade
algorítmica, são elas:1. Segredo comercial que regula muitos algoritmos que estão por trás dos
serviços como Google, Facebook e Twitter e também usados por instituições financeiras e corporações;
2. A capacidade de ler e compreender algoritmos, por se tratar de habilidade altamente especializada;
3. Muitos dos algoritmos possuem significado social e cultural, que moldam o fluxo de informações na mídia social (algoritmos de aprendizado de máquina estatística)
Opacidade algorítmica Perguntas sobre o que sabe e o que se pode dizer sobre o funcionamento
do aprendizado da máquina ou de algoritmos no Big Data é uma questão-chave em jogo na análise de algoritmos;
Debate sobre técnicas de aprendizado estatísticos das máquinas, produziram grandes incógnitas. Exemplo: bloqueio do cartão de crédito.
Em relação aos algoritmos vindo a desempenhar um papel nos assuntos sociais:
Qual é a lógica de alguns assuntos serem “trending topics” no Twiter e outros (talvez com uma grande importância) não?
Para entender isso, é preciso ser capaz de caracterizar as dinâmicas específicas da massa, cada vez mais difusa (a maneira de expressar as ideias, dinamicidade de repetição dos assuntos, áreas geográficas de interesse e a quantidade de tweets).
Opacidade algorítmica
Embora as formas de análise em que as técnicas de aprendizado estatístico de máquina estão embutidos, são referidos com o termo “Big Data”, existem dois movimentos escalares na atividade:
1. A partir de dados individuais para grandes conjuntos de dados (registro para uma massa acumulada de dados) – Este movimento permite técnicas estatísticas para começar descrever as características das populações;
2. Movimento inverso, partindo dos grandes populações à categorização de grupos específicos (exemplo: mulheres grávidas). Cada categorização é um movimento partindo do maior para o menor, usando pontos de dados para um elemento narrativo ou uma característica definidora, elaborado a partir do domínio que se obtém saber.
Opacidade algorítmica Dourish retoma à formulação de Wirth na obra “algoritms + data structures =
programs. Dualidade inerente de algoritmos e dados na produção de sistemas de
execução e os problemas de tentativa de compreender um sem o outro. Wirth fala em estruturas de dados e não somente em dados, pois os algoritmos são projetados em torno de estruturas de dados (forma e regularidades desses dados);
A preocupação de Burrell com a opacidade algorítmica, também direciona a se atentar sobre estruturas e regularidades em conjunto de dados e os mecanismos pelos quais lutam para denominá-los.
A preocupação com a leitura desses algoritmos podem levar a direção contrária, que seria as fontes de aparente legibilidade de dados.
Alguns movimentos legisladores mudaram o termo de “auditoria” para “explicação” (aqui reflete a dualidade entre algoritmo e dados, desempenhando papel na tomada de decisões automatizadas e ao mesmo tempo, conseguir explicar os resultados e como a produção desses dados [algoritmos] podem ser explicado entre si.
Directions / “Instruções” “Direções”
Que lições poderíamos tirar desta análise e que direções sugeridas para o futuro trabalho analítico em torno dos algoritmos? O termo algoritmo carrega consigo confusões conceituais e seria o momento de localizá-lo adequadamente dentro de um quadro analítico maior;
O aumento de interesse em técnicas do Big Data, é naturalmente, uma fonte significativa de interesse em algoritmos, em primeiro lugar, mas as representações específicas que organizam os dados (estruturas de dados), tem sido menos proeminente;
As consequências de formas de representação é necessário o duplo processamento algorítmico e estruturas de dados, com base nos estudos de Wirth;
Directions / “Instruções” “Direções”
Uma segunda preocupação é a questão da identidade algorítmica: entender como os algoritmos são identificados, como são usados ou idealizados, possuindo a mesma característica em diferentes contextos, circulando como eles fazem entre plataformas, instituições, empresas e aplicações;
A terceira preocupação seria a temporalidade dos algoritmos, levando em consideração principalmente as temporalidades de sua evolução como a sua implantação.
Noção de algoritmo: característica de prática profissional
Directions / “Instruções” “Direções” Finalmente, umas das questões mais intrigantes (que talvez
requer maior atenção), é a relação entre algorítmico e não-algorítmico dentro da prática tecnológica;
Os algoritmos são elementos distintos de design e software, são identificáveis e nomeáveis;
Os não-algoritmos são elementos em sistemas de software que são mecânicos e programadas;
É preciso diferenciar o algoritmo do mecânico e do automático (das atividades programadas);
É necessário compreender os limites e especificidades do “algoritmo”, para em seguida, estender a oportunidade de envolvimento mais significativo no diálogo interdisciplinar, abrindo novas áreas para análise em torno dos sistemas algorítmicos.
Referência
DOURISH, Paul. Algorithms and their others: algorithmic culture in context. Big Data & Society. [s. l.] ago 2016. p. 1-11. Disponível em: <http://bds.sagepub.com/content/3/2/2053951716665128>. Acesso em: 20 nov. 2016.