title: WLangage
text: # WLangage
  
  Le WLangage est un langage de programmation apparu en 1992 avec WinDev. Utilisé par les outils de développement WinDev, WebDev et WinDev Mobile, il est propriétaire et les programmes ne peuvent être manipulés qu'avec les outils PC SOFT.
  
  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.
  
  ## Programmation
  
  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).
  
  ### 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.
  
  ### Orientation objet
  
  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**
  
  L'allocation des instances est toujours dynamique. Une variable ou un membre objet manipule en fait une référence sur l'instance.
  
  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. 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.
  
  ## Bilingue
  
  Le WLangage permet de programmer en français et en anglais, exemples :
  
  - en français :
  
  - ou en anglais :
  
  - voire en mélangeant les langues :
  
  Il est possible de traduire automatiquement le code d'une langue à l'autre mais cela est plus dû à l'éditeur de code de WinDev, WebDev et WinDev Mobile qu'au WLangage lui-même.
  
  