Code in akademischen Arbeiten


34

In meiner akademischen Laufbahn habe ich einige wissenschaftliche Artikel zu verschiedenen Themen der Informatik gelesen. Viele davon beinhalten eine Implementierung und eine Bewertung dieser Implementierung, aber ich habe festgestellt, dass nur sehr wenige von ihnen den von ihnen verwendeten Code tatsächlich veröffentlichen.

Für mich wäre die Einbeziehung der tatsächlichen Implementierung von erheblichem Nutzen, nämlich:

  • Vertrauenserweiterung oder Reproduzierbarkeit (einfach selber testen!)
  • Klärung von Unklarheiten (insbesondere bei Beiträgen von Nicht-Muttersprachlern)
  • Wiederverwendung von Code für Anwendungen

Warum enthalten so wenige Artikel tatsächlich Code?

Ich nehme an, dass es die Absicht der Organisation hinter dem Papier sein könnte, die Implementierung in ihren eigenen Anwendungen zu verwenden und sie daher nicht freigeben zu wollen, aber wenn dies der Fall ist, warum sollte sie dann überhaupt das Papier schreiben?


14
Warum enthalten so wenige Artikel tatsächlich Code? Weil die Reviewer es aus irgendeinem Grund tolerieren, auch wenn es keinen guten Grund gibt, die Implementierung zu verbergen. Wir sind die Prüfer, wir können es ändern.
Jukka Suomela

14
Ich denke, das muss je nach Unterfeld variieren. Fast alles, was ich mit Theorie B kenne (und insbesondere mit Haskell, Agda und manchmal mit Coq in Zusammenhang stehendem), enthält veröffentlichten Code, manchmal sogar als Anhang oder besser noch in der Zeitung. Eine ganze Reihe von Veröffentlichungen von ICFP werden zunächst als Lese- und Schreibprogramme verfasst, und ihre Quelle wird in ihrer Gesamtheit von den Autoren veröffentlicht. Eine ganze Menge davon hat wiederum zu extrahierten Bibliotheken für den Vertrieb geführt. Von den verbleibenden Papieren hatte eine ganze Menge von Anfang an keinen Code.
sclv

8
Die Forschungsergebnisse sollten offen (und kostenlos) sein, ebenso der Code. Nach einigen Definitionen geschieht Wissenschaft nur, wenn Hypothesen fälschbar und Experimente reproduzierbar sind. Sie könnten also argumentieren, dass Publikationen, die auf nicht veröffentlichtem Code basieren, keine wissenschaftliche Arbeit sind.
Raphael

4
@Raphael Wenn Sie denselben Code freigeben, kann nur die Wiederholbarkeit und nicht die Reproduzierbarkeit sichergestellt werden. Das Ausführen des exakt gleichen Codes im exakt gleichen Experiment ist kaum unabhängig. Wissenschaft erfordert Reproduzierbarkeit, nicht Wiederholbarkeit.
Mark Reitblatt

2
Ich dachte an Ergebnisse, die sich eher auf Eigenschaften des Codes als auf dessen Ergebnisse beziehen (in diesem Fall haben Sie natürlich Recht). Angenommen, die Autoren führen Experimente zur Implementierung des vorgestellten Algorithmus durch und vergleichen die Laufzeiten durch Untersuchen von Graphen (sie nennen es "Algorithm Engineering"). Hier sorgt Code für Reproduzierbarkeit.
Raphael

Antworten:


17

Hier ist ein gut argumentierter Artikel von David Donoho und Jonathan Buckheit, den ich in der Graduiertenschule gelesen habe und der genau dieses Thema aus der Sicht von Wavelet-Forschern berührt:

"WaveLab und reproduzierbare Forschung"

Noch ehrgeiziger war ihre Idee, Code für die Reproduktion aller Zahlen in ihren Papieren in einem praktischen Matlab-Paket bereitzustellen.

Ich mag ihre Idee wirklich, aber ich denke, dass die Probleme offensichtlich sind.

(1) Es ist zusätzliche Arbeit (Bereinigen des Codes, Erstellen einer zumindest rudimentären Benutzeroberfläche, Verfassen von Dokumentationen und Unterstützen, wenn Menschen unvermeidlich auf Probleme stoßen).

(2) Es wird von den meisten Konferenzen / Gutachtern nicht wirklich verlangt / erwartet

Ich bin jedoch der Meinung, dass die CS-Forschungsgemeinschaft davon profitieren würde, wenn erwartet würde, dass der Code und die Daten, die in einer Veröffentlichung verwendet werden, in einem verwendbaren Format veröffentlicht werden. Ich gebe zu, dass ich das selbst nicht getan habe, obwohl der Arbeitsaufwand überschaubar gewesen wäre. Ich denke, es ist nur schwer, sich die Mühe zu machen, wenn es keinen externen Schub gibt.


7
Ich denke, die Erwartung, dass entweder (a) Pseudocode oder (b) Code verfügbar ist, zumindest auf Websites, wäre für die CS-Forschungsgemeinschaft sehr nützlich. Nicht jeder Forschungscode ist sehr benutzerfreundlich, und ich bin mir nicht sicher, ob die Bereitstellung von Buggy-Code eine gute Sache wäre oder nicht.
Peter Shor

1
Ich habe mit Papierautoren gesprochen, die ihren Code aus ähnlichen Gründen nicht veröffentlicht haben - in dem Zustand, in dem er sich befindet, würden sie sich schuldig fühlen, wenn tatsächlich jemand versucht hätte, etwas daraus zu machen.
sclv

6
Code muss nicht gut, sauber oder wiederverwendbar sein. aber es muss reproduzierbar sein, um als "Wissenschaft" zu gelten. Es gab einen guten Artikel in Nature von Nick Barnes (2010). Veröffentlichen Sie Ihren Computercode: Es ist gut genug , diesen Punkt zu argumentieren.
David LeBauer

16

Wenn Sie für ein industrielles Labor arbeiten, kann es sehr viel einfacher sein, ein Papier zur Freigabe zuzulassen, als einen Code zur Freigabe zuzulassen (selbst wenn das Papier alle Informationen enthält, die zum Umschreiben des Codes erforderlich sind). Schuld Bürokratie.


1
Dies ist natürlich wahr, aber ich frage mich, ob ein angemessener Kulturwandel, der von akademischen Forschern vorangetrieben wird, es Industrieforschern ermöglichen würde, Druck auf das Management auszuüben, um die Freigabe von Code zu ermöglichen. Schließlich vermute ich, dass es einiges
gekostet

6
Zumindest bei MSR ist es sehr einfach, Forschungscode freizugeben. Es ist tatsächlich schwieriger, externen Code zu verwenden, da MS beim Respektieren von Softwarelizenzen sehr vorsichtig ist. Da viele papierbezogene Code-Drops ohne explizite Lizenzdatei geliefert werden, kann dies etwas ärgerlich sein. Normalerweise genügt eine E-Mail an den Papierautor, um die Dinge zu klären, aber Sie können es für Industrieforscher einfacher machen, wenn Sie daran denken, eine von OSI genehmigte Lizenz auf Ihre Veröffentlichung von öffentlichem Code zu kleben.
Neel Krishnaswami

2
@Neel: Meinst du "OSI-geprüft, aber nicht GPL"?
Radu GRIGore

3
Die GPL ist normalerweise in Ordnung - viele von uns benutzen Emacs! :) Wir dürfen die Affero GPL-Software nicht verwenden, da ihre Gegenseitigkeitsbedingungen sich auf jeden erstrecken, der mit der Software interagiert (dh sie schließt die Lücke im Webdienst), und MS möchte nicht die Möglichkeit riskieren, dass ein interner Server vorhanden ist Das Ausführen von AGPL-Code kann versehentlich öffentlich gemacht werden. Aber selbst die AGPL ist besser als gar keine Lizenz, da durch die Auswahl einer Lizenz die Bedingungen für das Teilen eindeutig werden.
Neel Krishnaswami

13

Aus einem Kommentar migriert und erweitert:

Ich denke, das muss je nach Unterfeld variieren. Fast alles, was ich mit Theorie B kenne (und insbesondere mit Haskell, Agda und manchmal mit Coq in Zusammenhang stehendem), enthält veröffentlichten Code, manchmal sogar als Anhang oder besser noch in der Zeitung. Eine ganze Reihe von Veröffentlichungen, z. B. von ICFP, werden zunächst als Lese- und Schreibprogramme verfasst, und ihre Quelle wird in ihrer Gesamtheit von den Autoren veröffentlicht. Eine ganze Menge davon hat wiederum zu extrahierten Bibliotheken für den Vertrieb geführt.

Von den verbleibenden Papieren hatte eine ganze Menge von Anfang an keinen Code. Von diesen gibt es wahrscheinlich zwei Hauptgründe. Erstens sind es die Papiere, deren Hauptinhalt Beweisbäume, Schreibregeln mit zugehörigen Stichhaltigkeitsbeweisen und dergleichen sind. Davon haben Fortschritte in der mechanisierten Metatheorie zumindest einige Autoren dazu ermutigt, Code in ihren Theorembeweisern anzugeben (siehe Weirichs Folien zu POPLmark: http://www.seas.upenn.edu/~sweirich/talks/cambridge-09). pdf). Zweitens sind diejenigen, die aus dem Bird-Merteens-Zeug (Bananen & Co.) abstammen. Diese sind in der Regel ohne großen Arbeitsaufwand in eine funktionale Sprache übersetzbar. Ich vermute jedoch, dass es in der Regel sowohl zu einem Verlust der Allgemeinheit als auch zu einer unnötigen Kompliziertheit und Schwierigkeit bei der Behandlung konkreter Syntax- und Tippprobleme kommt.

Ich wollte meine Beobachtungen ein wenig untermauern, ebenso wie eine grobe Zählung der ersten beiden Tage der ICFP 2010. Von den Standardpapieren (dh keine Erfahrungsberichte oder eingeladenen Vorträge) lieferten 12 von 21 irgendeine Art von Code. Drei stellten Coq zur Verfügung (ein vierter forderte einen Teilnachweis, veröffentlichte ihn jedoch nicht). Drei versorgte Haskell. Drei stellten Agda zur Verfügung. Einer lieferte Schema, einer lieferte Caml und einer lieferte Twelf. (Beachten Sie, dass einige Code für mehr als einen Proof-Assistenten oder für eine Formalisierung und eine Implementierung bereitgestellt haben.) Von den verbleibenden Papieren arbeiteten einige auf einer ausreichend hohen Abstraktionsebene, so dass die Implementierung in einem Proof-Assistenten ein neues Papier für sich wäre, und eine ganze Reihe von Arbeiten, von denen ich vermute, dass sie in einem Proof-Assistenten mit implementiert worden sein könnten Standardtechniken, die aber sicherlich einiges an Arbeit gekostet hätten.


12

Sie glauben, dass Code veröffentlicht werden sollte, aber Sie fragen, warum Artikel keinen Code enthalten. Das sind zwei verschiedene Dinge.

In den meisten Fällen ist einfach nicht genügend Platz vorhanden, um eine erhebliche Menge an Code zu veröffentlichen. In meinem Forschungsbereich (Bildverarbeitung) sind Pseudocode- oder Architekturinformationen oft weitaus wertvoller und ich habe mich aufgrund des fehlenden Codes in einer Arbeit nie festgefahren. Es ist oft eine Übung für den Leser, der den Artikel verstanden hat.

Dennoch ist eine Menge Code verfügbar, um Papiere zu illustrieren. Autoren haben normalerweise eine Webseite, und auch wenn der Prüfer keine Gelegenheit hat, den Code selbst zu überprüfen, scheint die natürliche Auswahl ziemlich gut zu funktionieren, und Autoren, die keinen Code veröffentlichen, werden viel weniger zitiert.


8

Dies könnte schon vor einiger Zeit gefragt worden sein, aber ich habe immer stark darüber nachgedacht, also werde ich meine zwei Cent geben. Ich arbeite seit Jahren (nicht mehr) in der SAT-Community. Die meisten Forscher veröffentlichen selten ihren Code. Das Papier wird zusammen mit dem Algorithmus veröffentlicht, aber es ist sehr selten, den tatsächlichen Code des SAT-Lösers (MAXSAT-Löser) usw. zu sehen, der zusammen mit dem Papier veröffentlicht wird.

Und die Realität ist, dass Sie mit dem im Artikel veröffentlichten Code niemals die Möglichkeit haben werden, die Experimente des Autors zu reproduzieren. Nicht nur, weil der veröffentlichte Code (natürlich) nicht vollständig ist, sondern auch, weil selbst der veröffentlichte Pseudocode nur selten halbdirekt in das übersetzt wird, was tatsächlich implementiert ist.

Der Grund dafür ist schwer zu erkennen und kann von Forscher zu Forscher unterschiedlich sein, aber meistens sind es zwei.

  • Erstens neigt der Forscher dazu, kontinuierlich in einem einzelnen Solver zu arbeiten, indem er Papiere nach Papieren auf demselben Solver veröffentlicht und inkrementell neue Funktionen hinzufügt, die sich in neuen Versionen des Solvers niederschlagen. Es gibt eine ungesunde Besessenheit, dass der Wettbewerb Ihren Löser dazu nutzt , seine Karriere voranzutreiben, indem er ihn erweitert und Artikel veröffentlicht, ohne dass Ihnen dies gebührend angerechnet wird (dh Mitautorschaft).

  • Zweitens ist wirklich ein Teil des Codes (wie bei jeder Software) in Eile geschrieben. Halbgebackene Skripte. Ungetestete Funktionen usw. Durch die Veröffentlichung dieses Codes würde der Forscher das Gefühl haben, sich selbst in Verlegenheit zu bringen und seinen Ruf zu schädigen.

Ich überlasse Ihnen einen aktuellen Verweis von ACM: http://cacm.acm.org/magazines/2011/5/107698-the-importance-of-reviewing-the-code/fulltext


7

In der Vergangenheit mussten wissenschaftliche Artikel auf Papier gedruckt und Zeitschriften ins Ausland verschickt werden. Jede zusätzliche Seite, die verwendet wurde, um erhebliche Kosten zu verursachen, unterlag Artikel Längenbeschränkungen, und selbst einfacher Arbeitscode nimmt normalerweise viel Platz ein als eine informelle Beschreibung.

Heutzutage gibt es keinen guten Grund, keinen Code in Artikel aufzunehmen, die auf einen Algorithmus verweisen.

Es kann auch nützlich sein, auf druckorientierte Formate wie PDF und Postscript zu verzichten, um semantischere Formate zu erhalten (HTML mit MathML oder möglicherweise eine OpenSource-Variante von Mathematica).


8
+1 für die ersten beiden Absätze, -1 für den letzten Absatz. Sie können mein LaTeX entfernen, wenn Sie es aus meinen kalten, toten Händen nehmen.
Jeffs

2
Es stehen jetzt zahlreiche Tools zur Verfügung, mit denen Sie die LaTeX-Programmierung
verbessern können
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.