Journal j'aime bien l'auto-complétion par IA (Github Copilot)

28
16
mai
2024

L'outil a déjà été présenté dans ce journal de Anonyme et une alternative libre a été présenté dans ce journal de pulkomandy.

En gros, Github Copilot est un outil de complétion de code assisté par l'IA.

Contexte : jusqu'à maintenant, j'ai presque pas utilisé les modèles de langage à la GPT parce que ça m'intéresse pas tellement. Je trouve le principe super intéressant et reconnais leurs très forts potentiels, mais son implémentation actuel assez bof. J'ai pas envie de donner mes sous à des mega-corpos qui en ont déjà trop et qui font un peu n'importe quoi et j'ai pas les moyens de faire tourner en local une alternative libre.

Pis en plus je trouve ça insupportable de devoir leur parler en langage naturel. Je trouve ça tellement plus long et moins précis qu'avec du code :D

Enfin bref. La boite nous a proposé de prendre des licences Github Copilot (Microsoft, mais c'est pas MES sous, alors je rationalise).

Note : j'ai pas d'attaches particulières au produit lui même. Si la boite nous avait proposé un concurrent et que le truc est aussi bien, ben j'aurai fait un journal sur le concurrent.

J'aurais aimé faire un journal sur l'auto-complétion par IA en général, mais je n'ai testé que Copilot.

Je suis très réac et réfractaire au changement, du coup j'ai pas du tout chercher à utiliser les fonctionnalités "évolués" censés ohlala révolutionner ma vie tel que la génération de documentation, de tests, d'explication de code ou pour lui demander de faire des trucs pour moi. J'ai mes habitudes de vieux con, ça sera à lui de s'adapter à moi, pas l'inverse.

Je ne l'utilise quasiment que pour l'auto-complétion. Et ben il s'en sort vraiment bien le bougre. Il utilise le contexte environnant et votre historique de code pour proposer des trucs généralement ultra-pertinants.

Par exemple, truc ultra simple, je commence à taper

let elements = get_elements();
let first_element =

Là où un autocompleteur teubé me proposerait n'importe quel symbole disponible dans le contexte public et où un auto-compléteur plus intelligent pourrait peut-être me proposer elements vu que c'est le dernier symbole défini; Copilot a très bien compris mon intention et me propose de terminer la ligne comme ça elements[0];.

C'est exactement ce que j'allais écrire. Parfait, quelques frappes d'économisés.

Maintenant, commençons la déclaration d'une classe à la con en typescript :

class MyClass {
    attr_number: number;
    attr_string: string;
    attr_boolean: boolean;
    attr_array: Array<number>; 
    attr_object: Object | null;

Lui va me proposer le constructeur suivant :

    constructor(the_number: number, the_string: string, the_boolean: boolean, the_array: Array<number>, the_object: Object | null) {
        this.attr_number = the_number;
        this.attr_string = the_string;
        this.attr_boolean = the_boolean;
        this.attr_array = the_array;
        this.attr_object = the_object;
    }

Et ben parfait, c'est ce que j'allais faire. J'ai gagné 5 minutes de ma vie en n'écrivant pas du code pas intéressant mais quand même nécessaire.

Pour être franc, j'avais même juste tapé

class MyClass {
    attr_number: number;

et c'est lui qui m'a proposé automatiquement le reste.

Non mais vraiment. Ça fait gagner un temps de fou sur tous ces trucs chiants et permet de se concentrer sur le code marrant. Rien que pour ça je ne souhaite pas revenir en arrière et je serais très triste quand Microsoft fera invariablement de la merde et qu'on devra arrêter de l'utiliser.

Pis même sur le code compliqué et intelligent il arrive à bien s'en sortir.

Là où il m'a vraiment bluffé, c'est une fois où j'arrivais pas à faire un truc compliqué et relou avec les aggregate Django.

Après de multiples tentative à tenter d'expliquer à Django via son ORM les stats que je voulais, je me résigna et fit l'impensable.

J'écrivie une fat mais fonctionnelle requête SQL pour extraire mes précieuses données. Malheureusement, l'artisan que je ne suis ne peut toléré une telle souillure dans la base de code. Il me fait fallait vraiment la version Django ORM à base d'aggregate si je voulais pouvoir continuer à me regarder dans la glace et dormir la nuit.

Impensable bis. Je décide de parler à Copilot

(Reproduction de la scène avec du code crée à la rache pour l'occasion)

Moi (verbatim):

wesh frère, voici une requete sql utilisé dans django. Est-ce que tu peux me donner le code équivalent qui utilise l'ORM django ?

cursor.execute("SELECT count(*) FROM myapp_modela INNER JOIN myapp_modelb on myapp_modela.modelb_id = modelb.id WHERE modelb.bla = 4")

Lui :

Bien sûr, voici comment vous pouvez réécrire cette requête SQL en utilisant l'ORM Django :

from django.db.models import Count
from myapp.models import ModelA, ModelB

count = ModelA.objects.filter(modelb__bla=4).count()

Dans ce code, ModelA et ModelB sont les noms de vos modèles Django. modelb__bla=4 est une condition de filtrage qui signifie "où modelb.bla est égal à 4". La méthode count() est utilisée pour obtenir le nombre total d'objets qui correspondent à cette condition.

(par contre, d'où tu parles aussi poliment à quelqu'un qui commence la conversation par «wesh frère» ? arrête d'être aussi corporate et détent toi, t'es avec Jojo, pas le Pape)

La vraie requête était vachement plus compliquée, mais il s'en était aussi bien sorti. J'ai envisagé de partir en retraite anticipé tellement je me suis senti inutile face à la puissance de l'outil.

Alors même si parfois il propose des trucs absolument débiles, je pense que au global, je passe 25% à 50% de temps de moins à coder. Je dis pas que je produis plus hein, j'ai ma fierté de branleur à respecter. Pis bon, on code jamais à plein temps. Faut aussi réfléchir au code qu'on va écrire. Pis répondre à un mail, pis aider les pitchounes. Mais quand même, vrai gain de productivité sur les petits trucs relous.

Enfin bref, j'aime bien, ça me fait gagner du temps, je pense que c'est un outil intéressant à avoir dans sa trousse à outils de développeur.

Je ne pense pas que l'outil va me remplacer demain, y'a encore malheuresement besoin de gens qui savent plus ou moins ce qu'ils font pour valider ses propositions. Faut plus le voir comme du pair programming avec un junior voir parfois un export du domaine. Tu donnes la direction générale et lui s'occupe de remplir les blancs du mieux qu'il peut, et généralement de manière satisfaisante.

Mais je pense qu'il peut déjà commencer à remplacer des stagiaires dans les startups du turfu de la startup nation (qu'elle startup n'a pas commencé par un founder qui dicte sa vision et 3 stagiaires qui executent ?).

Et c'est une bonne chose. Y'a pas de raison d'exploiter des pitchounes pour un salaire de merde alors que c'est eux qui créent la valeur. Ils méritent mieux que ça. Si tu veux disrupter le monde avec ton app de la mort, tu prends une licence Copilot à 20$/mois, tu te sorts les doigts et tu te la code toi même ton app. Ou alors tu payes bien les gens. nan mais oh.

(en tant qu'anarcho-communiste qui a mal tourné et ingieur en productivité, je suis pour la suppression de tout travail inutile qui peut être remplacé par une machine afin que les gens puissent faire des choses plus intéressantes de leur vie pour eux même et la société. Bien sûr, il faut que la richesse produite par la dite machine soit partagé entre tous pour que ça puisse fonctionner. J'm'en fou de vivre dans un monde où on produit plus. J'veux juste vivre dans un mode où on bosse moins. Et pas pour un patron. RÉVOLUTION!!!!!!!)

Mais quand on voit comment ces choses ont évolués depuis leurs arrivées il y a à peine quelques années, je commence vraiment à m'inquiéter pour mon futur professionnel.

Et toi, tu as testé quoi ? tu aimes bien ? tu recommendes ? ça te fait vivre une crise existentielle et te pousse à te renseigner sur l'élevage de moutons mérinos dans les Pyrénées ? Ça te fait mal à ton petit cœur de libriste de savoir qu'à cause de toi Microsoft reçoit des sous, pour en plus, comble du malheur, un produit qui te satisfait ?

C'est vraiment un truc que j'aimerai avoir en local et en Libre. Malheureusement on a pas tous des RTX 4090. Et j'avais très viteuf testé ollama y'a un temps. Mais sur du CPU, c'était la catastrophe. Mais n'hésite pas à me dire en commentaire si maintenant ça marche de manière satisfaisante et que ça vaille le coup que j'y reconsacre du temps.

Je suis curieux du futur proche années (5-10 ans), qand les modèles de langages seront plus performants et petits, et que le matériel pour les faire tourner aura commencé à se répandre et être abordable.

Et sinon, à part les extraits de codes, tout le journal a été écrit à l'ancienne par un humain, sans intervention d'une IA. Et je me dis que je suis un peu con, j'aurai pu faire en 15-30 minutes un journal qui m'a pris plus de 2h à rédiger (je suis lent, insatisfait de mon style, et facilement distrait) et qui aurait probablement était mieux…

  • # Avec Ruby et Java

    Posté par  (site web personnel, Mastodon) . Évalué à 6 (+3/-0).

    Cela fait un an que je l'utilise avec ruby et java, mais je ne suis pas sûr que ça me soit très utile.

    Notamment un taux d'erreur considérable, et il faut tout vérifier, plutôt deux fois qu'une!

    De plus je soupçonne qu'il propose surtout ce que l'on pourrait trouver sur les forums d'entraide sur le net. Donc c'est un style de code pas forcément à jour avec les dernières bonnes pratiques.

    Ah oui, je suis néophile, et preneur des solutions qui facilitent la vie :)

    Là où parfois je suis aidé, c'est quand j'utilise une nouvelle API: ça permet de découvrir des façons de faire.

    Et puis oui, il se débrouille à peu près pour dupliquer ce qu'on fait ailleurs dans le code. Pour déduire d'un nom de variable des complétions utiles, j'aime bien.

    J'ai aussi cru voir une autre solution nommée "codeium", quelqu'un utilise et a une opinion sur son utilité?

    (tout ça dans neovim, la complétion y est peu intrusive, donc c'est plutôt agréable)

  • # Question de goût

    Posté par  (site web personnel) . Évalué à 10 (+10/-1).

    C'est comme la cuisine, certains aiment utiliser un robot magique qui leur suggère des recettes et leur explique comment tout préparer pas à pas, d'autres trouvent que "c'est pas un bot à la con qui va m'apprendre à faire la brandade de morue aux fraises".

    tout le journal a été écrit à l'ancienne par un humain, sans intervention d'une IA. Et je me dis que je suis un peu con, j'aurai pu faire en 15-30 minutes un journal qui m'a pris plus de 2h à rédiger (je suis lent, insatisfait de mon style, et facilement distrait) et qui aurait probablement était mieux…

    Ne te prends pas la tête, bientôt tout le monde se contentera de demander à moulegpt de le résumer et de générer un commentaire pour y répondre !

    Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

    • [^] # Re: Question de goût

      Posté par  (site web personnel, Mastodon) . Évalué à 5 (+5/-3).

      Et les entreprises se débarrasseront des informaticiens et informaticiennes parce que ça coûte cher et qu'on peut confier le boulot à une machine.

      « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

      • [^] # Re: Question de goût

        Posté par  (site web personnel) . Évalué à 10 (+10/-0).

        C'est pas grave on ira faire du logiciel libre qui marche plutôt que des gestionnaires de livraison de pizza en skateboard payable en cryptomonnaie ou autres projets disruptifs !

        Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

        • [^] # Re: Question de goût

          Posté par  (site web personnel) . Évalué à 2 (+1/-0).

          Mon dieu ce serait génial.

          Mais après tant d'années à développer de logiciels de gestion abscons et à maintenir des bases de code pré-historiques je me demande si je ne suis pas déformé par le métier.
          Si jamais on me laisse désœuvré je serais bien capable de passer le temps en écrivant un gestionnaire de livraison de pizza en skateboard payable en cryptomonnaie. Ou un logiciel de traçabilité. Ou pire !

        • [^] # Re: Question de goût

          Posté par  . Évalué à 6 (+4/-0).

          Le plus compliqué va être de convaincre les propriétaires immobiliers d'accepter les loyers payés en sourire ou en gratitude.

      • [^] # Re: Question de goût

        Posté par  (Mastodon) . Évalué à 3 (+2/-0).

        Il faut croire que ça ne marche pas car ils (les entreprises) ont déjà essayés avec l'offshoring (pays du Maghreb, Inde…).

  • # bazouka pour une mouche

    Posté par  . Évalué à 10 (+11/-0). Dernière modification le 16 mai 2024 à 23:34.

    Je ne conteste absolument pas l’efficacité de l’outil … et des concurrents … et sur d’autre domaine (son, image, …)

    Par contre je me demande si on grille pas inutilement énormément d’énergie pour cette béquille. On s’en remet bien trop à cet espèce d’oracle sans en comprendre les rouages internes qui lui ont permis de nous recracher la solution souhaité. Le tout en le gavant d’électron produit via de fortes émission de CO2.

    J’espère sincèrement que l’on verra arriver des puces ultra-spécialisé dans le domaine tout en étant très économe en énergie.

    • [^] # Re: bazouka pour une mouche

      Posté par  . Évalué à 7 (+6/-1).

      J’espère sincèrement que l’on verra arriver des puces ultra-spécialisé dans le domaine tout en étant très économe en énergie.

      Un ordi à pédale ? Qui ne te donne la réponse que quand tu as pédalé suffisamment pour produire l'énergie nécessaire pour générer la réponse ?

    • [^] # Re: bazouka pour une mouche

      Posté par  . Évalué à 5 (+3/-0).

      J'ajouterais, puisque je lis un bon bouquin sur le sujet, qu'avant même de gaver le produit il a fallu de quoi le créer, que ça c'est de l'extraction minière en augmentation et que ça touche toutes les régions du monde et que c'est pas joli-joli. La mine 2.0 propre et verte et rétro-compatible n'existe pas vraiment…

      • [^] # Re: bazouka pour une mouche

        Posté par  . Évalué à 3 (+1/-1).

        Il faut quand même comparer ce qui est comparable, la masse de matériaux impliqués dans le matériel informatique est réduite. Bien sûr, certains composants sont (très) polluants à extraire, mais qu'est-ce que ça représente par rapport aux industries du pétrole, du BTP, de l'automobile, ou des batteries? Par exemple, une batterie de laptop est certes polluante à produire, mais elle pèse 1000 fois moins lourd qu'une batterie d'automobile.

        En tout cas, il faudrait des données un peu chiffrées pour qu'une telle comparaison soit pertinente, parce qu'à force de tout mettre au même niveau, on peut être amenés à mener des combats énergivores mais totalement inutiles.

        • [^] # Re: bazouka pour une mouche

          Posté par  (site web personnel) . Évalué à 3 (+0/-0).

          https://infos.ademe.fr/magazine-avril-2022/faits-et-chiffres/numerique-quel-impact-environnemental/ ?

          Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

        • [^] # Re: bazouka pour une mouche

          Posté par  . Évalué à 2 (+2/-0).

          Pour ne parler qu'emissions de gaz à effet de serre (ramenées en équivalent CO2), une machine genre gros desktop avec carte graph qui permet de faire un peu de calcul, c'est autour de 1,5-2 tonnes de CO2 (je ne parle pas des effets de bord écologiques et sociales des extractions minières) pour sa fabrication.

          En moyenne, les français rejettent 9 tonnes par habitant par an.

          Si on veut avoir une chance de vivre une situation climatique qui ne dérive pas trop, ce serait une idée de se limiter à 2 tonnes par personne par an. (Je parle ici d'échelle de temps du vivant de la plupart des lecteurs du site).

          Je laide le soin à chacun de comparer ces chiffres…

          • [^] # Re: bazouka pour une mouche

            Posté par  . Évalué à 4 (+1/-0).

            Les deux sources de données ne collent pas. Selon l'Ademe l'empreinte numérique c'est 2.5% des émissions de CO2 en France, donc 250kg / an tout compris (matériel, y compris smartphone/tablette, data centers, réseau). 75% des émissions de CO2 sont liées à la fabrication.

            Pour un ordinateur de bureau, le chiffre le plus courant est dans les 400kg CO2, donc loin des 1.5 tonnes (exemple: https://www.greenit.fr/2011/02/10/quelle-est-l-empreinte-carbone-d-un-ordinateur/). Ce qui est intéressant, c'est qu'on a le détail: 90kg pour la carte mère, 30 kg pour la carte graphique, etc.

            Après, ces estimations semblent difficiles à faire. Pour un moniteur, on lit parfois des estimations autout de 700kg, d'autres à moins de 200. Une partie substantielle de ces émissions sont dûes à des sources d'électricité très carbonnées dans les pays où ces machines sont fabriquées.

            Pour remettre les choses dans leur contexte, fabriquer un ordinateur c'est environ 10% d'une voiture électrique en terme de bilan carbone (si on ne compte que la fabrication, pas l'utilisation). Et une maison neuve de 100m2, c'est environ 300 ordinateurs.

            Si on se fixe l'objectif de diminuer nos émissions de CO2 de 5% par an, décider de se priver pour toujours de tout objet numérique, ça nous fait gagner 6 mois, à peu près pareil que de télétravailler un jour toutes les 2 semaines.

            • [^] # Re: bazouka pour une mouche

              Posté par  . Évalué à 1 (+1/-0).

              Au temps pour moi, j'avais gardé en tête l'estimation sur un devis récent (1,6 tonnes). En re-vérifiant c'était effectivement pour 2 machines.

              Je crois que le point important est de réaliser que diminuer nos rejets de manière significative sur tous les fronts est nécessaire si on veut limiter la casse. Et de voir que la fabrication d'un ordinateur n'est pas si négligeable dans ce contexte.

              • [^] # Re: bazouka pour une mouche

                Posté par  . Évalué à 3 (+2/-2).

                Je crois que le point important est de réaliser que diminuer nos rejets de manière significative sur tous les fronts est nécessaire si on veut limiter la casse.

                C'est là où je ne suis pas d'accord. C'est une vision idéologique, qui se défend dans une certaine mesure, mais qui n'est en rien la seule vision possible. Son principal défaut est qu'elle ne permet pas de prioriser les efforts en fonction de leur efficacité, et qu'elle peut même être contre-productive.

                L'urgence pour diminuer les rejets de CO2, c'est d'être efficaces. Et pour être efficaces, il faut se concentrer sur les mesures qui diminuent les rejets absolus de CO2, et pas les rejets relatifs. Ça ne sert à rien de diminuer de 100% des rejets d'une activité qui correspond à 0.1% des émissions totales. C'est beaucoup plus efficace de baisser de quelques % les rejets d'une activité très émettrice.

                Le passage à la voiture électrique, c'est très efficace (environ 50% de gains sur les émissions des voitures individuelles, qui représentent 60% des émissions liées aux transports, qui représentent 40% des émissions totales. Soit 0.5*0.6*0.4 = 12% du total des émissions). La transformation d'une centrale à charbon chinoise en centrale nucléaire, c'est très efficace. Le cloud, c'est 20% de 2.5% = 0.5%. Même si l'IA devient 50°% du cloud, ça sera toujours que dalle.

                Pire en fait, ça peut donner aux gens le sentiment qu'ils font quelque chose, qu'ils se privent pour le bien de la planète ou quelque chose comme ça. Mais en fait, ils se privent juste pour rien du tout. Si ça se trouve, le non-recours aux services numériques augmente même leur empreinte carbone (déplacements à la place de visio, achats dans les centres commerciaux plutôt qu'en ligne, etc). La sortie du carbone ne peut se faire qu'avec des solutions d'ingénieurs, et pas avec de la bonne volonté.

                • [^] # Re: bazouka pour une mouche

                  Posté par  . Évalué à 2 (+1/-0).

                  J'ai bloqué un peu sur ton argument du faible poids de l'IA dans les émissions de CO2, du fait que pour moi, il est bien plus facile de se passer de quelque chose que l'on ne connaît pas encore, plutôt que de ne pas s'en occuper et voir jusqu'à quelle proportion il va monter.
                  Et si on a le même raisonnement pour dix autres domaines de faible poids, ça commence à ne plus être négligeable.
                  En fait il me semble que le problème de ton argument de négliger les efforts sur ce qui a un faible poids, c'est que dans une autre dimension du problème c'est peu ou prou l'argument du fait que la France a un poids de 1% dans les émissions totales de CO2…

  • # Classe à la con

    Posté par  . Évalué à 5 (+4/-0).

    Pour info il y a une façon succincte de déclarer des attributs valorisés depuis le constructeur en Typescript, en ajoutant le mot clé correspondant à la visibilité devant l'argument :

    class MyClass {
      constructor(
        public the_number: number,
        public the_string: string,
        public the_boolean: boolean,
        public the_array: Array<number>,
        public the_object: Object | null
      ) { }
    }

    J'aime bien, ça évite la répétition.

    Sinon au sujet de la complétion de code par IA, je n'ai pas cherché à essayer quoique que ce soit. J'utilise IntelliJ idea (ma boîte paie la licence). Depuis quelque temps est activée une autocomplétion par IA "simple" : ça complète uniquement la fin de la ligne (comme dans l'exemple avec first_element), et ce en utilisant un modèle local. L'intérêt est limité mais comme ce n'est pas intrusif et que ça ne m'a pas particulièrement l'air de consommer des ressources, je ne l'ai pas désactivé.

    • [^] # Re: Classe à la con

      Posté par  (Mastodon) . Évalué à 7 (+4/-0).

      ça ne m'a pas particulièrement l'air de consommer des ressources

      Tu veux certainement dire: pas plus de resources que celles que Intellij bouffe d'origine.

      J'ai une fois testé intellij et forcé une fréquence cpu très basse pour économiser la batterie de mon laptop. Le truc est devenu inutilisable.

      • [^] # Re: Classe à la con

        Posté par  . Évalué à 6 (+3/-0).

        t'as essayé l'option faible consommation d'intelliJ ? c'est dans le menu de gauche :)

        Il ne faut pas décorner les boeufs avant d'avoir semé le vent

      • [^] # Re: Classe à la con

        Posté par  . Évalué à 2 (+1/-0).

        Tu veux certainement dire: pas plus de resources que celles que Intellij bouffe d'origine.

        Oui, voilà. Je n'ai pas ressenti de différence à ce niveau depuis l'activation du truc dans la version 2024.1 sortie début avril.

    • [^] # Re: Classe à la con

      Posté par  (site web personnel) . Évalué à 3 (+1/-0).

      Pour info il y a une façon succincte de déclarer des attributs valorisés depuis le constructeur en Typescript, en ajoutant le mot clé correspondant à la visibilité devant l'argument :

      Oh. Merci ! Note à moi meme : lire la doc des langage que j'utilise.

      • [^] # Re: Classe à la con

        Posté par  . Évalué à 3 (+1/-0).

        A noter qu'utiliser cette forme n'est pas simplement aussi rapide à écrire que si tu faisais générer le constructeur (par IA ou ce que tu veut), mais c'est aussi bien plus simple à mettre à jour.

        https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

        • [^] # Re: Classe à la con

          Posté par  . Évalué à 2 (+0/-1).

          C'est ptete la faiblesse de l'autocompletion d'ailleurs par rapport à d'autres formes de refactoring, c'est le style de reformulation relativement triviales qui sont suggestibles par un outil de style genre PEP8, préférer une forme plus succincte ou facile à maintenir.

          Mais on sort du cadre du complément strict de code qui ne revient pas sur ce que tu as écris, faut passer à des formes de reformulation.

          • [^] # Re: Classe à la con

            Posté par  . Évalué à 5 (+3/-0).

            Je suis pas sûr de comprendre ta dernière phrase, mais moi je trouve super intéressant tous les trucs qui sont fait comme ça pour générer du code car ils mettent en valeur ce qui est du boilerplate et ce qui a de la valeur dans le code.

            En java il y a un troll depuis des années entre ceux qui utilisent lombok et ceux qui le détestent. Cette bibliothèque permet de générer du code à la compilation. Tu peux écrire par exemple:

            @AllArgsConstructor
            class A {
              @Getter
              private int a;
              @Setter
              private int b;
            }

            et tu as le constructor, le setter et le getter qui sont créé à la compilation.

            Donc pour ceux qui ne serait pas familiarisés à la main c'est :

            class A {
              private int a;
              private int b;
            
              public A(int a, int b) {
                this.a = a;
                this.b = b;
              }
            
              public int getA() {
                return a;
              }
            
              public vois setB(int b) {
                this.b = b;
              }
            }

            Personnellement plutôt que de s'éttriper à savoir si lombok est bien ou pas (pour des raisons d'implémentations) je pense qu'il serait bien plus pertinent de se demander comment faire évoluer le langage pour ne plus en avoir besoin (et le record ne sont qu'un tout petit bout de l'intérêt de lombok).

            https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

            • [^] # Re: Classe à la con

              Posté par  . Évalué à 2 (+0/-1).

              Ce que je voulais dire c'est qu'un complémenteur de code pourra te suggérer d'écrire l'accesseur quand tu tapes la déclaration d'un attribut genre

              private int a;

              Est-ce tu veux que je rajoute

              public int getA() {
              return a;
              }

              et fait ça sur la base d'un préfixe que tu tapes, alors qu'un truc qui fait de la réécriture de code pourra te suggérer si tu tapes

              private int a;
              public int getA() {
              return a;
              }

              Est-ce que tu penses pas que ce serait mieux d'écrire (raison éventuelle)
              @Getter
              private int a;

              Mais ça ne respecte plus ton préfixe.

              • [^] # Re: Classe à la con

                Posté par  . Évalué à 4 (+1/-0). Dernière modification le 17 mai 2024 à 13:48.

                Mais pour intellij j'ai déjà fait il y'a quelques années (avant la hype sur les IA) machin = new Plop(a, b,c), Plop n'existant pas il m'a proposé de créer la classe, le constructeur, puis j'ai lié les paramètres aux champs, puis généré les getters.

                et maintenant on a les record, ce qui limite un peu tout ce code généré inutile.

                Il ne faut pas décorner les boeufs avant d'avoir semé le vent

                • [^] # Re: Classe à la con

                  Posté par  . Évalué à 2 (+0/-1). Dernière modification le 17 mai 2024 à 14:03.

                  Oh bah oui c'est pas neuf ce genre de fonctionnalités, après dans le passé ça a souvent été considéré comme des trucs qui rendent le logiciel complexe et bloat, donc pas toujours populaire dans ces colonnes. Ptete que la nouveauté avec l'IA encore une fois c'est les possibilités d'IHM relativement "naturelles".

                  • [^] # Re: Classe à la con

                    Posté par  . Évalué à 5 (+3/-0).

                    dans le passé ça a souvent été considéré comme des trucs qui rendent le logiciel complexe et bloat

                    En fait c'est très subtile. Il y a un curseur à placer entre "j'e suis un ed et je ne fais rien pour t'aider" et "tu fais un clique, j'ai créé une application microservice et son déploiement sur kubernetes".

                    L'usage qui consiste à décrire naturellement comment tu veux te servir du code et l'outil te fais la structure minimale qui y répond me semble plus être dans la catégorie de l'usage efficace de l'IDE. Tu lui a donné ton intention et il crée ce que tu aurais de toute manière créé puisqu'il le déduis de l'usage.

                    Je suis plus septique des outils cli de framework web qui créent des structures assez verbeux genre (je connais pas la syntaxe de tête) : ng component create my-component, qui va te créer 3 ou 4 fichiers qui respectent des bonnes pratiques et tout, mais on est clairement, à mon avis, de l'autre côté du cuerseur.

                    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • # Ça dépend

    Posté par  . Évalué à 2 (+1/-0).

    Perso, je trouve que c'est très bien pour les juniors ou quand tu découvres un nouveau framework/nouvelle techno.

    Par contre pour mon usage, c'est contre productif. Les suggestions autre que les choses simple me coupe dans mon file de pensée. Ça me fait comme une sorte d'interruption et ça me perturbe plus qu'autre choses.
    Résultat, c'est l'inverse. Ça me rend moins productif.

    Après, je ne l'utilise pas au quotidien. Je l'utilise en général quand je travaille à quatre main sur le poste d'un junior. Donc peut-être que c'est un manque de pratique.

    • [^] # Re: Ça dépend

      Posté par  . Évalué à 9 (+7/-0).

      Justement, pour les juniors, je déconseillerais plutôt la chose. La pratique est souvent une des meilleurs façons d'apprendre, et utiliser l'IA lors des débuts ne va certainement pas aider à apprendre les rouages de la programmation.

      Par contre, une fois qu'on comprend bien ce qu'on écrit et pourquoi, pour certains morceaux de code triviaux et répétitifs où le language lui-même ne propose rien, c'est une option intéressante.
      Souvent, une évolution du language va corriger ce genre de souci, mais ça peut prendre des années…

    • [^] # Re: Ça dépend

      Posté par  . Évalué à 7 (+6/-0).

      J'ai essayé avec des débutants. Pour apprendre, ça varie de pratique à super contre productif. Je m'explique:

      Pratique

      • Possibilité d'avoir de bonnes suggestions pour amélioration de code (passer sans copie, ajouter de la constness, freezer des chaînes, enlever l'interpolation…). Du coup, on apprend. À noter que l'on a d'autres outils que l'IA pour ça, des linters parfois sous stéroïdes: clippy pour rust, clang-(tidy|modernize) pour C++, rubocop pour ruby…

      • Peut décoincer qq'un en lui suggérant une façon de faire qu'il va étudier et comprendre.

      Super contre productif

      • Certains sont perdus sans la béquille, incapable de se souvenir de la syntaxe même la plus élémentaire. Du coup, ceux là ne savent faire ni les choses compliquées (pondre un algo pointu), ni les choses simples (se démerder avec de la prog de base).

      • Certain utilisent du code généré sans rien y comprendre, sans que ça ne leur pose problème.

      Bref, ça dépend vraiment de l'envie d'apprendre de l'utilisateur.

    • [^] # Re: Ça dépend

      Posté par  . Évalué à 1 (+0/-0).

      Perso, je trouve que c'est très bien pour les juniors

      ah ben moi je trouve au contraire que c'est plutôt de préférence pour les seniors. c'est des bons outils qui te font gagner du temps si tu sais ce que tu veux faire et si ça te sort le code que tu aurais écrit en économisant de la frappe clavier.

      Mais si tu prends ça comme un outil qui va écrire le code à ta place, franchement c'est plutôt "dangereux" ou en tout cas il y a peu de chance que ce soit d'une efficacité finale folle.

      • [^] # Re: Ça dépend

        Posté par  (site web personnel) . Évalué à 2 (+0/-0).

        ah ben moi je trouve au contraire que c'est plutôt de préférence pour les seniors. c'est des bons outils qui te font gagner du temps si tu sais ce que tu veux faire et si ça te sort le code que tu aurais écrit en économisant de la frappe clavier.

        C’est aussi mon avis de vieux con. Ça me fait un peu peur de le laisser entre les mains des plus juniors. Mais pour l’instant chez nous ça va.

        • [^] # Re: Ça dépend

          Posté par  (site web personnel) . Évalué à 2 (+0/-0).

          Ça me fait un peu peur de le laisser entre les mains des plus juniors

          boah, ça peut leur permettre de faire leurs armes et se confronter à des outils, dont ils pourraient trouver des utilisations auxquelles tu n'aurais pas pensé.
          De toute façon tu repasses derrière et si ça fonctionne mieux que le copier/coller de reddit, ça peut valoir le coup de faire une session pour que le junior montre son utilisation sur un cas concret (pas un exposé hein, une session de pair programming où tu lui laisses le clavier).
          Tu n'es pas à l'abri qu'il ou elle ait réellement trouvé des utilisations auxquelles tu n'aurais pas pensé, à recreuser ensuite dans une 2ème session :-) Bon,, après, faut avoir des équipes assez autonomes et ayant un esprit critique sur leurs outils

    • [^] # Re: Ça dépend

      Posté par  . Évalué à 3 (+2/-0).

      Idem que les réponses précédentes, je ne mettrais pas Copilot entre les mains d'un débutant – et je le leur interdis d'ailleurs dans mon équipe. Nous avons eu trop de mauvaises expériences de code qui, dans le meilleur des cas, tombe en marche sans que le développeur ne comprenne ce qu'il a écrit, et dans le pire ne fonctionne pas sans que le développeur ne comprenne pourquoi.

      Une sorte de cousin du syndrome StackOverflow.

      Après, j'aime beaucoup l'outil, et je l'utilise au quotidien. Il me fait gagner un temps fou. Mais de façon générale, je ne pense vraiment pas qu'utiliser ces générateurs de texte en dehors de son champ de compétence, donc sans la capacité à déterminer si le texte produit est valide, soit une bonne idée.

  • # Code privé

    Posté par  (site web personnel) . Évalué à 8 (+7/-0). Dernière modification le 17 mai 2024 à 17:24.

    Petite remarque, Copilot envoie des snippets de code pour "améliorer le produit", si j'en crois ce billet de blog (ça a peut être changé depuis). On peut désactiver ce comportement dans les settings copilot.

    Voilà, si vous avez du code sensible, et que vous n'êtes pas autorisé à l'envoyer à un tiers, c'est quand même important à savoir ;)

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.