D’acc! J’avais utilisé GitHub Copilot pendant un temps et j’avais trouvé ça bien pratique (pour dire le moins). Mais je me demandais si c’était mieux que ChatGPT pour mon usage
J’utilise codeium sur IntelliJ, en java.
Il est un peu mon canard en plastique jaune, auquel je lui raconte mes problèmes persos. Il m’écoute tout le temps et me propose parfois de bons conseils.
Sans surprise, il n’est pas très fort pour tout ce qui est règle métier.
Mais pour le reste, ca fait bien son taff quand je lui demande de générer du code type test unitaire ou des méthodes à la con du style trouve le moi le 3ème caractère du 2ème mot via une expression regex.
Le mieux c’est effectivement l’IA qui est directement dans l’IDE.
(Tabnine c’est pas mal aussi.)
Oui Copilot sur VSC c’était très bien pour mon usage de python mais je suis pas développeur.
Copilot c’est plus ou moins chatGPT avec un prompt différent et une connexion à Bing (qu’il vaut mieux désactiver par défaut si on n’a pas besoin des dernières infos). Bref, c’est la même technologie sous jacente et il y a probablement des meilleurs modèles pour la génération de code.
Ce qui le rend pratique versus chatGPT, c’est l’intégration à l’IDE.
Je suis surpris d’entendre que python est verbeux. Python a plein de défauts, mais je n’aurais clairement pas dit sa verbosité. Je veux bien quelques exemples.
Petite question pour vous vu que je vois que certains font du développement et utilise les IA pour coder plus rapidement.
J’ai un cursus assez chaotique dans le monde du dev, j’ai fait une remise à niveau informatique que j’ai été obligé de faire en centre de formation puis une formation diplômante de 6 mois pour avoir un diplôme de dev web/web mobile (On a vu HTML/CSS, un peu Javascript avant de passer très vite sur du Jquery, PHP SQL, autant dire que vu le temps de la formation, impossible de sortir de là en pensant maîtriser quoi que ce soit… )
J’ai la chance d’avoir un boulot depuis Janvier 2022 dans une petite entreprise où je dois mettre à jour d’anciens logiciels utilisant des techno obsolète. Pour cela je fait maintenant du Angular, mais l’ennui c’est que je n’ai aucun dev senior connaissant ce langage, j’ai dû apprendre à me débrouiller seul avec tout ce qu’on peut trouver sur internet, néanmoins, même si je me suis amélioré, je suis certain que j’ai dû faire du code clairement pas optimisé ou inutile.
Je me suis toujours refusé à utiliser des IA car j’estime qu’il faut à minima maîtriser son langage avant d’être vraiment efficace et repérer s’il y a du code à refaire. Néanmoins, le temps passant je me demande si cela ne m’aiderait tout de même pas un minimum pour certaines tâches ou pour m’améliorer ?
Qu’en pensez-vous ?
Pas sûr d’avoir saisi de quelles technos obsolètes tu parles, uniquement d’Angular (qui est un framework JS et pas un langage - soit en javascript, soit en typescript, selon les versions d’AngularJS/Angular) ? Ou quelque chose de vraiment plus ancien ?
Car ces outils de génération de code ne fonctionnent « à peu près » que s’ils ont été entraînés sur une base de code suffisante autour d’une techno donnée.
Copilot a été entraîné sur la base de code stockée sous GITHUB (= tous les projets open-source qui y sont publiés, donc beaucoup de JAVASCRIPT / PYTHON / JAVA / …, y compris des projets à base d’Angular / d’AngularJS).
Mais probablement très, très peu de technos vraiment obsolètes (VBA, …).
(il y a « GITHUB ENTERPRISE » qui permet d’enrichir les données COPILOT avec des projets locaux, mais rarement mis en place, surtout pour de petites structures)
Donc dans ton cas çà marchera « à peu près » sur des cas simples / techniques / fréquemment trouvés dans d’autres projets, etc. (et beaucoup moins bien sur des choses pointues, fonctionnelles, ou sur des points d’optimisations obscures, etc., comme toujours).
Attention à la maintenabilité de tout çà (il est probable que dans quelques années il y ait un peu partout des piles de code devenues encore plus dures à maintenir que çà ne l’est déjà, par ex. à cause du manque de mutualisation sur le code généré par IA) …
Je rejoins ton ressenti - les outils de GenAI ne profitent que très peu aux débutants (qui vont faire n’importe quoi avec), très peu aux experts (qui iront plus vite par eux mêmes), et donc ne profitent qu’aux développeurs « intermédiaires » (voir par ex. : https://6695516.fs1.hubspotusercontent-na1.net/hubfs/6695516/Tech%20Trends%202024/[OCTO%20PULSE]%20Tech%20Trends%202025%20Software%20Engineering.pdf
)
A mon avis, il vaut mieux se renforcer sur les principes de base (savoir modéliser, découper son projet correctement, faire du code maintenable et évolutif, faire du réutilisable, mutualiser, faire du testable, … plutôt que de vouloir à tout prix utiliser de l’IA pour aller plus vite).
Autant pour moi, je me suis mal exprimé ! Le langage obsolète dont je parlais c’est du ABAL. De mon côté je m’occupe de la partie Front avec le framework Angular en utilisant du typescript et la partie back, c’est ma compagne qui s’en occupe avec Java
Ah oui, donc cf. ci-avant, je doute que çà produise grand chose de vraiment utilisable (et oui je connais des gens qui considèrent que « AngularJS » c’est déjà une techno totalement obsolète, d’où le fait que je n’étais pas sûr de savoir si c’est de çà dont tu parlais).
Le gros problème ca va être la version d’Angular. Ce qu’il peut te proposer peut être obsolète ou trop récent par rapport à ta version de dev.
Sinon, tu peux l’utiliser pour le questionner et tu peux vérifier les sources. Utilise le comme un générateur d’idée.
Voilà.
Verbeux au sens de plein de code inutile dans des langages mieux conçus, grosso modo tout ce qui serait géré par du typage statique (et fort) : vérification des inputs d’une fonction et/ou tests unitaires qui simulent le typage. C’est la même chose dans tous les langages avec duck typing. Ce n’était pas une idée stupide en 1990, c’est complètement dépassé maintenant.
Ensuite c’est un langage qui est très peu orienté « fonctionnel » (au sens des langages fonctionnels) et le code s’en trouve allongé et très impératif. Personnellement je trouve ça très verbeux (et dégueulasse), mais c’est vraiment personnel.
Oui, contrairement à ce qui est écrit au dessus, ce n’est pas ChatGPT + un prompt, c’est plus adapté que ça.
Pour les langages sur github : en dynamique GitHub Language Stats et en stock Octoverse: The state of open source and rise of AI in 2023 - The GitHub Blog
De ce que j’ai essayé de gemini et chatGpd, je suis clairement déçu quand il s’agit de SQL (Oracle et Postgres surtout).
Mes besoins sont surtout de l’optimisation, car devient trop lent, out of memory, cliché trop vieux…
Souvent, je perds du temps, ça fini par tourner en rond au niveau des réponses, genre toutes les 3 réponses ça repropose une ancienne réponse et je repars bredouille.
Mes besoins en java n’étaient pas très concluants non plus, par contre ça mâche pas mal le travail en shell pas exemple.
J’ai clairement été un peu trop dans la simplification mais copilot se base quand même sur GPT-4.
GPT-4 utilise probablement le code source GitHub pour son apprentissage (grâce au partenariat Microsoft) et ce n’est donc pas une exclusivité Copilot.
Ok je comprend mieux. Ce n’est pas verbeux que j’aurai tiré de ça mais le fait que le langage n’est pas typé statiquement (ce qui est un des défauts aussi selon moi).
Dans les faits, peu de programmeurs écrivent vraiment du code fonctionnel.
Si on ne parle que de syntaxe, Python a quelques fonctionnalités inspirées du fonctionnel.
je rebondis la dessus.
De ce que je comprends, les ia ‹ apprennent › à partir de la quantité et la pertinence des données qu’on leur fournit.
Question à ceux qui s’y connaissent : comment font elles pour s’améliorer sur la génération de code, ou sur des trucs basiques type -1x-1x-1 où elles se plantaient dans leurs versions antérieures ? C’est pas ‹ juste › parce que leurs programmeurs ont ajouté des modules spécifiques à ce type de demande (genre, 'si tu es face à une opération, oublie ton ‹ intelligence › et passe en mode calculatrice basique)?
Décidément, je ne comprends pas l’engouement pour le dev de ces IA.
J’ai demandé en shell de parser des issues Redmine en bouclant sur une 1re pages et en générant un CSV a des fins d’import .
Eh ben plus d’1 h 30 passé en compagnie de chatGPT sans succès, je suis presque sûr que passé autant de temps sans et j’avais déjà mon script.
Je réessaye régulièrement, mais à chaque fois, cela est une perte de temps et en + je ne maitrise pas ce qui est fait
Le problème est que les IA commerciales sont opaques (et de plus en plus), donc on ne sait pas trop. Mais d’après les résultats publiés de recherche, il y a plusieurs éléments :
- la tokénisation (le découpage du texte en éléments basiques) : avant c’était fait de façon automatique avec des tokens (éléments basiques) qui pouvaient rendre les calculs très complexes (parce que ton grand nombre est décomposé en sous-nombres plus ou moins arbitraires) et la manipulation des langues asiatiques complexes (découpage farfelu au milieu de paires de caractères chinois qui forment un mot, par exemple). Ça été corrigé dans les tokenisateurs modernes.
- l’amélioration des bases d’entraînement : il y a un énorme effort de curation sur ces bases, alors qu’au début, c’était du common crawl de merde avec des tonnes de sources pourries. C’est tellement important que même les modèles ouverts gardent leurs bases et la façon dont elles sont construites complètement cachés.
- l’intégration du recours à des outils dans l’apprentissage : dans les phases d’amélioration du modèle (après son entraînement à prédire le prochain token), on intègre maintenant des exemples d’utilisation d’API externes (recherche sur le web, utilisation de python, etc.), ce qui permet d’avoir recours aux bons outils automatiquement.
- l’amélioration des prompts : les instructions systèmes utilisent les résultats de la recherche sur les prompts. Du genre « décompose ton analyse en phase » (c’est d’ailleurs pour ça, comme je le montrais au dessus, qu’on n’a plus de besoin de jongler avec les prompts)
- l’extension de la fenêtre d’analyse : les modèles récents utilisent beaucoup plus d’historique que les anciens modèles, donc ils oublient moins leur instruction et le dialogue.
J’en oublie sûrement, la recherche évolue tellement vite que c’est difficile à suivre (ce n’est pas mon sujet de recherche principal). Je conseille d’aller regarder régulièrement sur le site de LLama, c’est un ensemble de modèles libres plutôt bien documentés https://llama.meta.com/
Lequel ? Si c’est le gratuit, le test n’est pas du tout représentatif des capacités actuelles des modèles.