Lisp at 1.6. Avantages de l'environnement de développement Lisp

Home
Up
Previous
Next

1.6.    Avantages de l'environnement de développement Lisp

Les environnements de développement Lisp ont toujours représenté l'état de l'art en la matière. De nombreuses caractéristiques d'environnement de développement trouvent leurs origines dans le monde Lisp, entre autres : les débogueurs symboliques, les inspecteurs de données structurées, l'exécution pas à pas au niveau du code source et l'aide en ligne sur les opérateurs du langage.

Programmer en Lisp offre de nombreux avantages directs entraînant une amélioration substantielle de la productivité; ainsi :

  • la compilation est incrémentale : le développement n'est pas ralenti par le cycle habituel édition-compilation-lien-exécution (Fortran, C, etc.). Ainsi la redéfinition d'une fonction a un effet immédiat. Mieux, il est possible de modifier et d'ajouter du code en continu, y compris pendant l'exécution du programme (cela vaut aussi pour les structures de données, comme les classes et les objets de CLOS). Cette facilité est tellement appréciable, en terme de méthode de travail et de vitesse de développement, qu'aucun langage du futur ne pourra en faire l'impasse (langage lié dynamiquement). De fait, l'aspect dynamique et le pouvoir d'abstraction élevé constituent deux des principaux plus du Lisp par rapport à des langages comme le C, le Fortran et le Pascal.
  • du fait de la nature dynamique du Lisp, l'environnement de développement est très interactif: par exemple, il est possible de continuer l'exécution d'un programme après une erreur (après, par exemple, avoir spécifié la valeur à renvoyer par la fonction ayant provoqué l'erreur);
  • dans le Common Lisp, le mécanisme des packages (modules) permet d'éviter le problème du conflit de noms (par exemple, nom identique pour 2 fonctions différentes); ce problème apparaît fréquemment lorsqu'il est nécessaire d'utiliser plusieurs librairies ou lorsque le développement d'une application nécessite de faire appel à plusieurs programmeurs travaillant indépendamment.
  • le mécanisme de définition (defun) est paticulièrement flexible, autorisant la définition d'arguments optionels (&optional) et par clefs (&key). Par exemple, en supposant les arguments width et height de la fonction make-window définis à l'aide de clefs, toutes les applications suivantes sont valides:
  • (make-window)

    (make-window :width 120)

    (make-window :height 100 :width 120)

    Donc, dans le cas d'arguments définis à l'aide de clefs, on spécifie uniquement les arguments nécessaires et ce dans un ordre quelconque (les arguments non spécifiés ont une valeur par défaut). Ce mécanisme est très apprécié en phase de développement, des arguments pouvant être ajoutés à la définition d'une fonction sans qu'il soit nécessaire de mettre à jour toutes les applications de cette fonction.

  • les éditeurs offrent des fonctionnalités appréciables dans le développement d'applications importantes et dans la maintenance des ces applications; par exemple :
    • l'édition automatique d'une fonction (il suffit de cliquer sur l'appel d'une fonction et d'activer la commande d'édition automatique pour ouvrir une fenêtre d'édition dans laquelle apparaît le code de la fonction appelée);
    • une commande similaire permet de retrouver automatiquement tous les appels (utilisations) d'une fonction dans l'ensemble de l'application;
    • il est possible d'accéder simplement à la documentation de toutes fonctions et de toutes variables globales, qu'elles soient primitives ou propres à l'application.
    • la complétion automatique des noms de fonction et de variables globales, qu'elles soient primitives ou propres à l'application (il suffit de taper les premiers caractères d'un nom de fonction; l'éditeur complète ou propose un choix de mots complétant les premiers caractères tapés).

    Voir [LAYE91] pour une description complète de ce que peut offrir un environnement Lisp moderne.

Home    Previous    Up    Next
contact
site map
Last update : 27/11/2001