Kode dalam Kertas Akademik


34

Dalam karir akademis saya, saya telah membaca beberapa makalah akademik tentang berbagai topik ilmu komputer. Banyak yang melibatkan implementasi dan beberapa penilaian implementasi itu, namun saya telah menemukan bahwa sangat sedikit dari mereka yang benar-benar menerbitkan kode yang mereka gunakan.

Bagi saya, manfaat termasuk implementasi yang sebenarnya akan signifikan, yaitu:

  • Perluasan kepercayaan atau kemampuan reproduksi (coba saja sendiri!)
  • Klarifikasi ambiguitas (terutama untuk makalah yang ditulis oleh penutur asli)
  • Penggunaan kembali kode untuk aplikasi

Jadi mengapa begitu sedikit makalah yang benar-benar memasukkan kode?

Saya kira itu mungkin maksud dari organisasi di balik kertas untuk memanfaatkan implementasi dalam aplikasi mereka sendiri, dan dengan demikian tidak ingin merilisnya, tetapi jika itu masalahnya, mengapa bahkan menulis kertas?


14
Jadi mengapa begitu sedikit makalah yang benar-benar memasukkan kode? Karena pengulas mentolerirnya untuk beberapa alasan, bahkan jika tidak ada alasan yang baik untuk menyembunyikan implementasi. Kami adalah pengulas, kami bisa mengubahnya.
Jukka Suomela

14
Saya pikir ini harus bervariasi berdasarkan subbidang. Hampir semua hal-hal Teori B yang saya kenal (dan terutama Haskell, Agda, dan kadang-kadang Coq-terkait) termasuk kode yang diterbitkan, kadang-kadang bahkan sebagai lampiran atau lebih baik belum diuraikan dalam surat kabar. Cukup banyak makalah dari ICFP ditulis sebagai program melek untuk memulai, dan sumber mereka secara keseluruhan diterbitkan oleh penulis. Sejumlah besar dari mereka pada gilirannya telah menghasilkan perpustakaan diekstraksi untuk distribusi. Dari surat kabar yang tersisa, jumlah yang wajar tidak pernah memiliki kode untuk memulai.
sclv

8
Hasil penelitian harus terbuka (dan gratis), dan begitu juga kode. Menurut beberapa definisi, sains hanya terjadi ketika hipotesis dapat dipalsukan dan eksperimen dapat direproduksi, sehingga Anda dapat berargumen bahwa publikasi yang didasarkan pada kode yang tidak dipublikasikan bukanlah karya ilmiah.
Raphael

4
@Raphael Melepaskan kode yang sama hanya akan membantu membangun pengulangan, bukan reproduktifitas. Menjalankan kode yang sama persis dalam percobaan yang sama persis hampir tidak independen. Sains membutuhkan reproduksibilitas, bukan pengulangan.
Mark Reitblatt

2
Saya sedang memikirkan hasil yang berbicara tentang sifat-sifat kode daripada hasilnya (dalam hal ini Anda benar, tentu saja). Katakanlah, penulis melakukan percobaan pada beberapa implementasi dari algoritma yang disajikan dan membandingkan runtime dengan memeriksa grafik (mereka menyebutnya "Rekayasa Algoritma"). Di sini, kode menyediakan kemampuan reproduksi.
Raphael

Jawaban:


17

Berikut ini adalah artikel yang dikemukakan dengan baik oleh David Donoho dan Jonathan Buckheit yang saya baca di sekolah pascasarjana yang menyentuh persis topik ini dari sudut pandang para peneliti wavelet:

"WaveLab dan Penelitian yang Dapat Diproduksi Kembali"

Gagasan mereka bahkan lebih ambisius, untuk menyediakan kode untuk mereproduksi semua angka di kertas mereka dalam paket Matlab yang nyaman.

Saya sangat menyukai ide mereka tetapi saya pikir masalahnya jelas.

(1) Ini adalah pekerjaan tambahan (membersihkan kode, membuat setidaknya antarmuka pengguna yang belum sempurna, menulis beberapa dokumentasi, memberikan beberapa dukungan ketika orang-orang pasti mengalami masalah)

(2) Tidak benar-benar diperlukan / diharapkan oleh sebagian besar konferensi / pengulas

Tetapi saya merasa bahwa komunitas riset CS akan mendapat manfaat jika ada harapan membuat kode dan data yang digunakan dalam publikasi apa pun tersedia secara publik dalam format yang dapat digunakan. Saya akui bahwa saya sendiri belum melakukannya bahkan ketika jumlah pekerjaan yang terlibat dapat dikelola. Saya pikir itu hanya sulit untuk membuat diri Anda berusaha ekstra ketika tidak ada dorongan eksternal.


7
Saya pikir harapan untuk (a) kodesemu atau (b) kode yang tersedia, setidaknya di situs web, akan sangat berguna bagi komunitas riset CS. Tidak semua kode penelitian memiliki kegunaan yang tinggi, dan saya tidak yakin apakah membuat kode buggy tersedia adalah hal yang baik atau tidak.
Peter Shor

1
Saya sudah bicara dengan penulis kertas yang belum merilis kode mereka karena alasan yang sama - di negara bagian itu, mereka akan merasa bersalah jika ada yang benar-benar mencoba melakukan apa pun dengan kode itu.
sclv

6
kode tidak harus baik, bersih, atau dapat digunakan kembali. tetapi memang perlu direproduksi agar dianggap 'sains'. Ada artikel yang bagus di alam oleh Nick Barnes (2010) Publikasikan kode komputer Anda: cukup bagus untuk memperdebatkan hal ini.
David LeBauer

16

Jika Anda bekerja untuk laboratorium industri, akan jauh lebih mudah untuk mendapatkan kertas yang disetujui untuk rilis daripada mendapatkan kode yang disetujui untuk rilis (bahkan jika kertas berisi semua informasi yang diperlukan untuk menulis ulang kode). Salahkan birokrasi.


1
sementara ini tentu saja benar, saya bertanya-tanya apakah perubahan yang tepat dalam budaya yang didorong oleh peneliti akademis akan memungkinkan peneliti industri untuk menekan manajemen untuk memungkinkan pelepasan kode. Setelah semua, saya curiga bahkan mendapatkan kebijakan untuk rilis kertas harus mengambil beberapa melakukan
Suresh Venkat

6
Setidaknya di MSR, sangat mudah untuk merilis kode penelitian. Sebenarnya lebih sulit untuk menggunakan kode luar, karena MS sangat berhati-hati dalam menghormati lisensi perangkat lunak. Karena banyak tetes kode terkait kertas datang tanpa file lisensi eksplisit, ini bisa sedikit mengganggu. Biasanya hanya dibutuhkan surel kepada penulis makalah untuk menjelaskan semuanya, tetapi Anda dapat membuatnya lebih mudah bagi peneliti industri dengan mengingat untuk tetap menggunakan lisensi yang disetujui OSI pada rilis kode publik Anda.
Neel Krishnaswami

2
@Neel: Maksud Anda "disetujui OSI, tetapi tidak GPL"?
Radu GRIGore

3
GPL biasanya ok - banyak dari kita menggunakan Emacs! :) Kami tidak diizinkan untuk menggunakan perangkat lunak Affero GPL, karena kondisi timbal baliknya meluas ke siapa pun yang berinteraksi dengan perangkat lunak (yaitu, ia menutup celah layanan web), dan MS tidak ingin mengambil risiko kemungkinan bahwa beberapa server internal menjalankan kode AGPL mungkin secara tidak sengaja dibuat menghadap publik. Tetapi bahkan AGPL lebih baik daripada tidak ada lisensi sama sekali, karena memilih lisensi sebenarnya membuat ketentuan berbagi tidak ambigu.
Neel Krishnaswami

13

Dimigrasi dan diperluas dari komentar:

Saya pikir ini harus bervariasi berdasarkan subbidang. Hampir semua hal-hal Teori B yang saya kenal (dan terutama Haskell, Agda, dan kadang-kadang Coq-terkait) termasuk kode yang diterbitkan, kadang-kadang bahkan sebagai lampiran atau lebih baik belum diuraikan dalam surat kabar. Sejumlah makalah dari, misalnya, ICFP ditulis sebagai program melek untuk memulai, dan sumber mereka secara keseluruhan diterbitkan oleh penulis. Sejumlah besar dari mereka pada gilirannya telah menghasilkan perpustakaan diekstraksi untuk distribusi.

Dari surat kabar yang tersisa, jumlah yang wajar tidak pernah memiliki kode untuk memulai. Dari mereka, mungkin ada dua alasan utama. Pertama adalah makalah yang konten utamanya adalah pohon bukti, mengetik aturan dengan bukti kesehatan terkait dan sejenisnya. Di antara itu, kemajuan dalam metatisori mekanis telah mendorong setidaknya beberapa penulis untuk memberikan kode dalam teorema pilihan mereka (lihat slide Weirich pada POPLmark:) http://www.seas.upenn.edu/~sweirich/talks/cambridge-09. pdf). Kedua adalah yang diturunkan dari barang-barang Bird-Merteens (banannas & co.). Ini umumnya diterjemahkan ke dalam bahasa fungsional tanpa terlalu banyak pekerjaan. Namun, saya menduga bahwa ada keduanya biasanya kehilangan generalitas, dan yang berurusan dengan masalah konkret dan mengetik yang tidak perlu mempersulit hal-hal dan membuat lebih sulit untuk mengikuti alasan yang sama.

Saya ingin membuktikan pengamatan saya sedikit, begitu juga dengan hitungan kasar dua hari pertama ICFP 2010. Dari makalah standar (yaitu tidak mengalami laporan pengalaman atau pembicaraan yang diundang), 12 dari 21 menyediakan semacam kode. Tiga menyediakan Coq (yang keempat mengklaim sebagian bukti tetapi tidak mempublikasikannya). Tiga Haskell proided. Tiga disediakan Agda. Satu disediakan Skema, satu disediakan Caml, dan satu disediakan Twelf. (Perhatikan bahwa beberapa kode disediakan untuk lebih dari satu asisten bukti, atau untuk formalisasi dan implementasi). Dari beberapa makalah yang tersisa, beberapa memang bekerja pada tingkat abstraksi yang cukup tinggi sehingga menerapkannya dalam asisten pembuktian akan menjadi makalah baru itu sendiri, dan cukup banyak lagi yang berhasil yang saya duga dapat diimplementasikan dalam asisten pembuktian menggunakan teknik standar, tetapi yang tentunya akan membutuhkan banyak pekerjaan untuk melakukannya.


12

Anda percaya bahwa kode harus dipublikasikan, tetapi Anda bertanya mengapa makalah tidak menyertakan kode. Ini adalah dua hal yang berbeda.

Sebagian besar waktu, tidak ada cukup ruang untuk mempublikasikan kode dalam jumlah yang signifikan. Di bidang penelitian saya (pemrosesan gambar) pseudocode atau informasi arsitektur seringkali jauh lebih berharga dan saya tidak pernah menemukan diri saya macet karena kurangnya kode dalam sebuah makalah. Ini sering dibiarkan sebagai latihan bagi pembaca yang memahami artikel tersebut.

Namun ada banyak kode yang tersedia untuk menggambarkan makalah. Penulis biasanya memiliki halaman web dan bahkan jika peninjau tidak mendapatkan kesempatan untuk mencoba dan memeriksa kode itu sendiri, seleksi alam tampaknya bekerja dengan cukup baik dan penulis yang tidak menerbitkan kode jauh lebih sedikit dikutip.


8

Ini mungkin sudah ditanyakan beberapa waktu lalu, namun saya selalu merasa kuat tentang ini sehingga saya akan memberikan dua sen saya. Saya telah bekerja selama bertahun-tahun (tidak lagi) dalam komunitas SAT. Kebanyakan peneliti jarang menerbitkan kode mereka. Makalah ini diterbitkan bersama dengan algoritma tetapi sangat jarang untuk melihat kode sebenarnya dari SAT solver (pemecah MAXSAT) dll, diterbitkan bersama dengan kertas.

Dan kenyataannya adalah bahwa hanya dengan kode yang diterbitkan di koran Anda tidak akan pernah memiliki kesempatan untuk mereproduksi eksperimen penulis. Bukan hanya karena kode yang diterbitkan tidak lengkap (tentu saja) tetapi juga karena bahkan kode semu yang diterbitkan jarang menerjemahkan secara semi-langsung ke dalam apa yang sebenarnya dilaksanakan.

Alasan di balik ini sulit untuk diketahui dan mungkin tergantung dari peneliti ke peneliti tetapi kebanyakan dua kali lipat.

  • Pertama, peneliti cenderung untuk terus bekerja dalam satu makalah solver penerbit setelah makalah pada solver yang sama dan secara bertahap menambahkan fitur baru yang menerjemahkan ke versi baru solver. Ada obsesi tidak sehat bahwa pesaing akan menggunakan pemecah Anda untuk memajukan karier mereka dengan memperluas dan menerbitkan makalah tanpa memberi Anda kredit jatuh tempo (artinya, rekan penulis).

  • Kedua, beberapa kode benar-benar (seperti semua perangkat lunak) ditulis terburu-buru. Skrip setengah matang. Fitur yang belum diuji, dll. Dengan menerbitkan kode ini, peneliti akan merasa dirinya akan mempermalukan diri sendiri dan merusak reputasi mereka.

Saya meninggalkan Anda dengan referensi terbaru tentang ini dari ACM: http://cacm.acm.org/magazine/2011/5/107698-the-importance-of-reviewing-the-code/fulltext


7

Secara historis, artikel ilmiah harus dicetak di atas kertas, dan jurnal dikirimkan secara internasional. Setiap halaman tambahan digunakan untuk menambah biaya yang signifikan, sehingga artikel tunduk pada batasan panjang, dan bahkan kode kerja sederhana biasanya membutuhkan banyak ruang daripada deskripsi informal.

Saat ini tidak ada alasan kuat untuk tidak memasukkan kode dalam jenis artikel apa pun yang merujuk suatu algoritma.

Mungkin juga bermanfaat untuk meninggalkan format berorientasi-cetak seperti pdf dan catatan tambahan yang mendukung format yang lebih sadar semantik (HTML dengan MathML atau mungkin variasi open source dari Mathematica).


8
+1 untuk dua paragraf pertama, -1 untuk paragraf terakhir. Anda dapat mengambil LaTeX saya ketika Anda mencabutnya dari tangan dingin saya yang mati.
Jeffε

2
Sekarang ada banyak alat yang tersedia untuk mengaktifkan pemrograman LaTeX melek ...
sclv
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.