Akademik Makalelerde Kod


34

Akademik kariyerimde çeşitli bilgisayar bilimleri konularında epeyce akademik yazılar okudum. Birçoğu bir uygulamayı ve bu uygulamanın bir değerlendirmesini içerir, ancak çok azının gerçekte kullandıkları kodu yayınladığını buldum.

Bana göre, gerçek uygulamayı dahil etmenin faydaları, yani:

  • Güvenin uzatılması veya tekrar üretilebilirlik (sadece kendiniz test edin!)
  • Belirsizliklerin netleştirilmesi (özellikle anadili olmayanlar tarafından yazılan makaleler için)
  • Uygulamalar için kodun tekrar kullanılması

Öyleyse neden bu kadar az makale gerçekten herhangi bir kod içeriyor?

Uygulamayı, kendi uygulamalarında kullanmaktan kağıdın arkasındaki kuruluşun niyeti olabileceğini ve bu nedenle yayınlamak istemeyeceğini düşünüyorum, ancak öyleyse, niçin kağıdı bile yazmalısınız?


14
Öyleyse neden bu kadar az makale gerçekten herhangi bir kod içeriyor? Çünkü hakemler, uygulamayı gizlemek için iyi bir neden olmasa bile, bir sebepten hoş görüyorlar. Biz eleştirmenleriz, değiştirebiliriz.
Jukka Suomela

14
Bunun alt alana göre değişmesi gerektiğini düşünüyorum. Neredeyse aşina olduğum tüm Teori B makaleleri (ve özellikle Haskell, Agda ve bazen Coq ile ilgili), bazen bir ek olarak veya makalenin içinde daha iyi bir şekilde belirtilmiş olsa bile yayınlanmış kodu içerir. ICFP'den çok sayıda makale başlamak için okuryazar programlar olarak yazılmakta ve kaynakların tamamı yazarlar tarafından yayınlanmaktadır. Bunlardan adil bir miktar dağıtım için çıkarılmış kütüphanelere yol açmıştır. Kalan yazılardan, adil bir miktar hiçbir zaman başlayacak kod olmamıştır.
08:

8
Araştırma sonuçları açık (ve ücretsiz) olmalı ve kodlanmalıdır. Bazı tanımlara göre, bilim yalnızca hipotezlerin yanlış olması ve deneylerin tekrar üretilebilir olması durumunda gerçekleşir, bu nedenle yayınlanmayan koda dayanan yayınların bilimsel çalışma olmadığını iddia edebilirsiniz.
Raphael

4
@Raphael Aynı kodu serbest bırakmak, tekrarlanabilirliği oluşturmaya yardım eder, tekrarlanabilirliği sağlamaz. Tam olarak aynı kodu tam olarak aynı deneyde çalıştırmak pek bağımsız değildir. Bilim, tekrarlanabilirlik değil tekrarlanabilirlik gerektirir.
Mark Reitblatt

2
Kodun sonuçlarından ziyade sonuçlarından bahseden sonuçları düşündüm (elbette haklısın). Diyelim, yazarlar sunulan algoritmanın bazı uygulamaları üzerinde deneyler yapıyorlar ve grafikleri inceleyerek çalışma zamanlarını karşılaştırıyorlar (buna "Algoritma Mühendisliği" diyorlar). Burada kod tekrarlanabilirliği sağlar.
Raphael

Yanıtlar:


17

İşte David Donoho ve Jonathan Buckheit’in dalgacık okulu araştırmacıları açısından tam olarak bu konuya değinen ortaokulda okuduğumun iyi savunduğu bir makale:

"WaveLab ve Tekrarlanabilir Araştırma"

Fikirleri daha da iddialıydı, yazılarındaki tüm rakamları uygun bir Matlab paketinde çoğaltmak için kod sağlamak için.

Fikirlerini gerçekten seviyorum ama sorunların açık olduğunu düşünüyorum.

(1) Ekstra bir iştir (kodları temizlemek, en azından basit bir kullanıcı arayüzü oluşturmak, bazı belgeler yazmak, insanlar kaçınılmaz olarak sorun yaşadıklarında destek sağlamak)

(2) Konferansların / hakemlerin çoğu tarafından gerçekten istenmez / beklenmez

Ancak, yardım edemem, ancak herhangi bir yayında kullanılan kod ve verilerin kullanılabilir bir biçimde kamuya açık hale getirilmesi beklentisi olsa, CS araştırma topluluğunun fayda sağlayacağını hissediyorum. Yaptığım işin yönetilebilir olduğu zamanlarda bile kendim yapmadığımı itiraf ediyorum. Harici bir baskı olmadığında kendinizi fazladan çaba sarf etmenin zor olduğunu düşünüyorum.


7
En azından web sitelerinde bulunan (a) sözde kodun veya (b) kodun beklentisinin CS araştırma topluluğu için çok faydalı olacağını düşünüyorum. Tüm araştırma kodlarının kullanım kolaylığı yoktur ve buggy kodunu kullanıma sunmanın iyi bir şey olup olmadığından emin değilim.
Peter Shor

1
Benzer nedenlerle kodlarını serbest bırakmayan kağıt yazarlarla konuştum - içinde bulunduğu durumda, herhangi biri gerçekten bir şey yapmaya çalıştığında kendini suçlu hissederdi.
11:30

6
kodun iyi, temiz veya tekrar kullanılabilir olması gerekmez. ancak 'bilim' olarak kabul edilmek için tekrarlanabilir olması gerekir. Doğada iyi bir makale vardı Nick Barnes (2010) Bilgisayar kodunu yayınla: bu noktayı tartışmak yeterince iyi .
David LeBauer

16

Endüstriyel bir laboratuvarda çalışıyorsanız, yayınlanması için onaylanmış bir belgeyi yayınlamak için onaylanmış bir belgeye almaktan çok daha kolay olabilir (kağıt kodu yeniden yazmak için gereken tüm bilgileri içeriyor olsa bile). Bürokrasiyi suçla.


1
Elbette bu doğru olsa da, akademik araştırmacılar tarafından yönlendirilen kültürdeki uygun bir değişikliğin endüstriyel araştırmacıların kod yönetimine izin vermek için baskı yönetimine olanak sağlayıp sağlamadığını merak ediyorum. Ne de olsa, bültenleri serbest bırakma politikası almanın bile bazı şeyler alması gerektiğinden şüpheleniyorum
Suresh Venkat

6
En azından MSR'de araştırma kodunu bırakmak çok kolay. Dış kod kullanmak gerçekten zordur, çünkü MS yazılım lisanslarına saygı duymak konusunda çok dikkatlidir. Kağıtla ilgili birçok kod damlası açık bir lisans dosyası olmadan geldiğinden, bu biraz can sıkıcı olabilir. Genelde işleri düzeltmek için kağıt yazara bir e-posta gönderir, ancak OSI onaylı bir lisansı genel kod sürümünüze eklemeyi hatırlayarak endüstri araştırmacıları için kolaylaştırabilirsiniz.
Neel Krishnaswami

2
@Neel: "OSI onaylı, ancak GPL değil " mi demek istiyorsun ?
Radu GRIGore

3
GPL genellikle normaldir - çoğumuz Emacs kullanıyoruz! :) Karşılıklılık koşulları, yazılımla etkileşime giren herhangi birisine (yani, web hizmeti boşluğunu kapatması gibi) kapsadığı için, Affero GPL yazılımını kullanmamıza izin verilmez ve MS, bazı dahili sunucuların tehlikesini göze almak istemez. AGPL kodunu çalıştırmak yanlışlıkla kamuya açık hale getirilebilir. Ancak AGPL bile hiçbir lisanstan daha iyidir, çünkü bir lisans seçmek gerçekten de paylaşım şartlarını açıkça belirtmektedir.
Neel Krishnaswami,

13

Yorumdan taşındı ve genişletildi:

Bunun alt alana göre değişmesi gerektiğini düşünüyorum. Neredeyse aşina olduğum tüm Teori B makaleleri (ve özellikle Haskell, Agda ve bazen Coq ile ilgili), bazen bir ek olarak veya makalenin içinde daha iyi bir şekilde belirtilmiş olsa bile yayınlanmış kodu içerir. Örneğin, ICFP'den çok sayıda makale başlamak için okuryazar programlar olarak yazılmıştır ve kaynaklarının tamamı yazarlar tarafından yayınlanmaktadır. Bunlardan adil bir miktar dağıtım için çıkarılmış kütüphanelere yol açmıştır.

Kalan yazılardan, adil bir miktar hiçbir zaman başlayacak kod olmamıştır. Bunlardan muhtemelen iki ana nedeni var. Birincisi, ana içeriği prova ağaçları olan kağıtlar, bunlarla ilgili sağlamlık kanıtları ve benzerleriyle ilgili kurallar yazmak. Bunlardan, mekanize metatheory'deki ilerlemeler, en azından bazı yazarları kendi seçtikleri teoremi konusunda kod vermeye teşvik etti (bkz. Weirich'in POPLmark'taki slaytları: http://www.seas.upenn.edu/~sweirich/talks/cambridge-09). pdf). İkincisi, Kuş-Merteens eşyalarından (banannas & co.) Soyulmuş olanlardır. Bunlar genellikle fazla çalışmadan işlevsel bir dile çevrilebilir. Bununla birlikte, tipik olarak genel bir zayiat kaybı olduğundan şüpheliyim ve somut sözdizimi ve yazım sorunları ile uğraşmak, işleri gereksiz yere karmaşıklaştırıyor ve denklemsel akıl yürütmeyi takip etmeyi zorlaştırıyor.

Gözlemlerimi biraz doğrulamak istedim, bu yüzden ICFP 2010'un ilk iki gününü kabaca saydım. Standart gazetelerde (örneğin, raporlar veya davetli görüşmelerde bulunmadım), 21 koddan 12'si bir çeşit kod verdi. Üçü Coq sağladı (dördüncüsü kısmi bir kanıt istedi ancak yayınlamadı). Üç aşamalı Haskell. Üç Agda sağladı. Biri Scheme, biri Caml, diğeri Twelf'i sağladı. (Bazılarının birden fazla ispat asistanı için ya da hem formalizasyon hem de uygulama için kod sağladığını unutmayın). Kalan evraklardan birkaçı, bir kanıtı asistana uygulamanın kendi başına yeni bir kağıt olacağı konusunda yeterince yüksek bir soyutlama çalışması yaptı ve bir kanıtlayıcı asistana uygulanmış olabileceğinden şüphelendiğim bir çalışma daha vardı. standart teknikler, ancak bunun için kesinlikle adil bir miktarda çalışma yapmalıydı.


12

Kodun yayınlanması gerektiğine inanıyorsunuz, ancak makalelerin neden kod içermediğini soruyorsunuz. Bunlar iki farklı şey.

Çoğu zaman, önemli miktarda kod yayınlamak için yeterli alan yoktur. Araştırma alanımda (görüntü işleme) sözde kod veya mimari bilgileri çoğu zaman çok daha değerlidir ve bir makalede kod bulunmamasından dolayı kendimi asla sıkışmış bulamadım. Genellikle makaleyi kavrayan okuyucunun alıştırması olarak bırakılır.

Ancak, kağıtları göstermek için birçok kod mevcuttur. Yazarlar genellikle bir web sayfasına sahiptir ve incelenen kişi kodun kendisini denemek ve kontrol etmek için bir şansı olmasa bile, doğal seçilim oldukça iyi çalışır ve kodu yayınlamayan yazarlar çok daha az alıntı yapar.


8

Bu, bir süre önce sorulmuş olabilirdi, ancak bunun hakkında her zaman güçlü bir şekilde hissettim, bu yüzden iki sentimi vereceğim. SAT topluluğu içinde yıllarca çalıştım (artık değil). Çoğu araştırmacı nadiren kodlarını yayınlar. Kağıt algoritma ile birlikte yayınlanır, ancak SAT ile birlikte verilen (MAXSAT çözücü) kodunun, kağıt ile birlikte yayınlanan kodunu görmek çok nadirdir.

Ve gerçek şu ki, sadece makalede yayınlanan kodla , yazarın deneylerini çoğaltma şansınız asla olmayacak . Sadece yayınlanmış kodun tamamlanmadığından (elbette) değil, aynı zamanda yayınlanmış sözde kodun bile yarı doğrudan doğrudan uygulanan uygulamaya dönüştürüldüğü için değil.

Bunun arkasındaki nedeni bilmek zor ve araştırmacıdan araştırmacıya bağlı olabilir, ancak çoğunlukla iki katlıdır.

  • Birincisi, araştırmacı sürekli olarak aynı çözücü hakkında yazılar yazdıktan sonra gazeteleri yayınlayan tek bir çözücü içinde çalışmaya meyillidir ve kademeli olarak çözücünün yeni sürümlerine tercüme eden yeni özellikler ekler. Yarışma kullanacağı sağlıksız bir takıntı var senin onu uzanan ve size nedeniyle kredi (anlamı, eş-yazarlık) vermeden bildiri yayınlayarak kariyerlerini ilerletmek için çözücüsü.

  • İkincisi, bazı kodlar gerçekten (tüm yazılımlarda olduğu gibi) aceleyle yazılmıştır. Yarı pişmiş senaryolar. Test edilmemiş özellikler, vb. Bu kodu yayınlayarak, araştırmacı kendini utandıracak ve itibarını zedeleyeceğini düşünecektir.

Sizi ACM'den bu konuda son bir referansla bırakıyorum: http://cacm.acm.org/magazines/2011/5/107698-the-importance-of-reviewing-the-code/fulltext


7

Tarihsel olarak, bilimsel makalelerin kağıda basılması ve dergilerin uluslararası olarak gönderilmesi gerekiyordu. Önemli bir maliyet eklemek için kullanılan her ekstra sayfa, bu nedenle makaleler uzunluk sınırlamalarına tabi tutuldu ve basit çalışma kodları bile genellikle gayri resmi bir açıklamadan daha fazla yer kaplıyor.

Bugün, bir algoritmaya referans veren herhangi bir makaleye kod eklememek için iyi bir neden yoktur.

Ayrıca pdf ve postscript gibi baskı odaklı formatları, anlamsal olarak daha bilinçli formatlar lehine (MathML'li HTML veya belki de Mathematica'nın açık kaynaklı bir varyasyonu) terk etmek de faydalı olabilir.


8
İlk iki paragraf için +1, son paragraf için -1. LaTeX'imi soğuk ölü ellerimden kaldırırken çıkarabilirsin.
Jeffε

2
... şimdi bol okur LaTeX programlama sağlamak için kullanılabilir araç vardır
sclv
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.