Pytanie:
Dlaczego prace bez kodu, ale z wynikami są akceptowane?
Sam Stoelinga
2014-06-11 19:23:29 UTC
view on stackexchange narkive permalink

Właśnie zacząłem czytać kilka artykułów (informatyka, a konkretnie Computer Vision) i pomyślałem „teraz spójrzmy na kod źródłowy” i byłem dość zdumiony, że większość artykułów nie ma żadnego kodu źródłowego implementującego opisane metody w, twierdząc, że mają jakieś wyniki lub będąc lepszymi od innych artykułów.

W jaki sposób te artykuły są akceptowane w czasopismach / na konferencjach? Czy ludzie muszą przesyłać swój kod źródłowy przynajmniej prywatnie recenzentom, aby mogli odtworzyć eksperyment, jeśli to możliwe.

Większość czasopism / konferencji po prostu „wierzy”, że ludzie, którzy przesyłają artykuł, naprawdę wdrożyli Teoria i otrzymałem dokładne wyniki?

Zawsze myślałem, że każdy eksperyment powinien być powtarzalny przez innych, w przeciwnym razie nie jest naukowo uzasadniony. Zastanawiałem się nad tym przez ostatnie kilka dni.

Ludzi z mojego obszaru badań tak naprawdę nie obchodzi kod użyty do uzyskania wyników; koncepcje kryjące się za kodowaną implementacją są ważniejsze. Zakłada się, że każdy, kto posiada wiedzę w tej dziedzinie, może stworzyć kod w wybranym przez siebie języku, o ile pojęcia (opisy algorytmów itp.) Są wyjaśnione w bardzo jasny i jasny sposób.
Powiązane: [Jak czasopisma akademickie chronią przed wynikami empirycznymi podawanymi przez błędy?] (Http://academia.stackexchange.com/questions/18117/how-do-academic-journals-protect-against-empirical-results-given-by -robaki)
Zauważ, że problem nie jest specyficzny dla kodu komputerowego, ale przebiega analogicznie, jak w przypadku pracy laboratoryjnej. Nawet jeśli procedury / protokoły są szczegółowo opisane, nie ma możliwości dowiedzenia się, czy osoba, która wykonała pracę, skrupulatnie przestrzegała protokołów.
To jest naprawdę zbyt niejasne, aby pozwolić na możliwą odpowiedź. O jakim „kodzie” mówisz?
* „Czy większość czasopism / konferencji po prostu„ wierzy ”, że ludzie, którzy przesłali artykuł, naprawdę wdrożyli teorię i otrzymali dokładne wyniki?” * Takie jest moje wrażenie i wcale mi się to nie podoba, zwłaszcza gdy fundusze na to wyprodukowanie realizacja pochodzi ze środków publicznych. Jeśli finansowanie jest * publiczne *, kod powinien być * publiczny *. Jeśli chcesz * opublikować * artykuł o systemie, kod powinien być * opublikowany *. Niestety rzadko się to zdarza.
BTW: zobacz także tę powiązaną odpowiedź: http://academia.stackexchange.com/questions/13726/should-i-supply-code-as-supplemental-material/13730#13730
@user11192 Hmm, w praktyce może to czasem sprawiać problemy. Zwłaszcza, że ​​czasu jest zawsze mało. Oto przykład http://iopscience.iop.org/1367-2630/7/1/034 :)
@posdef: Labwork * nie * jest analogiczne. Możesz łatwo udostępnić kod online, aby każdy mógł go pobrać, przeczytać, przetestować i używać. Nie możesz zrobić tego samego z pracą laboratoryjną. Dlatego musimy ufać Twojemu słowu w pracy laboratoryjnej, ale nie ma potrzeby ufać Twojemu słowu w kodzie.
@JukkaSuomela Rozumiem, o co ci chodzi, ale jedna _mogłaby_ nagrać wideo samemu wykonując pracę laboratoryjną i umieścić ją w Internecie. Nie mówię, że to ma sens, po prostu mówię, że jest to możliwe.
@JukkaSuomela Chodzi o to, że cały system publikacji akademickich opiera się na (stosunkowo) krótkich streszczeniach i dużym zaufaniu. Praca laboratoryjna jest trochę bardziej niejasna, ale naukowcy zazwyczaj nie publikują również surowych danych ani dzienników. W przypadku publikacji elektronicznych, materiałów uzupełniających itp. * Może * wyglądać inaczej, ale analogia jest nadal aktualna.
Nie znam żadnych nauk, w których przegląd przed publikacją wiąże się z odtworzeniem eksperymentów - eksperymenty powinny być powtarzalne w rozsądny sposób, ale nie oczekuje się, że recenzenci faktycznie zrobią to przed publikacją, a inne grupy badawcze powinny to zrobić później. Jednak to, co * jest * potrzebne, to szczegóły dotyczące procesu pomiarowego i zestawu testowego - abym mógł uzyskać porównywalne wyniki z ponownego wdrożenia metodologii w pomieszczeniach czystych. I tylko w ten sposób można nazwać eksperyment odtwarzalnym - użycie kodu nie jest takie, ponieważ może działać nieco inaczej niż opisano.
Ponowne uruchomienie programu i tak nie byłoby właściwą weryfikacją. Jeśli implementacja zawiera błędy, ponowne uruchomienie nadal daje nieprawidłowe wyniki. Ponowne wdrożenie jest właściwą weryfikacją. Powtarzalność oznacza, że ​​jest to wystarczająco jasno wyjaśnione, aby umożliwić ponowną implementację. Jasny opis jest znacznie bardziej pomocny w odtwarzaniu wyników niż kod. Kod jest przeznaczony do uruchamiania komputerów, a nie do czytania przez ludzi. (Pamiętaj: w zdecydowanej większości przypadków ten kod jest implementowany przez jedną osobę i nie jest przeznaczony do konserwacji, nie jest to „inżynieria oprogramowania”). Artykuł jest przeznaczony dla ludzi do czytania.
Jestem geofizykiem, który pisze dużo kodu do modelowania. Ale sam kod jest szczerze nieistotny. Liczy się idea kodu. Z drugiej strony, jeśli chcesz, aby Twój model (nie kod) został zaakceptowany, lepiej pokaż weryfikację, czy działa przeciwko czemuś znanemu lub wcześniej zweryfikowanemu. Żaden recenzent nie wypuści papieru modelowego bez etapu weryfikacji.
@posdef W rzeczywistości istnieje czasopismo poświęcone „nagrywaniu wideo podczas pracy w laboratorium” - JoVE. http://www.jove.com
@Szabolcs Jestem z wami - w mojej dziedzinie „odtwarzalność” w odpowiedniej formie oznacza możliwość przeprowadzenia porównywalnych badań na zupełnie innej populacji. „Potrafię kliknąć i uzyskać tę samą odpowiedź” to niska i podstawowa forma powtarzalności. I to ignoruje perspektywę danych, których * nie mogę Ci udostępnić *, których kod wymaga do uruchomienia.
@Trylks, Zgadzam się z tobą w 100%, gdyby to zależało ode mnie ... bez kodu, bez funduszy publicznych ... na cokolwiek CS. Jestem również głęboko przekonany, że wielu studentów podejmuje tajne badania finansowane ze środków publicznych i wskakuje bezpośrednio na rynek prywatny ze swoimi „dobrami”. Nie mam problemu z komercjalizacją pracy publicznej przez kogoś, dlatego zaczynamy to finansować ... ale nie jestem w porządku z finansowanym ze środków publicznych wyprzedzeniem zapewnianym przez kod. Nie obchodzi mnie, czy jest to użyteczne, praktyczne ... lub całkowicie bezużyteczne. kupiliśmy, to od nas zależy, czy będzie to wartość.
Wszystko zależy od tego, jak dające się udowodnić wyniki. Jeśli są to twierdzenia matematyczne, wymagany jest dowód matematyczny, a nie uruchamianie kodu (chyba że jest to kod do dowodzenia twierdzeń).
@Szabolcs „Powtarzalność oznacza, że ​​jest wyjaśniona wystarczająco jasno, aby umożliwić ponowną implementację”. Najlepszym wyjaśnieniem jest sam kod, kod powinien być czytany. Jeśli stawiasz na ilość (dwa wyjaśnienia, jedno w języku angielskim, jedno w kodzie), wówczas jakość prawdopodobnie spadnie z powodu napiętych terminów. Jeśli chcesz nadać priorytet jednemu wyjaśnieniu jakości, powinien to być kod. W teorii teoria i praktyka to to samo, ale w praktyce bardzo się różnią. Lekceważenie praktyki prowadzi do zamknięcia się w „wieży z kości słoniowej”.
@Trylks Ale co, jeśli naprawdę interesujesz się teorią i w tym jesteś dobry? Sugerujesz, że „wieża z kości słoniowej” jest zła, a praktyka jest dobra, ale czy każdy informatyk na świecie powinien poświęcić czas i zasoby na produkcję oprogramowania klasy produkcyjnej lub wydzielanie firm?
@Relaxed Powiedziałbym, że praca informatyka polega na tworzeniu oprogramowania. Widziałem artykuły, w których proponowano coś w teorii, a ten sam autor starał się uzyskać działającą implementację (i jeszcze jej nie widziałem). Co byśmy powiedzieli, gdyby wydarzyło się to w innych obszarach? Pomyśl o osobie, która twierdzi, że wyleczyła raka (w teorii), ale próbując wziąć to w życie, okazuje się, że _ empirycznie_ nie działa (i zabija ludzi z wielkim bólem). Nierzadko zdarza się, że naukowcy nie mogą „prowadzić” własnych badań, należy podkreślić i egzekwować „odtwarzalność”.
@Trylks Myślę, że twoja analogia jest bardzo wymowna. Jest wiele badań w biologii raka, których celem nie jest natychmiastowe wyleczenie. Nawet wąsko zdefiniowane badania medyczne nie ograniczają się do badań klinicznych gotowych do przetestowania leków, a różne osoby prowadzą różnego rodzaju badania (np. Jedni specjalizują się w badaniach klinicznych, inni w różnych podobszarach biologii). Jeśli jest empiryczny, powinien być tak powtarzalny, jak to tylko możliwe, ale nie wszystko jest lub powinno dotyczyć zastosowań praktycznych (medycznych lub innych) i nie sądzę, aby CS dotyczyło tylko tworzenia oprogramowania.
Muszą ująć to bardziej wstępnie niż „wyleczyliśmy raka”, ale ludzie rzeczywiście przez cały czas publikują artykuły bez przechodzenia przez całą drogę do badania klinicznego rzeczywistej cząsteczki (wdrożenie, jeśli wolisz).
@Relaxed Podsumowałbym to w następujący sposób: „kod albo to się nie stało”.
@Trylks Tyle się domyśliłem ;-) Ale nie tak działają badania (lub powinny działać, IMO).
„Ponowne uruchomienie programu i tak nie byłoby właściwą weryfikacją. Jeśli implementacja zawiera błędy, ponowne uruchomienie nadal daje błędne wyniki” Jeśli implementacja zawiera błędy, wyniki mogą być oparte na błędzie, dlatego wyniki nie powinnynie można ufać.
Dwanaście odpowiedzi:
Piotr Migdal
2014-06-11 19:49:47 UTC
view on stackexchange narkive permalink

Wydaje mi się, że powody są dwa:

  • przekonanie, że kod jest tylko narzędziem, a konkretna implementacja jest drugorzędna w stosunku do pomysłu lub algorytmu,
  • pozostałości historyczne (drukowanie wielu stron było niepraktyczne; zwłaszcza, że ​​nikt nie mógł ich skopiować i wkleić).

Dodatkowo:

Ponadto kwestie związane z bieżącymi zachętami w środowisku akademickim (gdzie publikacje, a nie kod, są związane z możliwościami kariery):

  • udostępnianie kodu może oznaczać ryzyko, że zostanie on wykorzystany (zamiast doić ten sam kod przez lata),
  • czyszczenie kodu wymaga czasu, który można wykorzystać do napisania kolejnych publikacji.

Czy ludzie muszą przesyłać swój kod prywatnie do r przynajmniej eviewers, aby mogli odtworzyć eksperyment, jeśli to możliwe.

Zazwyczaj - nie. Jeśli kod nie jest upubliczniony, prawie na pewno żaden recenzent nie sprawdził jego istnienia; znacznie mniej - poprawność.

Jednak wielu naukowców zaczyna dostrzegać problem (i widzą, jak kwitnie kultura open source). Tak więc pojawiły się nowe inicjatywy dotyczące tego problemu, takie jak Science Code Manifesto:

Oprogramowanie jest kamieniem węgielnym nauki. Bez oprogramowania nauka XXI wieku byłaby niemożliwa. Bez lepszego oprogramowania nauka nie może się rozwijać.

Lub np. ten manifest. Spróbuj poszukać powtarzalnych badań lub przejrzyj rzeczy, takie jak knitr for R i to wprowadzenie do IPython Notebook, lub przeczytaj o używaniu GitHub dla nauki. I wygląda na to, że startuje.

+1. Dla mnie szczególnie czas poświęcony na sprzątanie jest głównym punktem. Mimo że większość analiz wykonuję już jako pliki `knitr` .Rnw. Ale nadal istnieje zasadnicza różnica między w zasadzie scenariuszem z kilkoma nagłówkami a czymś, co może przejść do materiału uzupełniającego.
Jak więc recenzenci potwierdzają, że wyniki podane w konkretnym artykule są prawidłowe? Bez kodu źródłowego do weryfikacji wyników, jak mogą stwierdzić, że jest poprawny?
@Zindarod Niestety nie.
@Zindarod: Przepisują to. Jeśli otrzymają te same wyniki, oznacza to, że obaj nie mieli (lub identyczne) ale. Gdyby podano źródło, weryfikacja, czy źródło dostarczyło wyniki, byłaby łatwa, ale _nie_ to nie pokazuje, że _ teoria_ daje te wyniki, ponieważ w kodzie mógł być błąd.
@MooingDuck Masz na myśli, że każdy artykuł przepisuje kod źródłowy od zera? Wdrażam artykuł w mojej codziennej pracy i większość miesiąca zajęło mi zrozumienie tego artykułu. Recenzenci przechodzą przez ten proces w przypadku każdego artykułu?
@Zindarod to interesujące nowe pytanie.
@Zindarod Recenzja przed publikacją nie ma na celu usunięcia błędów, takich jak to, co opisujesz. Recenzja przed publikacją sprawdza tylko, czy metoda eksperymentalna jest poprawna, czy wniosek jest zgodny z deklarowanymi wynikami, czy podjęto odpowiednie decyzje dotyczące zbiorów danych, porównań i testów statystycznych. Powielanie odbywa się po publikacji, tak jak w każdej innej dziedzinie.
@Articuno Dziękuję, to ładnie to wyjaśniło.
Oczyszczanie kodu również może być dosłownie trudne do wykonania. Na moim studiach grupa CV miała wewnętrzną * bibliotekę *, która liczyła co najmniej kilkadziesiąt tysięcy wierszy, które poważnie wymagały uporządkowania. Ale oczyszczenie go zajęłoby miesiące i wymagałoby niezliczonej liczby realizowanych projektów w trakcie jego refaktoryzacji. Ponieważ wszelkie pochodzące z nich badania nadające się do publikacji prawie na pewno zawierały części tego kodu biblioteki, cóż ...
@Jsor W każdym razie brudny kod jest nieskończenie lepszy niż brak kodu. „Ponieważ wszelkie publikowane przez nich badania prawie na pewno zawierały fragmenty tego kodu biblioteki…”, więc uporządkowanie go przez kilka miesięcy może być tego warte.
@PiotrMigdal Cóż, zgadzam się z tobą co do zasady, ale biblioteka miała w pełni połączony wykres zależności i domowy system budowania podobny do cmake (tak, zbudowanie czegokolwiek zajęło wieki), więc opublikowanie wymaganego fragmentu kodu dotyczyło również zhakowanego razem budują narzędzia i fakt, że wypuszczenie dowolnej części wiązało się z wydaniem KAŻDEJ części, aby mogła się nawet skompilować.
Myślę, że zrzuty kodu powinny być normą w środowisku akademickim.Celowe powstrzymywanie się od wycofywania kodu, ponieważ mogą wystąpić błędy i uniemożliwianie innym osobom postępu w pracy, jest zrozumiałe, jeśli zrzuty kodu nie są wymagane, ale powinny być wymagane
user1482
2014-06-11 20:02:45 UTC
view on stackexchange narkive permalink

O jakiej dziedzinie mówisz? Artykuł CS opisujący projekt i działanie algorytmu widzenia komputerowego różni się od artykułu socjologicznego, który wykorzystywał arkusz kalkulacyjny do analizowania danych demograficznych.

W większości czasopism / konferencji po prostu „ufają” ludziom, którzy czy zgłosić, że artykuł naprawdę wdrożył teorię i uzyskał takie dokładne wyniki?

Tak. Zakłada się zawsze, że nie ma tu żadnego oszustwa naukowego.

Zawsze myślałem, że każdy eksperyment powinien być odtwarzalny przez innych, w przeciwnym razie nie jest naukowo uzasadniony.

Jeżeli algorytmy są w pełni opisane w artykule, to wynik jest powtarzalny. Aby to odtworzyć, musisz ponownie zaimplementować algorytm.

Właśnie zacząłem czytać kilka artykułów i pomyślałem, że teraz spójrzmy na kod i byłem dość zdumiony, że większość artykułów nie ma żadnego kodu do obejrzenia, twierdząc jednocześnie, że jest lepszy od innych artykułów.

Przypuszczalnie lepsza wydajność wynika z tego, że algorytm opisany w artykule jest bardziej wydajnym algorytmem. Na przykład podczas sortowania dużej ilości danych sortowanie szybkie jest lepszym algorytmem sortowania niż sortowanie bąbelkowe. Szybkie sortowanie ma średnią wydajność O (n log n), podczas gdy sortowanie bąbelkowe ma O (n ^ 2) i jest to prawda niezależnie od szczegółów implementacji.

Jednak szczegóły implementacji mogą wpływać na stałe, które są pomijane w notacji Big-O, więc bezpośrednie porównywanie wyników wydajności między dwoma algorytmami bez wglądu w rzeczywisty kod może być problematyczne.
Aby dodać do tego: w niektórych przypadkach może być nawet łatwiej zweryfikować wyniki poprzez ponowne wdrożenie algorytmu niż zrozumienie implementacji autora.
_Jeśli algorytmy są w pełni opisane w artykule, to wynik jest powtarzalny. Aby to odtworzyć, musisz ponownie zaimplementować algorytm. Ale znając ludzi, którzy próbowali ponownie zaimplementować pewne rzeczy w ekonomii lub fizyce, opisy są _ rzadko_ wystarczająco kompletne, aby odtworzyć dokładne wyniki. Kod nie kłamie. Tekst może (nawet jeśli wszystko jest w dobrej wierze i przy wysokim poziomie kontroli, nie kompilujesz tekstu).
Popieram komentarz Piotra i dodam, że nie tylko potrzebujesz kodu, ale potrzebujesz zestawu testów, aby upewnić się, że kod faktycznie działa. I tak, opis algorytmu w artykule, z mojego doświadczenia, rzadko jest na tyle kompletny, aby można go było zaimplementować ponownie od zera, chyba że jest to bardzo prosty algorytm. Oczywiście o wiele lepiej jest uruchomić jakiś kod niż reimplementować algorytm.
* Szczegóły implementacji mogą jednak mieć wpływ na stałe, które są pomijane w notacji Big-O * Jasne. Ponadto sprzęt używany do uruchamiania kodu będzie miał wpływ na stałą. Jeśli artykuł został napisany n lat temu, kod będzie działał szybciej na dzisiejszym sprzęcie dzięki pewnym czynnikom wynikającym z prawa Moore'a. Dlatego informatycy zazwyczaj nie są zbyt zainteresowani oceną skuteczności algorytmu na podstawie czasu zegarowego i dlatego zazwyczaj interesują ich właściwości algorytmu, a nie właściwości konkretnej implementacji.
@BenCrowell Nie, nie sugeruję kodu zamiast opisu. Proponuję razem z tym. Zwłaszcza w nie-CS, gdzie ludzie są bardziej `` technicznymi '' algorytmami (np. Ta demografia zbiera wiele niejawnych założeń, konwersje danych itp.) I nie mają zwyczaju opisywać ich w najdrobniejszych szczegółach. I wiem, co to jest Big-O i dlaczego czas w sekundach nie jest dobrą miarą wydajności danego algorytmu.
@Trylks:, całkiem sporo badań finansowanych ze środków publicznych, jest finansowanych przy założeniu, że badania powinny w jakiś sposób przynieść korzyści ekonomiczne. Na przykład. albo przez firmy typu spin-off, albo prosząc o częściowe finansowanie przez branżę (zauważ, że np. publiczne finansowanie Niemieckiego Towarzystwa Fraunhofera jest powiązane z kwotą pieniędzy, którą nabywają od stron trzecich / przemysłu) itp. Możesz rozpocząć dyskusję polityczną jaki rodzaj badań powinien być finansowany, ale dopóki cele związane z przemysłem są akceptowane jako uzasadnione, potrzebny jest jakiś kompromis w zakresie publicznego dostępu do utworu.
... co nie oznacza, że ​​nie zalecam publikowania kodu analizy danych lub przynajmniej wewnętrznego stosowania powtarzalnych technik badawczych, kontroli wersji itp. Myślę, że już taka wewnętrzna reprokucalność (która wymagałaby zadawania pytań nas w zakresie danych i kodu - tak samo, jak być może będziesz musiał nas zapytać, czy możesz nas odwiedzić, aby nauczyć się technik laboratoryjnych) byłby dużym krokiem naprzód. I ten krok jest możliwy bez wchodzenia na pola minowe praw własności intelektualnej ...
- Tak. Zawsze zakłada się, że nie ma tu żadnego oszustwa naukowego. - wydaje mi się to dziwne i prawdopodobnie szkodliwe założenie do recenzji.
Dikran Marsupial
2014-06-11 23:29:36 UTC
view on stackexchange narkive permalink

Myślę, że jest to kwestia związana z problemem podniesionym przez Piotra (+1), który polega na tym, że fundusze na badania nie są ogólnie dostępne na pokrycie kosztów produkcji wysoce niezawodnego kodu przenośnego lub kosztów utrzymania / obsługi kodu stworzonego do „badań jakość". Stwierdziłem, że jest to znaczący problem, gdy próbuję użyć kodu wydanego przez innych badaczy z mojej dziedziny; zbyt często nie mogę uruchomić ich kodu, ponieważ korzysta z biblioteki innej firmy, która nie jest już dostępna lub która działa tylko na komputerze z systemem Windows lub która nie działa już w mojej wersji oprogramowania, ponieważ używa niektórych przestarzałych cecha języka / środowiska. Jedynym sposobem obejścia tego problemu jest ponowne zaimplementowanie procedur z biblioteki innej firmy, tak aby cały kod był dostarczany jako pojedynczy monolityczny program. Ale kto ma na to czas w niedofinansowanym środowisku „publikuj lub giń”?

Jeśli społeczeństwo chce, aby każdy artykuł zawierał kod wysokiej jakości, to społeczeństwo musi udostępnić fundusze, aby dobrzy inżynierowie oprogramowania mogli pisać go i utrzymuj. Zgadzam się, że to byłaby dobra rzecz, ale nie wiąże się to z zerowymi kosztami.

To, co mówisz, w rzeczywistości przemawia przeciwko publikowaniu kodu, ponieważ prawdopodobnie stanie się on przestarzały lub napotka problemy z przenośnością. Moim zdaniem liczy się teoria stojąca za wdrożeniem i nie sądzę, aby fundusze na badania były przeznaczone na rozwój solidnego, niezależnego od platformy, często aktualizowanego oprogramowania. To jest praca branży oprogramowania.
Nie do końca się z tym zgadzam. Powodem, dla którego publikujemy artykuły, jest to, że inni badacze podejmują nasze pomysły i biegają z nimi. Dobrym sposobem na upewnienie się, że tak się stanie, jest upewnienie się, że dostępne są wymagane narzędzia. Dlatego często istnieje dobry powód, aby zapewnić narzędzia, które są * odpowiednie * do tego celu, ale nadal wiąże się to z kosztem, który nie jest obecnie pokrywany. Nie musimy produkować kodu jakości produkcyjnej, ale potrzebujemy funduszy, aby wyprodukować kod odpowiedniej jakości (z punktu widzenia przenośności i rozsądnej trwałości).
@DikranMarsupial: „aby inni badacze podjęli nasze pomysły i pracowali z nimi” - brzmi to bardzo prosto, jakby wystarczyło opublikować swój kod i bezpośrednio umożliwiłoby innym badaczom budowanie na jego podstawie. Jest to jednak powiązane z * wieloma * if w rzeczywistości - działa tylko * jeśli * inni badacze znają technologie użyte w kodzie, * jeśli * cokolwiek innego, co chcą połączyć z tym kodem, jest kompatybilne, * jeśli * kod działa w ogóle na swojej platformie itp.
@O.R.Mapper, brakuje Ci sedna, jeśli podasz kod, innym łatwiej będzie budować na podstawie Twojej pracy. O ile łatwiejsze zależy od wielu czynników, ale jeśli przeczytasz moją odpowiedź, okaże się, że podniosłem już te same kwestie! Nie powiedziałem też, że wystarczy opublikować kod - nie jest, kod wspiera publikację, nic więcej. Im więcej możesz zrobić, aby złagodzić „jeśli”, tym lepiej, ale pod koniec dnia pracujesz nad budżetem czasu i wysiłku, więc zawsze będzie „jeśli” zostanie, ale to nie znaczy nie powinieneś rozdawać kodu badawczego.
Kod NIE musi spełniać żadnych standardów jakości kodu. O ile kod daje wyniki zgodnie z obietnicą w artykule. Pozwól inżynierom oprogramowania zoptymalizować lub przepisać kod.
rumtscho
2014-06-12 01:32:50 UTC
view on stackexchange narkive permalink

Wydaje się, że myślisz, że powinniśmy zażądać kodu, ponieważ bez kodu każdy szalony wynik, czy to oszustwo, czy szczery błąd, może zostać wrzucony do dziennika. Ale tak nie jest. Dołączanie kodu to przyjemna do posiadania funkcja, a nie funkcja obowiązkowa. Inne odpowiedzi po cichu zakładają to i wyjaśniają (dobre i niezbyt dobre) powody, które prowadzą do obecnej sytuacji rzadko dołączanego kodu. Myślę, że mogę je uzupełnić, wyjaśniając, dlaczego nie jest to funkcja obowiązkowa.

Aby uzyskać teoretyczne wyniki, nie potrzebujesz żadnych narzędzi empirycznych, takich jak kod, aby je odtworzyć, jak wspominali inni (np. udowodnienie, że algorytm ma lepsze zachowanie duże O niż inne). Oczywiście są też wyniki empiryczne, których nie da się powtórzyć w ten sposób.

Ale recenzenci będą mieli oczekiwanie, co zaowocuje Twoim pomysłem. Jeśli aktualna najlepsza wydajność dla trzepania zumów wynosi 3 zumy / s, i dodasz drobne poprawki i zgłosisz 300 zum / s, Recenzenci powinni zauważyć, że Twoje roszczenie jest nietypowe i coś zrobić (ewentualnie zażądać ponownego przesłania wraz z kodem). Nie jest to niezawodne, ale przy wielu recenzentach na artykuł jest skuteczne, ponieważ wielkość większości wyników empirycznych jest przewidywalna, gdy recenzent zobaczy pomysł i zrozumie, jak działa.

W przypadku tej klasy artykułów zarówno uczciwe, jak i nieuczciwe błędy mają duże szanse na złapanie, co prowadzi do złych wyników dla uczciwych naukowców (utrata reputacji, zwłaszcza jeśli złapie się je po publikacji) i gorsze dla nieuczciwych naukowców (koniec kariery, jeśli zostanie udowodnione!). Co więcej, im większy błąd (mierzony wielkością błędu), tym większa szansa na złapanie. Jest mniej prawdopodobne, że zostaniesz złapany, jeśli twój algorytm zarządza 4 zumami / s i zgłosisz 5 zumów / sekundę, niż gdybyś zgłosił 300 zumów / s. Dlatego naukowcy są zniechęceni do przesyłania nieprawidłowych artykułów, pozostawiając mniej niepoprawnych w przesłanej puli, a recenzenci łapią wiele pozostałych.

Są przypadki, w których zupełnie nie wiadomo, dlaczego obserwacja jest taka, jaka jest, iw takich przypadkach bardzo ważne jest, aby dokładnie opisać dokładną konfigurację testu. Ale nigdy nie widziałem tego rodzaju pracy w informatyce, jest ona związana z naukami przyrodniczymi. Więc nie ma tam kodu. Nawet jeśli uzyskałeś takie wyniki w informatyce (np. Zaobserwowałeś, że użytkownicy są w stanie przeczytać 12000 słów EULA w mniej niż 30 sekund, co jest sprzeczne z powszechnymi obserwacjami szybkości czytania i nie masz na to wyjaśnienia), jest mało prawdopodobne, że uwzględnienie kod użyty do uzyskania wyniku będzie dotyczył replikacji.

Podsumowując, pośród dużej masy prac informatycznych, te teoretyczne i te dotyczące obserwacji zjawisk naturalnych nie wymagają włączenia kodu do replikacji, a pozostałe będą zawierać tylko niewielką procent niepoprawnych, ale nie złapanych dokumentów. Łącznie prowadzi to do akceptowalnie niskiego poziomu zgłaszanych nieprawidłowych dokumentów. Poproszenie o dołączenie do nich kodu zwiększy jakość jednej klasy papieru, ale będzie to wzrost i tak już wysokiego poziomu jakości. Nie jest tak, że brak tej funkcji powoduje, że bieżąca jakość jest zbyt niska.

Bardzo dobra uwaga na temat różnicy między funkcjami miłymi do posiadania i niezbędnymi. Przypominam sobie artykuł (być może redakcyjny ?; niestety w tej chwili nie mogę go znaleźć) omawiający podobną problematykę dla standardów raportowania analiz statystycznych. Najważniejsze było to, że w zasadzie lista kontrolna dobrych praktyk jest znana i zasugerowano, aby każdy, kto ją zna i przestrzegał, zawierał jedno zdanie na ten temat (lub bardziej szczegółowy opis). Chodzi o to, że ta przyjemna strategia będzie promować jakość bez potrzeby konsensusu w sprawie obowiązkowej polityki.
+1 za zasadniczo rzucanie tego w kategoriach wykrywania sygnału. Ładny!
Roy T.
2014-06-13 02:56:17 UTC
view on stackexchange narkive permalink

Ponieważ niektórzy badacze nie lubią myśleć o prawdziwym świecie, a recenzenci nie chcą kłopotów.

(Co dalej jest trochę kłopotliwe)

niedawno przeprowadził przegląd określonego typu algorytmów związanych z geometrią. We wszystkich artykułach program był opisywany jako działający doskonale, ale kiedy poprosiłem o kod źródłowy około tuzina autorów, sytuacja stała się brzydka.

W 50% oprogramowania brakowało ważnych reklamowanych funkcji. Na przykład oprogramowanie działałoby tylko w 2D, podczas gdy w artykule przedstawiono przykłady 3D. (Co w moim przypadku naprawdę znacznie utrudnia sprawę). Po zapytaniu, dlaczego brakuje tych funkcji, zwykle nigdy nie zostały one zaimplementowane lub zostały wdrożone, ale okazały się niestabilne / niedziałające. Żeby było jasne: wygenerowanie wyników przedstawionych w artykule było w 100% niemożliwe przy użyciu oprogramowania, które często było nawet ulepszane po opublikowaniu artykułu.

75% oprogramowania nie działałoby idealnie w normalnych przypadkach . W moim przypadku było to zwykle spowodowane tym, że algorytm został zaprojektowany z myślą o `` liczbach doskonałych '', ale algorytm został zaimplementowany przy użyciu normalnych liczb zmiennoprzecinkowych, a zatem miał problemy z reprezentacją, co spowodowało duże błędy. Tylko kilka artykułów wspomniało o tych problemach, a tylko w dwóch próbowano (częściowo) je rozwiązać.

85% oprogramowania nie działałoby w scenariuszach zaprojektowanych specjalnie do znajdowania przypadków problemowych. Bądźmy szczerzy; jeśli „zwykły” uczeń może w ciągu kilku tygodni znaleźć scenariusz, który całkowicie łamie twój algorytm, prawdopodobnie już o tym wiesz.

Brak kodu pozwala kłamać i ku mojemu zniesmaczeniu (jestem nowy do świata akademickiego) robi się to niezwykle często. Mój przełożony nawet nie był zdziwiony. Jednak testowanie kodu to dużo pracy, więc to zachowanie prawdopodobnie pozostanie niezaznaczone jeszcze przez jakiś czas.

StasK
2014-06-12 18:53:37 UTC
view on stackexchange narkive permalink

Jako współpracownik redaktora czasopisma (pomostowa statystyka i psychologia) poprosiłem autorów o przesłanie kodu, gdy proponowali nowe algorytmy i procedury, a następnie wysłałem go ekspertom z pakietu statystycznego, aby sprawdzić, czy (a ) kod robi to, co opisuje artykuł, i (b, drugorzędny), że jest dobrym kodem (odpornym na złe dane wejściowe, wydajnym obliczeniowo itp.). Poproszono mnie również o przejrzenie kilku artykułów dla Stata Journal, którego celem jest kod, i zrobiłem to samo. Były chwile, kiedy (a) zawodziło, więc musiałem zwrócić artykuł i powiedzieć, że autorzy musieli dostosować metodologię i kod. Zdarzały się sytuacje, w których (b) kończyło się niepowodzeniem, aw przypadku Stata Journal oznaczałoby to również zwrot artykułu. Były chwile, kiedy kod nie przychodził.

W większości przypadków z przyjemnością udostępniłbym swój kod, ale jest on na tyle skomplikowany (z wewnętrznymi kontrolami opartymi na metadanych, niestandardowymi danymi wyjściowymi itp.), że badacz mniej biegły w obsłudze pakietów Nie będę mógł go edytować, aby działał na ich komputerze.

Wracając do twojego głównego pytania - recenzenci są leniwi i mają własne badania, aby skierować je do swoich czasopism, więc niewielu z nich podejmuje wysiłek pełnej weryfikacji wyników. Taki jest świat. Być może ci profesorowie mogą poprosić o kod i przekazać go swoim absolwentom, aby mogli się nim bawić, łamać i debugować, ponieważ byłaby to dobra okazja edukacyjna dla tych drugich. Ale znowu nie zdarza się to zbyt często, ponieważ klauzule poufności dotyczące przyjęcia roli recenzenta zwykle uniemożliwiają jednemu z dzielenie się pracą z kimkolwiek innym.

cbeleites unhappy with SX
2014-06-12 01:42:02 UTC
view on stackexchange narkive permalink

Chciałbym dodać nieco inny punkt widzenia z dziedziny eksperymentalnej (chemia / spektroskopia / analiza danych chemometrycznych).
Tutaj badanie rozpoczyna się w laboratorium (a może w terenie), od staromodny typ notatnika. Staromodny, zazwyczaj nadal jest papier + długopis. Analiza danych jest często wykonywana za pomocą programów GUI w sposób interaktywny. Zapisy są przechowywane jak w laboratorium: papier + długopis. Może z zapisanymi i / lub wydrukowanymi liczbami. Ponieważ część laboratorium została już zarejestrowana w ten sposób, brak pliku dziennika lub nawet skryptu analizy danych nie jest postrzegany jako problem. W każdym razie prośba o opublikowanie kodu to tylko część tego, czego potrzebujesz, aby ponownie przeprowadzić analizę: potrzebne byłyby również rzeczywiste dane.
Już sugestia, aby wpisać analizę danych i przynajmniej ją zapisać dziennik sesji Matlab / R lub wpisanie go w formie skryptu jest wciąż trochę nowy (chociaż ludzie uwielbiają raporty generowane przez knitr , które tworzę ...). Ale sprawy IMHO idą teraz dość szybko. Powiedziałbym, że dzięki narzędziom takim jak git i knitr największe praktyczne przeszkody są prawie rozwiązane, przynajmniej dla osoby, która woli kod niż klikanie. Jednak nie jest tak, że wszystko już działa gładko (weź pod uwagę duże binarne surowe dane i git , a szczerze przyznaję, że nie mam pojęcia jak praktycznie efektywnie skonfigurować "prawdziwy" serwer bazy danych że śledzi zmiany). Jest to z mojej perspektywy naukowca, który jako użytkownik potrzebuje tylko narzędzi do odtwarzalności - i dlatego rozumiem moich kolegów nie programujących, którzy mimo wszystko muszą analizować swoje dane: po prostu nie mają (lub wiedzą narzędzi, które umożliwiłyby im rejestrowanie analiz przy rozsądnym wysiłku.

Tradycyjne oszacowanie, gdzie czają się duże trudności, koncentruje się również na części laboratoryjnej. Myślę, że wielu badaczy po prostu nie zdaje sobie sprawy z problemów z odtwarzalnością obliczeń / analizy danych. Szczerze mówiąc, zwykle podzielam ten punkt widzenia: IMHO w biospektroskopii jednym z dużych ważnych problemów jest zdecydowanie zbyt mała liczba osób w badaniach. Jeśli masz tylko 4 myszy w badaniu, precyzyjna obróbka danych nie wpłynie zbytnio na praktyczne wnioski. Istnieje szara strefa, w której nieprzeprowadzenie właściwej walidacji może wpłynąć na wnioski, ale znowu: każdy, kogo znam, kto przeprowadza walidację zgodnie z najbardziej znaną praktyką, pisze to bardzo wyraźnie - więc ponownie (i akceptując pewne ryzyko fałszywie odrzucając kilka artykułów jako „prawdopodobnie niemożliwe do odtworzenia”) Wydaje mi się, że praktycznie nie ma to wpływu na praktyczne wnioski.


Z drugiej strony, patrząc na wymagania, które np. Chemmical Communications na wypadek publikacji nowej substancji chemicznej Nie widzę powodu, dla którego nie mogą istnieć czasopisma informatyczne, które wymagają kodu w podobny sposób.
Na przykład Journal of Statistical Software tak. (Jestem całkiem pewien, że istnieją inne takie czasopisma, ale ich nie znam).

Dla mnie to dotyczy znacznie szerszej dziedziny związanej z odtwarzalnością. Oczywiście, jeśli analizy danych nie można odtworzyć, pojawia się duży problem.


Jeszcze jedna uwaga: chociaż publikacje na temat oprogramowania są nadal bardzo rzadkie w mojej dziedzinie, ostatnio miałem taki artykuł do recenzji. Niestety oprogramowanie proponuje się do dystrybucji poprzez skontaktowanie się z jednym z autorów - czego jako anonimowy recenzent oczywiście nie mogłem zrobić.
W związku z tym rzeczywiste oprogramowanie może być jeszcze mniej dostępne dla recenzentów niż dla zwykłych czytelników!

Ostatni akapit: na pewno możesz poprosić redaktora o zapytanie autorów o kod?
@NateEldredge: pewnie. Podaję tylko jako przykład, że dołączenie kodu jest nadal bardzo dalekie od pojawienia się domyślnych rzeczy do zrobienia podczas przesyłania manuskryptu, jeśli zapomni się o nim nawet w przypadku rękopisu, który wyraźnie dotyczy wydania tego kodu.
Phil Perry
2014-06-12 01:37:19 UTC
view on stackexchange narkive permalink

Myślę, że większość czytelników / recenzentów uznałaby wystarczająco szczegółowy algorytm za wystarczająco szczegółowy. Piszesz artykuł pokazujący, och, kod w C ++, a ja używam SPSS w moim sklepie - Twój kod jest dla mnie bezużyteczny. Nie żeby większość czytelników cieszyła się ponownym zaimplementowaniem kodu (szczególnie w przypadku dokumentów innych niż CS), ale z konkretnym kodem, który działa na określonej platformie, z pewnością będzie dużo bałaganu do przebrnięcia. Algorytm redukuje to do podstawowych rzeczy.

Jeśli moja praca pokazuje poprawę szybkości mojej nowej metody Quicksort w porównaniu ze standardowym sortowaniem bąbelkowym, pokazanie algorytmów dla tych dwóch metod ułatwiłoby wsparcie moich twierdzeń dla O (n log n) vs O (n ^ 2) przyspieszenia. Jeśli moja praca dotyczy rozkładu wieku ludności w gospodarkach bogatych i rozwijających się, chyba że istnieje naprawdę zgrabna sztuczka, której użyłem do przetwarzania danych, większość czytelników prawdopodobnie nie przejmowałaby się nawet algorytmem, z wyjątkiem bardzo szerokich pociągnięć pędzla.

Będzie to zależeć od obszaru tematycznego (ogólnie, powiedzmy, informatyki) i konkretnego podobszaru (powiedzmy, metod sortowania), a także od tego, jak duży wpływ zastosowany algorytm ma na wyniki, czy algorytm jest niezbędny. Jeśli pokazuję różnice kompilatora w kodzie Fortran, dobrze byłoby dołączyć rzeczywisty kod. W przeciwnym razie sam kod rzadko jest interesujący.

„Myślę, że większość czytelników / recenzentów uznałaby wystarczająco szczegółowy algorytm za wystarczająco szczegółowy”. W przypadku algorytmu o wystarczającej złożoności opis nie wystarczy. „Twój kod jest dla mnie bezużyteczny”. Pod warunkiem, że jest to działający kod (a może nawet jeśli nie jest), kod z definicji jest implementacją algorytmu, a zatem jest przydatny.
Kaveh
2014-06-13 10:21:34 UTC
view on stackexchange narkive permalink

To jest pogląd z Informatyki / Informatyki Teoretycznej / Matematyki.

Zadaj sobie pytanie: do kogo jest skierowany artykuł naukowy?

To nie użytkownicy końcowi. To recenzenci ! Czy recenzenci chcą kod? Zależy od sytuacji. Czasami tak. Często tego nie robią.

Pomyśl o tym: dlaczego matematycy nie dostarczają formalnych dowodów, ale używają nieformalnych argumentów?

To koszty kontra korzyści. Dostarczenie formalnie zweryfikowanego dowodu jest możliwe, ale zwykle wymaga zbyt wiele pracy, pracy, do której autorzy nie są przygotowani i nie mają dużego doświadczenia. Z drugiej strony, co na tym zyskują autorzy? Czy pomaga przekonać recenzentów o poprawności wyników? Nie, recenzenci zazwyczaj wolą krótkie, nieformalne wyjaśnienia, które pozwalają im zrozumieć i zobaczyć , dlaczego wynik jest prawdziwy. Formalny dowód zwykle niewiele pomoże. Są ludzie, którzy nie lubią dowodów wspomaganych komputerowo, których ludzie nie mogą zweryfikować i zrozumieć bezpośrednio.

Te same koszty i korzyści odnoszą się do programów. Jeśli podanie kodu nie pomoże przekonać recenzenta o poprawności pracy, to po co marnować zasoby (czas / pieniądze / strony / ...), aby to robić? Czy recenzenci mają czas na przeczytanie kodów z tysiącami wierszy, aby sprawdzić, czy nie ma w nich błędu?

Z drugiej strony, czasami oprogramowanie powstałe na podstawie artykułu ma podstawowe znaczenie. Posiadanie kodu jest pomocne przy weryfikacji reklamacji. Na przykład. Twierdzisz, że masz szybszy algorytm SAT. Wtedy pomocne jest podanie kodu. W takich przypadkach autorzy podają swój kod. Dotyczy to głównie części bardziej eksperymentalnych. Nie zależy nam na poprawności kodu, ale na uzyskaniu wyników lepszych niż istniejące algorytmy. W takich sytuacjach istnieją zwykle standardowe testy porównawcze algorytmów. (Zobacz na przykład konkursy SAT.) Jeśli nie ma ustalonych testów porównawczych, to po co publikować kod? Jeśli jest to wynik teoretyczny, w którym asymptotyczne korzyści mają miejsce w instancjach, które są zbyt duże, aby przetestować, jakie są korzyści z posiadania kodu? Co więcej, biorąc pod uwagę fakt, że duży kod opracowany przez nieprofesjonalnych programistów z dużym prawdopodobieństwem zawiera błędy? Zatrudnianie profesjonalnych programistów do tworzenia kodu wysokiej jakości jest kosztowne ( średni roczny dochód osoby z licencjatem na kierunku CS wynosi około 100 000 w USA) (z wyjątkiem być może absolwentów;) i zazwyczaj nie jest przyniesie później jakieś korzyści.

Ale czy kod musi być zawarty w dokumentach? Oczywiście nie! Istnieją lepsze sposoby publikowania kodu, np. posiadanie w artykule linku do kopii online (na swojej stronie internetowej lub w publicznym repozytorium, takim jak github). Dlaczego ktoś wolałby umieścić kod z tysiącami wierszy w dokumencie, który ma być czytany przez ludzi ?

Prawdopodobnie docelową grupą odbiorców ** pracy ** akademickiej jest recenzent, ale docelową grupą docelową ** pracy ** jest zdecydowanie cała społeczność.
@Suresh, oczywiście artykuły są pisane dla czytelników dla całej społeczności akademickiej. Myślę jednak, że autorzy zwracają większą uwagę na to, czego oczekują recenzenci. Oczywiście celem recenzentów jest reprezentowanie społeczności, ale jako recenzenci często mają priorytety, które mogą być nieco inne niż w przypadku całej społeczności.
Na przykład. mogą chcieć więcej szczegółów niż inni czytelnicy, aby upewnić się, że wyniki są poprawne, mogą potrzebować mniej szczegółów, ponieważ są ekspertami w temacie, lub czasami mogą sprzeciwić się artykułowi, ponieważ uważają, że prezentacja jest sprzeczna z ich poglądem na temat itp. Wydaje mi się, że podczas pisania artykułów w praktyce uważamy, że społeczność jako całość jest znacznie mniejsza niż potencjalnych recenzentów. W każdym razie nie sądzę, aby problem miał duży wpływ na to, co próbuję powiedzieć w odpowiedzi:
kod jest publikowany, gdy grupa docelowa chce go od autorów, a użytkownicy końcowi, którzy chcą kodu gotowego do użycia, nie są docelowymi odbiorcami artykułów naukowych.
z tym ostatnim punktem się zgadzam.
Oczywiście kodu nie powinno być w artykule, ale zamiast tego link do repozytorium. Lol nie wyobraża sobie nawet patrzenia na kod oprogramowania składający się z ponad 1000 linii w jednym pliku pdf.
Floris
2014-06-12 17:46:44 UTC
view on stackexchange narkive permalink

Zwykle „wydajność” kodu odnosi się do „tego, jak dobrze skaluje się on wraz z rozmiarem problemu”. Oznacza to, moim zdaniem, że artykuł twierdzący, że „algorytm A jest szybszy niż algorytm B”, musi pokazywać synchronizację zarówno dla A, jak i B _ dla problemów o różnej wielkości_. Chociaż nadal mogą występować nieefektywności (i błędy) w implementacjach, to przynajmniej pokaże, czy bazowy algorytm jest bardziej wydajny (mniej duże-oh).

Gdzie oprogramowanie jest kluczem do pracy ( produkt, a nie narzędzie) Spodziewałbym się, że będzie dostępny (github lub inny). Tak więc artykuł, w którym jest napisane „Mogę sortować w kolejności 1 / n, kerfuglując liczbę dargibold”, musi pokazać, jak to zostało zrobione; artykuł, który twierdzi, że „kiedy posortowałem te dwa zestawy danych, ten z Whoville miał większe błędy” nie musi pokazywać, w jaki sposób sortowano kod - muszą się skupić na wyjaśnieniu, co jest znaczące w błędach Whoville.

Alessandro Jacopson
2016-06-20 23:03:35 UTC
view on stackexchange narkive permalink

Zaczerpnięte z książki SKIENA, S. The Algorithm Design Manual: Springer. 2008:

Po długich poszukiwaniach Chazelle [Cha91] odkrył liniowy algorytm czasu do triangulacji prostego wielokąta. Algorytm ten jest wystarczająco beznadziejny, aby go zaimplementować, aby kwalifikować się bardziej jako dowód istnienia.

[Cha91] CHAZELLE, Bernard. Triangulacja prostego wielokąta w czasie liniowym. Discrete & Computational Geometry , 1991, 6.3: 485-524.

Myślę, że autorzy rozważają koszty i korzyści i unikają składania kodu, gdy koszty przewyższają korzyści.

Według Davida W. Hogga koszty są następujące:

  1. możesz uzyskać korzyści
  2. możesz zostać zażenowany swoim brzydkim kodem lub brakiem komentarza lub nieudokumentowania
  3. będziesz musiał odpowiedzieć na pytania (często głupie lub nieistotne) dotyczące kodu i poświęcić czas na dokumentowanie
  4. będziesz musiał rozważyć żądania ściągnięcia lub w inny sposób utrzymywać kod, prawdopodobnie daleko w przyszłości
  5. możesz być zmuszony do wyeliminowania złych i niepoprawnych wyników generowanych przez Twój kod
  6. Twoja reputacja może ucierpieć jeśli kod zostanie użyty nieprawidłowo
  7. mogą wystąpić problemy prawne (w tym wojskowe) i licencyjne.

Korzyści:

  1. więcej nauki zostanie zrobione, więcej artykułów zostanie napisanych; wszystkie miary wzrostu wpływu
  2. masz motywację do czyszczenia i dokumentowania kodu
  3. wyniki stają się (bardziej) odtwarzalne i (bardziej) godne zaufania
  4. osoby z zewnątrz znajdują błędy lub ulepszaj swój kod i dostarczaj żądania ściągnięcia
  5. zyskujesz wiarygodność i widoczność oraz budujesz społeczność
  6. wskaźniki cytowań mogą wzrosnąć
  7. kod jest zachowany
  8. można przeszukiwać kod (w tym przez Ciebie!) i tworzyć kopie zapasowe
  9. istnieją dobre witryny do długoterminowej archiwizacji, a interfejs
  10. może ustalić priorytet na pomyśle lub wcześniejszym opracowaniu metody
Sefu
2017-02-15 03:03:42 UTC
view on stackexchange narkive permalink

Ponieważ tak naprawdę większość naukowców z dziedzin technicznych nie potrafi kodować, aby uratować im życie. W wizji komputerowej po prostu hakują coś razem w jednym pliku Matlab. Lubią myśleć, że programowanie jest dla studentów. Uważają, że to poniżej nich tracić czas na takie błahostki. Większość z nich nigdy nie nauczyła się dobrych praktyk inżynierii oprogramowania i nie rozumie złożoności i umiejętności potrzebnych do napisania dobrego kodu.

Główny problem polega na tym, że jest to wspierane przez naukowców, ponieważ wszyscy akademiccy dbają o to to publikowanie, ilość ponad jakość. Miarą sukcesu jest liczba posiadanych cytatów, a nie to, jak dobry jest Twój wkład. W końcu nie ma to znaczenia, kiedy jedyne osoby, które cię cytują, nie dają nic pożytecznego. Nie jest to już nauka, a raczej „badania w celu prowadzenia badań”.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...