Mã trong giấy tờ học tập


34

Trong sự nghiệp học tập của mình, tôi đã đọc khá nhiều bài báo học thuật về các chủ đề khoa học máy tính khác nhau. Nhiều trong số đó liên quan đến một triển khai và một số đánh giá về việc thực hiện đó, nhưng tôi đã thấy rằng rất ít trong số họ thực sự xuất bản mã mà họ sử dụng.

Đối với tôi, những lợi ích của việc bao gồm việc thực hiện thực tế sẽ rất đáng kể, cụ thể là:

  • Gia hạn niềm tin hoặc khả năng tái sản xuất (chỉ cần tự kiểm tra!)
  • Làm rõ sự mơ hồ (đặc biệt đối với các bài viết được viết bởi những người không phải người bản xứ)
  • Sử dụng lại mã cho các ứng dụng

Vậy tại sao có quá ít giấy tờ thực sự bao gồm bất kỳ mã nào?

Tôi cho rằng đó có thể là ý định của tổ chức đứng sau bài báo sử dụng việc triển khai trong các ứng dụng của riêng họ, và do đó sẽ không muốn phát hành nó, nhưng nếu đó là trường hợp, tại sao thậm chí viết bài?


14
Vậy tại sao có quá ít giấy tờ thực sự bao gồm bất kỳ mã nào? Bởi vì các nhà phê bình chịu đựng nó vì một số lý do, ngay cả khi không có lý do chính đáng để che giấu việc thực hiện. Chúng tôi là người đánh giá, chúng tôi có thể thay đổi nó.
Jukka Suomela

14
Tôi nghĩ rằng điều này phải thay đổi theo trường con. Gần như tất cả các lý thuyết B mà tôi quen thuộc (và đặc biệt là Haskell, Agda và đôi khi có liên quan đến Coq) bao gồm mã được xuất bản, đôi khi còn là phụ lục hoặc tốt hơn là được nêu trong bài báo. Một số lượng lớn các bài báo từ ICFP được viết dưới dạng các chương trình biết chữ và toàn bộ nguồn của chúng được xuất bản bởi các tác giả. Một số lượng khá lớn của những người lần lượt đã dẫn đến các thư viện trích xuất để phân phối. Trong số các giấy tờ còn lại, một số tiền hợp lý không bao giờ có mã để bắt đầu.
sclv

8
Kết quả nghiên cứu nên được mở (và miễn phí), và mã cũng vậy. Theo một số định nghĩa, khoa học chỉ xảy ra khi các giả thuyết là giả mạo và các thí nghiệm có thể tái tạo, vì vậy bạn có thể lập luận rằng các ấn phẩm dựa trên mã không được công bố không phải là công trình khoa học.
Raphael

4
@Raphael Phát hành cùng một mã sẽ chỉ giúp thiết lập độ lặp lại, không phải độ lặp lại. Chạy cùng một mã chính xác trong cùng một thử nghiệm hầu như không độc lập. Khoa học đòi hỏi khả năng tái tạo, không lặp lại.
Đánh dấu Reitblatt

2
Tôi đã nghĩ về kết quả nói về các thuộc tính của mã hơn là kết quả của nó (tất nhiên trong trường hợp đó bạn đúng). Giả sử, các tác giả tiến hành các thí nghiệm về một số triển khai thuật toán được trình bày và so sánh thời gian chạy bằng cách kiểm tra các biểu đồ (họ gọi đó là "Kỹ thuật thuật toán"). Ở đây, mã cung cấp khả năng tái tạo.
Raphael

Câu trả lời:


17

Dưới đây là một bài viết được tranh luận tốt bởi David Donoho và Jonathan Buckheit mà tôi đã đọc ở trường học, lớp này chạm vào chính xác chủ đề này theo quan điểm của các nhà nghiên cứu sóng con:

"WaveLab và nghiên cứu sinh sản"

Ý tưởng của họ thậm chí còn tham vọng hơn, khi cung cấp mã để sao chép tất cả các số liệu trong giấy tờ của họ trong gói Matlab tiện lợi.

Tôi thực sự thích ý tưởng của họ nhưng tôi nghĩ các vấn đề là rõ ràng.

(1) Đó là công việc làm thêm (làm sạch mã, tạo ra ít nhất một giao diện người dùng thô sơ, viết một số tài liệu, cung cấp một số hỗ trợ khi mọi người chắc chắn gặp phải vấn đề)

(2) Nó không thực sự được yêu cầu / mong đợi bởi hầu hết các hội nghị / người đánh giá

Nhưng tôi không thể không cảm thấy rằng cộng đồng nghiên cứu CS sẽ được hưởng lợi nếu có kỳ vọng làm cho mã và dữ liệu được sử dụng trong bất kỳ ấn phẩm nào có sẵn công khai ở định dạng có thể sử dụng được. Tôi thừa nhận rằng bản thân tôi đã không làm như vậy ngay cả khi khối lượng công việc liên quan sẽ có thể kiểm soát được. Tôi nghĩ thật khó để khiến bản thân nỗ lực thêm khi không có sự thúc đẩy từ bên ngoài.


7
Tôi nghĩ rằng một kỳ vọng về (a) mã giả hoặc (b) mã có sẵn, ít nhất là trên các trang web, sẽ rất hữu ích cho cộng đồng nghiên cứu CS. Không phải tất cả các mã nghiên cứu đều có khả năng sử dụng cao và tôi không chắc việc cung cấp mã lỗi có phải là một điều tốt hay không.
Peter Shor

1
Tôi đã nói chuyện với các tác giả giấy, những người chưa phát hành mã của họ vì những lý do tương tự - ở trạng thái đó, họ sẽ cảm thấy có lỗi nếu có ai thực sự cố gắng làm bất cứ điều gì với nó.
sclv

6
mã không cần phải tốt, sạch hoặc có thể tái sử dụng. nhưng nó cần phải được tái sản xuất để được coi là "khoa học". Có một bài viết hay về bản chất của Nick Barnes (2010) Xuất bản mã máy tính của bạn: nó đủ tốt để tranh luận về điểm này.
David LeBauer

16

Nếu bạn làm việc cho một phòng thí nghiệm công nghiệp, việc lấy giấy được phê duyệt để phát hành có thể dễ dàng hơn nhiều so với việc lấy mã được chấp thuận để phát hành (ngay cả khi giấy có chứa tất cả thông tin cần thiết để viết lại mã). Đổ lỗi quan liêu.


1
Trong khi điều này là tất nhiên đúng, tôi tự hỏi liệu một sự thay đổi thích hợp trong văn hóa được thúc đẩy bởi các nhà nghiên cứu hàn lâm sẽ cho phép các nhà nghiên cứu công nghiệp quản lý áp lực để cho phép phát hành mã. Rốt cuộc, tôi nghi ngờ thậm chí nhận được một chính sách phát hành giấy phải có một số việc phải làm
Suresh Venkat

6
Ít nhất là tại MSR, việc phát hành mã nghiên cứu rất dễ dàng. Thật sự khó sử dụng mã bên ngoài hơn, vì MS cực kỳ cẩn thận trong việc tôn trọng giấy phép phần mềm. Vì nhiều mã giảm liên quan đến giấy đến mà không có tệp giấy phép rõ ràng, điều này có thể gây một chút khó chịu. Thông thường, nó chỉ cần gửi email cho tác giả giấy để làm sáng tỏ mọi thứ, nhưng bạn có thể giúp các nhà nghiên cứu công nghiệp dễ dàng hơn bằng cách nhớ dán giấy phép được OSI phê chuẩn vào bản phát hành mã công khai của bạn.
Neel Krishnaswami

2
@Neel: Bạn có nghĩa là "OSI được phê duyệt, nhưng không phải GPL"?
Radu GRIGore

3
GPL thường ổn - rất nhiều người trong chúng ta sử dụng Emacs! :) Chúng tôi không được phép sử dụng phần mềm GPL của Affero, vì các điều kiện có đi có lại của nó mở rộng cho bất kỳ ai tương tác với phần mềm (nghĩa là nó đóng lỗ hổng dịch vụ web) và MS không muốn mạo hiểm với khả năng một số máy chủ nội bộ chạy mã AGPL có thể vô tình được hiển thị công khai. Nhưng ngay cả AGPL vẫn tốt hơn là không có giấy phép nào cả, bởi vì việc chọn giấy phép thực sự khiến các điều khoản chia sẻ không rõ ràng.
Neel Krishnaswami

13

Di chuyển và mở rộng từ một bình luận:

Tôi nghĩ rằng điều này phải thay đổi theo trường con. Gần như tất cả các lý thuyết B mà tôi quen thuộc (và đặc biệt là Haskell, Agda và đôi khi có liên quan đến Coq) bao gồm mã được xuất bản, đôi khi còn là phụ lục hoặc tốt hơn là được nêu trong bài báo. Một số lượng lớn các bài báo từ, ví dụ, ICFP được viết dưới dạng các chương trình biết chữ để bắt đầu và toàn bộ nguồn của chúng được xuất bản bởi các tác giả. Một số lượng khá lớn của những người lần lượt đã dẫn đến các thư viện trích xuất để phân phối.

Trong số các giấy tờ còn lại, một số tiền hợp lý không bao giờ có mã để bắt đầu. Trong số đó, có lẽ có hai lý do chính. Đầu tiên là các bài báo có nội dung chính là cây chứng minh, quy tắc gõ với bằng chứng âm thanh liên quan và tương tự. Trong số đó, những tiến bộ trong siêu máy tính đã khuyến khích ít nhất một số tác giả cung cấp mã theo phương châm định lý của họ (xem các slide của Weirich trên POPLmark: http://www.seas.upenn.edu/~sweirich/talks/cambridge-09. pdf). Thứ hai là những người có nguồn gốc từ những thứ Bird-Mertges (banannas & co.). Chúng thường được dịch sang một ngôn ngữ chức năng mà không cần quá nhiều công việc. Tuy nhiên, tôi nghi ngờ rằng cả hai thường mất tính tổng quát, và việc xử lý các vấn đề cụ thể về cú pháp và gõ không cần thiết làm phức tạp mọi thứ và khiến cho việc tuân theo lý luận phương trình trở nên khó khăn hơn.

Tôi muốn chứng minh các quan sát của mình một chút, vì vậy, đã có một số lượng lớn trong hai ngày đầu tiên của ICFP 2010. Trong các bài viết tiêu chuẩn (không phải là báo cáo kinh nghiệm hoặc các cuộc đàm phán được mời), 12 trong số 21 mã được cung cấp. Ba cung cấp Coq (một phần tư tuyên bố một bằng chứng một phần nhưng không công bố nó). Ba người Haskell. Ba cung cấp Agda. Một cung cấp Đề án, một cung cấp Caml, và một cung cấp Twelf. (Lưu ý rằng một số mã được cung cấp cho nhiều hơn một trợ lý chứng minh hoặc cho cả việc chính thức hóa và triển khai). Trong số các giấy tờ còn lại, một số ít đã làm việc ở mức độ trừu tượng đủ cao để thực hiện nó trong một trợ lý chứng minh sẽ là một bài báo mới, và một số lượng công bằng hơn mà tôi nghi ngờ có thể được thực hiện trong một trợ lý chứng minh bằng cách sử dụng kỹ thuật tiêu chuẩn, nhưng chắc chắn sẽ phải mất một lượng công việc lớn để làm như vậy.


12

Bạn tin rằng mã nên được xuất bản, nhưng bạn hỏi tại sao giấy tờ không bao gồm mã. Đây là hai điều khác nhau.

Hầu hết thời gian, đơn giản là không đủ chỗ để xuất bản một lượng mã đáng kể. Trong lĩnh vực nghiên cứu của tôi (xử lý hình ảnh) mã giả hoặc thông tin kiến ​​trúc thường có giá trị hơn nhiều và tôi chưa bao giờ thấy mình bị mắc kẹt do thiếu mã trong một bài báo. Nó thường để lại như một bài tập cho người đọc đã nắm bắt bài viết.

Tuy nhiên, có rất nhiều mã có sẵn để minh họa giấy tờ. Các tác giả thường có một trang web và ngay cả khi người đánh giá không có cơ hội thử và tự kiểm tra mã, lựa chọn tự nhiên dường như hoạt động khá tốt và các tác giả không xuất bản mã ít được trích dẫn hơn.


8

Điều này có thể đã được hỏi cách đây một thời gian rồi, tuy nhiên tôi luôn cảm thấy mạnh mẽ về điều này nên tôi sẽ đưa hai xu của mình. Tôi đã làm việc trong nhiều năm (không còn nữa) trong cộng đồng SAT. Hầu hết các nhà nghiên cứu hiếm khi công bố mã của họ. Bài báo được xuất bản cùng với thuật toán nhưng rất hiếm khi thấy mã thực tế của bộ giải SAT (bộ giải MAXSAT), v.v., được xuất bản cùng với bài báo.

Và thực tế là chỉ với mã được xuất bản trong bài báo, bạn sẽ không bao giờ có cơ hội tái tạo các thí nghiệm của tác giả. Không chỉ bởi vì mã được xuất bản không đầy đủ (tất nhiên) mà còn bởi vì ngay cả mã giả được xuất bản cũng hiếm khi chuyển bán trực tiếp thành những gì được thực hiện.

Lý do đằng sau điều này là khó biết và nó có thể phụ thuộc từ nhà nghiên cứu đến nhà nghiên cứu nhưng chủ yếu là hai lần.

  • Đầu tiên, nhà nghiên cứu có xu hướng làm việc liên tục trong một bài giải xuất bản duy nhất sau các bài viết trên cùng một người giải và thêm dần các tính năng mới chuyển sang các phiên bản mới của người giải. Có một nỗi ám ảnh không lành mạnh rằng cạnh tranh sẽ sử dụng người giải quyết của bạn để tiếp tục sự nghiệp của họ bằng cách mở rộng nó và xuất bản các bài báo mà không cung cấp cho bạn tín dụng đúng hạn (nghĩa là đồng tác giả).

  • Thứ hai, một số mã thực sự là (như với tất cả các phần mềm) được viết vội vàng. Kịch bản nửa nướng. Các tính năng chưa được kiểm tra, vv Bằng cách xuất bản mã này, nhà nghiên cứu sẽ cảm thấy anh ta sẽ lúng túng và làm tổn hại danh tiếng của họ.

Tôi để lại cho bạn một tài liệu tham khảo gần đây về điều này từ ACM: http://cacm.acm.org/mag Magazine / 2011 / 10/10698


7

Trong lịch sử, các bài báo khoa học phải được in trên giấy và các tạp chí đã được chuyển đi quốc tế. Mỗi trang bổ sung được sử dụng để thêm một chi phí đáng kể, do đó, các bài viết phải chịu giới hạn về độ dài và thậm chí mã làm việc đơn giản thường chiếm nhiều không gian hơn so với mô tả không chính thức.

Ngày nay không có lý do chính đáng để không bao gồm mã trong bất kỳ loại bài viết nào đề cập đến một thuật toán.

Cũng có thể hữu ích khi từ bỏ các định dạng hướng in như pdf và postcript để ủng hộ các định dạng có ý nghĩa ngữ nghĩa hơn (HTML với MathML hoặc có lẽ là một biến thể mã nguồn mở của Mathicala).


8
+1 cho hai đoạn đầu tiên, -1 cho đoạn cuối. Bạn có thể lấy đi LaTeX của tôi khi bạn cạy nó khỏi bàn tay chết lạnh của tôi.
Jeffε

2
Hiện tại có rất nhiều công cụ có sẵn để cho phép lập trình LaTeX biết chữ ...
sclv
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.