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'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 :
sChaine est une chaîne
sChaine = DateVersChaine(DateDuJour())
Info("Nous sommes le " + sChaine)
- ou en anglais :
sChaine is string
sChaine = DateToString(Today())
Info("Today is " + sChaine)
- voire en mélangeant les langues :
sChaine is string
sChaine = DateVersChaine(DateDuJour())
Info("Nous sommes le " + sChaine)
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.