Код в наукових працях


34

За свою академічну кар’єру я прочитав досить багато наукових робіт на різні теми інформатики. Багато з яких передбачають реалізацію та певну оцінку цієї реалізації, але я виявив, що дуже мало з них публікують використаний ними код.

Для мене вигоди від включення фактичної реалізації були б істотними, а саме:

  • Розширення довіри чи відтворюваності (просто перевірити самі!)
  • Роз'яснення неоднозначностей (особливо для паперів, написаних носієм мови)
  • Повторне використання коду для додатків

То чому ж так мало паперів насправді містить будь-який код?

Я припускаю, що це може бути намір організації, яка стоїть за документом, використати реалізацію у власних додатках, і, таким чином, не хотіла б її випускати, але якщо це так, то навіщо писати документ?


14
То чому ж так мало паперів насправді містить будь-який код? Тому що рецензенти це чомусь переносять, навіть якщо немає причин приховувати реалізацію. Ми рецензенти, ми можемо це змінити.
Юкка Суомела

14
Я думаю, це має залежати від підполя. Майже всі матеріали з теорії B, з якими я знайомий (особливо, з Haskell, Agda, а іноді і з Coq), містять опублікований код, іноді навіть як додаток або ще краще вкладений у статті. Значна кількість робіт ICFP написана як грамотні програми для початку, а їх джерело в повному обсязі публікується авторами. Значна кількість тих, у свою чергу, призвела до вилучення бібліотек для розповсюдження. З решти паперів неабияк ніколи не було коду.
sclv

8
Результати досліджень мають бути відкритими (і безкоштовними), і так само слід кодувати. За деякими визначеннями, наука буває лише тоді, коли гіпотези підлягають підробці та відтворюються експерименти, тому ви можете стверджувати, що публікації, засновані на коді, який не публікується, не є науковою роботою.
Рафаель

4
@Raphael Випуск того ж коду допоможе лише встановити повторюваність, а не відтворюваність. Запуск того самого коду в точно такому ж експерименті навряд чи незалежний. Наука потребує відтворюваності, а не повторюваності.
Марк Рейтблатт

2
Я думав про результати, які говорять про властивості коду, а не про його результати (у цьому випадку, звичайно, ви праві). Скажімо, автори проводять експерименти над деякою реалізацією представленого алгоритму та порівнюють тривалість часу, вивчаючи графіки (вони називають це "Алгоритм інженерії"). Тут код забезпечує відтворюваність.
Рафаель

Відповіді:


17

Ось добре аргументована стаття Девіда Доного та Джонатана Бакхейта, яку я читав у школі, яка торкається саме цієї теми з точки зору дослідників вейвлетів:

"WaveLab та відтворювані дослідження"

Їх ідея була ще більш амбітною - надати код для відтворення всіх фігур у своїх документах у зручному пакеті Matlab.

Мені дуже подобається їх ідея, але я думаю, що питання очевидні.

(1) Це додаткова робота (очищення коду, створення принаймні рудиментарного інтерфейсу користувача, написання певної документації, надання певної підтримки, коли люди неминуче стикаються з проблемами)

(2) Більшість конференцій / рецензентів це не потрібно / очікує

Але я не можу не відчути, що науково-дослідницька спільнота CS принесла б користь, якщо очікували б оприлюднення коду та даних, що використовуються в будь-якій публікації, доступними у доступному форматі. Я визнаю, що я цього не робив навіть тоді, коли обсяг роботи був би керованим. Я думаю, що важко змусити себе докласти додаткових зусиль, коли немає зовнішнього поштовху.


7
Я думаю, очікування або (a) псевдокоду, або (b) коду, принаймні на веб-сайтах, було б дуже корисним для дослідницької спільноти CS. Не всі дослідницькі коди мають високу корисність, і я не впевнений, було б корисною справою зробити доступний баггі-код.
Пітер Шор

1
Я розмовляв з авторами паперу, які не випустили свій код з подібних причин - в державі, в якій він знаходиться, вони почували б себе винуватими, якщо хтось насправді намагався зробити щось з цим.
sclv

6
код не повинен бути хорошим, чистим або багаторазовим. але воно має бути відтвореним, щоб вважати його "наукою". У природі була хороша стаття від Nick Barnes (2010). Опублікуйте свій комп'ютерний код: досить добре аргументуючи це.
David LeBauer

16

Якщо ви працюєте в промисловій лабораторії, отримати документ, затверджений до випуску, може бути набагато простіше, ніж отримати код, затверджений до випуску (навіть якщо папір містить всю інформацію, необхідну для перезапису коду). Звинувачуйте бюрократію.


1
хоча це, звичайно, правда, мені цікаво, чи відповідна зміна культури, зумовлена ​​академічними дослідниками, дозволить промисловим дослідникам здійснювати управління тиском, щоб дозволити звільнення коду. Зрештою, я підозрюю, що навіть отримання політики щодо звільнення з паперу, мабуть, взяв на себе щось робити
Суреш Венкат

6
Принаймні, в MSR випустити дослідницький код дуже просто. Насправді складніше використовувати зовнішній код, оскільки MS дуже обережно поважає ліцензії на програмне забезпечення. Оскільки багато крапель коду, пов'язаних з папером, виходять без явного файлу ліцензії, це може трохи дратувати. Зазвичай для роз'яснення речей потрібно просто надіслати електронному листу автору статті, але ви можете спростити промисловим дослідникам, пам’ятаючи приклеювати ліцензію, затверджену OSI, у своєму публічному коді.
Ніл Крішнасвамі

2
@Neel: Ви маєте на увазі "схвалено OSI, але не GPL"?
Раду ГРИГоре

3
Зазвичай GPL - багато з нас використовують Emacs! :) Нам заборонено використовувати програмне забезпечення Affero GPL, оскільки його умови взаємності поширюються на всіх, хто взаємодіє з програмним забезпеченням (тобто воно закриває лазівку веб-сервісу), а MS не хоче ризикувати можливістю того, що якийсь внутрішній сервер запуск AGPL-коду може бути випадково оприлюднений. Але навіть AGPL краще, ніж взагалі ніякої ліцензії, оскільки вибір ліцензії насправді робить умови спільного використання однозначними.
Neel Krishnaswami

13

Переміщено та розширено з коментаря:

Я думаю, це має залежати від підполя. Майже всі матеріали з теорії B, з якими я знайомий (особливо, з Haskell, Agda, а іноді і з Coq), містять опублікований код, іноді навіть як додаток або ще краще вкладений у статті. Досить велика кількість робіт, наприклад, ICFP, написана як грамотні програми для початку, а їх джерело в повному обсязі публікується авторами. Значна кількість тих, у свою чергу, призвела до вилучення бібліотек для розповсюдження.

З решти паперів неабияк ніколи не було коду. З них, мабуть, дві основні причини. По-перше, це документи, основним змістом яких є дерева-перевірки, введення правил із супровідними доказами міцності тощо. З них, прогрес механізованої метатеорії спонукав принаймні деяких авторів надати код у своїй теоремі, що підтверджує вибір (див. Слайди Вейріха на POPLmark: http://www.seas.upenn.edu/~sweirich/talks/cambridge-09. pdf). По-друге, це ті, які походять із птахів-метеликів (банани та співавтори). Вони, як правило, перекладаються на функціональну мову без зайвої праці. Однак, я підозрюю, що як правило, є втрата загальності, і що вирішення конкретних питань синтаксису та введення тексту непотрібно ускладнює речі і ускладнює дотримання рівняльних міркувань.

Мені хотілося трохи обґрунтувати свої спостереження, тому я оцінив грубо підрахунок перших двох днів ICFP 2010 року. З стандартних робіт (тобто не з досвіду чи запрошених переговорів) 12 з 21 надали якийсь код. Три надали Кок (четвертий вимагав часткового доказу, але не опублікував). Три пропоновані Хаскелл. Три надала Агда. Один надав схему, один надав Камла, а один - дванадцять. (Зверніть увагу, що деякі надали код для більше одного помічника доказування або для формалізації, і для реалізації). З решти робіт деякі з них працювали на досить високому рівні абстракції, що реалізація його в якості кореспондента-кореспондента була б самою новою роботою, і досить велика кількість робіт, на які я підозрюю, могла бути реалізована в допоміжному помічнику з використанням стандартних методик, але для цього, безумовно, знадобилось би неабияка робота.


12

Ви вважаєте, що код повинен бути опублікований, але ви запитуєте, чому документи не містять код. Це дві різні речі.

Здебільшого просто не вистачає місця для публікації значної кількості коду. У моїй дослідницькій галузі (обробка зображень) псевдокод чи інформація про архітектуру часто набагато цінніші, і я ніколи не потрапляв через відсутність коду в папері. Часто це залишається як вправа для читача, який зрозумів статтю.

І все ж існує чимало коду для ілюстрації робіт. Зазвичай автори мають веб-сторінку, і навіть якщо рецензент не має можливості спробувати перевірити сам код, природний відбір, здається, працює досить добре, і автори, які не публікують код, набагато менше цитуються.


8

Це можна було б запитати вже колись тому, але я завжди відчував це сильно, тому я віддаю свої два центи. Я працював роками (вже не більше) в межах спільноти SAT. Більшість дослідників рідко публікують свій код. Документ публікується разом з алгоритмом, але дуже рідко можна побачити фактичний код розв'язувача SAT (MAXSAT solver) тощо, опублікованого разом із документом.

А реальність така: з справедливим кодом, опублікованим у газеті, ви ніколи не будете не буде шансу відтворити авторські експерименти. Не тільки тому, що опублікований код не є повним (звичайно), а й тому, що навіть опублікований псевдокод рідко перетворюється напів безпосередньо в те, що реально реалізовано.

Причину цього важко зрозуміти, і це може залежати від дослідника до дослідника, але, головним чином, це в два рази.

  • По-перше, дослідник прагне постійно працювати в одному рішальнику, публікуючи документи після публікацій над тим самим вирішувачем і поступово додаючи нові функції, що перекладаються на нові версії розв'язувача. Існує нездорова одержимість, що конкуренція використовуватиме ваш вирішувач для подальшої кар’єри, розширюючи її та публікуючи документи, не надаючи належної ваги (тобто співавторство).

  • По-друге, якийсь код насправді (як і все програмне забезпечення) пишеться поспіхом. Напівфабрикати сценаріїв. Неперевірені особливості тощо. Опублікувавши цей код, дослідник відчув би, що він бентежить себе і шкодить їхній репутації.

Я залишаю вам нещодавню посилання на це від ACM: http://cacm.acm.org/magazines/2011/5/107698-the-importance-of-reviewing-the-code/fulltext


7

Історично історичні статті мали друкуватися на папері, а журнали надсилалися на міжнародний рівень. Кожна додаткова сторінка, яка використовувалась для додавання значної вартості, тому статті ставили обмеження по довжині, і навіть простий робочий код зазвичай займає багато місця, ніж неофіційний опис.

Сьогодні немає жодної вагомої причини не включати код у будь-яку статтю, яка посилається на алгоритм.

Також може бути корисним відмовитися від орієнтованих на друк форматів, таких як pdf та postscript, на користь більш семантично усвідомлених форматів (HTML з MathML або, можливо, варіація Mathematica з відкритим джерелом).


8
+1 для перших двох абзаців, -1 для останнього абзацу. Ви можете забрати мій LaTeX, коли витягнете його з моїх холодних мертвих рук.
Jeffε

2
Зараз існує маса інструментів для грамотного програмування LaTeX ...
sclv
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.