Código em Trabalhos Acadêmicos


34

Na minha carreira acadêmica, li vários artigos acadêmicos sobre vários tópicos de ciência da computação. Muitos dos quais envolvem uma implementação e alguma avaliação dessa implementação, mas descobri que muito poucos deles publicam realmente o código que usaram.

Para mim, os benefícios de incluir a implementação real seriam significativos, a saber:

  • Extensão de confiança ou reprodutibilidade (apenas teste você mesmo!)
  • Esclarecimento de ambiguidades (principalmente para trabalhos escritos por falantes não nativos)
  • Reutilização de código para aplicativos

Então, por que tão poucos documentos realmente incluem algum código?

Suponho que possa ser a intenção da organização por trás do documento utilizar a implementação em seus próprios aplicativos e, portanto, não gostaria de lançá-lo, mas se for esse o caso, por que escrever o artigo?


14
Então, por que tão poucos documentos realmente incluem algum código? Como os revisores o toleram por algum motivo, mesmo que não haja um bom motivo para ocultar a implementação. Nós somos os revisores, podemos mudar isso.
Jukka Suomela 8/03/11

14
Eu acho que isso deve variar de acordo com o subcampo. Quase todas as coisas da Teoria B com as quais eu estou familiarizado (e especialmente Haskell, Agda e, por vezes, relacionadas à Coq) incluem código publicado, às vezes até como um apêndice ou, melhor ainda, descrito no artigo. Um bom número de artigos do ICFP são escritos como programas alfabetizados, e sua fonte na íntegra é publicada pelos autores. Uma boa quantidade desses, por sua vez, resultou em bibliotecas extraídas para distribuição. Dos papéis restantes, uma quantidade razoável nunca teve código para começar.
SCLV

8
Os resultados da pesquisa devem ser abertos (e gratuitos), assim como o código. Por algumas definições, a ciência só acontece quando hipóteses são falsificáveis ​​e experimentos reproduzíveis; portanto, você pode argumentar que publicações baseadas em código que não é publicado não são um trabalho científico.
Raphael

4
@Raphael A liberação do mesmo código ajudaria apenas a estabelecer a repetibilidade, não a reprodutibilidade. A execução exata do mesmo código no mesmo experimento dificilmente é independente. A ciência requer reprodutibilidade, não repetibilidade.
precisa saber é o seguinte

2
Eu estava pensando em resultados que falam sobre propriedades do código e não sobre seus resultados (nesse caso, você está certo, é claro). Digamos, os autores realizam experimentos sobre algumas implementações do algoritmo apresentado e comparam tempos de execução examinando gráficos (eles chamam de "Engenharia de Algoritmos"). Aqui, o código fornece reprodutibilidade.
Raphael

Respostas:


17

Aqui está um artigo bem discutido de David Donoho e Jonathan Buckheit, que eu li na pós-graduação que aborda exatamente esse tópico do ponto de vista dos pesquisadores de wavelets:

"WaveLab e pesquisa reproduzível"

A idéia deles era ainda mais ambiciosa: fornecer código para reproduzir todas as figuras em seus artigos em um conveniente pacote Matlab.

Eu realmente gosto da ideia deles, mas acho que os problemas são óbvios.

(1) É um trabalho extra (limpar o código, criar pelo menos uma interface de usuário rudimentar, escrever alguma documentação, fornecer algum suporte quando as pessoas inevitavelmente encontrarem problemas)

(2) Não é realmente exigido / esperado pela maioria das conferências / revisores

Mas não posso deixar de pensar que a comunidade de pesquisa em CS se beneficiaria se houvesse a expectativa de disponibilizar publicamente o código e os dados usados ​​em qualquer publicação em um formato utilizável. Admito que não o fiz, mesmo quando a quantidade de trabalho envolvido seria administrável. Eu acho que é apenas difícil fazer um esforço extra quando não há pressão externa.


7
Eu acho que uma expectativa de (a) pseudocódigo ou (b) código disponível, pelo menos nos sites, seria muito útil para a comunidade de pesquisa em CS. Nem todo código de pesquisa tem alta capacidade de uso, e não tenho certeza se a disponibilização do código de buggy seria uma coisa boa ou não.
Peter Shor

1
Conversei com autores de artigos que não divulgaram seu código por razões semelhantes - no estado em que se encontram, eles se sentiriam culpados se alguém realmente tentasse fazer alguma coisa com ele.
Sclv

6
o código não precisa ser bom, limpo ou reutilizável. mas precisa ser reproduzível para ser considerado "ciência". Havia um bom artigo na natureza por Nick Barnes (2010) Publique o código do seu computador: é bom o suficiente discutir este ponto.
precisa saber é o seguinte

16

Se você trabalha em um laboratório industrial, pode ser muito, muito mais fácil obter um documento aprovado para liberação do que obter um código aprovado para liberação (mesmo que o documento contenha todas as informações necessárias para reescrever o código). Culpe a burocracia.


1
Embora isso seja verdade, pergunto-me se uma mudança apropriada na cultura conduzida por pesquisadores acadêmicos permitiria que os pesquisadores industriais pressionassem o gerenciamento para permitir o lançamento do código. Afinal de contas, eu suspeito que mesmo recebendo uma política de liberação de papel deve ter levado alguns a fazer
Suresh Venkat

6
Pelo menos no MSR, é muito fácil liberar código de pesquisa. Na verdade, é mais difícil usar código externo, pois a MS é super cuidadosa em respeitar as licenças de software. Como muitas quedas de código relacionadas a papel vêm sem um arquivo de licença explícito, isso pode ser um pouco chato. Geralmente, basta levar um e-mail ao autor do artigo para esclarecer as coisas, mas você pode facilitar para os pesquisadores industriais lembrando-se de manter uma licença aprovada pelo OSI em seu lançamento de código público.
Neel Krishnaswami

2
@ Neel: Você quer dizer "aprovado pela OSI, mas não a GPL"?
Radu GRIGore # 9/11

3
A GPL geralmente está ok - muitos de nós usamos o Emacs! :) Não podemos usar o software Affero GPL, pois suas condições de reciprocidade se estendem a qualquer pessoa que interaja com o software (ou seja, fecha a brecha no serviço da web), e a MS não quer arriscar a possibilidade de algum servidor interno a execução do código AGPL pode ser acidentalmente tornada pública. Mas mesmo a AGPL é melhor do que nenhuma licença, porque escolher uma licença na verdade torna os termos de compartilhamento inequívocos.
Neel Krishnaswami

13

Migrado e expandido de um comentário:

Eu acho que isso deve variar de acordo com o subcampo. Quase todas as coisas da Teoria B com as quais eu estou familiarizado (e especialmente Haskell, Agda e, por vezes, relacionadas à Coq) incluem código publicado, às vezes até como um apêndice ou, melhor ainda, descrito no artigo. Um bom número de artigos de, por exemplo, o ICFP são escritos como programas alfabetizados, e sua fonte na íntegra é publicada pelos autores. Uma boa quantidade desses, por sua vez, resultou em bibliotecas extraídas para distribuição.

Dos papéis restantes, uma quantidade razoável nunca teve código para começar. Dessas, provavelmente existem duas razões principais. Primeiro, são os artigos cujo conteúdo principal são árvores de prova, regras de digitação com provas de integridade associadas e similares. Desses, os avanços na metateoria mecanizada incentivaram pelo menos alguns autores a fornecer código em seu provador de teoremas preferido (veja os slides de Weirich no POPLmark: http://www.seas.upenn.edu/~sweirich/talks/cambridge-09. pdf) Em segundo lugar, são os que descendem do material das aves merteens (banannas & co.). Geralmente, eles são traduzíveis para um idioma funcional sem muito trabalho. No entanto, suspeito que exista uma perda geral de generalidade, e que lidar com questões concretas de sintaxe e digitação complica desnecessariamente as coisas e torna mais difícil seguir o raciocínio equacional.

Eu queria substanciar minhas observações um pouco, assim como uma contagem aproximada dos dois primeiros dias do ICFP 2010. Dos documentos padrão (ou seja, sem relatos de experiência ou palestras convidadas), 12 dos 21 forneceram algum tipo de código. Três forneceram Coq (um quarto reivindicou uma prova parcial, mas não a publicou). Três apoiaram Haskell. Três forneceram a Agda. Um forneceu Scheme, um forneceu Caml e um forneceu Twelf. (Observe que alguns forneceram código para mais de um assistente de prova ou para uma formalização e uma implementação). Dos trabalhos restantes, alguns trabalharam com um nível de abstração alto o suficiente para que implementá-lo em um assistente de prova fosse um trabalho novo em si, e um número razoável de outros trabalhos que eu suspeito que poderiam ter sido implementados em um assistente de prova usando técnicas padrão, mas que certamente exigiriam bastante trabalho para isso.


12

Você acredita que o código deve ser publicado, mas pergunta por que os documentos não incluem código. Estas são duas coisas diferentes.

Na maioria das vezes, simplesmente não há espaço suficiente para publicar uma quantidade significativa de código. No meu campo de pesquisa (processamento de imagem), as informações de pseudocódigo ou arquitetura geralmente são muito mais valiosas e nunca me vi preso devido à falta de código em um artigo. É muitas vezes deixado como um exercício para o leitor que compreendeu o artigo.

No entanto, há muito código disponível para ilustrar artigos. Os autores geralmente têm uma página da web e, mesmo que o revisor não tenha a chance de verificar o código, a seleção natural parece funcionar muito bem e os autores que não publicam código são muito menos citados.


8

Isso já deve ter sido perguntado há algum tempo, no entanto, sempre me senti fortemente sobre isso, então darei meus dois centavos. Trabalho há anos (não mais) na comunidade do SAT. A maioria dos pesquisadores raramente publica seu código. O artigo é publicado junto com o algoritmo, mas é muito raro ver o código real do SAT Solver (MAXSAT Solver) etc, publicado junto com o artigo.

E a realidade é que, com apenas o código publicado no artigo, você nunca terá a chance de reproduzir os experimentos do autor. Não apenas porque o código publicado não está completo (é claro), mas também porque mesmo o pseudo-código publicado raramente se traduz semi-diretamente no que é realmente implementado.

A razão por trás disso é difícil de saber e pode depender de pesquisador para pesquisador, mas na maioria das vezes é dupla.

  • Primeiro, o pesquisador tende a trabalhar continuamente em um único solucionador, publicando trabalhos após trabalhos no mesmo solucionador e adicionando novos recursos de forma incremental que se traduzem em novas versões do solucionador. Existe uma obsessão doentia de que a concorrência usará seu solucionador para promover suas carreiras, estendendo-o e publicando artigos sem dar o devido crédito (ou seja, co-autoria).

  • Em segundo lugar, algum código é realmente (como em todo software) escrito rapidamente. Scripts meio cozidos. Recursos não testados, etc. Ao publicar esse código, o pesquisador sentiria que estaria se envergonhando e prejudicando sua reputação.

Deixo uma referência recente da ACM sobre isso: http://cacm.acm.org/magazines/2011/5/107698-the-importance-of-reviewing-the-code/fulltext


7

Historicamente, os artigos científicos tinham que ser impressos em papel e os periódicos eram enviados internacionalmente. Cada página extra usada para adicionar um custo significativo, portanto, os artigos estavam sujeitos a limitações de comprimento, e mesmo o código de trabalho simples geralmente ocupa muito espaço do que uma descrição informal.

Hoje não há uma boa razão para não incluir código em qualquer tipo de artigo que faça referência a um algoritmo.

Também pode ser útil abandonar formatos orientados para impressão, como pdf e postscript, em favor de formatos com reconhecimento mais semanticamente (HTML com MathML ou talvez uma variação de código aberto do Mathematica).


8
+1 nos dois primeiros parágrafos, -1 no último parágrafo. Você pode tirar meu LaTeX quando você o tirar das minhas mãos frias e mortas.
Jeffε

2
Existem hoje muitas ferramentas disponíveis para permitir programação LaTeX alfabetizados ...
SCLV
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.