Avant que la singularité ne frappe, amusons-nous.
Les milliardaires utiliseront probablement l’IA pour anéantir la vie telle que nous la connaissons dans une course capitaliste sans fin vers le bas, je comprends. Mais pour l’instant, où nous en sommes avec l’IA, cela ressemble aux débuts d’Internet. À l’époque où StumbleUpon, AIM et Myspace étaient rois, et que vous naviguiez légitimement sur le Web en exploration. Loin des différentes saveurs du «jardin clos d’entreprise surveillé» que nous avons maintenant.
Donc, malgré les nouvelles négatives sans fin (bien que probablement plus correctes) sur la vie des codeurs sur le point d’être détruite par des modèles de langage froids et insensibles, puis-je dire à quel point la programmation par paire d’IA est amusante ? Je n’ai pas ressenti autant de joie loufoque depuis que j’ai écrit mon premier programme.
J’utilise Copilot AI de GitHub, mais je suis sûr que d’autres seront similaires
Le nombre de fois où j’ai dû quitter mon IDE pour Google a chuté. Je suis capable de faire à peu près n’importe quelle vérification directement à partir de mon code. Un exemple parfait : je voulais usurper certaines adresses IP pour anonymiser les journaux. Je ne me souvenais pas de la composition exacte (4 points ou 3 ? Sont-ils tous compris entre 0 et 255 ?), mais au lieu de chercher sur Google, j’ai tapé :
const createRandomFakeIPAddr
Qui a ensuite craché:
const createRandomFakeIPAddress = () => {
const randomIP = () => Math.floor(Math.random() * 255);
return `${randomIP()}.${randomIP()}.${randomIP()}.${randomIP()}`;
}
Et c’était tout ! C’était assez bon et je partais pour de meilleures choses. Dans secondes! Honnêtement, je n’ai pas suivi le nombre de fois où j’ai cherché des choses sur Google pendant le codage, mais maintenant j’ai l’impression que je ne laisse mon IDE que pour des concepts complets, et jamais seulement pour la syntaxe. Si quelqu’un doit paniquer, ce sont les moteurs de recherche basés sur la publicité (et crois moi ils sont inquietsré). Parce que bientôt tous ces programmeurs bien payés ne resteront plus assis à leur service toute la journée à voir des publicités sans rapport.
Tout ce temps ininterrompu passé dans mon code s’additionne. Pour rire, j’ai chronométré mon très première session avec Copilot (et Vite, ce qui est super aussi, mais c’est une autre histoire). En 49 minutes, j’avais complètement écrit mon idée approximative (un système de notation de formulaire) et fait un peu moins de 300 lignes. Regardez ici :
const fs = require('fs');const realIpToFakeIPHash = {};
const createRandomFakeIPAddress = () => {
const randomIP = () => Math.floor(Math.random() * 255);
return `${randomIP()}.${randomIP()}.${randomIP()}.${randomIP()}`;
}
// load all files in ./logs into a single array, replace the c-ip with random fake
const allLogs = fs.readdirSync(`${__dirname}/logs`)
.map((filename) => {
const fullFilePath = `${__dirname}/logs/${filename}`;
const fileContents = fs.readFileSync(fullFilePath, 'utf8');
const logContents = JSON.parse(fileContents);
logContents.forEach((log) => {
const realIP = log['c-ip'];
if (!realIpToFakeIPHash[realIP]) {
realIpToFakeIPHash[realIP] = createRandomFakeIPAddress();
}
log['c-ip'] = realIpToFakeIPHash[realIP];
})
fs.writeFileSync(fullFilePath, JSON.stringify(logContents));
return logContents;
}
);
Cela a été écrit en 30 secondes environ. Mais tu sais quoi? Pourquoi pas? Pourquoi ne devrait pas ce code ennuyeux soit terminé rapidement ? Rien de compliqué (ou d’intéressant). J’avais toujours l’habitude de vérifier des choses stupides comme « est-ce que c’est readDir
ou alors readdir
? Est-ce que j’obtiens le contenu ou le nom ? »
Toute l’auto-génération signifie maintenir l’état du flux beaucoup plus longtemps. Après aussi peu qu’une demi-heure, cela s’additionne sérieusement et la vitesse accrue est indéniable.
Pour ans, j’ai préconisé pour un code lisible. Eh bien, maintenant c’est obligatoire. Plus les noms de votre code sont bons, plus les suggestions de l’IA seront précises. Oui, vous pouvez techniquement écrire des commentaires décrivant ce que vous voulez que Copilot écrive.
Mais je trouve honnêtement que l’écriture de petites méthodes bien nommées est plus rapide (plus à ce sujet plus tard). Dans les deux cas, le code qui se retrouve dans le fichier ne ressemblera jamais à ceci :
const doIt = (val) => val.name ? 'All set!' : null;
Et c’est une victoire dans mon livre.
Nous savons tous combien de découpage et de copie nous faisons dans cette industrie, mais avec des exemples d’IA, il existe maintenant une troisième option : la réplication intelligente. Par exemple, j’avais un tableau d’objets écrits. Après un moment, j’ai réalisé qu’il serait en fait plus facile d’utiliser directement les clés/valeurs. Tout ce que j’avais à faire était d’écrire le premier exemple et Copilot a immédiatement suggéré les conversions évidentes. Et mon garçon, c’était si satisfaisant.
Je pense que si je devais identifier pourquoi la programmation par paires d’IA est si géniale pour moi, c’est qu’elle prend en charge le travail de grognement évident.
RuPaul avait raison. Il ne s’agit plus seulement d’écrire, il faut lire ce que les petits robots crachent. C’est comme faire des revues de microcode en permanence.
Je pense que c’est probablement la raison pour laquelle je préfère utiliser les méthodes nommées plutôt que les gros morceaux de commentaires, car cela facilite cette nouvelle transition vers 50–50 lecture-écriture. Je n’ai qu’à relire environ cinq ou dix lignes à la fois.
Ce genre de codage sera évidemment un peu une transition pour certains, mais c’est indéniablement une bonne pratique. Je suis devenu tellement meilleur pour vérifier rapidement les choses.
Je pense que les générateurs passe-partout sont incroyables, les modèles de Vite sont juste *baiser du patron*. Le problème c’est que je ne les utilise jamais assez assez pour valider les commandes en mémoire. Je dois toujours m’arrêter et regarder les choses. Mais maintenant?
Si je veux faire des activités de routine comme charger tous les fichiers dans un tableau, je dis simplement cela en anglais et c’est fait. Maintenant, ce n’est probablement pas parfait, mais c’est assez bon pour commencer et passer à autre chose ou modifier.
De temps en temps, j’ai juste cet horrible brouillard cérébral. Essayer de se concentrer sur 10 petits détails imbriqués à la fois est soudainement impossible. Et je dois être honnête avec vous : c’est un sentiment absolument terrifiant. Je déteste ça, et j’ai tellement peur qu’un jour ça ne s’arrête pas, ou qu’à chaque fois que ça arrive, ça devienne encore plus difficile de se concentrer en permanence.
Et comme par malchance, l’un d’eux a frappé quand j’expérimentais l’IA. Auparavant, je devais parcourir mon code, refaire chaque ligne encore et encore en essayant de me souvenir de ma chaîne de pensée. Ce n’est pas confortable et incroyablement frustrant. Mais avec mon petit copain IA, j’avais l’impression que mon ralentissement n’était plus douloureux. Je me suis beaucoup plus appuyé sur le copilote, j’ai utilisé plus de commentaires et d’essais et d’erreurs, et j’ai avancé à un rythme d’escargot, mais bon sang, j’ai quand même déplacé.
Les déficiences cognitives ou physiques affectent tellement plus que la plupart d’entre nous ne semblent le réaliser. Mais c’est absolument une avenue que je suis ravi de voir l’IA nous aider à marcher.
J’ai toujours aimé la façon dont les gens « programment » dans Star Trek. Ils ne font que parler avec l’ordinateur. L’ordinateur sait tout sur les faits et les sous-programmes, donc tout ce que l’homme a à faire est de résoudre des problèmes. Geordi et Data étaient un bel avenir, et pour ce bref instant, c’est là que nous en sommes.
je me mets au travail avec l’ordinateur pour automatiser les choses ennuyeuses et penser à la résolution de problèmes réels. Quel est le meilleur système d’idées pour faire ce que je veux? Comment structurer les données ? C’est un niveau supérieur, et beaucoup plus intéressant. Je ne m’enlise pas avec des choses sérieuses comme « est-ce pour..de ou pour..dans? » plus.
Ne vous méprenez pas : encore faut-il savoir coder. Si quoi que ce soit, vous devez savoir comment coder meilleur parce que lire est tellement plus difficile qu’écrire. Je suis sûr que bientôt le code sera parfait, du premier essai, à chaque essai, mais ce n’est pas encore là. Voici un grand nombre d’erreurs courantes dont vous devez être à l’affût.
Propriétés d’objet incorrectes
Les propriétés proches mais incorrectes des objets sont probablement l’erreur la plus évidente et la plus courante que j’ai remarquée. Prenez mon exemple de journal d’avant. Il savait qu’il y avait une propriété ‘c-ip’, mais du premier coup, il a décidé que c_ip
serait mieux. Je veux dire, je suis d’accord petit robot, mais je ne décide pas comment AWS nomme ses propriétés de journal.
Il y avait plusieurs fois où il se rapprochait très près des propriétés et atterrissait sur les «meilleures» versions. Honnêtement, j’ai fini par en changer quelques-unes parce que j’aimais mieux les suggestions, mais vous ne pouvez toujours pas contrôler les choix d’une bibliothèque.
Suppositions étranges
Parfois, vous voyez ce que copilote veut faire, mais ça va dans le mauvais sens. Une fois, il a continué à essayer de JSON.parse
une sortie, mais c’était une chaîne de mots, ce que vous ne pouvez pas JSON.parse
. Il appellerait les méthodes existantes de manière incorrecte, puis essaierait de faire des choses impossibles avec la sortie. La redéclaration inutile de variables s’est produite plusieurs fois. Préférant ouvertement map
sur n’importe lequel des autres itérateurs. Il devine également avec beaucoup de confiance où il peut voir des modèles, mais ils peuvent être sauvagement hors de propos. Rien de bouleversant, mais ne pensez pas que lorsqu’il fait une suggestion, c’est automatiquement vrai.
VOTRE propre mauvais code
L’IA est un miroir. Si vous avez écrit un mauvais code, devinez quoi, Copilot va vous suggérer cette poubelle. Par exemple, dans mon code, j’avais un getAllIps
une fonction. C’était ce qu’il faisait à l’origine, mais plus maintenant. Maintenant, ce serait probablement plus proche de getUniqueIpsWithTheirHitTotals
.
// how it started
[address, address, address...]
// what it was by the end
[{ ip: uniqueAddress, total: 24OrWhatever}...]
J’aurais dû le refactoriser ou le renommer, mais ce n’est pas une fonction énorme, alors je suis juste passé à autre chose. Mais Oh mon Dieu, Copilot ne pourrait-il pas gérer cela ?
Maintes et maintes fois, il a essayé d’appeler cette fonction lorsque je collectais les adresses IP brutes. Parce que c’était bien sûr le cas ! Je voulais des adresses IP, et il y avait littéralement une fonction appelée getAllIps
! J’ai finalement juste corrigé la fonction stupide. Ce qui, d’une certaine manière, est une bonne chose, mais sur de grands projets hérités, j’imagine que ce serait beaucoup plus ennuyeux.
Je crains toujours qu’il ne copie du vrai code
C’est sûr regards comme un vrai lien Discord :
Il a probablement généré automatiquement une chaîne de déchets pour une invitation Discord, mais compte tenu de toutes les histoires sur des choses comme les clés et les secrets copiés, je ne suis pas convaincu à 100%. Je suis prêt à parier que cette ligne apparaît textuellement quelque part, dans le fichier readme de quelqu’un. Soyez prudent avec le code que vous écrivez s’il semble étrangement spécifique, surtout si vous l’utilisez pour le travail (certes, je ne le suis pas). Vous ne voulez pas avoir d’ennuis pour avoir volé du code.
Ce n’est pas gratuit et nécessite Internet
Ce que je reçois, le service coûte de l’argent pour fonctionner après tout. Je ne leur reproche pas de facturer, mais vous devez savoir qu’il y a des frais mensuels. Et comme le travail ne se fait pas sur votre ordinateur portable, vous devez maintenir une connexion Internet pour pouvoir l’utiliser.
Mais même avec tous ces problèmes, c’est un outil incroyablement puissant. Cela semble insensé quand les gens regardent ces erreurs mineures et se sentent supérieurs, ils manquent la forêt pour les arbres. Le fait que le point de départ principal comporte déjà de telles erreurs mineures est vraiment impressionnant.
Écoutez, tout le monde ne cesse de dire à quel point l’IA changera l’avenir du codage, mais pour moi, le débat est clos : l’IA est déjà là et elle change beaucoup. Nos IDE sont devenus de plus en plus intelligents avec des suggestions et des refactorisations automatiques, l’appariement de l’IA est simplement la prochaine étape logique. Cela finira-t-il par nous faire perdre le travail ? Peut-être.
Voici mon analogie : il y a 15 ans, il y avait des gens qui avaient pour tâche d’héberger, de maintenir et de concevoir des sites frontaux simples pour les entreprises.
Maintenant? Je viens de décrire Squarespace. Donc, beaucoup d’emplois ont été perdus, mais nous avons aussi des gens qui créent des sites qui n’auraient jamais existé auparavant.
Je ne sais pas ce qui va se passer, mais aussi stupide que cela puisse paraître ces jours-ci, je suis toujours optimiste.
Bon codage à tous,
Mike