Article
· Déc 21, 2023 4m de lecture

Gagner du temps avec ChatGpt

Je reprends ici une expérience vécue qui m'a fait changer ma manière d'aborder le développement d'une fonctionnalité nouvelle pour moi.

Dans le cadre d'un projet, je devais générer un fichier excel assez complexe (rapport avec des variables calculées sur différents intervalles de temps et sur des ensembles dépendants d'un contexte).

Pour réaliser cela, utiliser le système de rapport intégré d'Intersystems ne me semble pas être la meilleure solution, car je pense que le rapport sera trop complexe à paramétrer, de plus je crains que les performances du fait de cette complexité ne soient pas au rendez-vous.

Je fais donc le choix de développer ce rapport par programmation object-script, mais à ce stade, je n'ai pas d'idée précise sur la manière de faire :

Appel à des librairies externes ?

Y-a-t-il une ou plusieurs classes objectscript qui pourraient m'aider (mon problème est de la localiser dans les packages, si elle existe) ?

Le hasard veut qu'à cette époque je m'amuse avec ChatGpt pour me faire une idée sur cette AI, je pose donc cette la à ChatGpt en doutant un peu sur la pertinence de ce que j'obtiendrai, car Intersystems n'est pas dans les technologies les plus utilisées comparé à Pyhton, Php, C, etc.

Je pose donc cette question : 

how to create xls file in intersystems object script ?

A ma grande surprise j'obtiens le résultat suivant :

Mon constat est donc le suivant : J'ai gagné un temps non négligeable grâce à ChatGpt car en quelques secondes j'ai obtenu :

  • La référence à la classe que je souhaitais utiliser avoir à la chercher (%Library.Excel.Workbook)
  • Un exemple de classe pour implémenter la génération du fichier
  • Un commentaire sur cet exemple que je trouve assez pertinent

Grace à ce simple exemple, mon but est de montrer que chatGpt peut être une bonne aide pour initier le développement d'une classe.

J'ai ensuite décidé de demander quelque choses de plus compliqué: comment générer un mot de passe en respectant certaines règles ? J'avais déjà réalisé le développement de ma classe, je voulais comparer les résultats.

La question que j'ai posée :

write an object script method to generate a password with following rules : password has a minimal length (given by class parameter), password must include a minimal count (given in class parameter) of lowercase chars , password must include a minimal count (given by class parameter) of uppercase chars, password must include a minimal count (given by class parameter) of numeric chars, password must include a minimal count (given by class parameter) of special chars. Each set of chars are given by class parameter

La réponse obtenue :

En fait j'obtiens à peu de choses près, ce que j'avais mis une petite heure à écrire et tester. Mon code est un peu optimisé par rapport à celui de chatGpt, mais le principe est le même :

ClassMethod GeneratePassword(ByRef password As %String)
{
   	Set password="", charCollections = []
	Set charsAll=..#PwdLowerChars_..#PwdUpperChars_..#PwdNumberChars_..#PwdSpecialChars
	for i=1 : 1 : ..#PwdMinLower { Set password = password_..PeekRandomChar(..#PwdLowerChars) }
	for i=1 : 1 : ..#PwdMinUpper { Set password = password_..PeekRandomChar(..#PwdUpperChars) }
	for i=1 : 1 : ..#PwdMinNumber { Set password = password_..PeekRandomChar(..#PwdNumberChars) }
	for i=1 : 1 : ..#PwdMinSpecial { Set password = password_..PeekRandomChar(..#PwdSpecialChars) }
	While $L(password) < ..#PwdMinLength { Set password = password_..PeekRandomChar(charsAll) }
	set password = ..Shuffle(password)
	Return $$$OK
}

ClassMethod PeekRandomChar(string As %String) As %String
{
    Return $EXTRACT(string,$RANDOM($L(string))+1)
}

ClassMethod Shuffle(inputString As %String) As %String
{
    Set characters = $L(inputString)
    Set shuffledString = ""
    While characters {
        Set index = $Random(characters) + 1
        Set shuffledString = shuffledString_$E(inputString, index)
        Set inputString = $E(inputString, 1, index-1)_$E(inputString, index+1, $L(inputString))
        Set characters = $L(inputString)
    }

    Return shuffledString
}

Ma conclusion :

ChatGpt est un excellent assistant pour le développement sous Iris. Il permet de se mettre rapidement "en selle" lorsque l'on aborde un nouveau domaine

Toutefois, il ne faudrait pas penser utiliser directement le code généré, car il peut présenter des bugs et n'est pas forcément optimisé. Il faut plutôt envisager cet outil comme une aide supplémentaire.

Discussion (3)2
Connectez-vous ou inscrivez-vous pour continuer

Mince alors, c'est exact, tu as raison.

Il me semblait avoir vérifié le résultat, mais je pense que j'ai été trop enthousiaste, et comme il s'agissait juste d'un essai, je n'ai pas enchainé sur un développement.

Comme je le dis dans ma conclusion il faut se garder d'utiliser tel que ce que propose ChatGpt, mon propos, même si j'ai donné un magnifique contre-exemple était que bien utilisé, cet outil peut accélerer le démarrage d'un projet.

Dans tous les cas quelque soit la provenance (chatGpt, Forum, Tuto,...) utiliser un code sans le comprendre n'est jamais une bonne solution, l'effort gagné sur le coup se paiera plus tard par des difficultés de maintenance au mieux ou des dysfonctionnements.