Question:
Pendant l'examen par les pairs, dois-je commenter le code désordonné des auteurs?
reviewer
2018-08-29 03:30:24 UTC
view on stackexchange narkive permalink

Je passe en revue un article en mathématiques pures. Beaucoup de résultats dans l'article dépendent fortement des calculs informatiques, et les auteurs ont fourni dans l'article un lien vers le code Magma qu'ils ont utilisé pour la plupart de ces calculs. Cependant, ce code est presque impossible à comprendre en raison de la façon désordonnée dont il est écrit. Par exemple, il n'utilise aucune indentation, et toutes les variables reçoivent des noms comme «aaa» ou «X» qui ne donnent aucune information sur leur objectif dans le programme.

D'une part, les mathématiques sous-jacentes à ces calculs sont suffisamment expliquées pour qu'il soit possible de reproduire les résultats sans utiliser le code des auteurs (c'est ce que j'ai fini par faire). En outre, le document ne contient qu'un lien vers le code et non le code lui-même, donc je ne suis pas sûr que le code soit vraiment dans la portée de l'examen. De plus, le code difficile à lire ne semble pas rare dans le milieu universitaire, et la plupart des gens ne semblent pas s'en soucier. D'un autre côté, je pense qu'une petite quantité de travail des auteurs (qui comprennent probablement le code) rendrait ce code beaucoup plus utilisable pour d'autres, simplement en remplaçant certains des noms de variables par des noms qui transmettent en fait une signification.

Ma question est la suivante: est-il raisonnable pour moi de dire aux auteurs que leur code est inutilement difficile à comprendre et doit être amélioré?

Je ne vois pas pourquoi le contenu étant du code le rend différent d'une preuve: si je référençais un article avec une preuve qui nommait des variables de manière inappropriée ou n'expliquait pas ce qui se passait, je demanderais aux auteurs de l'améliorer.
Si vous avez fini par écrire votre propre version du code, envisagez peut-être de l'envoyer à l'auteur si vous êtes prêt à l'aider?IDK si «collaborer» avec les auteurs à ce degré sortirait des limites de ce qu'un critique devrait faire, mais d'un point de vue pratique, cela me semble raisonnable.(Je suis un geek du logiciel libre, et non un universitaire).
Une chose à garder à l'esprit en ce qui concerne le code est que ce style est très subjectif.- Personnellement, je n'aime pas l'indentation dans mes fichiers LaTeX et mes scripts bash.- Je peux facilement l'ajouter à mes codes C ++ avec Ctrl + I dans Eclipse et l'utiliser.Cela fait-il quelque chose d'utile?Parfois oui, parfois non.- Mais les noms de variables et de fonctions significatifs sont extrêmement utiles.Si vous avez vu du vieux code Fortran, vous verrez une énorme goutte de commentaires descriptifs, puis un "code miracle" qui n'est pas documenté / bien expliqué ... - Mais ça marche.(Et on peut retrouver des variables individuelles.)
Question pertinente sur ce site: [Dois-je partager mon horrible logiciel?] (Https://academia.stackexchange.com/q/37370/529)
Quand vous dites que vous avez reproduit leurs résultats, voulez-vous dire que vous avez réimplémenté leur calcul?
Se pourrait-il que le logiciel soit automatiquement généré par un autre outil?
Le style @DetlevCM est subjectif, oui, mais si votre code n'a pas de retrait, désolé, mais votre code est objectivement nul.Le but de l'indentation est de faciliter la visualisation de la portée de différentes parties de votre code (par exemple, des blocs, des boucles for, etc.).Ne pas avoir cela rend la lecture et le déchiffrement beaucoup plus difficiles.
Pensez-vous que vous n'auriez pas pu réviser l'article sans le code ou en fait-il partie intégrante?Je ne veux pas dire si vous avec une bonne compréhension et une bonne capacité à le réimplémenter n'en avez pas besoin, mais si vous vous attendez à ce que le lecteur moyen puisse utiliser le papier sans le code.
@JimClay Drôle, je trouve souvent que l'indentation pour rendre la lisibilité pire n'est pas meilleure dans le code.Quant à la portée: c'est à cela que servent les accolades.
"la plupart des gens ne semblent pas déranger" - citation nécessaire
Comment ce code dans un article de mathématiques ** pures ** devient-il particulièrement pertinent?
la revue a-t-elle des normes de style code qui pourraient être citées?Sinon, n'est-ce pas seulement une opinion stylistique par rapport à une autre?A peine raison de rejeter le papier
Il est difficile de juger de la pertinence de la qualité du code pour votre examen, mais mon expérience est que la mauvaise lisibilité du code de programmation est généralement le symptôme de problèmes plus profonds.C'est comme une mauvaise grammaire et une mauvaise orthographe en anglais: cela indique soit que les auteurs ne maîtrisent pas très bien la langue (ce qui dans le cas d'un langage de programmation est un signe de danger), soit cela indique une pensée confuse, ou un manque d'attention aux détails.
@GitGud Ce genre de chose dure depuis des décennies.Voir, par exemple, la preuve du [théorème des quatre couleurs] (https://en.wikipedia.org/wiki/Four_color_theorem).
@JohnColeman Je devrais être convaincu que ce théorème est un théorème mathématique "pur".Pour être honnête, je n'ai même jamais considéré la théorie des graphes comme de pures mathématiques.Quoi qu'il en soit, cette question ne serait jamais résolue en quelques commentaires.Je peux accepter que les gens aient d'autres opinions sur ce qui constitue des mathématiques pures.
Dix réponses:
aeismail
2018-08-29 03:43:43 UTC
view on stackexchange narkive permalink

Si les auteurs ont fourni un lien vers leur code comme référence, alors il est approprié de proposer des commentaires, en particulier si l'article est basé sur le code.

Cependant, je recommanderais de faire la critique constructif: proposez des suggestions concrètes sur la façon de l'améliorer plutôt que de simplement dire que c'est «salissant» ou «bâclé» et qu'il doit être «nettoyé».

Cela ne finira-t-il pas par être simplement un PR avec le code amélioré?Il semble que cela va décharger le travail d'écrire un bon code aux réviseurs qui comprennent ce que cela signifie.Les gens continueront donc à produire du mauvais code et espèrent que les réviseurs le corrigeront à leur place.Cela ressemble à un mauvais système d'incitation.
@Hakaishin Le rejet du papier est toujours une option.
@Hakaishin Je ne comprends pas ce raisonnement.aeismail n'a pas proposé de nettoyer le code pour les auteurs et d'envoyer une pull request, il a seulement suggéré de fournir des commentaires exploitables plutôt que de simplement dire que le code est compliqué et doit être amélioré.Si nous partons du principe que nous ne pouvons pas du tout donner de commentaires utiles, nous pourrions nous débarrasser de l'examen par les pairs et simplement prendre des décisions par oui / non sur les articles.
@Hakaishin Non. Un commentaire constructif ne veut pas dire "corrigez le code pour vous".La rétroaction pourrait être aussi simple que «mieux aligner les blocs de code».Le fait est qu'il devrait être exploitable.Un vague "réparez-le!"N'aide personne.Mais oui, si le code est l’un des principaux éléments du document, il est juste qu’un réviseur le commente.
Addendum @aeismail à votre commentaire: La critique constructive, comme vous l'avez dit, ne corrige pas le code de la personne;il s'agit simplement de signaler des problèmes spécifiques et, éventuellement, d'expliquer pourquoi ils sont des problèmes, plutôt que de simplement dire "c'est mauvais, corrigez-le".Ce dernier n'est pas constructif parce qu'il n'y a aucun moyen de savoir ce qui est mauvais, et vous pourriez bien refaire les mêmes «erreurs» parce que vous ne saviez pas ne pas le faire.
Ben
2018-08-29 06:06:19 UTC
view on stackexchange narkive permalink

Le code entre dans le cadre de la révision, et il convient de l'examiner et de proposer des suggestions constructives par rapport à ses lacunes. Maintenant, gardez à l'esprit qu'il incombe à l'auteur de satisfaire les critiques de leur argument, et si l'argument dépend d'un code informatique qui est si compliqué qu'il est illisible, il ne vous incombe pas de résoudre ce problème pour eux. Dans ce cas, les conseils constructifs pourraient se limiter à expliquer pourquoi ils sont actuellement trop difficiles à lire (c.-à-d. Manque d'indentation, noms de variables peu clairs, etc.), ce qui pourrait raisonnablement conduire à une recommandation de révision et de soumission à nouveau. Essayez d'être clair et complet en décrivant les raisons pour lesquelles le code est actuellement difficile à lire, afin que les re-soumissions ultérieures soient à la hauteur.

La meilleure chose à faire dans ces cas est de traiter le code informatique comme la prose dans le papier. Tout comme pour la prose, le code informatique doit être clair et intelligible par rapport aux normes de codage. S'il est désordonné et inintelligible, il doit être révisé jusqu'à ce qu'il soit clair. Les critiques n'hésitent pas à rejeter des articles lorsque la prose est inintelligible, il est donc parfaitement raisonnable de demander que le code informatique soit rendu intelligible.

Le code étant un gâchis n'est probablement pas une raison valable pour une révision majeure si le manuscrit lui-même mérite une recommandation plus positive.
S'il est trop compliqué pour être intelligible, et si l'argumentation dans l'article en dépend, alors je dirais que vous ne pouvez pas accepter sans changements.Quoi de plus positif que de réviser et de soumettre à nouveau dans ce cas?
Dans ce cas, l'OP a vérifié les résultats sans le code.C'est une zone grise.Personnellement, je mentionnerais les problèmes, mais si tout le reste est résolu, la décision serait laissée à l’éditeur.
einpoklum
2018-08-29 15:28:34 UTC
view on stackexchange narkive permalink

Oui, vous devriez commenter et peut-être plus.

Vous l'avez dit vous-même:

Beaucoup de résultats dans l'article dépendent fortement des calculs informatiques.

Eh bien, le code du programme pour les calculs fait donc partie du travail que vous passez en revue. Si le texte du document était difficile à lire, ne considérez-vous pas cela comme une faiblesse? Logiquement, donc, la même chose est vraie pour le code (même si c'est dans une moindre mesure).

De plus, si le code vous est illisible - peut-être qu'il contient des erreurs, malgré le son mathématique sous. Et enfin, si vous pouvez dire quels devraient être les résultats sans le code, alors pourquoi même avoir le code?

Donc, si vous sentez que le désordre n'empêche pas "d'analyser" le papier, commentez-le (et peut-être, le cas échéant, rétrograder de Strong Accept à Weak Accept, bien que ce soit peut-être trop sévère - cela dépend des détails.)

Si vous avez besoin de lire le code pour obtenir les résultats, et vous ne peut pas, alors c'est un problème plus grave. Mais avant de dire quelque chose comme «Nécessite une révision», consultez le rédacteur en chef de la revue / le président du comité de programme / etc.

Remarque: je suis informaticien, donc ma réponse pourrait être quelque peu biaisée. D'un autre côté, j'ai écrit un article de pure théorie sans code.

kingledion
2018-08-29 17:47:27 UTC
view on stackexchange narkive permalink

Le code malpropre affecte la reproductibilité

Vous avez essayé de reproduire leurs résultats avec le code lié, mais vous n’êtes pas parvenu à le faire. Alors que vous sous-entendez que vous avez finalement pu développer votre propre code et reproduire les résultats, je soutiens que du code mal écrit affecte la reproductibilité. En programmation informatique, cela peut être encore plus important, car les langages de programmation n'ont pas nécessairement une très longue vie. Qui sait si le magma ou toute autre langue sera de notoriété publique dans 50 ans.

À long terme, la reproductibilité est la partie la plus importante de l'effort scientifique. La preuve que faire a aboutit à b , un fait qui peut être ré-prouvé par quiconque souhaite essayer, est un élément de base axiomatique sur lequel d'autres résultats scientifiques peuvent reposer.

Si la reproductibilité est importante, alors il n'y a rien de mal à leur dire de nettoyer leur code. Franchement, si leur code est aussi mauvais que vous le décrivez, il semble que les auteurs auront du mal à comprendre leur propre travail pour y revenir dans quelques années. Dans ce cas, en les forçant à apprendre un peu à écrire du bon code, vous leur rendriez service.

E.P.
2018-08-29 17:45:54 UTC
view on stackexchange narkive permalink

Permettez-moi d’aborder brièvement un aspect qui n’apparaît pas dans les réponses existantes.

Ma question est la suivante: est-il raisonnable que je dise aux auteurs que leur code est inutilement difficile à comprendre et devrait être amélioré?

Oui , vous devriez commenter le code, mais pas seulement cela: convaincre les auteurs que c'est en eux-mêmes -intérêt pour résoudre ces problèmes.

Le code lisible est un code facile à réutiliser. Le code réutilisable est un code qui facilite l'exploration des mathématiques présentées dans l'article. Les mathématiques explorables sont plus susceptibles d'avoir des lecteurs qui trouvent des extensions intéressantes. Des extensions intéressantes sont publiées, et ces publications citent le code original - et, en outre, fournissent certaines des citations les plus précieuses.

Rendre votre code lisible et réutilisable ne garantit pas que cela se produira, mais si vous publier du code illisible, vous mettez en place une barrière artificielle devant un lecteur qui pourrait ou non poursuivre ses recherches en fonction de votre travail, et s'il y a suffisamment de telles barrières, ce lecteur se tournera simplement ailleurs. Rendre le code lisible est un investissement de temps modeste qui se traduit par une grande amélioration de l'extensibilité du travail.

Cette mise en place de barrières, bien sûr, n'est pas propre au code: pas clair les chiffres, la structure enchevêtrée, la grammaire désordonnée, les lemmes manquants et toutes sortes d'autres problèmes peuvent créer des barrières similaires, et votre travail en tant que réviseur consiste à les signaler et à aider les auteurs à s'en débarrasser. Le code n'est pas différent - aidez-les à l'améliorer!

ivanivan
2018-08-30 08:17:49 UTC
view on stackexchange narkive permalink

Je ne suis pas dans le milieu universitaire ou un critique d'articles / articles à ce niveau (adjoint à l'école de technologie), mais je note beaucoup de devoirs de programmation et des exemples de documents techniques étranges, et je fais du développement de logiciels pour payer réellement les factures.

Si le papier dépendait de la sortie du code généré, alors le code doit être lisible et compréhensible - sinon, le code peut ne pas faire ce que l'auteur pense faire et il est impossible pour les autres de confirmer w / o leur propre réimplémentation. Si une telle réimplémentation est relativement triviale, il semble que le code réel n'est pas important, et je me demande donc pourquoi du code cassé pour quelque chose de facile à implémenter en fonction des spécifications serait inclus ou référencé dans un article scientifique.

Étant donné que vous avez pu vérifier en utilisant votre propre implémentation de code de son ou ses algorithmes, je ne pense pas que ce soit le cas, mais cela devrait être pris en considération. Tout IDE décent ou même éditeur de texte avancé devrait être capable de formater automatiquement le code et d'effectuer une recherche / remplacement à l'échelle du projet (refactoring). Un peu pointe vers la pure paresse ....

* "Tout IDE décent ou même éditeur de texte avancé devrait être capable de formater automatiquement le code" * - Au contraire, cela signifie que n'importe qui peut formater le code à son goût.Par conséquent, le manque de formatage n'est pas un problème.Bien sûr, c'est paresseux, mais c'est juste un inconvénient pour le lecteur.
@NisargShah, un IDE ne peut pas donner à vos variables des noms significatifs.
Pierre de Buyl
2018-08-29 16:12:24 UTC
view on stackexchange narkive permalink

Les auteurs fournissent un lien dans l'article , donc le code est soit considéré comme une référence, soit comme faisant partie de la recherche. Quelle que soit la situation, cela soulève des questions:

  1. Le code est-il archivé? Les moyens pratiques d'archiver le code incluent Zenodo ou figshare. Le code sur une page d'accueil est aussi bon que pas de code du tout.
  2. Y a-t-il une licence pour le code? Sinon, son statut n'est pas du tout évident.

En tant que réviseur, c'est à vous de décider quoi faire. Les actions possibles incluent:

  1. Ne pas commenter le code.
  2. Commenter le code avec ce que j'appellerais le minimum: exiger que le code soit archivé et autorisé correctement .
  3. En fonction de l'importance du programme informatique dans la recherche, exiger un minimum de lisibilité et que l'auteur fournisse des tests sur le programme (c'est-à-dire que le programme fournit des réponses analytiques connues si certains jeux de paramètres le permettent

Concernant l'archivage, vous pouvez vous référer aux informations éditoriales du Journal of Open Research Software.

Le "Journal of Open Research" ne semble pas vraiment digne de confiance étant donné que le lien vers Codeplex et le code Google ont cessé de fonctionner depuis un certain temps.Et enfin, il faut payer pour la publication, ce qui soulève à nouveau des questions sur la fiabilité, en particulier compte tenu des informations obsolètes et de la dépendance apparente sur les auteurs pour héberger le code ailleurs ... (Elsevier a également un logiciel «payant pour publier»journal - mais ils proposeront d'héberger une copie de votre code avec le journal.)
Leurs frais de publication sont assez bas par rapport à Elsevier et ils proviennent d'une société scientifique (le [Software Sustainability Institute] (https://software.ac.uk/), donc je ne suis pas d'accord avec votre évaluation. (Avertissement:J'ai publié avec eux.) Vous avez raison en ce qui concerne la liste des dépôts, je vais leur en parler.
325 livres contre 500 euros n'est pas une énorme différence.Maintenant, ils peuvent avoir un bailleur de fonds réputé, mais cela devrait être correctement communiqué ET ils devraient éventuellement garder leurs ressources à jour.Google Code a fermé au début de 2016 tandis que Codeplex a fermé en décembre 2017. (En faisant un peu plus sur Google maintenant, il semble qu'Ubiquity Press soit normalement un "éditeur reconnu" d'articles en libre accès - Mais la présentation de la revue n'inspire pas exactement confiance.)
Albert van der Horst
2018-08-31 18:31:41 UTC
view on stackexchange narkive permalink

Je suis ingénieur logiciel et je souhaite répondre à la question sous cet angle. La plupart du code n'est pas lisible en soi. Vous avez besoin d'un commentaire pour documenter les structures de données et les spécifications des appels de sous-programmes. Les universitaires ne sont pas des ingénieurs en logiciel et je ne m'attends pas à ce qu'ils fassent un travail professionnel à cet égard. Pourtant, c'est certainement pour commenter la qualité du logiciel. Sans regarder le code réel, je ne suis pas sûr de pouvoir dire qu'il est illisible, car l'article (qui est selon le témoignage, suffisant pour reproduire le code) doit être considéré comme faisant partie de la documentation du programme. Si le programme utilise des noms courts, qui sont les mêmes que dans le papier, ce n'est pas un problème. Une indentation manquante n'est pas une indication de mauvaise qualité, mais de nombreux niveaux d'indentation le sont. Je vous suggère d'exprimer votre sentiment que vous avez du mal à lire, mais que vous n'êtes pas non plus un expert en code, et peut-être demander à un ingénieur logiciel de l'examiner. C'est un ensemble de compétences différent que vous connaissez. Cela devrait atténuer le commentaire.

Pour couronner le tout: j'ai fait un bon travail de nettoyage du code, que je ne comprenais pas au niveau de l'objectif. Vous serez surpris de ce dont un expert dans un domaine différent est capable.

En fin de compte, le code n'est pas essentiel, la qualité du code est accessoire et cela ne devrait pas affecter votre décision de toute façon.

akhmeteli
2018-08-31 11:17:09 UTC
view on stackexchange narkive permalink

Je crois comprendre que les auteurs ne soumettent pas le code pour publication, le code ne semble donc pas être soumis à votre examen. Les auteurs donnent juste un lien vers leur code. Cela soulève une question: s'ils venaient de fournir une référence à leur travail publié ailleurs, auriez-vous envisagé de leur dire que ce travail devrait être amélioré? On peut affirmer que la validité de leurs résultats dépend de l'exactitude de leur code, mais ils pourraient choisir de ne pas donner du tout accès au code, car «les mathématiques sous-jacentes à ces calculs sont suffisamment bien expliquées pour qu'il soit possible de reproduire les résultats sans en utilisant le code des auteurs ". En tant que critique, vous avez pris la peine de vérifier les résultats de leur calcul, allant ainsi au-delà de votre devoir, mais cela signifie que leurs résultats sont effectivement reproductibles.

Je pense donc que vous pouvez mentionner que leur code est moche (bien qu'apparemment correct), mais cela ne devrait pas affecter votre recommandation de publier / ne pas publier l'article.

S'ils ont fourni un * lien * pour travailler ailleurs, et que le suivi de ce lien mène à une page qui était fondamentalement illisible, ce ne serait pas une mauvaise idée de le leur signaler.
@RDFozz: Cela ne semble pas contredire la conclusion du dernier paragraphe de ma réponse.
Dans ma lecture de la question, je ne vois rien qui indique que l'OP recommanderait que l'article ne soit pas publié en fonction de l'état du code (cependant, il me manque peut-être quelque chose).Je me suis concentré sur les deux premières phrases de votre réponse et j'ai essayé de souligner la différence entre une référence à une œuvre publiée (qui pourrait nécessiter en fait d'obtenir une copie physique de l'œuvre pour la regarder, et qui estvraisemblablement dans un format qui ne permettrait pas une simple révision) et un lien vers une page Web (qui est généralement relativement facile à modifier / améliorer).
@RDFozz: Il peut y avoir une différence pratique, mais le code dépasse tout de même la portée de l'examen, et les auteurs peuvent avoir toutes sortes de raisons de ne pas toucher au code.
dusa
2018-10-23 19:43:03 UTC
view on stackexchange narkive permalink

Je n'ai connaissance d'aucune revue scientifique qui fonde ses décisions sur le code. Que ce soit en désordre ou non, ce n'est pas une préoccupation concernant le journal. Le fait qu'il devrait être reproductible devrait être un problème, mais je ne suis au courant d'aucune revue qui en fasse un critère, à l'exception de certaines initiatives pour certaines communautés, par exemple NIPS, CVPR. À mon avis, c'est déjà un bonus qu'ils aient choisi de le libérer (et dans certains cas, les gens ne sont même pas autorisés à les libérer en raison des règles de leur organisation). Si vous prétendez que le code n'est pas correct ou ne fait pas ce qu'il est censé faire, il se peut que ce soit une autre histoire, mais vous devez le justifier. Si vous voulez seulement faire un commentaire sur la négligence du code, je pense que vous devriez clarifier votre commentaire et souligner que cela n'affecte pas la revue globale, je suis d'accord avec un commentaire fait plus tôt "convaincre les auteurs que c'est dans leur l'intérêt personnel de résoudre ces problèmes. " Faites simplement savoir que votre commentaire sur le code n'est pas lié à la révision de l'article. De plus, veuillez ne pas décourager les personnes qui publient leur code même s'il est "désordonné".



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 4.0 sous laquelle il est distribué.
Loading...