Nous avons un cours de programmation universitaire et les autres étudiants posent des questions de programmation dans notre groupe Facebook. J'hésite un peu à partager tous mes programmes, surtout si c'est quelque chose de cool pour l'une des affectations, car ceux-ci sont examinés par les assistants techniques et ils peuvent remarquer si quelqu'un a le même programme et commencer à poser des questions sur d'où il vient. de. Pourtant, parfois, j'aimerais partager mon code pour aider les autres, mais je ne veux pas que les gens saisissent simplement mon travail. (Clarification: nous sommes autorisés à collaborer avec les tâches) C'est bien sûr une ligne mince. Bien que je veuille aider certaines personnes, je crains qu'elles n'aient pas l'honnêteté académique de réécrire le code par elles-mêmes.
La plupart de mes camarades ne sont pas très avancés dans leurs compétences, donc je m'en tirerais en disant cacher mon nom dans une chaîne encodée en Base-64 conçue dans un endroit discret. Pourtant, il peut être trop évident qu'une chaîne aléatoire soit assise.
Quelles options existent pour masquer mon nom dans un programme sans qu'il paraisse suspect?
J'ai vu chez CodeGolf qu'ils ont transformé l'art de l'ascii en autre chose lors de l'évaluation. Existe-t-il des stratégies similaires que je pourrais utiliser? La solution idéale serait quelque chose qui ressemble à quelque chose qui s'intègre discrètement mais qui a en réalité une fonction pour prouver que je l'ai codé depuis le début.
Clarification: (Désolé, j'aurais dû le dire plus tôt) Nous sommes autorisés à collaborer, mais nous devons expliquer nos programmes aux assistants techniques pour obtenir les points. C'est juste pour la satisfaction de cacher des oeufs de Pâques dans le code d'un autre s'il fuit, d'autant plus qu'il peut être tentant d'échanger des programmes pour vérifier que les réponses aux problèmes qu'ils génèrent sont équivalentes, etc. ou pour voir comment d'autres résolvent le problème.
Réponses:
Utilisez votre signature non pas dans votre code, mais dans un journal de développement accessible au public.
Publiez votre code dans un dépôt Github public. Incluez un Docblock avec votre nom dans le champ "Auteur". De cette façon, il est public que vous êtes l'auteur réel du programme.
Cela peut ne pas être qualifié de «dissimulation», mais à mon avis, c'est le cas. Si un étudiant décide de copier votre code, il pensera qu'il n'a qu'à échanger sa signature contre la vôtre. Imaginez leur surprise lorsque vous présentez des preuves publiques de leurs actes répréhensibles. Pour aggraver les choses pour eux, il est accessible en ligne. Vous pouvez même utiliser un outil en ligne, tel que Diffchecker , pour démontrer quelles parties de votre code ont été volées!
EDIT: Comme indiqué dans les commentaires, assurez-vous que votre école permet de partager votre travail de cette façon! OP a indiqué que son institution est d'accord avec cela, mais la vôtre ne l'est peut-être pas!
la source
"puisque ceux-ci sont examinés par les assistants techniques et qu'ils pourraient remarquer si quelqu'un a le même programme"
J'espère que oui, cela fait partie de leur travail de détecter et de punir la tricherie, le plagiat et d'autres fraudes.
Et dupliquer le travail des autres et le faire passer pour le vôtre est cela, la tricherie et le plagiat.
Si simple: ne donnez pas votre travail à d'autres. Aidez-les à écrire le leur si vous le souhaitez en leur donnant des idées sur la façon de résoudre les problèmes, puis laissez-les faire leur propre codage.
la source
Comme la réponse ci-dessus, j'encourage l'utilisation de quelque chose comme Github pour enregistrer votre développement du code, il existe d'autres méthodes que vous pouvez utiliser pour couvrir votre dos, comme vous envoyer la source par e-mail avant le partage, bien qu'un référentiel visible publiquement soit ce que je suggère fortement.
C'est bien sûr si le partage de code est hautement nécessaire. Et le pseudo-code? ou comme le "cliquetis freak" a déclaré, partager l'idée et non la mise en œuvre. (cela a plus de sens pour un code plus complexe)
la source
Vous pouvez également utiliser l'une des astuces les plus anciennes pour masquer les messages. Faire en sorte que la première lettre de chaque variable masque un message. Par exemple,
la source
Je pense que GitHub ou une solution similaire est correct, MAIS il y a deux choses à considérer:
la source
Les cartographes ont le même problème . Quelques techniques:
Introduisez une déviance improbable par rapport au style traditionnel de votre langue, par exemple ayez toujours des espaces déséquilibrés autour des opérateurs
if (lefthand== righthand)
Diffusez les non-opérations dans tout votre code, si elles font partie de la langue que vous utilisez.
lefthand = righthand;;
la source
Empêcher le plagiat dans PAS votre travail d'étudiant, c'est purement entre les mains d'un instructeur / TA.
D'une manière générale, traiter l'école comme une entreprise à source fermée. Vos camarades de classe sont des collègues d'autres employeurs. Vous ne pouvez pas partager de code au-delà de simples lignes simples et autres, et vous ne partagez JAMAIS des classes ou des projets entiers.
Masquer les "oeufs de Pâques" dans le code est généralement considéré comme non professionnel. (Les opinions peuvent varier ici)
Ne faites pas de code malodorant votre signature
Votre "signature" ou la façon dont vous différenciez votre code des autres doivent être de bon goût et ne pas gêner votre "odeur" de code de quelque manière que ce soit. C'est pourquoi je déconseille fortement ce qui suit:
Alors comment protéger mon code?!
D'une manière générale, la restriction de la disponibilité est votre meilleur moyen de protéger votre code. Si vous ne le rendez pas public et que personne ne pirate votre ordinateur, votre code est généralement sûr. Bien sûr, il pourrait être décompilé, rétroconçu, etc. À ce stade, ce n'est pas comme s'il correspondrait au code qui l'a généré de toute façon.
Je veux le rendre public, mais éviter qu'il ne soit plagié
Tout simplement non ... Par tous les moyens, la sorcellerie désordonnée dans votre code pourrait faire ressortir un plagiaire en supposant qu'il rend également son code disponible ... et ce n'est pas le cas .
Cela vous rendra également terrible lorsque d'autres regardent votre code et s'en vont. "Qu'est-ce que c'est que l'enfer avec toutes les fautes de frappe et les non-opérations?"
Mais je veux une signature de code, quelque chose que je peux regarder le code et dire que je l'ai fait, c'était moi, c'est le mien
Honnêtement, si vous codez bien, il ne devrait généralement pas être différent de tout autre code dans les projets sur lesquels vous travaillez. Bien sûr, il peut s'agir de nuances qui vous permettent de savoir sur quoi vous avez travaillé par rapport à ce que Bob a fait, mais elles devraient être assez douces.
Le seul code temporel se démarque énormément parmi les pairs: si quelque chose est nouveau et n'a jamais été fait auparavant dans votre cercle, ou s'il sent d'une manière unique à votre cercle.
la source
Étant donné que le problème est de masquer une signature dans le code source où
Une variation intéressante sur la stéganographie .
Vous ne pouvez pas utiliser la mise en forme ou les espaces, car cela peut être trivialement supprimé par n'importe quel IDE compétent.
Cela ne laisse vraiment que le nom des variables et des fonctions. Vous ne pouvez pas utiliser une sous-chaîne distinctive commune, car elle est trop facilement supprimée par une recherche et un remplacement. Cela laisse l'utilisation de noms de variables distinctifs et originaux qui devraient être supprimés individuellement. Les fautes d'orthographe et les mots en langue étrangère sont de bons candidats.
Les opportunités de créativité sont infinies!
Ensuite, un simple traitement de texte pour extraire et comparer les jetons découvrira rapidement les plagiaires.
la source
La suggestion de duozmo de noops générera probablement de mauvaises notes pour la négligence, mais cela pourrait être une bonne chose à inclure dans un exemple de code qui n'est pas censé être utilisé textuellement.
Cela m'a inspiré à penser à un motif de signature alternatif de tabulations et d'espaces dans les espaces blancs de début et de fin.
la source
Quelque chose de similaire que j'ai utilisé auparavant est de créer des variables nommées de la même manière que d'autres variables importantes, mais de laisser leurs noms en fonction de l'éditeur de texte afin que le changement ne soit pas facilement évident, ou d'utiliser des lettres avec des accents. Appelez plusieurs fonctions, auxquelles vous envoyez de nombreuses variables importantes du programme à partir d'une instruction if, en utilisant vos variables, ce qui ne sera jamais vrai, par exemple si (1eft == wrōng) Définissez une variable importante dans une fonction inutile à votre signature obscurcie.
Vous devriez être en mesure de trouver plusieurs didacticiels sur «Comment écrire du code non maintenable» qui pourraient vous aider.
la source