Baixe o app para aproveitar ainda mais
Prévia do material em texto
Cientistas da Computação Deveriam Experimentar Mais? Cientistas da computação e profissionais defendem Sua falta de experimentação com uma ampla gama De argumentos. Alguns argumentos sugerem que A experimentação é inadequada, muito difícil, Inútil e até prejudicial. Este artigo Discute vários desses argumentos para ilustrar A importância da experimentação para Ciência da Computação. O que os cientistas da computação precisam experimentar? Somente se respondermos "sim", faz sentido perguntar se há o suficiente disso. Em sua palestra para o Prêmio Allen Newell, Fred Brooks sugere que a ciência da computação "não é uma ciência, mas um sintético, uma disciplina de engenharia. ” Em uma engenharia campo, testar teorias por experimentos seria ser extraviado. Brooks e outros parecem preocupados com o fato de que os fenômenos estudados na ciência da computação parecem fabricados. Computadores e programas são criações humanas, então podemos concluir que o computador a ciência não é uma ciência natural no tradicional senso. A visão da engenharia da ciência da computação é muito estreita, muito míope de computador. Os principais assuntos de investigação em ciência da computação não são meramente computadores, mas estruturas de informação e informação processos. Os computadores desempenham um papel dominante porque eles tornam os processos de informação mais fáceis de modelar e observar. No entanto, de forma alguma os computadores são os únicos lugares onde ocorrem os processos de informação. Na verdade, modelos de computador se comparam mal com as informações processos encontrados na natureza, digamos, nos sistemas nervosos, em sistemas imunológicos, em processos genéticos, ou, se você quiser, nos cérebros de programadores e usuários de computador. O fenómenos estudados em ciência da computação são muito mais ampla do que aquelas que surgem em torno dos computadores. Com relação à natureza do computador fabricado fenômenos (sua “sintetização”), prefiro pensar sobre computadores e programas como modelos. Modelagem está na melhor tradição da ciência, porque nos ajuda estudar fenômenos de perto. Por exemplo, para estudar lasing, é preciso construir um laser. Não obstante se os lasers ocorrem na natureza, construir um laser faz não fazer o fenômeno da massiva estimulada emissão artificial. Elementos superpesados devem ser sintetizados no laboratório para estudo, porque são instáveis e não ocorrem naturalmente, mas ninguém assume que a física das partículas é sintética. Da mesma forma, computadores e software não ocorrem naturalmente, mas eles nos ajudam a modelar e estudar informações processos. Usar esses dispositivos não renderiza informações processos artificiais. Uma grande diferença das ciências tradicionais é que informação não é energia nem matéria. Poderia isso diferença é a razão pela qual vemos pouca experimentação em ciência da computação? Para responder a essas perguntas, vamos olhe para o propósito dos experimentos. POR QUE DEVEMOS EXPERIMENTAR? Quando discuto o propósito dos experimentos com matemáticos, eles frequentemente exclamam que os experimentos não prova nada. É verdade que nenhuma quantidade de experimentação fornece prova com certeza absoluta. Então, para que servem os experimentos? Usamos experimentos para testes teóricos e para exploração. Experimentalistas testam previsões teóricas contra realidade. Uma comunidade aceita gradualmente uma teoria se todos fatos conhecidos dentro de seu domínio podem ser deduzidos de a teoria, se ela resistiu a inúmeras testes, e se prevê corretamente novos fenômenos. No entanto, sempre há um elemento de suspense: Parafraseando Edsger Dijkstra, um experimento só pode mostrar a presença de bugs em uma teoria, não sua ausência. Os cientistas estão bem cientes dessa incerteza e estão, portanto, prontos para derrubar uma teoria se evidências contraditórias vierem à tona. Um bom exemplo de falsificação de teoria em computador ciência é o famoso experimento de Knight e Leveson, 3 que analisou as probabilidades de falha do multiversão programas. A teoria convencional previu que a probabilidade de falha de um programa multiversão era o produto das probabilidades de falha do indivíduo versões. No entanto, John Knight e Nancy Leveson observou que programas multiversão reais tinham probabilidades de falha significativamente maiores. Em essência, o experimento falsificou a suposição básica da teoria convencional, ou seja, que falhas no programa as versões são estatisticamente independentes. Os experimentos também são usados onde a teoria e dedutiva a análise não alcança. Experimentos sondam a influência de suposições, eliminar explicações alternativas de fenômenos, e descobrir novos fenômenos precisa de explicação. Neste modo, os experimentos ajudam com indução: derivando teorias da observação. Redes neurais artificiais são um bom exemplo de o modo exploratório de experimentação. Depois de ter foi descartado por motivos teóricos, experimentos propriedades demonstradas melhores do que o previsto. Os pesquisadores estão agora desenvolvendo teorias melhores para responsável por essas propriedades. O método científico tradicional não é aplicável O fato de que – no campo da ciência da computação o assunto da investigação é informação em vez de energia ou a matéria não faz diferença na aplicabilidade de o método científico tradicional. Para entender a natureza dos processos de informação, cientistas da computação deve observar fenômenos, formular explicações e teorias e testá-las. Existem muitas teorias da ciência da computação que não foi testado. Por exemplo, programação funcional, programação orientada a objetos e formal métodos são todos pensados para melhorar a produtividade do programador, qualidade do programa, ou ambos. É surpreendente que nenhuma dessas afirmações obviamente importantes jamais foram testados sistematicamente, embora sejam todos 30 anos de idade e muito esforço foi dedicado ao desenvolvimento linguagens de programação e técnicas formais. As ciências tradicionais usam teste de teoria e exploração iterativamente porque as observações ajudam a formular novos teorias que podem ser validadas posteriormente. Um importante requisito para qualquer experimento, no entanto, é a repetibilidade. A repetibilidade garante que os resultados possam ser verificados de forma independente e, portanto, aumenta a confiança nos resultados. Ajuda a eliminar erros, boatos e fraudes. Refutação: Para entender os processos de informação, computador os cientistas devem observar fenômenos, formular explicações e teste-as. Este é o método científico. Falácia 1. Método científico tradicional não é aplicável. O nível atual de experimentação é bom o suficiente Sugerindo que o nível atual de experimentação não precisa mudar é baseado na suposição de que cientistas da computação, como um grupo, sabem o que são fazendo. Este argumento sustenta que se precisarmos de mais experimentos, nós simplesmente os faremos. Mas esse argumento é tênue; vamos olhar os dados. Em “Avaliação Experimental em Ciência da Computação: A Estudo Quantitativo ”, 4 meus co-autores e eu classificamos 400 artigos. Em seguida, continuamos considerando aqueles artigos cujas afirmações exigiam avaliação empírica. Por exemplo, excluímos artigos que provaram ser matemáticos teoremas, porque a teoria matemática não pode ser provado por experimentos. Em uma amostra aleatória de todos os artigos publicados pela ACM em 1993, o estudo descobriu que 40 por cento dos papéis com afirmações que precisavam de suporte empírico tinham Nenhum mesmo. Em periódicosrelacionados a software, esta fração foi de 50 por cento. O mesmo estudo também analisou um não computador periódico científico, Optical Engineering e descobriram que a fração de papéis sem dados quantitativos avaliação foi de apenas 15 por cento. O estudo de Marvin Zelkowitz e Dolores Wallace (no computador deste mês) achou semelhante os resultados. Ao aplicar uma classificação consistente esquemas, ambos os estudos relatam que entre 40 e 50 por cento dos papéis de engenharia de software não foram validados. Zelkowitz e Wallace também pesquisaram periódicos em física, psicologia e antropologia e novamente encontraram percentagens muito menores de papéis não validados do que na ciência da computação. Em relação a outras ciências, os dados mostram que o computador cientistas validam uma porcentagem menor de suas reivindicações. Alguns argumentariam que a ciência da computação em 50 anos ainda é jovem e, portanto, comparando-o a outros ciências têm valor limitado. Eu discordo, principalmente porque 50 anos parece bastante tempo para duas a três gerações de cientistas para estabelecer princípios sólidos. Mas mesmo em uma escala absoluta, acho assustador quando metade dos papéis não matemáticos tornam-se não validados reivindicações. Suponha que cada ideia publicada sem validação teria que ser seguido por, pelo menos, duas validações estudos (que é um requisito muito leve). Isto segue que não mais que um terço dos artigos publicados pode conter reivindicações não validadas. Os dados sugerem que os cientistas da computação publicam muitas coisas não testadas ideias ou que as ideias publicadas não valem testando. Não estou defendendo a substituição da teoria e da engenharia com a experiência, mas estou defendendo um equilíbrio melhor. Eu defendo o equilíbrio não porque seria desejável para a ciência da computação parecer mais científica, mas devido aos seguintes benefícios principais: Refutação: em relação a outras ciências, os dados mostram que cientistas da computação validam uma porcentagem menor de seus reivindicações. Falácia 3. Os experimentos custam muito caro. Refutação: experimentos significativos podem caber em pequenas orçamentos; experimentos caros podem valer mais do que seu custo. Falácia 2. O nível atual de a experimentação é boa o suficiente. • A experimentação pode ajudar a construir uma base confiável de conhecimento e, assim, reduzir a incerteza sobre quais teorias, métodos e ferramentas são adequados. • Observação e experimentação podem levar a percepções novas, úteis e inesperadas e abertas áreas totalmente novas de investigação. Experimentação pode entrar em áreas desconhecidas onde a engenharia progride lentamente, se é que o faz. • A experimentação pode acelerar o progresso em eliminando rapidamente abordagens infrutíferas, errôneas suposições e modismos. Também ajuda a orientar engenharia e teoria em direções promissoras. Por outro lado, quando ignoramos a experimentação e evitamos o contato com a realidade, dificultamos o progresso. As experiências custam muito caro A experimentação requer claramente mais recursos do que a teoria. A primeira linha de defesa contra experimentação é normalmente, “Fazendo um experimento seria incrivelmente caro ”ou“ Para fazer isso direito, Eu precisaria de centenas de assuntos, trabalho por anos sem publicar e gastar uma quantia enorme de dinheiro." Um cientista obstinado pode responder: “Então o que?" Em vez de ficar paralisado por considerações de custo, tal cientista primeiro investigaria a importância de a questão de pesquisa. Quando convencido de que a pesquisa aborda um problema fundamental, um experiente experimentalista, então, planejaria um apropriado programa de pesquisa, procurando ativamente técnicas experimentais acessíveis e sugerindo etapas intermediárias com resultados parciais ao longo do caminho. Para um cientista, o potencial de financiamento não deve ser o único ou critério principal para decidir quais questões perguntar. Nas ciências tradicionais, existe um complexo processo social em que questões importantes se cristalizam. Estes se tornam o foco da pesquisa, o avanço objetivos que abrem novas áreas. Por exemplo, a primeira validação experimental de relatividade geral – realizada por Issac Eddington em 1919 – era extremamente caro e mal mostrou o efeito. Eddington usou um eclipse solar total para verificar a teoria de Einstein de que a gravidade dobra a luz quando passa perto de uma estrela massiva. Este foi um verdadeiro experimento caro porque envolveu uma expedição para a Ilha do Príncipe, África Ocidental, e também porque o experimento ultrapassou os limites da fotografia tecnologia de emulsão. Mas era importante testar se Einstein estava correto. Poucas investigações são de escopo comparável para a relatividade geral, mas há muitos perguntas menores e ainda importantes para responder. Os experimentos podem ser caros, mas nem todos são proibitivamente caro. Experimentos significativos podem cabem no orçamento de pequenos laboratórios. No outro Por outro lado, experimentos caros podem valer muito mais do que seu custo. Quando seres humanos estão envolvidos em um experimento, o custo geralmente aumenta dramaticamente, enquanto a significância gotas. Quando são experimentos caros justificado? Quando as implicações dos insights obtidos superam os custos. Um segmento significativo da indústria de software converteu de C para C ++ com um custo substancial de retreinamento. Podemos perguntar o quão solidamente fundamentada a decisão mudar para C ++ era. Além de estudos de caso (que são questionáveis porque não generalizam facilmente e pode estar sob pressão para demonstrar o resultados), não tenho conhecimento de nenhuma evidência sólida mostrando que C ++ é superior a C em relação ao programador produtividade ou qualidade do software. Nem estou ciente de qualquer confirmação independente de tal evidência. No entanto, ao treinar alunos em melhorando seus processos pessoais de software, meu grupo de pesquisa observou recentemente que os programadores C ++ parecem cometer muitos mais erros e tomar muito mais do que programadores C de treinamento comparável - tanto durante o desenvolvimento inicial quanto na manutenção. Suponha que esta observação não seja um acaso. (Assim como este artigo foi para impressão, soubemos que um artigo de Les Hatton, "Does OO Really Match the Way We Think?" aparecerá na edição de maio da IEEE Software, relatando fortes evidências sobre os efeitos negativos do C ++.) Em seguida, executar experimentos para testar o fundamento princípios da programação orientada a objetos seriam verdadeiramente de valor. Esses experimentos podem economizar recursos muito além de seu custo. Os experimentos também podem têm um efeito duradouro e positivo na direção da pesquisa em linguagens de programação. Eles podem salvar não apenas o dinheiro da indústria, mas também o esforço de pesquisa. Curiosamente, a indústria de software está começando a experimentos de valor, porque os resultados podem dar a uma empresa uma vantagem de três a cinco anos sobre a competição. Por exemplo, de acordo com Larry Votta em uma entrevista pessoal comunicação, a Lucent Technologies estima que atualmente está se beneficiando de uma liderança de cinco anos em software inspeções baseadas em uma série de experimentos internos. É útil verificar quais cientistas em outras disciplinas gastar em experimentação. Testando produtos farmacêuticos é extremamente caro, mas apenas desesperadoros pacientes aceitam drogas e terapias mal testadas. No aeronáutica, engenheiros testam aerofólios extensivamente e construir túneis de vento caros para isso. Simulação numérica reduziu o número de tais testes, mas não os eliminou. Em muitas ciências, a simulação se tornou uma ferramenta útil forma de experimentação; a ciência da computação também pode beneficiar de boas técnicas de simulação. Em biologia, por exemplo, Edward Wilson chama a fragmentação da floresta Projeto no Brasil o biológico mais caro experimento ever. Ao limpar um grande trato do Selva amazônica, os pesquisadores ficaram isolados manchas de vários tamanhos (1 a 1.000 hectares). O objetivo era testar hipóteses sobre o relacionamento entre o tamanho do habitat e o número de espécies restantes. A experimentação é amplamente utilizada em física, química, ecologia, geologia, climatologia e assim por diante. Scientific American publica experimentos em todos emitir. Os cientistas da computação não precisam ter medo ou vergonha de realizar grandes experimentos para explorar questões importantes. As demonstrações serão suficientes Em sua palestra no Prêmio Turing de 1994, Juris Hartmanis argumenta que a ciência da computação difere suficientemente de outras ciências para permitir diferentes padrões em experimentação, e que as demonstrações podem levar a lugar de experimentos. Eu não poderia discordar mais. Demos pode fornecer prova de conceitos (no sentido de engenharia) ou incentivos para estudar mais uma questão. Também muitas vezes, no entanto, essas demonstrações meramente ilustram um potencial. As demonstrações dependem criticamente da imaginação dos observadores e sua vontade de extrapolar; elas normalmente não produzem evidências sólidas. Obter tais evidências, precisamos de uma análise cuidadosa envolvendo experimentos, dados e replicação. Por exemplo, porque o processo de programação é mal compreendido, os cientistas da Falácia 4. As demonstrações serão suficientes. Refutação: as demonstrações podem fornecer incentivos para estudar uma questão adicional. Muitas vezes, no entanto, essas demonstrações apenas ilustram um potencial. Falácia 5. Há muito barulho em o caminho. Réplica: Felizmente, o benchmarking pode ser usado para simplificar variáveis e responder a perguntas. computação poderiam introduzir diferentes teorias sobre como construir programas dos requisitos. Essas teorias poderiam então ser testadas experimentalmente. Poderíamos fazer o mesmo para a percepção, interfaces homem- máquina ou interação homem computador em geral computadores com hierarquias de armazenamento. Precisamos melhorar teorias de algoritmos, e precisamos testá-los no laboratório. Pesquisa em sistemas paralelos pode gerar modelos de máquinas, mas seus méritos relativos só podem ser explorados experimentalmente. Os exemplos que eu tenho citados certamente não são exaustivos, mas todos eles envolvem experimentos no sentido tradicional. Elas exigem uma pergunta clara, um aparato experimental para testar a pergunta, coleta de dados, interpretação e partilha dos resultados. Há muito barulho no caminho Outra linha de defesa contra a experimentação é: “Existem muitas variáveis para controlar e os resultados seriam sem sentido porque os efeitos que procuro são inundados por ruído.” Pesquisadores que invocar essa desculpa estarão procurando uma saída fácil. Uma maneira eficaz de simplificar experimentos repetidos é por benchmarking. Felizmente, o benchmarking pode ser usado para responder a muitas perguntas na ciência da computação. A parte mais subjetiva e, portanto, mais fraca de um teste de benchmark é a composição do benchmark. Todo o resto, se devidamente documentado, pode ser verificado pelo cético. Consequentemente, a composição de benchmark é sempre calorosamente debatida. Embora muitas vezes criticado, os benchmarks são um efeito forma prática e acessível de conduzir experimentos. Essencialmente, um benchmark é uma amostra de domínio de tarefa executada por um computador ou por um ser humano e um computador. Durante a execução, o ser humano ou o computador registra medições de desempenho bem definidas. Benchmarks têm sido usados com sucesso em áreas amplamente diferentes, incluindo compreensão de fala, recuperação de informações, reconhecimento de padrões, reutilização de software, arquitetura de computador, avaliação de desempenho, análise numérica aplicada, algoritmos, compressão de dados, síntese lógica e robótica. Um benchmark fornece um campo de jogo nivelado para ideias concorrentes e (assumindo que o benchmark é suficientemente representativo) permite comparações objetivas e repetíveis. No mínimo, um benchmark pode eliminar rapidamente abordagens pouco promissoras e afirmações exageradas. A construção de um benchmark geralmente é um trabalho intenso, mas vários laboratórios podem compartilhar o fardo. Uma vez definido, um benchmark pode ser executado repetidamente a um custo moderado. Na prática, é necessário desenvolver benchmarks para evitar overfitting. Com relação aos testes de benchmark em reconhecimento de fala, Raj Reddy escreve: “Usando bancos de dados comuns, modelos concorrentes são avaliados dentro sistemas operacionais. As ideias bem-sucedidas, então, parecem aparecer magicamente em outros sistemas dentro de alguns meses, levando a uma validação ou refutação de mecanismos específicos para modelar a fala. ” Em muitos dos exemplos que citei antes, os benchmarks fazem uma área florescer repentinamente porque eles fazem é fácil identificar abordagens promissoras e descartar as pobres. Concordo com Reddy que “toda a ciência da computação experimental poderia se beneficiar de tais experimentos disciplinados”. Experimentos com seres humanos envolvem desafios adicionais. Vários campos, principalmente medicina e psicologia, encontraram técnicas para lidar com a variabilidade humana. Todos nós já ouvimos sobre grupos de controle, atribuições aleatórias, placebos, pré e pós-teste, balanceamento, bloqueio, estudos cegos e duplo-cegos e baterias de testes estatísticos. O fato de uma droga influenciar pessoas diferentes de maneiras diferentes não impede os pesquisadores médicos de fazerem os testes. Quando o controle é impossível, os pesquisadores usam estudos de caso, estudos observacionais e outras técnicas investigativas. Na verdade, a medicina oferece muitas lições importantes sobre o projeto experimental, por exemplo, como controlar variáveis e minimizar erros. Evitar a experimentação por causa das dificuldades não é aceitável. Experimentos com seres humanos envolvem desafios adicionais. Vários campos, principalmente medicina e psicologia, encontraram técnicas para lidar com a variabilidade humana. Todos nós já ouvimos sobre grupos de controle, atribuições aleatórias, placebos, pré e pós-teste, balanceamento, bloqueio, estudos cegos e duplo-cegos e baterias de testes estatísticos. O fato de uma droga influenciar pessoas diferentes de maneiras diferentes não impede os pesquisadores médicos de fazerem os testes. Quando o controle é impossível, os pesquisadores usam estudos de caso, estudos observacionais e outras técnicas investigativas. Na verdade, a medicina oferece muitas lições importantes sobre o projeto experimental, por exemplo, como controlar variáveis e minimizar erros. Evitar a experimentação por causa das dificuldades não é aceitável. O progresso vai desacelerar Alguns argumentam que, se tudo deve ser apoiado experimentalmente antes da publicação, o fluxo de ideias seria estrangulado e o progresso desaceleraria. Este não é um argumentopara ser considerado levianamente. Em um campo acelerado como a ciência da computação, o número de idéias em discussão é obviamente importante. No entanto, a experimentação não precisa ter um efeito adverso: • Aumentando a proporção de papéis com significado a validação tem uma boa chance de realmente acelerar o progresso. Ideias questionáveis seriam eliminadas mais rapidamente e os cientistas concentrariam suas energias em abordagens mais promissoras. • Estou confiante de que os leitores continuariam a valorizar bons artigos conceituais e artigos formulando novas hipóteses, portanto, tais artigos ainda seriam publicados. Os testes experimentais viriam mais tarde. É uma questão de equilíbrio. Atualmente, a pesquisa não teórica raramente vai além do estado assertivo, caracterizado por uma justificativa fraca como "parece intuitivamente óbvio", ou "parece uma boa ideia" ou "Eu tentei em um pequeno exemplo e funcionou". Precisamos chegar a um terreno mais firme do que a afirmação. A tecnologia muda muito rápido As preocupações com a mudança rápida da tecnologia surgem com frequência na arquitetura do computador. Trevor Mudge resume bem: “A taxa de mudança na computação é tão grande que, no momento em que os resultados são confirmados, eles podem não ser mais relevantes.” Podemos dizer o mesmo sobre o software. De que serve um experimento quando sua duração excede a vida útil do sujeito experimental – um produto ou ferramenta de software? Falácia 6. A experimentação ficará lenta progresso. Refutação: Aumentando a proporção de papéis com significado a validação tem uma boa chance de realmente acelerar progresso. Falácia 7. A tecnologia muda muito rápido. Refutação: se uma pergunta se tornar irrelevante rapidamente, é definido de forma muito restrita e não vale a pena gastar muito esforço diante. Falácia 8. Você nunca o publicará. Refutação: etapas menores ainda valem a pena publicar porque eles melhoram nossa compreensão e levantam novas questões. Se uma pergunta se tornar irrelevante rapidamente, talvez seja uma definição muito restrita e não valha a pena despender muito esforço nela. Mas por trás de muitas questões com uma vida curta se esconde um problema fundamental com uma vida-longa; os cientistas devem sondar o fundamental e não o efêmero, aprendendo a diferenciar. Além disso, a mudança tecnológica geralmente altera ou elimina suposições que antes eram tidas como certas. Os cientistas devem, portanto, antecipar mudanças nas suposições e empregar experimentos de forma proativa para explorar as consequências de tais mudanças. Esse tipo de trabalho é muito mais exigente e pode ter um valor muito maior a longo prazo do que simplesmente comparar produtos de software. Você nunca vai conseguir publicar Algumas revistas científicas estabelecidas têm dificuldade em encontrar editores e revisores capazes de avaliar o trabalho empírico. Os teóricos podem dominar seus conselhos editoriais e os experimentadores são frequentemente confrontados com revisores que esperam perfeição e certeza absoluta. No entanto, os experimentos são conduzidos no mundo real e, portanto, sempre apresentam falhas de alguma forma. Mesmo assim, tenho visto publicações exigindo que os experimentos sejam conduzidos com centenas de assuntos ao longo de muitos anos e vários projetos industriais antes da publicação. Precisamos perceber que ainda vale a pena publicar etapas menores porque melhoram nosso entendimento e levantam novas questões. Em minha experiência, publicar resultados experimentais não é difícil se escolhermos a saída certa. Eu faço parte do conselho editorial de três periódicos. Eu reviso para várias revistas adicionais e servi em vários comitês de conferências. Todos os jornais e conferências não teóricas que conheço acolheriam muito bem artigos que descrevessem experimentações sólidas. Apesar da rejeição ocasional de artigos de alta qualidade, estou convencido de que o baixo número de bons artigos experimentais é um problema de abastecimento. Temos, no entanto, que o pesquisador de sistemas antigo enfrente dificuldades. Apenas construir sistemas não é suficiente, a menos que o sistema demonstre algum tipo de inovação, uma inovação. A ciência da computação contínua a ser favorecida com tais avanços, e devemos continuar a lutar por eles. A maioria dos pesquisadores de sistemas, entretanto, trabalha em melhorias incrementais de ideias existentes. Esses pesquisadores devem tentar se tornar experimentalistas respeitáveis e devem articular como seus sistemas contribuem para o nosso conhecimento. Os sistemas vêm e vão. Precisamos de insights sobre os conceitos e fenômenos subjacentes a esses sistemas. Por que os substitutos não funcionam Podemos sobreviver com formas de validação mais fracas do que a experimentação? Depende da pergunta que estamos fazendo. Um modelo convencional para um artigo científico inclui os seguintes elementos: • O trabalho descreve uma nova ideia, prototipada talvez em um pequeno sistema. • O trabalho reivindica seu lugar na “ciência” ao fazer comparações de recursos. Ou seja, o relatório apresenta uma lista de recursos e compara qualitativamente as abordagens mais antigas com as novas, recurso por recurso. Acho esse método satisfatório quando alguém apresenta uma ideia radicalmente nova ou um avanço significativo, como quando os pesquisadores apresentaram o primeiro compilador para uma linguagem estruturada em blocos, sistema de compartilhamento de tempo, linguagem orientada a objetos ou navegador da web. Infelizmente, a maioria dos artigos publicados leva passos muito menores para a frente. À medida que a ciência da computação se torna uma ciência mais difícil, meras discussões sobre vantagens e desvantagens ou longas comparações de recursos não serão mais suficientes; qualquer revista de PC pode fornecê-los. A ciência, por outro lado, não pode viver dessas inferências fracas no longo prazo. Em vez disso, os cientistas deveriam criar modelos, formular hipóteses e testá-los usando experimentos. Confie na sua intuição Em uma coluna de março de 1996, Al Davis, o editor-chefe da IEEE Software, sugeriu que a intuição é suficiente ao adotar uma nova tecnologia de software; a experimentação e os dados são supérfluos. Ele até sugeriu ignorar evidências que contradizem sua intuição. O instinto e a experiência pessoal ocasionalmente levam ao caminho errado, e a ciência da computação não é exceção a esse truísmo, como vários exemplos ilustram: • Por cerca de 20 anos, pensou-se que as reuniões eram essenciais para análises de software. Recentemente, no entanto, Porter e Johnson descobriram que as revisões sem reuniões não são substancialmente nem mais nem menos eficazes do que aquelas com reuniões.10 As revisões sem reuniões também custam menos e causam menos atrasos, o que pode levar a uma inspeção mais eficaz processo geral. • Outro exemplo é quando pequenos componentes de software são proporcionalmente menos confiáveis do que os maiores. Esta observação foi relatada pela primeira vez por Victor R. Basili e confirmada por várias fontes díspares. (Les Hatton oferece resumos e uma teoria explicativa.) • Conforme mencionado, as probabilidades de falha de programas multiversão foram incorretamente consideradas como o produto das probabilidades de falha das versões dos componentes. • A verificação de tipo revela erros de programação, mas há contextos nos quais isso não ajuda. O que podemos aprender com esses exemplos é que a intuição pode fornecer um ponto de partida, mas deve serapoiada por evidências empíricas. Sem uma base adequada, a intuição é questionável. Shari Lawrence Pfleeger fornece uma discussão mais aprofundada sobre as armadilhas da intuição. Confie nos especialistas Durante uma palestra recente em uma universidade dos Estados Unidos, eu estava prestes a apresentar meus dados quando um colega interrompeu e sugeriu que eu pulasse essa parte e prosseguisse para as conclusões. “Nós confiamos em você” foi a explicação. Por mais lisonjeiro que isso fosse, ele demonstra uma incompreensão perturbadora do processo científico (ou indica alguém com pressa). Qualquer afirmação científica é inicialmente suspeita e deve ser examinada de perto. Imagine o que teria acontecido se os físicos não tivessem sido céticos sobre as alegações de Stanley Ponds e Martin Fleischman sobre a fusão a frio. Francamente, fico continuamente surpreso com o quanto a indústria de computadores e, às vezes, até mesmo o ensino universitário depende dos chamados especialistas que falham em apoiar suas afirmações com evidências. A ciência, por outro lado, é construída sobre um ceticismo saudável. É um bom sistema verificar os resultados cuidadosamente e aceitá-los apenas provisoriamente, até que tenham sido confirmados de forma independente. PROBLEMAS EXISTEM Sempre há problemas com a experimentação. Os experimentos podem ser baseados em suposições irrealistas, os pesquisadores podem manipular os dados ou pode ser impossível quantificar a variável de interesse. Existem muitas falhas potenciais. Bons exemplos de experimentação sólida em ciência da computação são raros, mas não devemos descartar o conceito de experimentação por causa disso. Outros campos científicos têm enfrentado experiências ruins, até mesmo fraudes, mas – no geral – o processo científico tem se autocorrigido. Teorias concorrentes Uma ciência é mais emocionante quando existem duas ou mais teorias fortes e concorrentes. Existem algumas teorias concorrentes na ciência da computação, nenhuma delas abaladora. A teoria do sistema de símbolos físicos e a teoria do processamento do conhecimento em IA são duas teorias concorrentes que tentam explicar a inteligência. Os fracos métodos de raciocínio da primeira teoria foram gradualmente cedendo ou se acoplaram às bases de conhecimento. Outro exemplo importante é a teoria do algoritmo. A presente teoria tem muitas O fato de que assunto da investigação em ciência da computação é informação em vez do que energia ou matéria não faz diferença no aplicabilidade do científico tradicional método. desvantagens. Em particular, ele não leva em consideração o comportamento dos algoritmos em problemas típicos. Uma teoria que se aplique com mais precisão aos computadores modernos seria valiosa. Um pré-requisito para a competição entre teorias, entretanto, é a falseabilidade. Infelizmente, os teóricos da ciência da computação raramente produzem teorias falsificáveis. Eles tendem a seguir teorias matemáticas desconectadas do mundo real. Embora a ciência da computação talvez seja muito jovem para ter apresentado grandes teorias, meu maior medo é que a falta de tais teorias possa ser causada por uma falta de experimentação. Se os cientistas negligenciarem o experimento e a observação, eles terão dificuldade em descobrir fenômenos novos e interessantes dignos de teorias melhores. Resultados imparciais Outro argumento contra a experimentação segue a seguinte direção: “Dê aos gerentes ou agências de financiamento uma única figura de mérito, e eles a usarão cegamente para promover ou eliminar a pesquisa errada.” Este argumento é uma pista falsa. Bons gerentes, cientistas e engenheiros, todos sabem que não devem confiar em uma única figura de mérito. Além disso, há um perigo muito maior em confiar apenas na intuição e na afirmação de especialistas. Manter os tomadores de decisão no escuro tem um potencial de dano esmagadoramente maior do que informá-los com o melhor de suas habilidades. A experimentação é fundamental para o processo científico. Apenas experimentos testam teorias. Somente experimentos podem explorar fatores críticos e trazer novos fenômenos à luz para que as teorias possam ser formuladas e corrigidas. Sem experimentos, a ciência da computação corre o risco de secar e se tornar uma disciplina auxiliar. A pressão atual para se concentrar na aplicação é a escrita na parede. Não tenho dúvidas de que a ciência da computação é uma ciência fundamental de grande profundidade e importância intelectual. Muito já foi alcançado. A tecnologia da computação mudou a sociedade, e a ciência da computação está afetando profundamente a visão de mundo do público em geral. Também há muitas evidências sugerindo que o método científico se aplica. À medida que a ciência da computação deixa a adolescência para trás, espero ver o ramo experimental dessa disciplina florescer.
Compartilhar