Hello, avec un pote on a prévu de se faire une petite session de coding pour explorer ce qu’on peut faire de nos jours avec un bon copilote IA et on se tâtait à le faire en streaming. Est-ce que ça intéresserait des gens ici?

Ces derniers mois on en arrive au point où écrire le code devient moins important que de savoir le spécifier et je voulais justement montrer à quel point mon boulot (dev) a changé en quelques mois. Si vous avez envie de faire des programmes mais que l’apprentissage d’un langage de prog vous rebute. c’est le bon moment pour jeter un nouvel œil au domaine.

Petit teaser: https://www.youtube.com/watch?v=n7kvydoo7zc (on aura un meilleur micro, je sais que mon son est pourri là)

  • mat
    link
    fedilink
    Français
    arrow-up
    1
    ·
    22 hours ago

    Mon point de vue c’est que si on commence à inventer des langages dans lesquels on ne peut développer qu’avec des LLMs, c’est qu’on empire la pile de technologies douteuses qu’est l’informatique (cf un processeur moderne qui se fait passer via C et l’OS pour un processeur de pdp 11 ça donne des failles comme Spectre et Meltdown)… et que même pour générer le C, ça veut pas dire que le code généré n’a pas de fuite mémoire par exemple, ce qu’on cherche à éviter avec Rust et du coup, tu peux générer du code foireux plus vite. Je vois l’intérêt pour les ESN qui doivent vendre des bugs mais derrière si tu veux un paysage plus fiable c’est pas forcément si intéressant, d’autant que ça soulève énormément de questions non techniques et là-dessus, je pense que les ingénieurs et les développeurs devraient arrêter de se palucher sur le progrès technique peu importe le reste (comme a fait le créateur de Yolo qui a fini par arrêter la vision par ordinateur parce que l’usage qui s’est le plus démocratisé c’est la surveillance de masse)

    • keepthepace@slrpnk.netOP
      link
      fedilink
      Français
      arrow-up
      1
      ·
      21 hours ago

      C’est un débat qui a lieu depuis qu’on a commencé à avoir des compilateurs et des langages en fait, sur le niveau de contrôle qu’on souhaite avoir. Rappelons que la baseline contre laquelle on se compare là, c’est pas un programme parfait, c’est un programme fait par un humain moyen.

      Pour avoir du bon code, on fait comme on fait quand on emploie des stagiaires ou des mauvais programmeurs: on relit, on écrit des tests. Ça reste de l’ingénierie.

      En fait je pense que l’approche de réécrire des langages pour les LLMs, ça permettrait de probablement augmenter le niveau de contrôle des humains sur le code en rendant plus de choses explicites, en imposant une certain verbosité. Par exemple, avec du code généré, l’inférence de type est moins nécessaire. Une autre tendance m’a surpris: plutôt que d’ajouter une dépendance, je peux beaucoup plus facilement lui dire de rajouter les quelques fonctionnalités dont j’ai besoin, diminuant la surface d’attaque.

      l’usage qui s’est le plus démocratisé c’est la surveillance de masse

      N’exagérons rien, ça sert aussi à guider des missiles.

      • mat
        link
        fedilink
        Français
        arrow-up
        1
        ·
        17 hours ago

        En toute franchise, je pense que j’ai pas mal de réactance vis-à-vis des LLMs pour plusieurs raison:

        • peur de pas pouvoir faire carrière (pour l’instant je suis coincé sur du support n2 qui m’a foutu un bore out)
        • problématique de liberté et respect du droit d’auteur, ce qui s’étend à tout l’ensemble des modèles génératifs (on se souvient du directeur IA qui dit que tout ce qui est sur internet n’attend que d’être exploité alors qu’askip, il y a eu des fuites de différents codes de leurs produits lol)

        Après pour la question de l’inférence de type, si on regarde l’écosystème actuel on a :

        • java/C/C++ qui sont typés explicitement (comme beaucoup d’autres)
        • python qui dispose d’annotation et de mypy pour la vérifier (même compiler le code)
        • rust dont les outils de dev permettent d’ajouter l’inférence de type dans l’ide De plus, sans données d’entraînement, le LLM va pas pouvoir te générer de code donc il faudra quand même du monde pour faire le premier jeu et derrière, il y a des grosses problématiques à utiliser des données générées par un modèle pour en entraîner un autre, il faut toujours de la donnée fraiche.

        Quoi qu’il en soit, c’est mon côté anticapitaliste me dit que tant qu’on reste dans le modèle capitaliste, aucune avancé technologique ne sera clean et les LLMs bah c’est au niveau de l’entrainement : si tu entraîne un modèle uniquement sur du code GPL, on pourrait imaginer que ce qu’il produit et sous GPL, mais est-ce qu’entrainer from scratch sur du code gpl rend le modèle utilisable ? Sinon, il faut donc étendre avec du texte humain potentiellemet, et du coup, comment ça se passe au niveau licence ?

        Pour avoir du bon code, on fait comme on fait quand on emploie des stagiaires ou des mauvais programmeurs: on relit, on écrit des tests. Ça reste de l’ingénierie.

        Ça c’est un peu abandonner un idéal de qualité et se résigner à la médiocrité. Il n’y a pas besoin d’être mauvais ou stagiaire pour faire des erreurs à plusieurs centaines de milliers d’€, juste une chaine d’outils pourris en amont ou de mauvaises conceptions (je l’ai vu il y a peu) et même quand des vies sont en jeu on a pu voir des problèmes graves (coucou le régulateur toyota ou les avions boeing). D’ailleurs, je pense que le secteur informatique souffre de la hiérarchisation issue de l’industrie (ouvrier, technicien, ingénieur je suis pas sûr que ce soit pertinent pour l’informatique)…

        Technologiquement, j’aime vraiment le deep learning, mais il y a tellement de trucs problématiques associés que son industrialisation m’en dégoute un peu

        • keepthepace@slrpnk.netOP
          link
          fedilink
          Français
          arrow-up
          1
          ·
          3 hours ago

          Je comprends, j’ai eu des périodes de AI-anxiety aussi vis à vis de mon boulot.

          Après, je suis libriste anti-capitaliste aussi, et ça m’énerve qu’on pense que ces technos sont portées par les quelques boites qui se mettent en avant et qu’on ignore le rôle prépondérant de la recherche et de l’open source là dedans. La recherche et les modèles open-weight sont sur les talons des grands noms. Ils ont quelques mois de décalage, mais tu as aujourd’hui des modèles ouverts qui ont la performance du GPT-4 d’avril. Les évolutions tech précédentes étaient bien plus propriétaire que ce qui arrive autours de l’IA (j’inclue LLMs, modèles de diffusion et généralisation du DL là dedans) maintenant.

          Et sur le droit d’auteur, bah en tant qu’anti-capitaliste, je dois te dire que j’ai pas spécialement d’amitié pour ce machin qui a tué plusieurs techs prometteuses dans l’œuf: le P2P, le partage de données par défaut, etc. Donc que là ils souhaitent s’arroger un droit supplémentaire, même si ça donne l’impression que je défend des connards comme Altman, je suis plutôt contre. L’ambiguïté actuelle rend impossible des modèles réellement open source (où les données d’entraînement seraient connues) et donne lieu à des situations ubuesques comme The Pile, dataset ouvert cité par plusieurs publis de recherche qu’on ne peut télécharger que par torrent car a priori illégal aux US.

          Sur l’inférence de type, je me suis mal exprimé. Ce que je voulais dire c’est que j’ai vu les langages populaires proposer une inférence auto parce que c’est plus rapide et pratique (à court terme) quand tu codes à la main. Mais avec des générateurs de code on peut imaginer imposer une syntaxe beaucoup plus stricte et riche. Par exemple au niveau des déclarations de fonctions on pourrait imposer de non seulement déclarer le type, mais aussi un modèle de propriété (à la rust), des contraintes de valeur (jamais null, toujours inclu entre 0.0 et 1.0, etc.), et d’autres choses qui peuvent améliorer la vérifiabilité du code, mais qui seraient trop fastidieuse à la main pour devenir populaire.

          Ça c’est un peu abandonner un idéal de qualité et se résigner à la médiocrité.

          C’est un des mantras quand on commence à faire du management autours du dev: si tes procédures supposent un code parfait, tu fais pas ton boulot de manager. Oui en tant que dev, je veux atteindre le graal de la perfection. Mais faut être réaliste, même avec 25 ans d’expérience, ça reste extrêmement rare que je ponde un code parfait du premier coup. C’est bien plus responsable d’utiliser des tests, des séparer les modules par des APIs propres, de dev dans des branches, etc.

          Technologiquement, j’aime vraiment le deep learning, mais il y a tellement de trucs problématiques associés que son industrialisation m’en dégoute un peu

          En fait je crois qu’en ce moment je cherche un moyen de contrer ce discours dominant dans la sphère francophone. Y a vraiment très très peu de contenu positif sur ces technos et la plupart des critiques, je les trouve mal informées. Mais je sais pas comment tordre le cou à tant d’idées reçues et je suis pas sur qu’une vidéo de 3 heures sur le sujet est la bonne voie (n’est pas Franck Lepage qui veut). Du coup je vais essayer de faire un peu de contenu sur les choses que je connais bien (le dev) mais j’aimerais bien parler un peu d’économie, de théorie politique et de philo si ça prend.