Pytanie:
Czy to normalne, że recenzent prosi o plik wykonywalny w celu sprawdzenia moich wyników?
Marvel LePont
2017-04-28 02:24:57 UTC
view on stackexchange narkive permalink

Właśnie otrzymałem list z decyzją dotyczącą mojego przesłanego rękopisu do czasopisma Elsevier. To była poprawka i ponowne przesłanie. Jednak jeden z recenzentów poprosił o plik wykonywalny, aby sprawdzić moje wyniki. (Czułem nieufność po jego komentarzu ..)

Dotyczy to artykułu informatycznego na temat testowania wydajności algorytmu na zbiorze instancji z literatury. Porównałem wyniki algorytmu z wynikami innych autorów.

Dla wyjaśnienia: w artykule jest mowa o jakimś oprogramowaniu, a recenzent chce mieć możliwość jego uruchomienia?zezwala na przekazanie go recenzentowi, brzmi to jak rozsądna prośba.
Cóż, jeśli publikujesz algorytm, musisz jakoś opublikować rzeczywisty kod.Wygląda na to, że twój rękopis w ogóle go nie zawiera?
Jeśli algorytm i tak zostanie opublikowany, nie widzę „dlaczego nie”!
@DSVA: "Jeśli publikujesz algorytm, musisz w jakiś sposób opublikować rzeczywisty kod" ... jaki procent opublikowanych algorytmów, twoim zdaniem, zawiera kod źródłowy?
@Mehrdad „Jaki procent opublikowanych algorytmów według Ciebie pochodzi z kodem źródłowym”, dużo mniej niż odsetek, który powinien zawierać kod źródłowy.Imho, jeśli nie możesz zweryfikować twierdzenia bez implementacji algorytmu, to powinno mieć dołączony kod źródłowy, a kod źródłowy powinien być możliwy do przejrzenia, inaczej nie jest to dobra nauka.Żaden recenzent o zdrowych zmysłach nie przyjąłby artykułu, w którym „magia dzieje się tutaj” pośrodku dowodu, więc „oprogramowanie o zamkniętym kodzie źródłowym dzieje się tutaj” również nie powinno być dozwolone.
Nieufny recenzent to dobra rzecz, oznacza to, że poddadzą twoją pracę surową próbę, a jeśli pojawią się problemy z pracą, jest bardziej prawdopodobne, że je znajdą, co jest dla ciebie długoterminowe.Bardzo wątpię, że nie ufają twojej uczciwości, tylko wynikowi.
Jako osoba z niewielkim lub zerowym doświadczeniem w publikowaniu oprogramowania (lub algorytmów), czy nie dostarczenie im skompilowanego pliku wykonywalnego nie zapewniłoby im jedynie sposobu na uruchomienie kodu, a nie na jego przeglądanie?
@Sumyrda "Imho, jeśli nie możesz zweryfikować roszczenia bez implementacji algorytmu, ... to nie jest dobra nauka" Niestety, algorytmy często nie są takie proste.Wiele algorytmów można udowodnić, że są poprawne, ale nadal są one całkowicie nietrywialne w implementacji.To jest powód, dla którego inżynieria algorytmów jest poważną dziedziną.Jednym z takich przypadków jest algorytm triangulacji Chazelle'a.Jego dowód jest najprawdopodobniej poprawny, ale przez jakiś czas (o ile wiem) nie ma implementacji, mimo że jest to często „używany” algorytm!
Ogólnie rzecz biorąc, tylko prawdziwy recenzent może zrobić coś takiego.Nadmierny procent może oznaczać, że jest to zbyt trudne.To był dzień (jak mi powiedziano), kiedy recenzowanie oznaczało PRZEGLĄD!Ktoś inny był przekonany, że znasz swoje rzeczy i umieściłbyś jego nazwę (choć anonimowo) na końcu.Tacy ludzie są oczywiście bardzo irytujący, ale stanowią część fundamentu, na którym zbudowana jest prawdziwa nauka.Albo kiedyś.
Jaki inny sposób sugerujesz mu, aby zweryfikował Twoje wyniki?
@Discretelizard „Poprawność wielu algorytmów można udowodnić, ale ich implementacja jest nadal całkowicie nietrywialna”.Ale to jest dokładnie to, co powiedziałem.Albo pokazujesz pseudokod i udowodnisz, że jest poprawny, albo jeśli nie możesz tego zrobić z jakiegoś powodu, zwłaszcza gdy twierdzisz, że twój algorytm jest szybszy niż jakiś inny algorytm, powinieneś pokazać swój kod - lub podać innysposób zweryfikowania Twojego roszczenia, jeśli możesz coś wymyślić.
Proszę wyjaśnić: Czy artykuł dotyczy algorytmu?Albo program?Czy może rezultaty, które konkretne wdrożenie przyniosło przy określonym wkładzie?
Nigdy nie powinieneś rozpowszechniać plików wykonywalnych, ale zawsze kod źródłowy.Nikt nie chce wykonać programu binarnego bez kompilowania go ze źródła.To może zrobić wszystko w twoim systemie.Można spróbować obejść ten problem za pomocą piaskownicy, ale dlaczego nie rozpowszechniać źródła, jeśli jest to część Twojej pracy naukowej?
@JonasStein Myślę, że jedynym powodem, dla którego chciałbym, aby kod źródłowy był to, żebym mógł go sprawdzić pod kątem błędów, a nie dlatego, że obawiam się, że inny badacz będzie chciał zrobić błąd w moim systemie.Szczególnie ten, który nie udostępnił takiego pliku wykonywalnego na ochotnika, ale zamiast tego tworzy go na żądanie.
@PhdStudent „Dobrą rzeczą w nauce jest to, że jest prawdą niezależnie od tego, czy w nią wierzysz”.Z pewnością ufam naszym naukowcom, ale zaufanie to zdobywa się poprzez weryfikację i wzajemną ocenę.Kiedy publikujemy naukę bez weryfikacji, w najlepszym przypadku otwieramy się na pesudo-naukę, aw najgorszym na umyślne oszustwo.
Obserwuję użycie zaimków męskich w odniesieniu do przypuszczalnie anonimowego recenzenta.Myślę, że to nasze ukryte uprzedzenia działają przeciwko nam.
@Sumyrda Istnieje różnica między kodem źródłowym a pseudokodem.Kod źródłowy JEST implementacją, ale jeszcze nie w formie wykonywalnej.Pseudokod nie jest kodem źródłowym, jest jedynie metodą opisywania algorytmów.Ale jeśli miałeś na myśli, że musi być obecny przynajmniej jakiś weryfikowalny (przez czytelnika) argument na rzecz wyników algorytmu, to oczywiście się zgadzam.
@Discretelizard Dokładnie, to musi być weryfikowalne.To, czy można to zweryfikować, przechodząc przez pseudokod wraz ze swoim rozumowaniem, czy przeglądając kod źródłowy, nie ma znaczenia, ale jedno lub drugie musi być możliwe.Jestem rozdarty, jeśli chodzi o weryfikację roszczenia przez uruchamianie testów na pliku wykonywalnym o zamkniętym kodzie źródłowym - jak na mój gust wciąż jest tam za dużo „magii” - ale to lepsze niż nic.
Osiem odpowiedzi:
Dan Romik
2017-04-28 03:27:32 UTC
view on stackexchange narkive permalink

Nie wiem, czy to normalne, ale powinno być normalne dla wszystkich recenzentów, aby podejmowali rozsądne wysiłki w celu sprawdzenia, czy twierdzenia autorów są prawidłowe, więc o ile nie jest to normalne, Mogę tylko pochwalić recenzenta za gotowość do podjęcia wysiłku, którego nie podejmują inni recenzenci. To, co czujesz jako „nieufność”, to to, że recenzent wykonuje swoją pracę, nic więcej lub mniej (i prawdopodobnie jest dość trafne stwierdzenie, że zadaniem recenzenta jest nieufność do twierdzeń autora, więc nie widzę idei bycia nieufnym ze strony recenzenta jako coś, czego należy się wstydzić lub obrażać).

Nawiasem mówiąc, powinno być również normalne, że autorzy udostępniają wszelkie oprogramowanie (w tym kod źródłowy, jeśli to możliwe) potrzebne do powielenia i weryfikacji ich wyników. Jeśli więc nie jesteś zadowolony z tego, że recenzent wraca do ciebie z irytującymi prośbami, które opóźniają decyzję w sprawie twojego artykułu, następnym razem możesz zapobiec takim problemom, publikując swój kod źródłowy (lub przynajmniej przesyłając go do czasopisma) wraz z rękopisem. Jestem pewien, że recenzent byłby znacznie szczęśliwszy i ostatecznie wszyscy skorzystaliby, łącznie z tobą.

Dziękuję za komentarz, być może poczułem się obraźliwy, ponieważ jest to mój pierwszy artykuł w czasopiśmie.Jednak w mojej dziedzinie badawczej nie jest powszechne, że autorzy udostępniają swój kod. Tak czy inaczej, wyślę plik wykonywalny recenzentowi, ponieważ stwierdził, że bez tego sprawdzenia praca nie może zostać przyjęta.Jeszcze raz dziękuję.
Jako ktoś, kto pracuje w branży i czyta gazety jako „outsider”, zawsze wydawało mi się dziwne, że istnieje tendencja do „ukrywania kodu”.Mam wrażenie, że kod, podobnie jak papier, powinien być dostępny i dostępny.Jestem tu absolutnie z Danem, powinno być więcej.Przynajmniej dla mnie niepublikowanie kodu zawsze ma gorzki posmak tego, że dzieje się coś podejrzanego.
Niestety, większość algorytmów i metod numerycznych opisanych w czasopismach takich jak Journal of Computational Physics (bardzo renomowane czasopismo!) Jest zaimplementowana w wewnętrznych kodach zamkniętych.Zrobiłem tam recenzję i po prostu musiałem zaufać wynikom.
Byłoby miło, gdyby autorzy udostępnili oprogramowanie, nawet jeśli nie jest potrzebne do powielania lub weryfikacji ich wyników.Przychodzi mi na myśl jeden artykuł dotyczący algorytmu, który kiedyś próbowałem zaimplementować, ale zrezygnowałem, ponieważ nie wydawał się pisać.Implementacja wzorcowa pomogłaby w zrozumieniu artykułu.
Zgódź się na właściwe ujęcie poczucia „nieufności” - lepiej zinterpretować je jako zdrowy naukowy sceptycyzm, jaki powinien mieć każdy recenzent.Pokładam zaufanie w recenzowanych artykułach (szczególnie w kwestiach, które nie są mi dokładnie znane) właśnie dlatego, że zadowoliły sceptycyzm panelu recenzentów.
@SBI To wcale nie jest dziwne.Jeśli zainwestujesz 4 lata pracy w kod, potrzebujesz go, aby opłacić się w wystarczającej liczbie artykułów / cytatów / uwagi, aby uzyskać awans.Jedna praca tego nie zrobi, a jeśli opublikujesz swój kod, będziesz musiał spędzić kolejny długi okres czasu na kodowaniu nowego wyniku, który można opublikować, podczas gdy twoi rywale będą używać Twojego kodu, aby Cię zgarnąć.To nie tyle „opublikuj lub zgiń”, ile „opublikuj więcej niż alternatywni pracownicy lub zgiń”.(Osobiście wydałem swój kod; też zginąłem.)
Odpowiedź zakłada, że recenzentowi leży na sercu tylko najlepsze intencje i idealistyczna tendencja do ulepszania kultury naukowej.Chociaż od razu pochwaliłbym te rzeczy, niestety żyjemy w prawdziwym świecie.Należy wziąć pod uwagę, że recenzent jest osobą anonimową, proszącą o podstawową część procesu badawczego, posiadającą wyraźną wiedzę specjalistyczną w tej dziedzinie i wynikającą z niej potencjalne zainteresowanie nią.Radziłbym uważnie rozważyć takie prośby również z perspektywy, że są osoby, które mogą próbować wykorzystać anonimowość i przywileje recenzenta.
Kolejną czerwoną flagą, która przykuwa moją uwagę, jest to, że żądają „pliku wykonywalnego”.Użytkownik nie ma możliwości sprawdzenia, czy plik wykonywalny nie tylko drukuje wyniki bez żadnego algorytmu, poza inżynierią wsteczną (bez wchodzenia w zbyt wiele szczegółów tutaj).Taka prośba może oznaczać, że recenzent próbuje uśpić autora w fałszywym poczuciu bezpieczeństwa, celowo nie żądając kodu źródłowego.
@user3209815: Mogą obsługiwać punkt Xerxes: publikowanie kodu źródłowego może być nie do przyjęcia, ponieważ inni autorzy mogą wtedy zdobyć OP.Uczynienie pliku wykonywalnym oznacza, że będą musieli go zdekompilować ... co może nie być wykonalne.Chociaż, jak mówisz, nie ma sposobu, aby sprawdzić, czy taki plik wykonywalny nie drukuje tylko wymaganych wyników.
@Xerxes Jak jednak twój pomysł może być opublikowany w artykule, skoro tak bardzo zależy od zamkniętego kodu źródłowego?To znaczy, i tak odsłaniasz cały swój pomysł.Wiele razy pisałem kod na podstawie dokumentów.Zwykle kod jest bardziej dowodem koncepcji niż zawiera więcej informacji niż to, co i tak publikujesz.Z drugiej strony sprawa staje się trudniejsza.Zgłaszanie roszczeń bez wykazania, że faktycznie działają, jest ... trudne.
@SBI Oczywiście papier musi być taki, że każdy może rzeczywiście zaimplementować algorytm!Ale to może być dużo ciężkiej, nudnej pracy inżynierii oprogramowania.
@Xerxes Idealnie byłoby, gdyby twoja praca była odpowiednio wspierana przez jakąś agencję finansującą (zwykle publiczną).W zamian otwierasz kod źródłowy.Praktycznie rozumiem, że robisz to, co musisz.
@Xerxes, dlatego kod powinien być udostępniany z licencjami wymagającymi atrybucji.Jeśli ludzie mają zamiar wziąć Twój kod i opublikować na jego podstawie artykuł, będą musieli przypisać Ciebie jako oryginalnego autora kodu, tak jak musieliby Cię cytować, gdyby korzystali z wyników z Twoich opublikowanych artykułów.
@VladimirF: „Po prostu musiałem zaufać wynikom”.Nie, nie zrobiłeś.Jeśli wyniki są wytwarzane przez oprogramowanie, powinieneś być w stanie zweryfikować wyniki, a jeśli nie możesz ich zweryfikować, to ich nie akceptujesz.Jest takie powiedzenie "zdjęcia albo to się nie wydarzyło".
Dodałbym, że plik wykonywalny (skompilowany kod) * sam *, chociaż pozwoliłby na powielenie wysiłku, nie byłby szczególnie przydatny w wielkim schemacie rzeczy.Kod źródłowy, jak powiedzieli inni, jest ważniejszy.Albo jest to powszechnie dostępne oprogramowanie (w takim przypadku, dlaczego recenzenci nie mogliby go pobrać samodzielnie?), Albo jest to rzadki lub zastrzeżony kod, w którym to przypadku kod źródłowy jest ważniejszym szczegółem.Jest to metoda, którą należy powielić, a plik binarny to czarna skrzynka, która ukrywa kod, który jest metodą.
Recenzentów obowiązuje poufność - możesz przekazać kod recenzentom bez jego publikowania.Tak, recenzenci oszukują czasami - choć rzadko. Istnieje wiele ruchów w kierunku recenzentów próbujących kod;zobacz http://www.artifact-eval.org/ dla jednego podejścia.
@gnasher729 Czy ufasz eksperymentom, nawet jeśli autorzy nie udostępnili Ci swojego narzędzia do ponownego przeprowadzenia eksperymentów?Co by się stało, gdyby ta metoda numeryczna została zaimplementowana w kodzie CFD, do którego autorzy nie mają pełnych praw do redystrybucji?Obliczenia mogą zająć wiele czasu procesora na superkomputerze, a recenzenci i tak nie będą ich ponownie obliczać.Nie zrobiłbym tego za ten artykuł, który recenzowałem.Analiza wyników może być również czasochłonna.
@Xerxes Nie, nie spędziłeś 4 lat nad swoim kodem.Spędziłeś cztery lata nad swoim algorytmem, o którym już informujesz świat w swoim artykule.Kod jest po prostu jego implementacją, którą mógłbyś napisać w ułamku czasu, gdybyś zaczął go po ustaleniu algorytmu.
Chris H
2017-04-28 13:02:37 UTC
view on stackexchange narkive permalink

Pochodzę z innej dziedziny, w której kod, którego używamy, nie jest głównym wynikiem. Ale jeśli sędzia poprosiłby o kod, udzielilibyśmy go i szczęśliwie. Większość naszej pracy jest wykonywana w Pythonie, więc plik wykonywalny nie byłby normalny, a źródło byłoby (również prawdziwe dla matlab).

Właściwie jedyną rzeczą, która wydaje mi się nieco dziwna, jest użycie wykonywalne zamiast źródła.

Nie obrażaj się żądaniem z kilku powodów: nie jest zadaniem recenzentów ufać tobie; ich zadaniem jest sprawdzenie twojego papieru. Jeśli recenzent na tyle interesuje się twoją pracą, że chce uruchomić kod, nie odrzucił twojej pracy z ręki.

Podoba mi się ostatni punkt.Byłoby mi nawet trochę zaszczycone, gdyby sędzia zechciał wypróbować moje oprogramowanie :)
@Džuris rzeczywiście, oznacza to, że traktują twój artykuł bardzo poważnie.
Dziękuję za twój drugi akapit!Wydaje się, że nikt tutaj tego nie widzi.Kiedy przeczytałem tytuł pytania, założyłem, że OP uznał za dziwne, że ktoś zażądałby pliku wykonywalnego, a nie kodu źródłowego, ponieważ oznacza to, że nie zależy mu na tym, aby sprawdzić kod źródłowy pod kątem błędów / pomyłek / celowych błędów i faktyczniesą zbyt głupi lub leniwi, aby samodzielnie skompilować kod źródłowy (który, jak zakładałem, został dostarczony).
@UTF-8 Możliwe jest również, że nie mają kompilatora (może nie mogą z powodu problemów z licencją / platformą) lub nie mają umiejętności w tym języku, aby zrozumieć źródło.Nawet wtedy * nadal * chciałbym mieć kod
Popvoted i ++ za to, że to dziwne, że chcą pliku wykonywalnego, a nie źródła.Do licha, kiedy oceniam pracę domową, chcę, aby źródło i wszystko inne wymagane do skompilowania, w tym polecenia / instrukcje / opcje / argumenty kompilatora, jeśli jest bardziej złożone niż „g ++ foo.cpp -o foo”
Graham
2017-04-28 17:58:59 UTC
view on stackexchange narkive permalink

Podsumowując sytuację na podstawie danych: -

1) Wymyśliłeś algorytm na papierze / Matlabie / czymkolwiek.

2) Zaimplementowałeś ten algorytm w niektórych programach

3) Zbudowałeś zestaw danych testowych, aby przetestować algorytm, i dostałeś kilka wyników, które pokazują, co powinien robić w teorii.

4) Umieściłeś ten test dane za pośrednictwem kodu i otrzymałem wyniki pokazujące to, co robi w praktyce.

W tym procesie jest wiele miejsc, w których może wystąpić problem z Twoją metodologią. Twój kod może nie odzwierciedlać poprawnie Twojego algorytmu. Twoje dane testowe mogły zostać przetworzone wstecz od kodu zamiast do przodu od algorytmu. Twoje dane testowe dla algorytmu i dane testowe dla kodu mogą się różnić.

Chyba że recenzent ma algorytm i kod źródłowy i wszystkie dane testowe zarówno dla , jak i wszystkich danych wyjściowych dla obu, nie mogą one zweryfikować, czy Twoja praca jest solidna i czy wnioski są prawidłowe. Nie podlega to sporze - jest to logicznie niemożliwe, jeśli chcą odpowiednio przejrzeć Twoją pracę. Cokolwiek innego to przyjmowanie założeń, które mogą być nieważne.

Osobiście byłem dotknięty tą sytuacją, kiedy moja firma kupiła od badacza jakąś IP teorii sterowania. Napisał artykuły na temat tego, jak to miało działać i stojącej za tym teorii, a następnie zbudował trochę elektroniki, aby wdrożyć swoją teorię. Jego artykuły obejmowały teorię, a także zawierały schematy elektroniki. Kiedy przeczytałem to, aby dowiedzieć się, jak zaimplementować jego teorię w oprogramowaniu, stwierdziłem, że schemat zawiera dodatkowy filtr. Działanie tego filtra okazało się krytyczne dla stabilności, a nawet skuteczności systemu, ale nigdzie nie zostało udokumentowane w jego pracy. Dopiero gdy rozmawialiśmy z nim telefonicznie, dowiedzieliśmy się, do czego służy filtr i jak mieliśmy go dostroić.

Było to w artykule, który teoretycznie był recenzowany w momencie publikacji. Najwyraźniej nie został on wystarczająco dokładnie oceniony! Jego wyniki pokazały, że przy tych samych danych wynik implementacji był bardzo zbliżony do teoretycznego oczekiwanego wyniku, a efekt filtra był w innym miejscu w odpowiedzi. Mimo to implementacja nigdy nie działałaby bez obecnego filtra i nie byłoby wcale trudno uwzględnić to w modelu teoretycznym. Mógłby nawet powiedzieć, że „ten filtr jest wymagany z tych powodów, ale można go zignorować w tym obszarze odpowiedzi, na którą patrzymy z tych powodów” i zostałby objęty. To, co jest niedopuszczalne, to to, co zrobił, czyli w ogóle o tym nie wspominając, ponieważ końcowym rezultatem tego jest to, że ktoś próbujący wdrożyć jego pracę nie byłby w stanie.

Jak powiedziałem, on nadal publikuje swoją pracę i nikt nie narzekał w tym czasie. Powinien jednak zostać zauważony przez jego oryginalnych recenzentów. W Twoim przypadku recenzent powinien szukać takich rozbieżności - to cały punkt recenzji. Więc jeśli ludzie proszą Cię o rzeczy, których nie udostępniłeś, (a) to dobry znak, że dokładnie sprawdzają, i (b) powinieneś był to udostępnić w pierwszej kolejności jako najlepsza praktyka.

Alexey B.
2017-04-28 20:06:47 UTC
view on stackexchange narkive permalink

Zgłaszanie artefaktów to rzecz w CS. Widziałem, że przygotowujesz maszynę wirtualną, na której oprogramowanie jest już skonfigurowane i gotowe do przeprowadzania eksperymentów. Dlatego recenzent może odnosić się do tego, że czasopismo ma jakąś oficjalną procedurę zgłaszania artefaktów. Alternatywnie, niektórzy autorzy po prostu udostępniają kod źródłowy swoich narzędzi i testów porównawczych za pośrednictwem usług takich jak github, a recenzent może sugerować, że powinieneś to zrobić. Jeśli chodzi o nieufność, informatycy są naturalnie ostrożni w stosunku do testów porównawczych i narzędzi, ponieważ ostateczne dane mogą w dużej mierze zależeć od sposobu skonfigurowania eksperymentu (np. Jeśli porównujesz z własną implementacją istniejącego algorytmu, czy zaimplementowałeś go poprawnie ). Może się również zdarzyć, że liczby, które podajesz w artykule, wydają się nieco dziwne, ale wtedy recenzent wskazałby, co dokładnie im nie pasuje.

Sod Almighty
2017-04-28 06:33:42 UTC
view on stackexchange narkive permalink

Przesłanie pliku wykonywalnego to nie to samo, co przesłanie kodu źródłowego. Plik wykonywalny tak naprawdę nie daje odbiorcy dostępu do oryginalnego kodu (co oczywiście student informatyki powinien już wiedzieć). Nie widzę problemu z tą prośbą.

Widzę poważny problem: plik wykonywalny uruchomiony na tych samych przypadkach testowych da te same wyniki.nawet jeśli te wyniki są błędne z powodu błędu w programie.
Jestem ciekawy, jak można wysłać „plik wykonywalny”, powiedzmy, kodu Pythona, nie dając dostępu do oryginalnego kodu?Czy oczekuje się od Ciebie zaciemnienia tego?
@jamesqf Mogli wypróbować inne przypadki, nie objęte przez autorów.
Każdy plik wykonywalny można zdekompilować, aby utworzyć funkcjonalnie ten sam kod.Każdy kod, który kompiluje się do JVM lub .NET, można zdekompilować do czegoś względnie zbliżonego do oryginału, a nawet kod maszynowy może zostać rozerwany przy wystarczającej ilości pracy.Chociaż głęboko wierzę, że kod źródłowy powinien być publikowany z takimi publikacjami, jeśli odmówisz tego, nie możesz zaoferować pliku wykonywalnego, tak jakby ukrywał to, co chciałeś ukryć przed kodem źródłowym.
@CaptainEmacs, ale nie mogą tego zrobić, jeśli nie widzą, co faktycznie robi program.Równie dobrze może mieć dane osadzone w pliku wykonywalnym lub robić coś innego niż to, co zostało zgłoszone.
@mathreadler Oczywiście to wszystko może przynieść pecha.Jednak miałem dokładnie taką sytuację podczas doktoratu i autorzy przesłali mi plik wykonywalny, na którym mogłem wypróbować swoje przykłady.Jeśli jest złe kodowanie (stałe zakodowane na stałe), czasami nadal jest możliwa edycja pliku binarnego, aby to naprawić (ja też to kiedyś zrobiłem).
twilighttucson
2017-05-01 05:24:54 UTC
view on stackexchange narkive permalink

Biorąc pod uwagę moje osobiste doświadczenia ze społecznościami open source i założenie, że artykuł zawiera całość omawianego algorytmu, wysłanie kodu źródłowego lub powiązanej kompilacji wspomnianego oprogramowania nie przyniosłoby wielu negatywnych skutków.

Pozwoliłoby to recenzentowi zweryfikować wyniki i twierdzenia autora artykułu. Kluczową kwestią, której może poszukiwać recenzent, jest to, że poprawnie zaimplementowałeś algorytm w kodzie źródłowym i nie opierasz się błędnie na funkcji języka programowania, systemu operacyjnego lub sprzętu, aby twierdzić o jego czasie działania lub innych funkcjach.

Na samą myśl chciałbym odnieść, że w przypadkach związanych z I / O łatwo jest pomylić wydajne algorytmy z, na przykład, zdolnością Javascript do uczynienia prawie każdego wywołania funkcji asynchronicznymi. Oczywiście jest to głównie widoczne w operacjach związanych z we / wy, a nie w proliferacyjnych pętlach obliczeniowych. Wtedy zmierzona wydajność nie jest wydajnością algorytmu jako formalnego dowodu, ale; zamiast tego opiera się na funkcji specyficznej dla języka.

Najistotniejsze jest to, że istnieje wiele przypadków, w których formalny algorytm i implementacja mogą odbiegać od wiernego reprezentowania siebie nawzajem, a robiąc to, wniosek, jeśli jest oparty na metrykach empirycznych, takich jak czas działania, może przebiegać w wiele kwestii, w których niewłaściwa implementacja może świadczyć o błędnym wniosku.

abought
2017-05-01 21:29:34 UTC
view on stackexchange narkive permalink

Kod źródłowy może zawierać błędy i aby naprawdę skutecznie przejrzeć algorytm, opis samej metody w prozie może być niewystarczający. Dzielenie się czymś poza tekstem jest korzystne; dobry artykuł z rzeczywistym kodem źródłowym (+ przykładowe dane wejściowe) to złoty standard odtwarzalności.

Jedna zabawna uwaga: w zależności od miejsca, w którym znajduje się recenzent, możesz nie być dozwolony aby dać im plik binarny. Np. Część kodu korzysta z prawnie zastrzeżonych bibliotek, które są licencjonowane bezpłatnie w środowisku akademickim, ale ktoś z branży może wymagać oddzielnej licencji, aby nawet używać istniejącego pliku binarnego, a tym bardziej go kompilować. (zdarzyło mi się to raz, ale nie w ramach wzajemnej oceny)

Marquis of Lorne
2017-04-29 04:55:35 UTC
view on stackexchange narkive permalink

To idiotyczna prośba z jego strony.

  1. Mógłby złapać wirusa.
  2. Nie ma realistycznego sposobu na sprawdzenie, czy plik wykonywalny implementuje to, co opisano w twoim artykule ergo w żadnym wypadku prośba nie ma jakiejkolwiek wartości naukowej.

Powinien prosić o kod źródłowy i to wszystko, na co powinieneś się zgodzić daj mu.

# 2 jest często fałszywy.Wiele problemów ma tę cechę, że sprawdzenie rozwiązania jest znacznie łatwiejsze niż znalezienie rozwiązania.W takim przypadku recenzent może sprawdzić, czy czarna skrzynka rzeczywiście dostarcza poprawnych rozwiązań i zmierzyć złożoność środowiska wykonawczego.Byłoby to szczególnie cenne, gdyby np. Recenzent zauważył, że wszystkie przykłady użyte w artykule miały szczególne cechy, które ułatwiały ich rozwiązanie niż przypadek ogólny, gdyż potrafił formułować własne przypadki testowe.
@BenVoigt Ale * jaka * czarna skrzynka?Skąd recenzent może wiedzieć, że ma czarną skrzynkę implementującą to, co twierdzi artykuł?
Jest ważny punkt, że użycie czarnej skrzynki nie gwarantuje, że artykuł zawiera dokładny opis i wyjaśnienie zastosowanej metody - ale recenzent może być znacznie mniej zaniepokojony ryzykiem sfałszowania opisu, biorąc pod uwagę, że nowa metodaudowodniono, że istnieje, przynajmniej w porównaniu z ryzykiem fałszowania zarówno metody, jak i opisu.
@BenVoigt Nie mogę tego zrobić po słowie „ale”.Czarna ramka niczego nie dowodzi na temat twierdzeń zawartych w artykule.Dowodzi to tylko, że istnieje czarna skrzynka, która w jakiś sposób daje oczekiwane wyniki.
Recenzent mógłby uruchomić plik wykonywalny z innym zestawem parametrów, aby odtworzyć znany wynik.OP wydaje się nie zapewniać wystarczających informacji, aby wiedzieć, że tak jest.Jeśli chodzi o część z wirusem, użytkownik Linuksa może czuć się bezpieczniejszy niż użytkownik Win.
@Magicsowon Chciałbym sprzedać Ci Most Brookliński.Mam tytuły własności.Nie pokażę Ci ich, ale mogę wysłać plik .exe, który będzie wyświetlał „tak” za każdym razem, gdy zapytasz go, czy jestem jego właścicielem.
@Magicsowon „użytkownik Linuksa może czuć się bezpieczniejszy niż użytkownik Win” Użytkownik Linuksa tutaj.W ogóle się z tym nie zgadzam.Możesz łatwo napisać program, który niszczy dokumenty osobiste lub wysyła je przez połączenie sieciowe na obu platformach, jeśli odbiorca jest na tyle uprzejmy, że uruchomi go za Ciebie.Linux jest bezpieczniejszy dla „powszechnego” złośliwego oprogramowania, które nie jest skierowane konkretnie do Ciebie, także dlatego, że jest ich więcej, które są przeznaczone dla systemu Windows.
@AndreaLazzarotto Słowo kluczowe to „if”.Użytkownicy Linuksa, którzy polegają na swoich maszynach w badaniach, są często na tyle paranoiczni, że mają kopię zapasową danych w 3 różnych miejscach i uruchamiają oprogramowanie innych firm tylko wtedy, gdy nie mogą niczego uszkodzić.Nie wyklucza to ludzi takich jak ja, którzy nigdy nie stracili danych w sposób, w jaki je opisujesz i po prostu czują się dzięki temu bezpieczni.
@EJP Zrobię to, gdy tylko moja bardzo daleka ciotka z Liberii przyśle mi spadek, abym mógł Ci zapłacić.


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...