Les bons programmeurs copient, les grands programmeurs volent

La simple copie du code peut être dangereuse. Cependant, cela peut être dit sur de nombreux autres aspects du développement logiciel, à condition qu'ils soient traités avec négligence. Dans cet article, je discuterai de questions telles que:

  • Que signifie la copie de code dans le développement de logiciels?
  • Que signifie le vol de code correct?
  • Quels sont les pièges d'une copie incorrecte?

Ce n'est un secret pour aucun programmeur que l'exemple de code publié comme réponses aux questions sur Stack Overflow se retrouve souvent dans la version finale des programmes. Peut-être que vous avez posé une question, et ils vous ont envoyé un diagramme de cycle idéal dans votre réponse for. Peut-être que vous avez trouvé une excellente réponse, dans laquelle il y avait un morceau de code c async awaitqui convenait à votre application.

Le dernier livre de programmation dont vous aurez besoin:

image


Lorsque je suis tombé sur un tweet qui parlait des avantages du vol, je me demandais si la copie du code pouvait être bénéfique?


Remarque: je ne suis pas favorable à ce que vous copiiez sans discernement le code de notre section Q&R. Parfois, vous pouvez avoir des problèmes à cause de cela. Mais, comme notre invité nous l'a montré dans le podcast Anna Lytical, cette approche peut être utilisée pour développer rapidement des prototypes fonctionnels.

Si vous copiez des exemples de code, veuillez laisser un lien vers la licence. Selon la dernière fois que le code a été modifié sur Stack Overflow, il est sous licence avec une version de la licence Creative Commons. Les codes les plus récents sont autorisés par CC BY-SA 4.0, auquel référence est requise.

Écrivez le code une fois, mettez-le au travail un million de fois


La copie de code à partir de Stack Overflow est une forme de plagiat, c'est-à-dire la duplication de code d'un ou plusieurs projets et sa réutilisation. En regardant quel programmeur vous demandez, mais il peut s'avérer que dans son travail de 5 à 10 ou même de 7 à 23% du code est copié à partir d'une autre source. Que l'emprunt soit effectué correctement ou non est déjà une question à discuter.

Quel que soit le pourcentage d'emprunt réel dans les projets individuels, nous pouvons affirmer avec certitude que la duplication de code est extrêmement courante. Le code de la chaudière est un code qui est régulièrement répété tout au long du projet. Il est probable que les programmeurs ne le tapent pas eux-mêmes à chaque fois. Des bibliothèques comme Lombok permettent de réduire la nécessité d'écrire un passe-partout, mais le fait demeure:

  • Il y aura toujours des parties du code qui devront apparaître encore et encore tout au long du projet.

ET

  • En raison du fait que ces parties auront très probablement encore besoin de petites modifications, ces fragments de code ne peuvent pas être supprimés dans une fonction ou une dépendance distincte.

En parlant de dépendances, nous pouvons mentionner les bibliothèques et les dépendances externes, qui sont un moyen efficace de réutiliser la fonctionnalité de code sans la copier. Cela fonctionne presque comme la copie de code, à la seule différence que dans ce cas, vous n'êtes pas responsable du maintien du fonctionnement de la partie copiée du code. Enfer, maintenant la plupart d'Internet fonctionne sur diverses plateformes et bibliothèques de plugins qui simplifient le développement. La réutilisation du code dans les bibliothèques est incroyablement efficace, car elle permet à chaque bibliothèque de faire une chose et de bien le faire. Et contrairement à la façon dont toutes les sources doivent être indiquées lors de l'écriture d'œuvres dans la communauté scientifique, beaucoup de ces bibliothèques n'ont besoin de rien de votre part pour indiquerque vous programmez en utilisant le code de quelqu'un d'autre ou que vous utilisez le code de quelqu'un d'autre comme base.

Le gestionnaire de packages JavaScript npm pousse cela à l'extrême. Vous pouvez installer de minuscules bibliothèques à fonction unique ( certaines de la taille d'une simple ligne de code ) dans votre projet via la ligne de commande. Vous pouvez vous procurer plus d'un million de packages open source gratuits et commencer à intégrer des fonctionnalités dans votre application.

Bien sûr, comme toute approche, cette méthode a aussi un inconvénient. Après avoir installé le package, vous perdez un certain contrôle sur le code. Certains attaquants ont créé des packages vraiment utiles, ont attendu d'avoir un niveau de téléchargement correct, puis ont modifié le code pour voler des portefeuilles Bitcoin. Nous devons rendre hommage au personnel du NPM, qui parvient à repousser rapidement de telles attaques. Cependant, plus vous avez de dépendances externes, plus vous imaginez de zone d'attaque.

Même les réponses Stack Overflow ne sont pas protégées contre la duplication de code. Un chercheur indépendant a trouvé plusieurs réponses à Stack Overflow dans lesquelles le code a été copié à partir d'autres sources. Un morceau de code Java a été trouvé dans plus de 40 réponses.

Les bons artistes copient les grands artistes volent


Dans le monde de l'art, le vol fait également partie de la création de grandes créations. Je me souviens comment je suis allé au musée Van Gogh à Amsterdam et y ai vu ses premières œuvres. J'étais choqué. Mais je ne savais pas qu'en fait ces peintures étaient inspirées de la peinture japonaise et de la gravure sur bois (gravure sur bois) . Ce que je pensais être un style unique à son époque faisait en fait partie de l'histoire du développement, mais pas celui auquel je pensais. Au lieu de suivre la voie du développement que les artistes danois avaient déjà empruntée, Van Gogh a utilisé les idées des estampes japonaises qu'il a trouvées à Paris (il a utilisé les idées de composition de construction et le style des coups de pinceau) et les a combinées dans ses œuvres.

Picasso est crédité du dicton: "Les bons artistes copient, les grands artistes volent." Picasso lui-même a tiré de nombreuses idées de l'art africain et polynésien et les a combinées avec ses croquis. L'idée du vol lui-même est fausse. En effet, qualifier le travail de quelqu'un d'autre de plagiat. La chose empruntée appartient toujours à quelqu'un d'autre. Vous copiez le style et il appartient toujours au propriétaire. Cependant, pour voler, vous devez vous approprier cette idée. Se déclarer créateur de l’idée de quelqu’un, c’est emprunter. Mais Picasso avait à l'esprit qu'il avait besoin de comprendre et d'intégrer l'idée dans son travail afin de la «voler». Steve Jobs a adoré cette citation et Apple a réussi sous sa direction parce qu'ils ont volé des idées, les ont combinées et les ont améliorées.

Lorsque vous copiez du code, vous courez le risque de simplement l'emprunter. Le code emprunté est complètement placé dans le projet s'il est bien intégré et ne cause pas d'erreurs, mais il peut contenir des bogues ou peut être créé par des cybercriminels avec la possibilité de les utiliser à leurs fins, ce que vous ne saurez pas. Le nombre de risques associés à un code incorrectement copié (ou copié tel que modifié) est énorme. En fait, les plaintes de code en double peuvent suivre le plagiaire. Si vous ne comprenez pas le code, vous risquez de laisser des trous dans la protection de ce qui était à l'origine censé être juste une démonstration du concept. Même le morceau de code le plus copié sur Stack Overflow n'est pas privé d'un bogue .

D'un autre côté, lorsque vous volez du code, vous savez certainement ce qu'il fait. Son cœur et ses fonctionnalités s'intègrent dans votre propre code. Si vous pouvez l'écrire à nouveau de la mémoire, cela signifie que le code est volé correctement. Cela signifie que le remaniement du code vous a donné plus qu'une simple copie. Elle vous a donné quelque chose de nouveau et d'original.
Alors oui, volez le code. Prenez-le, comprenez et appliquez dans vos projets. Faites en vôtre. Vous pouvez acquérir de l'expérience, améliorer vos projets et peut-être même votre CV (alias votre ctrl + C ctrl + V). Mais si vous copiez sans une compréhension absolue du nouveau code et de ce qu'il fait, vous courez le risque d'aggraver votre propre code.



image
Apprenez en détail comment obtenir une profession recherchée à partir de zéro ou passer au niveau supérieur en compétences et en salaire en suivant les cours en ligne de SkillFactory:





All Articles