29 juillet 2010

Le WLangage

Le WLangage est un langage de programmation de 4e génération[inclus dans les outils de développement WinDev, WebDev et WinDev Mobile. Il est propriétaire et ne peut être manipulé qu'avec les outils PC SOFT. Le WLangage est né en 1992 avec la première version de WinDev.
Même s'il y a explicitement une première phase précoce de compilation, le bytecode WLangage est exécuté par une machine virtuelle ou converti en code natif lors de l'exécution par un compilateur à la volée (just in time, JIT). Le framework est disponible sous Windows (32 bits, 64 bits et CE) et partiellement sous Linux (sans interface graphique).

Le WLangage peut également s'appuyer sur le framework Java pour une partie de ses fonctionnalités, ce qui permet une indépendance relative et limitée du fichier exécutable par rapport au système d'exploitation cible. Il en va de même dans WebDev, où le WLangage peut s'appuyer sur le framework PHP, sans toutefois permettre d'utiliser toutes les possibilités de ce dernier[3].

Initialement prévu pour Windows, une partie des fonctions du WLangage est basée sur l'API Microsoft Windows.

Le WLangage est un langage de programmation procédurale qui permet la programmation impérative et la programmation orientée objet.

Le WLangage contient des fonctions de haut niveau, telle que la fonction EcranVersFichier, qui effectue les affectations du contenu des champs d'une fenêtre vers des tables stockées dans un fichier ou des variables, auxquelles les champs ont été préalablement reliés (databinding).

Le WLangage autorise une utilisation souple du typage. Les variables doivent être typées mais les paramètres formels des procédures ou les itérateurs de boucles peuvent ne pas l'être. Il est ainsi possible dans un même projet de combiner des procédures avec typage strict pour profiter de la rigueur du typage statique et des procédures sans typage pour profiter de la souplesse du typage dynamique et du duck typing.

Le WLangage permet l'utilisation de classes et inclut entre autres :

* l'encapsulation (public, protégé, privé) ;
* la composition de classes ;
* l'association de classes ;
* l'héritage multiple ;
* l'abstraction et le polymorphisme.

Gestion des instances [modifier]

L'allocation des instances est toujours dynamique, que la variable objet soit une variable locale, une variable globale, un membre de classe ou que l'instance soit créée par l'ordre allouer (new si on code en anglais). Une variable ou un membre objet manipule en fait une référence sur l'instance. Lorsqu'une instance est créée, son constructeur est exécuté.

La gestion des instances se fait par comptage de références, c'est-à-dire que chaque instance possède un compteur du nombre de variables ou de membres qui la manipulent. Lorsque plus aucune variable ou membre ne manipule une instance, son compteur de références arrive à 0, son destructeur est exécuté et l'instance est libérée. Dans la grande majorité des cas, il n'est donc pas nécessaire de se préoccuper de la libération des instances allouées, quelle que soit la méthode d'allocation. Cette technique permet l'exécution du destructeur lorsqu'une instance n'est plus utilisée, ce qui permet de libérer rapidement les ressources utilisées par l'instance (socket, fichier, ...). Dans le cas de références circulaires entre instances, il est nécessaire de forcer la libération d'une instance du cycle par l'ordre libérer (delete si on code en anglais) pour libérer les autres instances du cycle.
Gestion des erreurs et des exceptions [modifier]

Le WLangage se différencie d'autres langages en distinguant deux catégories d'erreurs qui peuvent survenir lors de l'exécution et en proposant des mécanismes automatiques de traitement des erreurs.

Une erreur, ou erreur non fatale, est une erreur qui se produit en conditions normales lors de l'exécution. Par exemple l'échec de l'ouverture d'un fichier est une erreur non fatale, l'exécution continue pour permettre le traitement de l'erreur. L'erreur peut être traitée par programmation, comme dans la majorité des autres langages, en testant la valeur de retour de la fonction appelée ou en vérifiant une variable d'état (nommée ErreurDétectée). Cependant l'intérêt du WLangage repose sur toute une panoplie de traitements automatiques sans programmation qui permettent de gérer les erreurs qui se produisent dans une procédure :

* poursuite de l'exécution de la procédure au label spécifique CAS ERREUR
* sortie de la procédure en renvoyant une valeur d'échec prédéfinie et/ou en relayant l'erreur à l'appelant
* affichage du message d'erreur avec différentes propositions pour l'utilisateur : réessai de l'opération (utile pour les erreurs de fichiers par exemple), fin de l'application, ...
* exécution d'une procédure

Une exception, ou erreur fatale, est une erreur qui se produit en conditions anormales lors de l'exécution. Par exemple l'accès au troisième élément d'un tableau n'en contenant que deux génère une exception, l'exécution en cours s'interrompt de la même manière qu'en C++ ou C#. L'exception peut être traitée par programmation grâce aux instructions QUAND EXCEPTION et QUAND EXCEPTION DANS. Dans ce cas également, WinDev propose des traitements automatiques sans programmation :

* poursuite de l'exécution de la procédure au label spécifique CAS EXCEPTION
* exécution d'une procédure

Source : Wikipedia

Aucun commentaire:

Enregistrer un commentaire