Bonjour, l’intelligence artificielle a connu des avancées significatives, notamment dans le domaine de la génération automatique de scripts et de programmes informatiques. Cependant, elle n’a pas encore atteint la capacité de se substituer totalement à un développeur logiciel expérimenté. En revanche, pour l’ensemble des utilisateurs, qu’ils soient débutants, intermédiaires ou avancés, l’IA peut s’avérer extrêmement utile pour automatiser des tâches mineures mais fastidieuses, telles que la génération de commentaires dans un code dépourvu de leurs annotations.
Dans le contexte de la programmation, notamment avec le langage AutoLISP, il est fréquent de rencontrer des programmes récupérés sur Internet qui manquent de documentation ou comportent peu de commentaires, rendant leur compréhension difficile. L’intelligence artificielle peut alors aisément générer des commentaires explicatifs pour ces segments de code. À titre d’exemple, prenons un programme autonome fourni dans une documentation Autodesk®, que voici:
(defun c:makepoly ( / points pt)
(setq points '())
(prompt "\nCliquez des points pour la polyligne (appuyez sur Entrée pour terminer)")
(while (setq pt (getpoint "\nPoint suivant : "))
(setq points (append points (list pt)))
)
(if (>= (length points) 3)
(progn
(entmakex
(append
(list (cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 100 "AcDbPolyline")
(cons 70 1)) ; 1 = fermé
(mapcar '(lambda (p i) (cons (list 10 (car p) (cadr p)) i))
points
(number-sequence 0 (1- (length points))))
)
)
(prompt "\nPolyligne fermée créée.")
)
(prompt "\nAu moins 3 points sont nécessaires pour créer une polyligne fermée.")
)
(princ)
)
Nous sollicitons ici une IA, en l’occurrence le modèle Gemini de Google, en mode génération de code, afin d’enrichir ce programme avec des commentaires explicatifs. Le résultat obtenu s’affiche ci-après:
;; =====================================================================
;; Programme AutoLISP : c:makepoly
;;
;; Description :
;; Ce programme permet à l'utilisateur de créer une polyligne fermée
;; dans AutoCAD en cliquant successivement sur au moins trois points
;; dans le dessin. L'utilisateur démarre la commande, clique des points,
;; et lorsqu'il appuie sur Entrée (sans sélectionner de point),
;; le programme vérifie si au moins trois points ont été donnés.
;;
;; Si oui, il génère une polyligne fermée (LWPOLYLINE) avec ces sommets.
;; Sinon, il affiche un message d'erreur signalant qu'au moins trois
;; points sont nécessaires.
;;
;; Résumé des fonctionnalités :
;; - Collecte interactive de points via clic utilisateur.
;; - Vérification du nombre minimum de points requis (≥ 3).
;; - Création automatique d'une polyligne fermée dans le dessin courant.
;; - Messages d’information affichés pour guider l’utilisateur.
;;
;; Auteur : (à compléter)
;; Date : (à compléter)
;; =====================================================================
(defun c:makepoly ( / points pt)
;; Initialise une liste vide pour stocker les points cliqués par l'utilisateur
(setq points '())
;; Affiche un message demandant à l'utilisateur de cliquer des points
;; L'utilisateur peut appuyer sur Entrée pour finir
(prompt "\nCliquez des points pour la polyligne (appuyez sur Entrée pour terminer)")
;; Boucle qui continue tant que l'utilisateur fournit un point avec la souris
(while (setq pt (getpoint "\nPoint suivant : "))
;; Ajoute le point sélectionné à la liste des points existants
(setq points (append points (list pt)))
)
;; Vérifie si le nombre de points est suffisant (au moins 3) pour créer une forme fermée
(if (>= (length points) 3)
(progn
;; Crée une entité graphique dans le dessin (ici, une polyligne légère fermée)
(entmakex
(append
(list (cons 0 "LWPOLYLINE") ;; Définit le type d'entité : polyligne légère (optimisée)
(cons 100 "AcDbEntity") ;; Spécifie qu'il s'agit d'une entité AutoCAD
(cons 100 "AcDbPolyline") ;; Spécifie la sous-classe de l'entité (polyligne)
(cons 70 1)) ;; Drapeau : 1 signifie que la polyligne est fermée
;; Ajoute les sommets (vertices) de la polyligne :
;; mapcar applique une fonction à chaque élément de la liste 'points'
;; La fonction ici crée un couple ((10 x y) . i) pour chaque point,
;; où (10 x y) définit les coordonnées du sommet,
;; et i est l’index (non utilisé directement ici, mais inclus par la logique).
(mapcar '(lambda (p i)
;; Crée une paire (cons) où 10 désigne un point de la polyligne,
;; suivi de ses coordonnées X et Y
(cons (list 10 (car p) (cadr p)) i))
points
;; Génère une liste d'index de 0 à (n-1), utilisée pour accompagner chaque point
(number-sequence 0 (1- (length points))))
)
)
;; Message de confirmation à l'utilisateur que la polyligne a été créée
(prompt "\nPolyligne fermée créée.")
)
;; Si moins de 3 points sont donnés, affiche un message d'erreur
(prompt "\nAu moins 3 points sont nécessaires pour créer une polyligne fermée.")
)
;; Termine proprement la commande AutoLISP en retournant nil (pas de valeur affichée dans la console)
(princ)
)