학술 논문의 코드


34

학업 경력에서 다양한 컴퓨터 과학 주제에 관한 학술 논문을 많이 읽었습니다. 많은 것들이 구현과 그 구현에 대한 일부 평가를 포함하지만, 실제로 사용 된 코드를 게시하는 사람은 거의 없습니다.

나에게 실제 구현을 포함하면 다음과 같은 이점이 있습니다.

  • 신뢰 또는 재현성 확장 (직접 테스트하십시오!)
  • 모호함의 명확화 (특히 모국어가 아닌 사람이 작성한 논문의 경우)
  • 응용 프로그램을위한 코드 재사용

그렇다면 실제로 코드를 포함하는 논문이 거의없는 이유는 무엇입니까?

나는 자신의 응용 프로그램에서 구현을 활용하는 것이 논문의 배후에있는 조직의 의도 일 수 있다고 생각하고 그것을 공개하고 싶지는 않지만 그 경우라면 왜 논문을 작성해야합니까?


14
그렇다면 실제로 코드를 포함하는 논문이 거의없는 이유는 무엇입니까? 검토자는 어떤 이유로 든 구현을 숨길만한 충분한 이유가 없더라도이를 허용합니다. 우리는 검토 자이며 변경할 수 있습니다.
Jukka Suomela

14
서브 필드에 따라 달라져야한다고 생각합니다. 필자가 익숙한 거의 모든 이론 B (특히 Haskell, Agda, 때로는 Coq 관련)에는 출판 된 코드가 포함되어 있으며 때로는 논문에 부록이나 더 나은 인라인으로도 포함되어 있습니다. ICFP의 상당수의 논문은 처음부터 문해력있는 프로그램으로 작성되었으며, 그 출처는 모두 저자가 출판합니다. 그 결과 상당수가 배포 용 라이브러리를 추출했습니다. 나머지 논문들 중에서도 공정한 금액으로 시작하는 코드는 없었습니다.
sclv

8
연구 결과는 개방적이어야하며 무료이어야합니다. 일부 정의에 따르면 과학은 가설을 반증하고 실험을 재현 할 수있는 경우에만 발생하므로 게시되지 않은 코드를 기반으로 한 출판물은 과학적 연구가 아니라고 주장 할 수 있습니다.
Raphael

4
@Raphael 동일한 코드를 해제하면 재현성이 아닌 반복성을 설정하는 데 도움이됩니다. 똑같은 실험에서 똑같은 코드를 실행하는 것은 거의 독립적이지 않습니다. 과학은 반복성이 아닌 재현성을 요구합니다.
Mark Reitblatt

2
코드 결과가 아닌 코드의 속성에 대해 말하는 결과를 생각하고있었습니다 (물론 당신이 옳습니다). 예를 들어, 저자는 제시된 알고리즘의 일부 구현에 대해 실험을 수행하고 그래프를 검사하여 런타임을 비교합니다 ( "알고리즘 엔지니어링"이라고 함). 여기서 코드는 재현성을 제공합니다.
Raphael

답변:


17

다음은 David Donoho와 Jonathan Buckheit의 글이 잘 짜여진 글입니다. 저는 잔물결 연구자들의 관점에서이 주제를 정확히 다루는 대학원에서 읽었습니다.

"WaveLab 및 재현 가능한 연구"

그들의 아이디어는 훨씬 더 야심적이었습니다. 논문의 모든 그림을 편리한 Matlab 패키지로 재생산하기위한 코드를 제공했습니다.

나는 그들의 아이디어를 정말로 좋아하지만 문제는 분명하다고 생각합니다.

(1) 추가 작업 (코드 정리, 적어도 기본적인 사용자 인터페이스 만들기, 문서 작성, 사람들이 불가피하게 문제에 부딪 칠 때 약간의 지원 제공)

(2) 대부분의 회의 / 검토자가 실제로 요구하거나 기대하지는 않습니다.

그러나 어떤 출판물에 사용 된 코드와 데이터를 사용 가능한 형식으로 공개 할 수있을 것으로 기대한다면 CS 리서치 커뮤니티가 도움이 될 것이라고 생각합니다. 나는 관련된 작업량이 관리 가능할 때조차 그렇게하지 않았다는 것을 인정한다. 외부 밀기가 없을 때 더 많은 노력을 기울이는 것이 어렵다고 생각합니다.


7
적어도 웹 사이트에서 사용 가능한 (a) 의사 코드 또는 (b) 코드에 대한 기대는 CS 리서치 커뮤니티에 매우 유용 할 것으로 생각합니다. 모든 연구 코드가 유용성이 높지는 않으며 버그가있는 코드를 만드는 것이 좋은지 확실하지 않습니다.
피터 쇼어

1
비슷한 이유로 코드를 공개하지 않은 종이 작가들과 이야기를 나-습니다. 상태에 따라 누군가 실제로 코드를 사용하려고하면 죄책감을 느끼게됩니다.
sclv

6
코드가 좋고 깨끗하거나 재사용 할 필요는 없습니다. 그러나 '과학'으로 간주되기 위해서는 재현 할 수 있어야합니다. Nick Barnes (2010)의 좋은 기사가있었습니다. 컴퓨터 코드를 게시하십시오 .이 점을 논쟁 하는 것으로 충분 합니다.
David LeBauer

16

산업 연구소에서 근무하는 경우 종이에 코드를 다시 작성하는 데 필요한 모든 정보가 포함되어 있어도 릴리스 승인 코드를 얻는 것보다 릴리스 승인 종이를 얻는 것이 훨씬 더 쉽습니다. 관료주의를 비난하십시오.


1
물론 이것은 사실이지만, 학계 연구자들이 주도하는 문화의 적절한 변화가 산업 연구자들이 코드 릴리스를 허용하도록 압력 관리를 할 수 있는지 궁금합니다. 결국, 나는 종이 방출에 대한 정책을 얻는 것조차도 어떤 행동을 취했을 것 같다
Suresh Venkat

6
적어도 MSR에서는 연구 코드를 공개하는 것이 매우 쉽습니다. MS는 소프트웨어 라이센스를 존중하는 데 매우주의를 기울이기 때문에 실제로 외부 코드를 사용하기가 더 어렵습니다. 많은 종이 관련 코드가 명시적인 라이센스 파일없이 제공되기 때문에 약간 성가 시게됩니다. 일반적으로 문서 작성자에게 전자 메일을 보내서 내용을 정리할 수 있지만 공개 코드 릴리스에 OSI 승인 라이센스를 고수하는 것을 기억하여 산업 연구원이 더 쉽게 만들 수 있습니다.
Neel Krishnaswami

2
@Neel : "OSI 승인되었지만 GPL이 아님 "을 의미 합니까?
Radu GRIGore

3
GPL은 보통 괜찮습니다. 많은 사람들이 Emacs를 사용합니다! :) 우리는 Affero GPL 소프트웨어를 사용할 수 없습니다. 상호 조건은 소프트웨어와 상호 작용하는 사람 (예 : 웹 서비스 허점을 닫음)으로 확장되며 MS는 일부 내부 서버의 가능성을 위험하게 만들고 싶지 않기 때문에 AGPL 코드를 실행하면 실수로 공개 될 수 있습니다. 그러나 라이센스를 선택하면 실제로 공유 조건이 명확 해지기 때문에 AGPL도 라이센스가없는 것보다 낫습니다.
Neel Krishnaswami

13

주석에서 마이그레이션 및 확장 :

서브 필드에 따라 달라져야한다고 생각합니다. 필자가 익숙한 거의 모든 이론 B (특히 Haskell, Agda, 때로는 Coq 관련)에는 출판 된 코드가 포함되어 있으며 때로는 논문에 부록이나 더 나은 인라인으로도 포함되어 있습니다. 예를 들어, ICFP의 공정한 수의 논문은 처음부터 문해력있는 프로그램으로 작성되었으며, 그 출처는 모두 저자가 출판합니다. 그 결과 상당수가 배포 용 라이브러리를 추출했습니다.

나머지 논문들 중에서도 공정한 금액으로 시작하는 코드가 없었습니다. 그중 두 가지 이유가있을 수 있습니다. 첫 번째는 주요 내용이 증명 트리이고 관련 방음 증명 등이 포함 된 규칙을 입력하는 논문입니다. 그중에서도 기계화 된 메타 테 이어의 발전으로 적어도 일부 저자들은 자신이 선택한 이론의 증명 코드를 제공하도록 장려했습니다 (POWmark에 대한 Weirich의 슬라이드 : http://www.seas.upenn.edu/~sweirich/talks/cambridge-09). pdf). 두 번째는 Bird-Merteens 자료 (banannas & co.)에서 유래 한 것입니다. 이것들은 일반적으로 너무 많은 작업없이 기능적 언어로 번역 가능합니다. 그러나 나는 일반적으로 일반성이 떨어지고 구문과 타이핑의 구체적인 문제를 다루는 것은 불필요하게 복잡하게 만들고 방정식 추론을 따르기가 더 어렵게 만듭니다.

나는 ICFP 2010의 첫 이틀 동안 대략적으로 나의 관찰 결과를 입증하고 싶었다. 표준 논문들 (즉, 보고서를 보거나 초대받지 않은 대화) 중 21 개 중 12 개가 일종의 코드를 제공했다. 3 개는 Coq를 제공했으며 (4 번째는 부분 증거를 요구했지만 공개하지는 않았습니다). 세 발자국 Haskell. 3 명이 제공 한 아그 다. 하나는 구성표, 하나는 Caml, 하나는 Twelf를 제공했습니다. (일부에서는 둘 이상의 교정 조교 또는 공식화와 구현을위한 코드를 제공했습니다.) 나머지 논문들 중 몇몇은 증명 보조원에서 그것을 구현하는 것이 그 자체로 새로운 논문이 될 정도로 충분히 높은 추상화 수준에서 작업했으며, 상당히 많은 수의 논문을 사용하여 증명 보조원에서 구현했을 수 있다고 생각했습니다. 표준 기술이지만, 그렇게하려면 상당한 양의 작업이 필요했을 것입니다.


12

코드를 게시해야한다고 생각하지만 논문에 왜 코드가 포함되어 있지 않은지 묻습니다. 이것들은 두 가지입니다.

대부분의 경우 상당한 양의 코드를 게시 할 공간이 충분하지 않습니다. 내 연구 분야 (이미지 처리) 의사 코드 또는 아키텍처 정보는 종종 훨씬 더 가치가 있으며 종이에 코드가 없기 때문에 스스로 붙어있는 적이 없습니다. 기사를 파악한 독자에게는 종종 연습 문제로 남게됩니다.

그러나 논문을 설명하기 위해 사용할 수있는 많은 코드가 있습니다. 작성자는 일반적으로 웹 페이지를 가지고 있으며 검토자가 코드 자체를 확인하고 확인할 기회가 없어도 자연 선택은 잘 작동하는 것으로 보이며 코드를 게시하지 않은 작성자는 인용이 훨씬 적습니다.


8

이것은 얼마 전에 이미 요청되었을 수도 있지만, 나는 항상 이것에 대해 강하게 느꼈으므로 2 센트를 줄 것입니다. 저는 SAT 커뮤니티에서 수년 동안 (더 이상은 아닙니다) 일했습니다. 대부분의 연구원들은 코드를 거의 공개하지 않습니다. 논문은 알고리즘과 함께 출판되지만 논문과 함께 출판 된 SAT 솔버 (MAXSAT 솔버) 등의 실제 코드를 보는 것은 매우 드 rare니다.

실제로는 논문에 게시 된 코드만으로도 저자의 실험을 재현 할 기회 가 없을 것입니다. 게시 된 코드가 완전하지 않을뿐만 아니라 게시 된 의사 코드조차도 실제로 구현 된 내용으로 반 직접 변환되는 경우는 거의 없습니다.

이것의 이유는 알기가 어렵고 연구원마다 다르지만 대부분 두 가지입니다.

  • 첫째, 연구원은 동일한 솔버에 대한 논문을 게시 한 후 단일 솔버에서 논문을 지속적으로 연구하고 새로운 버전의 솔버로 변환되는 새로운 기능을 점진적으로 추가하는 경향이 있습니다. 경쟁 업체가 당신의 정당한 신용 (의미, 공동 저자)을주지 않고 솔버를 사용 하여 커리어를 확장하고 논문을 출판함으로써 그들의 경력을 발전시킬 것이라는 건강에 해로운 집착이 있습니다 .

  • 둘째, 일부 코드는 실제로 모든 소프트웨어와 마찬가지로 서두로 작성됩니다. 반 구운 스크립트. 테스트되지 않은 기능 등이 코드를 게시하면 연구원은 자신을 부끄러워하고 평판을 손상시킬 수 있다고 생각합니다.

나는 ACM에서 이것에 대한 최근 참조를 남긴다 : http://cacm.acm.org/magazines/2011/5/107698-the-importance-of-reviewing-the-code/fulltext


7

역사적으로 과학 논문은 종이에 인쇄해야했고, 저널은 국제적으로 배송되었습니다. 각 추가 페이지는 상당한 비용을 추가하는 데 사용되었으므로 기사에는 길이 제한이 적용되었으며 간단한 작업 코드조차도 비공식적 인 설명보다 많은 공간을 차지합니다.

오늘날 알고리즘을 참조하는 모든 종류의 기사에 코드를 포함시키지 않는 좋은 이유는 없습니다.

보다 의미 적으로 인식되는 형식 (MathML을 사용한 HTML 또는 Mathematica의 오픈 소스 변형)을 선호하여 pdf 및 포스트 스크립트와 같은 인쇄 지향 형식을 포기하는 것도 유용 할 수 있습니다.


8
처음 두 단락에 +1, 마지막 단락에 -1 차가운 죽은 손에서 들어 올릴 때 LaTeX를 빼낼 수 있습니다.
Jeffε

2
글을 읽고
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.