題:
同行審稿人要求提供可執行文件以檢查我的結果是否正常?
Marvel LePont
2017-04-28 02:24:57 UTC
view on stackexchange narkive permalink

我剛收到一份提交給Elsevier期刊的手稿的決定信。這是一次修訂,然後重新提交。但是,其中一位審閱者要求提供可執行文件以檢查我的結果。 (我對他的評論感到不信任。)

這是一篇有關計算機科學論文的文章,該論文針對文獻中的一組實例測試算法的效率。我將算法的結果與其他作者的結果進行了比較。

需要澄清的是:本文討論了某些軟件,而審稿人希望能夠運行該軟件?我不知道這種情況有多普遍(我不是計算機科學家),但是只要該軟件具有任何許可允許您將其提供給審閱者,聽起來確實是合理的要求。
好吧,如果您發布算法,則需要以某種方式發布實際代碼。聽起來您的手稿根本不包含手稿?
如果仍然要發布該算法,我看不到“為什麼不”!
@DSVA:“如果發布算法,則需要以某種方式發布實際代碼” ...您認為源代碼附帶多少已發布算法?
@Mehrdad“您認為源代碼附帶的已發布算法的百分比”比源代碼應附帶的百分比要少得多。恕我直言,如果您不執行算法就無法驗證索賠,那麼應該附上源代碼,並且源代碼應該是可審查的,否則這不是一門好科學。在他們中間,任何審稿人都不會接受帶有“魔術發生在此處”的論文,因此也不應該允許“閉源軟件發生在此處”。
不信任的審閱者是一件好事,這意味著他們將對您的論文進行嚴峻的考驗,如果論文有問題,他們更有可能找到它們,這對您的長期利益是有益的。我非常懷疑他們不信任你的誠實,只是結果。
作為幾乎沒有經驗的人來發佈軟件(或算法),難道不會為他們提供經過編譯的可執行文件只是為他們提供一種運行代碼而不查看它的方法嗎?
@Sumyrda“如果您不執行算法就無法驗證要求,……,這不是一門好科學”。不幸的是,對於算法而言,事情通常並不那麼簡單。許多算法可以被證明是正確的,但實施起來仍然不容易。這就是為什麼算法工程是一個嚴肅的領域的原因。Chazelle的三角剖分算法就是其中一種。他的證明很可能是正確的,但就算是經常使用的算法,但據我所知,暫時沒有實現!
用一般的科學術語來說,只有真正的同行評審者才有可能這樣做。過多的百分比可能會將其標記為過於困難。(被告知)他們的一天是同行評審意味著REVIEW!。別人確信您知道自己的東西,並會以他們的名字(儘管是匿名的)作為結論。這樣的人固然很煩人,但它們是構建真正科學的基礎的一部分。或曾經是。
您建議他採用什麼其他方式來驗證您的結果?
“ @Discretelizard”許多算法可以被證明是正確的,但仍然完全不容易實現。但這正是我所說的。您要么顯示偽代碼並證明它是正確的,要么如果由於某種原因而不能這樣做,尤其是當您聲稱自己的算法比其他算法快時,則應該顯示代碼-或提供其他代碼如果您能想到一些方法來驗證您的主張。
請說明:關於算法的論文?還是程序?還是在特定輸入上產生特定實施的結果?
您永遠不要分發可執行文件,而應該分發源代碼。沒有人希望執行二進製程序而不從源代碼進行編譯。它可以在您的系統上執行任何操作。人們可以嘗試使用沙箱解決,但如果源是科學工作的一部分,為什麼不分發源呢?
@JonasStein我想我想要源代碼的唯一原因是可以檢查它是否有錯誤,而不是因為我擔心另一個研究人員會調試我的系統。特別是沒有自願提供此類可執行文件,而是應要求生產它的人。
@PhdStudent“關於科學的好處是,不管您是否相信科學,這都是真的。”我當然相信我們的科學家,但是這種信任是通過驗證和同行評審獲得的。當我們未經證實地出版科學時,我們最好是對偽科學開放,而對最壞情況則是故意欺騙。
我觀察到使用男性代詞來指稱一個匿名評論者。我認為這是我們對我們不利的隱性偏見。
@Sumyrda源代碼和偽代碼之間有區別。源代碼是一個實現,只是還不是可執行形式。偽代碼不是源代碼,它只是描述算法的一種方法。但是,如果您的意思是至少必須存在某種針對算法結果的(由讀者)可驗證的參數,那麼我當然同意。
@Discretelizard確實,它必須是可驗證的。無論是通過與您的推理一起進行偽代碼驗證還是通過查看源代碼進行驗證都無關緊要,但一個或另一個必須可行。我為通過對一個封閉的源代碼可執行文件運行測試來驗證要求而感到痛苦-我覺得這裡仍然有太多的“魔術發生”,但是總比沒有好。
八 答案:
Dan Romik
2017-04-28 03:27:32 UTC
view on stackexchange narkive permalink

我不知道這是否正常,但對於所有審稿人來說,做出合理的努力以驗證作者的主張正確無誤是正常的,因此,在一定程度上,這是不正常的,我只能稱讚審稿人願意付出其他審稿人沒有做出的努力。您認為“不信任”是審稿人的工作,或多或少(而且說審稿人的工作是不信任作者的主張,這可能有些準確,所以我看不到被作者信任的想法。評論者,以免感到羞恥或冒犯。

順便說一句,對於作者來說,提供複製和驗證結果所需的任何軟件(只要有可能,包括源代碼)也是正常的。因此,如果您不滿意審稿人提出的令人討厭的請求,這些請求會延遲您在紙上做出的決定,那麼下次您可以通過釋放源代碼(或至少將其提交給期刊)來避免此類問題。我相信審稿人會更加快樂,最終所有人都將從中受益,包括您在內。

謝謝您的評論,也許這讓我感到反感,因為這是我的第一篇期刊論文。但是,在我的研究領域中,作者提供其代碼並不常見。無論如何,我會將可執行文件發送給審閱者,因為他說如果沒有此項檢查,該論文將無法被接受。再次感謝你。
作為從事該行業並以“局外人”的身份閱讀論文的人,一直令我感到非常奇怪的是,存在著“隱藏代碼”的趨勢。我的感覺是,就像紙一樣,代碼應該在那裡並且可以使用。我絕對會與Dan在一起,應該做的更多。至少對我來說,不發布代碼總是會產生一些令人困惑的回味。
不幸的是,諸如《計算物理雜誌》(一個非常有名的期刊!)之類的期刊中描述的大多數算法和數值方法都是在內部封閉源代碼中實現的。我在那裡做了一些審查,我只需要相信結果。
即使不需要復製或驗證結果,對於作者來說也可以提供可用的軟件。我能想到我曾經嘗試實現的一種算法論文,但由於似乎沒有輸入而放棄了。參考實現將有助於理解本文。
對“不信任”感覺的正確構架表示同意-更好地將其解釋為健康的科學懷疑論,每位審稿人都應對此持懷疑態度。我對同行評審的論文(尤其是對於我不太熟悉的主題)給予一定的信任,這恰恰是因為它們滿足了一組評審員的懷疑。
@SBI一點也不奇怪。如果您將4年的工作投入到代碼中,則需要它以足夠的論文/引文/注意力獲得回報,從而獲得晉升。一篇論文不會做到這一點,並且如果您發布代碼,則您將需要花費更長的時間來編碼新的可發布結果,而競爭對手會使用您的代碼來欺騙您。它與其說是“發布更多而不是替代僱用或滅亡”,不如說是“發布或滅亡”。(就我個人而言,我確實發布了代碼;我也死了。)
答案是假設審稿人的內心只有最好的意圖,同時還有一種理想主義的傾向來改善科學文化。儘管我會立即讚揚這些事情,但不幸的是我們生活在現實世界中。需要考慮的是,審稿人是一位匿名人士,他要求研究過程的核心部分在該領域具有明確的專業知識,並因此對此有潛在的興趣。我還建議從某些人可以嘗試利用審閱者匿名和特權的角度來仔細考慮此類請求。
引起我注意的另一個危險信號是它們請求一個“可執行文件”。除了對其進行逆向工程外,用戶沒有辦法驗證可執行文件是否只是在沒有任何算法的情況下打印結果(這裡不做過多詳細介紹)。這樣的請求可能意味著審閱者通過有意不請求源代碼而試圖使作者陷入虛假的安全感。
@user3209815:他們可能迎合了Xerxes的觀點:可能不接受發布源代碼,因為其他作者隨後可以獲取OP。將文件設為可執行文件意味著他們將不得不反編譯文件...這可能不可行。但是,正如您所說,無法驗證這樣的可執行文件是否只是打印出所需的結果。
@Xerxes如果您的想法在很大程度上取決於封閉的源代碼,那麼您的想法如何在論文中發表?我的意思是,無論如何,您都會公開您的整個想法。我寫了無數次基於代碼的代碼。通常,代碼更是一種概念驗證,而不是比您發布的內容擁有更多的信息。相反,它變得更加棘手。在沒有證明其實際工作的情況下提出索賠非常困難。
@SBI當然,本文必須是這樣的,任何人都確實可以實現算法!但是,這可能是許多無聊的軟件工程工作。
-1
這就是@Xerxes的原因,應使用要求署名的許可證來發布代碼。如果人們要採用您的代碼並根據該代碼發表論文,那麼他們將不得不把您歸因於該代碼的原始作者,就像他們不得不引用您使用已發表論文的結果一樣。
@VladimirF:“我只需要相信結果”。不,你沒有。如果結果是由軟件產生的,則您應該能夠驗證結果,如果無法驗證,則您不接受它。俗話說“有圖片,還是沒有發生”。
我要補充一點,可執行文件(編譯後的代碼)*本身*,儘管它允許重複工作,但在整體方案中並不是特別有用。正如其他人所說,源代碼是更重要的事情。它是通用軟件(在這種情況下,為什麼審稿人不能自己下載它?),或者是稀有或專有的代碼,在這種情況下,源代碼是更重要的細節。這是需要復制的方法,而二進製文件是一個隱藏代碼的黑匣子,這就是該方法。
審閱者受保密性約束-您可以在不發布審閱者的情況下將代碼提供給審閱者。是的,審稿人有時會作弊-很少發生。審稿人嘗試代碼的動作有多種。有關一種方法,請參見http://www.artifact-eval.org/。
@gnasher729即使作者沒有提供設施讓您重新進行實驗,您也相信實驗嗎?如果該數字方法是在作者沒有完全重新分配權的CFD代碼中實現的,該怎麼辦?在超級計算機上,該計算可能會花費很多cpu時間,並且審閱者將不會重新計算它們。我不會為我審閱的那篇論文。結果分析也可能很耗時。
@Xerxes不,您沒有花費4年的時間編寫代碼。您花了四年的時間在算法上,已經通過論文讓全世界知道了。該代碼只是該代碼的一個實現,如果您在確定算法後就開始編寫,則可能只需一小部分時間就可以完成。
Chris H
2017-04-28 13:02:37 UTC
view on stackexchange narkive permalink

我來自另一個領域,在這個領域中,我們使用的代碼不是主要輸出。但是,如果裁判要求提供代碼,我們將很樂意提供。我們的大部分工作都是在python中完成的,因此可執行文件將不再常見,而源文件也會(對於matlab也是如此)。 > executable ,而不是 source

請不要因為某些原因而被請求冒犯:信任您不是審稿人的工作;檢查您的論文是他們的工作。如果審閱者對您的工作有足夠的興趣要運行您的代碼,那麼他們並不會立即將您的論文解僱。

我喜歡最後一點。如果裁判願意試用我的軟件,這對我來說似乎還很榮幸:)
實際上,@Džuris表示他們非常重視您的論文。
謝謝您的第二段!這裡似乎沒有人看到這一點。當我閱讀問題的標題時,我以為OP認為有人請求可執行文件而不是源代碼是很奇怪的,因為這表明他們不太在意檢查源代碼中的錯誤/錯誤/故意錯誤,實際上太愚蠢或懶惰,無法自己編譯源代碼(我假設已提供)。
@UTF-8也有可能他們沒有編譯器(可能由於許可/平台問題而沒有)或沒有該語言的技能來理解源代碼。即使那樣,我還是*仍然*想要代碼
由於需要一個可執行文件而不是源文件,因此對其提出異議並提出了++的要求。當我給作業評分時,我希望獲得源代碼以及使其編譯所需的任何其他內容,包括比“ g ++ foo.cpp -o foo”更複雜的編譯器命令/語句/選項/參數。
Graham
2017-04-28 17:58:59 UTC
view on stackexchange narkive permalink

用數據總結情況:-

1)您在紙上/ Matlab /其他方面想出了一種算法。

2)您在某些編程中實現了該算法

3),您構建了一組測試數據以執行算法,並從理論上得出了一些結果。

4)您進行了測試通過代碼進行數據處理,並得出一些實際的結果。

在此過程中,您的方法可能會出現問題。您的代碼可能無法正確反映您的算法。您的測試數據可能是從代碼向後處理的,而不是從算法開始處理的。您的算法測試數據和代碼測試數據可能不相同。

除非審閱者俱有算法源代碼 的所有測試數據,它們都無法驗證您的工作是否正確以及您的結論是否有效。這沒有爭議-如果他們想適當地審查您的工作,從邏輯上講是不可能的。

我個人受到這種情況的影響,當時我的公司從研究人員那裡購買了一些控制理論IP。他撰寫了有關該方法的工作原理以及其背後的理論的論文,然後他構建了一些電子器件來實現他的理論。他的論文涵蓋了這一理論,還包括電子原理圖。當我閱讀本文以弄清楚如何在軟件中實現他的理論時,我發現原理圖中有一個額外的過濾器。事實證明,此過濾器的作用對於系統的穩定甚至有效至關重要,但是在他的工作中的任何地方都沒有記錄。直到我們和他打個電話,我們才知道濾波器的目的是什麼,以及我們應該如何調整濾波器。

這是一篇論文,從理論上講,它在出版時已經受到同行的審查。顯然,它尚未得到同行的充分審查!他的結果表明,在相同數據的情況下,實現輸出與理論預期輸出非常接近,並且濾波器的效果在響應中的位置不同。儘管如此,如果沒有這個過濾器,實現將永遠無法正常工作,並且在理論模型中包含這個過濾器也不是很難。他甚至可能說過“由於這些原因而需要此過濾器,但由於這些原因,在我們正在尋找的響應區域中,可以忽略該過濾器”,而他將被涵蓋。不能接受的是他所做的事情,這根本就不提了,因為最終結果是試圖實現他的工作的人將無法做到。

就像我說的那樣,他仍然發表他的論文,當時沒有人抱怨。不過,他的原始審稿人應該已經發現了它。在您的情況下,您的審稿人應該尋找這樣的差異-這是同行評審的全部要點。因此,如果人們要您提供您尚未提供的功能,則(a)這是他們正在徹底檢查的好兆頭,並且(b)您應該首先將其提供為最佳做法。

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

工件提交是CS中的一件事情。我所看到的是,您將準備一個虛擬機,其中已經安裝了軟件並可以進行實驗。因此,審稿人可能是指該期刊有一些官方的人工製品提交程序。另外,有些作者只是通過github之類的服務來提供其工具和基準的源代碼,而審閱者可能建議您也這樣做。關於不信任,計算人員自然會對基準和工具比較保持警惕,因為最終數字可能很大程度上取決於實驗的設置方式(例如,如果將自己與現有算法的實現進行比較,是否正確實現了它? )。也可能是您在論文中給出的數字看起來有些奇怪,但隨後審閱者會指出對他們而言到底是什麼不合適。

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

提交可執行文件與提交源代碼不同。可執行文件實際上並沒有給收件人任何訪問您原始代碼的權限(當然,計算機科學專業的學生應該已經知道)。我認為此請求沒有問題。

我看到一個主要問題:在相同測試用例上運行的可執行文件將產生相同的結果。即使由於程序錯誤而導致這些結果錯誤。
我很好奇您如何發送例如Python代碼的“可執行文件”,而又不訪問原始代碼?您是否希望對其進行混淆?
-1
任何可執行文件都可以反編譯以產生功能上相同的代碼。可以將編譯為JVM或.NET的任何代碼反編譯為相對接近原始代碼的代碼,甚至可以通過足夠的工作將機器代碼拆開。儘管我深信源代碼應與此類出版物一起發布,但是如果您拒絕這樣做,則您將無法提供可執行文件,因為它將隱藏您想要從源代碼中隱藏的內容。
@CaptainEmacs,但是如果他們看不到程序的實際作用,他們將無法執行此操作。它也可能在可執行文件中嵌入了數據,或者執行了除聲明之外的其他操作。
@mathreadler當然,這可能並不幸運。但是,我在攻讀博士學位期間就遇到了這種情況,作者向我發送了一個可執行文件,我可以嘗試使用它。如果有不好的編碼(硬編碼常量),有時仍然可以編輯二進製文件以解決此問題(我也這樣做了一次)。
twilighttucson
2017-05-01 05:24:54 UTC
view on stackexchange narkive permalink

考慮到我在開放源代碼社區的個人經驗,並假設本文包含了整個算法,然後發送源代碼或所述軟件的相關編譯不會產生很多負面影響。

這將使審稿人可以驗證論文作者的結果和主張。審閱者可能要尋找的關鍵問題是您在源代碼中正確實現了算法,並且沒有錯誤地依賴於編程語言,OS或硬件的功能來聲明其運行時間或其他功能。

我想說的是,在I / O受限的情況下,它易於出錯的高效算法,例如Javascript能夠使幾乎每個函數調用異步的能力。當然,這主要是在I / O綁定操作中看到的,而不是擴散性的計算循環。那麼測得的效率不是作為形式證明的算法,而是;相反,它依賴於特定於語言的功能。

重點是,在很多情況下,形式算法和實現可以忠實地表示彼此,因此,如果基於經驗指標(例如運行時間),結論可以運行在許多問題上,不正確的實施可以證明錯誤的結論。

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

源代碼可能會有錯誤,並且要真正有效地審查算法,僅對方法進行散文描述可能就不夠了。分享文本之外的內容是有益的;帶有實際源代碼(+示例輸入)的優質論文是可重複性的黃金標準。

一個有趣的皺紋:根據您的審閱者所在的位置,可能不允許您這麼做給他們一個二進製文件。例如,某些代碼使用在學術界免費許可的專有庫,但是工業界人士可能需要單獨的許可才能使用現有的二進製文件,而編譯起來要少得多。 (這一次發生在我身上,儘管不是同行評審的一部分)

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

這是他的愚蠢請求。

  1. 他可以感染病毒。
  2. 他沒有現實的方法來檢查可執行文件是否實現了所描述的內容。在您的論文中, ergo 根本沒有任何請求的科學價值。
  3. ol>

    他應該索要源代碼,這就是您應該同意的全部給他。

#2通常是錯誤的。大量問題的特點是檢查解決方案比找到解決方案容易得多。在這種情況下,審閱者可以驗證黑匣子確實產生了正確的解決方案並衡量了運行時的複雜性。例如,如果審閱者註意到本文中使用的所有示例均具有特定特徵,使其比一般情況下更易於解決,因為這可以使他自己制定測試用例,那麼這將特別有價值。
-1
有一個合理的觀點是,使用黑匣子並不能確保論文包含對所用方法的準確描述和解釋,但是鑑於一種新穎的方法,審閱者可能不必擔心冒充描述的風險。被證明存在,至少與偽造方法和描述的風險相比。
@BenVoigt我不能在單詞“ but”之後加上標題。黑匣子並不能證明本文中的主張。它僅證明存在以某種方式產生要求保護的結果的黑匣子。
審閱者可以使用一組不同的參數來運行可執行文件,以重現已知結果。OP似乎沒有給我們足夠的信息來知道確實如此。至於帶有病毒的部分,Linux用戶可能比Win用戶更安全。
-1
@Magicsowon“此處的Linux用戶可能比Win用戶更安全”。我完全不同意。如果收件人足夠友好地為您運行它,則可以輕鬆編寫一個破壞個人文檔的程序,或者通過兩個平台上的網絡連接發送它們。對於未專門針對您的“廣泛傳播”惡意軟件,Linux更加安全,這也是因為針對Windows的惡意軟件更多。
@AndreaLazzarotto關鍵字為“ if”。依靠自己的機器進行研究的Linux用戶通常會非常妄想,可以將數據備份到3個不同的位置,並且僅在不會損壞任何東西的地方運行第三方軟件。但這並不排除像我這樣的人從來沒有以您描述的方式丟失數據,並因此而感到安全。
@EJP,我將在我遠方的利比里亞姨媽寄給我遺產後儘快這樣做。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...