W mojej karierze akademickiej przeczytałem sporo artykułów naukowych na różne tematy informatyczne. Wiele z nich obejmuje implementację i pewną ocenę tej implementacji, ale odkryłem, że bardzo niewielu z nich faktycznie publikuje używany kod.
Dla mnie korzyści płynące z włączenia faktycznego wdrożenia byłyby znaczące, a mianowicie:
- Rozszerzenie zaufania lub odtwarzalności (po prostu przetestuj sam!)
- Wyjaśnienie dwuznaczności (szczególnie w przypadku artykułów napisanych przez osoby nie będące rodzimymi użytkownikami języka)
- Ponowne użycie kodu dla aplikacji
Dlaczego więc tak niewiele artykułów zawiera kod?
Przypuszczam, że organizacją stojącą za tym dokumentem może być wykorzystanie implementacji we własnych aplikacjach, a zatem nie chciałbym jej wypuszczać, ale jeśli tak, to po co pisać artykuł?
soft-question
research-practice
paper-review
Kevin Dolan
źródło
źródło
Odpowiedzi:
Oto dobrze uzasadniony artykuł Davida Donoho i Jonathana Buckheita, który przeczytałem w szkole, który porusza dokładnie ten temat z punktu widzenia badaczy falek:
„WaveLab i powtarzalne badania”
Ich pomysł był jeszcze bardziej ambitny, aby zapewnić kod do reprodukcji wszystkich cyfr z ich dokumentów w wygodnym pakiecie Matlaba.
Naprawdę podoba mi się ich pomysł, ale myślę, że problemy są oczywiste.
(1) Jest to dodatkowa praca (czyszczenie kodu, tworzenie przynajmniej podstawowego interfejsu użytkownika, pisanie dokumentacji, zapewnianie wsparcia, gdy ludzie nieuchronnie napotykają problemy)
(2) Tak naprawdę nie jest to wymagane / oczekiwane przez większość konferencji / recenzentów
Ale nie mogę się oprzeć wrażeniu, że społeczność badawcza CS skorzystałaby, gdyby spodziewano się, że kod i dane wykorzystane w dowolnej publikacji będą publicznie dostępne w użytecznym formacie. Przyznaję, że sam tego nie zrobiłem, nawet jeśli wymagałoby to nakładu pracy. Myślę, że trudno jest zmusić się do dodatkowego wysiłku, gdy nie ma zewnętrznego pchnięcia.
źródło
Jeśli pracujesz w laboratorium przemysłowym, uzyskanie zatwierdzenia dokumentu do wydania może być o wiele łatwiejsze niż zatwierdzenie kodu do wydania (nawet jeśli artykuł zawiera wszystkie informacje potrzebne do przepisania kodu). Obwiniaj biurokrację.
źródło
Przeniesiono i rozwinięto z komentarza:
Myślę, że to musi się różnić w zależności od podpola. Prawie wszystkie rzeczy z teorii B, które znam (a zwłaszcza Haskell, Agda, a czasem związane z Coq), zawierają opublikowany kod, czasem nawet jako dodatek lub lepiej, ale jeszcze w tekście. Spora liczba artykułów, np. Z ICFP, jest pisana jako programy piśmienne na początek, a ich źródło w całości jest publikowane przez autorów. Spora ich liczba zaowocowała wyodrębnieniem bibliotek do dystrybucji.
Spośród pozostałych artykułów na początku nigdy nie było kodu. Spośród nich prawdopodobnie są dwa główne powody. Najpierw są artykuły, których główną zawartością są drzewa próbne, reguły pisania z powiązanymi proofami dźwiękowymi i tym podobne. Wśród nich postępy w zmechanizowanej metateorii zachęciły przynajmniej niektórych autorów do podania kodu w twierdzeniu, że jest wybieranym przez siebie wyborem (patrz slajdy Weiricha na POPLmark: http://www.seas.upenn.edu/~sweirich/talks/cambridge-09. pdf). Drugie to te, które wywodzą się z materiału Bird-Merteens (banannas & co.). Można je przełożyć na funkcjonalny język bez zbytniego nakładu pracy. Podejrzewam jednak, że zazwyczaj następuje utrata ogólności, a zajmowanie się konkretnymi problemami składni i pisania niepotrzebnie komplikuje rzeczy i utrudnia podążanie za rozumowaniem równań.
Chciałem trochę uzasadnić swoje spostrzeżenia, podobnie jak z grubsza liczba pierwszych dwóch dni ICFP 2010. Spośród standardowych artykułów (tj. Brak raportów z raportów lub zaproszonych rozmów) 12 z 21 dostarczyło jakiś kod. Trzy dostarczyły Coq (czwarty twierdził, że jest to częściowy dowód, ale go nie opublikował). Trójstronny Haskell. Trzy dostarczone Agda. Jeden dostarczył Schemat, jeden dostarczył Camla, a drugi Twelf. (Należy pamiętać, że niektóre zawierały kod dla więcej niż jednego asystenta dowodu lub zarówno dla formalizacji, jak i wdrożenia). Z pozostałych prac kilka pracowało na wystarczająco wysokim poziomie abstrakcji, że wdrożenie go w asystencie dowodowym samo w sobie byłoby nowym referatem, a sporo innych pracowało, co, jak podejrzewam, mogło zostać zaimplementowane w asystencie dowodowym, używając standardowe techniki, ale z pewnością wymagałoby to sporo pracy.
źródło
Uważasz, że kod powinien zostać opublikowany, ale pytasz, dlaczego artykuły nie zawierają kodu. To są dwie różne rzeczy.
W większości przypadków po prostu brakuje miejsca na opublikowanie znacznej ilości kodu. W mojej dziedzinie badań (przetwarzanie obrazu) pseudokod lub informacje o architekturze są często o wiele cenniejsze i nigdy nie utknąłem z powodu braku kodu w dokumencie. Często jest to ćwiczenie dla czytelnika, który zrozumiał artykuł.
Istnieje jednak wiele kodów ilustrujących artykuły. Autorzy zwykle mają stronę internetową i nawet jeśli recenzent nie ma szansy na sprawdzenie samego kodu, naturalna selekcja wydaje się działać całkiem dobrze, a autorzy, którzy nie publikują kodu, są o wiele mniej cytowani.
źródło
Mogłem o to zapytać już dawno temu, ale zawsze mocno o tym myślałem, więc dam dwa centy. Pracuję od lat (już nie) w społeczności SAT. Większość badaczy rzadko publikuje swój kod. Artykuł jest publikowany wraz z algorytmem, ale bardzo rzadko można zobaczyć rzeczywisty kod solvera SAT (solvera MAXSAT) itp., Opublikowanego wraz z artykułem.
Rzeczywistość jest taka, że dzięki samemu kodowi opublikowanemu w artykule nigdy nie będziesz mieć szansy na odtworzenie eksperymentów autora. Nie tylko dlatego, że opublikowany kod nie jest kompletny (oczywiście), ale także dlatego, że nawet opublikowany pseudo-kod rzadko tłumaczy pół-bezpośrednio na to, co jest faktycznie zaimplementowane.
Powód tego jest trudny do poznania i może zależeć od badacza do badacza, ale głównie jest dwojaki.
Po pierwsze, badacz ma tendencję do ciągłej pracy w pojedynczym rozwiązaniu, publikując artykuły po artykułach na tym samym rozwiązaniu i stopniowo dodając nowe funkcje, które przekładają się na nowe wersje rozwiązania. Istnieje niezdrowa obsesja na punkcie tego, że konkurencja wykorzysta twój solver do dalszego rozwoju kariery, przedłużając go i publikując artykuły bez należnego uznania (znaczenie, współautorstwo).
Po drugie, niektóre kody są naprawdę (jak w przypadku wszystkich programów) pisane w pośpiechu. Na wpół upieczone skrypty. Niesprawdzone funkcje itp. Publikując ten kod, badacz poczułby, że zawstydziłby siebie i zaszkodziłby ich reputacji.
Pozostawiam wam najnowsze odniesienie do tego od ACM: http://cacm.acm.org/magazines/2011/5/107698-the-importance-of-reviewing-the-code/fulltext
źródło
Historycznie artykuły naukowe musiały być drukowane na papierze, a czasopisma były wysyłane na cały świat. Każda dodatkowa strona powodowała znaczny koszt, dlatego artykuły podlegały ograniczeniom długości, a nawet prosty działający kod zwykle zajmuje dużo miejsca niż nieformalny opis.
Dzisiaj nie ma dobrego powodu, aby nie umieszczać kodu w żadnym artykule odwołującym się do algorytmu.
Przydatne może być także porzucenie formatów zorientowanych na druk, takich jak pdf i postscript, na rzecz formatów bardziej świadomych semantycznie (HTML z MathML lub być może wariantem Mathematica typu open source).
źródło