Codice in documenti accademici


34

Nella mia carriera accademica, ho letto diversi articoli accademici su vari argomenti di informatica. Molti dei quali comportano un'implementazione e una certa valutazione di tale implementazione, ma ho scoperto che pochissimi di loro pubblicano effettivamente il codice che hanno usato.

Per me, i vantaggi dell'inclusione dell'attuazione effettiva sarebbero significativi, vale a dire:

  • Estensione di fiducia o riproducibilità (provalo tu stesso!)
  • Chiarimento delle ambiguità (in particolare per i documenti scritti da madrelingua)
  • Riutilizzo del codice per le applicazioni

Quindi perché così pochi articoli in realtà includono un codice?

Suppongo che potrebbe essere l'intenzione dell'organizzazione dietro la carta di utilizzare l'implementazione nelle proprie applicazioni, e quindi non vorrebbe rilasciarlo, ma se è così, perché anche scrivere il documento?


14
Quindi perché così pochi articoli in realtà includono un codice? Perché i revisori lo tollerano per qualche motivo, anche se non ci sono buoni motivi per nascondere l'implementazione. Siamo i revisori, possiamo cambiarlo.
Jukka Suomela,

14
Penso che questo debba variare in base al sottocampo. Quasi tutte le cose di Theory B con cui ho familiarità (e in particolare Haskell, Agda e talvolta correlate a Coq) includono il codice pubblicato, a volte anche come appendice o meglio ancora incorporato nel documento. Un buon numero di articoli dell'ICFP sono scritti come programmi alfabetici per cominciare, e la loro fonte nella sua interezza è pubblicata dagli autori. Una buona parte di quelli a loro volta ha portato a librerie estratte per la distribuzione. Dei documenti rimanenti, un discreto importo non ha mai avuto il codice per cominciare.
sclv

8
I risultati della ricerca dovrebbero essere aperti (e gratuiti), così come il codice. Secondo alcune definizioni, la scienza si verifica solo quando le ipotesi sono falsificabili e gli esperimenti riproducibili, quindi si potrebbe sostenere che le pubblicazioni basate su codice non pubblicato non sono lavori scientifici.
Raffaello

4
@Raphael Rilasciare lo stesso codice aiuterebbe solo a stabilire la ripetibilità, non la riproducibilità. L'esecuzione dello stesso codice esatto nello stesso esperimento non è quasi indipendente. La scienza richiede riproducibilità, non ripetibilità.
Mark Reitblatt

2
Stavo pensando a risultati che parlano delle proprietà del codice piuttosto che dei suoi risultati (nel qual caso hai ragione, ovviamente). Ad esempio, gli autori conducono esperimenti su alcune implementazioni dell'algoritmo presentato e confrontano i tempi di esecuzione esaminando i grafici (lo chiamano "Algorithm Engineering"). Qui, il codice fornisce la riproducibilità.
Raffaello

Risposte:


17

Ecco un articolo ben argomentato di David Donoho e Jonathan Buckheit che ho letto alla scuola elementare che tocca esattamente questo argomento dal punto di vista dei ricercatori wavelet:

"WaveLab e ricerca riproducibile"

La loro idea era ancora più ambiziosa, di fornire il codice per riprodurre tutte le figure nei loro documenti in un comodo pacchetto Matlab.

Mi piace molto la loro idea ma penso che i problemi siano evidenti.

(1) È un lavoro extra (ripulire il codice, creare almeno un'interfaccia utente rudimentale, scrivere della documentazione, fornire supporto quando le persone inevitabilmente incontrano problemi)

(2) Non è realmente richiesto / previsto dalla maggior parte delle conferenze / revisori

Ma non posso fare a meno di pensare che la comunità di ricerca CS trarrebbe beneficio se ci si aspettasse di rendere il codice e i dati utilizzati in qualsiasi pubblicazione disponibili al pubblico in un formato utilizzabile. Ammetto di non averlo fatto da solo anche quando la quantità di lavoro in questione sarebbe stata gestibile. Penso che sia difficile impegnarti ulteriormente quando non c'è spinta esterna.


7
Penso che un'aspettativa di (a) pseudocodice o (b) codice disponibile, almeno sui siti Web, sarebbe molto utile per la comunità di ricerca CS. Non tutti i codici di ricerca hanno un'alta usabilità, e non sono sicuro che rendere disponibile un codice errato sia positivo o meno.
Peter Shor,

1
Ho parlato con autori di carta che non hanno rilasciato il loro codice per ragioni simili: nello stato in cui si trovano, si sentirebbero in colpa se qualcuno provasse davvero a farci qualcosa.
sclv

6
il codice non deve essere buono, pulito o riutilizzabile. ma deve essere riproducibile per essere considerato "scienza". C'era un buon articolo in natura di Nick Barnes (2010) Pubblica il tuo codice di computer: è abbastanza buono discutere questo punto.
David LeBauer,

16

Se lavori per un laboratorio industriale, può essere molto, molto più semplice ottenere un documento approvato per il rilascio piuttosto che ottenere il codice approvato per il rilascio (anche se il documento contiene tutte le informazioni necessarie per riscrivere il codice). Colpa della burocrazia.


1
mentre questo è ovviamente vero, mi chiedo se un cambiamento adeguato nella cultura guidato da ricercatori accademici consentirebbe ai ricercatori industriali di esercitare pressioni sulla gestione per consentire il rilascio di codice. Dopotutto, sospetto che anche ottenere una politica per il rilascio di documenti cartacei debba aver preso qualche decisione
Suresh Venkat,

6
Almeno a MSR, è molto facile rilasciare codice di ricerca. In realtà è più difficile utilizzare il codice esterno, poiché MS è molto attento al rispetto delle licenze software. Poiché molte gocce di codice relative alla carta vengono fornite senza un file di licenza esplicito, questo può essere un po 'fastidioso. Di solito basta una e-mail all'autore della carta per chiarire le cose, ma puoi rendere più facile per i ricercatori industriali ricordando di attaccare una licenza approvata OSI sulla tua versione di codice pubblico.
Neel Krishnaswami,

2
@Neel: Intendi "Omologato OSI, ma non GPL"?
Radu GRIGore,

3
La GPL di solito è ok - molti di noi usano Emacs! :) Non è consentito utilizzare il software Affero GPL, poiché le sue condizioni di reciprocità si estendono a chiunque interagisca con il software (ovvero, chiuda la scappatoia del servizio Web) e MS non vuole rischiare la possibilità che alcuni server interni l'esecuzione del codice AGPL potrebbe essere accidentalmente resa pubblica. Ma anche l'AGPL è meglio di nessuna licenza, perché scegliere una licenza rende inequivocabili i termini della condivisione.
Neel Krishnaswami,

13

Migrato ed espanso da un commento:

Penso che questo debba variare in base al sottocampo. Quasi tutte le cose di Theory B con cui ho familiarità (e in particolare Haskell, Agda e talvolta correlate a Coq) includono il codice pubblicato, a volte anche come appendice o meglio ancora incorporato nel documento. Un numero discreto di articoli, ad esempio ICFP, sono scritti come programmi alfabetici per cominciare e la loro fonte nella sua interezza è pubblicata dagli autori. Una buona quantità di quelli a loro volta ha portato a librerie estratte per la distribuzione.

Dei documenti rimanenti, un discreto importo non ha mai avuto il codice per cominciare. Di quelli, ci sono probabilmente due ragioni principali. In primo luogo sono gli articoli il cui contenuto principale sono alberi di prova, regole di battitura con prove di solidità associate e simili. Di questi, i progressi nella metateoria meccanizzata hanno incoraggiato almeno alcuni autori a fornire il codice nel loro teorema proverante di scelta (vedi le diapositive di Weirich su POPLmark:) http://www.seas.upenn.edu/~sweirich/talks/cambridge-09. PDF). In secondo luogo sono quelli che discendono dalla roba Bird-Merteens (banannas & co.). Questi sono generalmente traducibili in un linguaggio funzionale senza troppo lavoro. Tuttavia, ho il sospetto che sia in genere una perdita di generalità, e che affrontare questioni concrete di sintassi e scrivere comporti inutilmente le cose e rende più difficile seguire il ragionamento equazionale.

Volevo comprovare un po 'le mie osservazioni, così ho fatto un conteggio approssimativo dei primi due giorni dell'ICFP 2010. Di articoli standard (cioè non rapporti di esperienza o colloqui su invito), 12 su 21 hanno fornito un codice di qualche tipo. Tre hanno fornito Coq (un quarto ha rivendicato una prova parziale ma non l'ha pubblicata). Tre proiezioni Haskell. Tre hanno fornito Agda. Uno fornito Scheme, uno fornito Caml e uno fornito Twelf. (Si noti che alcuni hanno fornito il codice per più di un assistente di prova o per una formalizzazione e un'implementazione). Dei documenti rimanenti, alcuni hanno funzionato a un livello sufficientemente alto di astrazione che implementarlo in un assistente di prova sarebbe un nuovo documento in sé, e un numero equo di più ha funzionato che sospetto avrebbe potuto essere implementato in un assistente di prova usando tecniche standard, ma che sicuramente avrebbero richiesto una buona dose di lavoro per farlo.


12

Ritieni che il codice debba essere pubblicato, ma chiedi perché i documenti non includano il codice. Queste sono due cose diverse.

Il più delle volte, semplicemente non c'è abbastanza spazio per pubblicare una quantità significativa di codice. Nel mio campo di ricerca (elaborazione delle immagini) lo pseudocodice o l'architettura sono spesso molto più preziosi e non mi sono mai trovato bloccato a causa della mancanza di codice in un documento. Viene spesso lasciato come esercizio al lettore che ha afferrato l'articolo.

Eppure c'è un sacco di codice disponibile per illustrare i documenti. Gli autori di solito hanno una pagina web e anche se il recensore non ha la possibilità di provare a controllare il codice stesso, la selezione naturale sembra funzionare abbastanza bene e gli autori che non pubblicano il codice sono molto meno citati.


8

Questo potrebbe essere stato chiesto già qualche tempo fa, tuttavia mi sono sempre sentito fortemente al riguardo, quindi darò i miei due centesimi. Ho lavorato per anni (non più) all'interno della comunità SAT. La maggior parte dei ricercatori pubblica raramente il proprio codice. Il documento è pubblicato insieme all'algoritmo ma è molto raro vedere il codice effettivo del risolutore SAT (risolutore MAXSAT) ecc., Pubblicato insieme al documento.

E la realtà è che con il solo codice pubblicato nell'articolo non avrai mai la possibilità di riprodurre gli esperimenti dell'autore. Non solo perché il codice pubblicato non è completo (ovviamente) ma anche perché anche lo pseudo-codice pubblicato raramente si traduce semi-direttamente in ciò che è effettivamente implementato.

Il motivo dietro questo è difficile da sapere e potrebbe dipendere da ricercatore a ricercatore, ma soprattutto è duplice.

  • In primo luogo, il ricercatore tende a lavorare continuamente in un singolo solutore pubblicando documenti sullo stesso solutore e aggiungendo progressivamente nuove funzionalità che si traducono in nuove versioni del solutore. C'è una malsana ossessione che la concorrenza userà il tuo risolutore per promuovere le loro carriere estendendolo e pubblicando documenti senza darti il ​​dovuto credito (significato, paternità).

  • In secondo luogo, un po 'di codice è davvero (come con tutti i software) scritto in fretta. Script a metà cottura. Funzionalità non testate, ecc. Pubblicando questo codice il ricercatore si sentirebbe in imbarazzo e danneggerebbe la sua reputazione.

Vi lascio con un recente riferimento al riguardo da parte di ACM: http://cacm.acm.org/magazines/2011/5/107698-the-importance-of-reviewing-the-code/fulltext


7

Storicamente, gli articoli scientifici dovevano essere stampati su carta e le riviste venivano spedite a livello internazionale. Ogni pagina aggiuntiva utilizzata per aggiungere un costo significativo, quindi gli articoli erano soggetti a limiti di lunghezza e anche il semplice codice di lavoro di solito occupa molto più spazio di una descrizione informale.

Oggi non c'è motivo di non includere il codice in nessun tipo di articolo che fa riferimento a un algoritmo.

Può anche essere utile abbandonare formati orientati alla stampa come pdf e postscript a favore di formati più semanticamente consapevoli (HTML con MathML o forse una variante open source di Mathematica).


8
+1 per i primi due paragrafi, -1 per l'ultimo paragrafo. Puoi togliere il mio LaTeX quando lo fai leva dalle mie fredde mani morte.
Jeffε

2
Ora ci sono molti strumenti disponibili per abilitare la programmazione LaTeX ...
sclv
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.