Utilisateur:BaptisteGelez/Brouillon/Vala

Une page de Wikipédia, l'encyclopédie libre.

Vala
Logo.
Date de première version
Paradigme Structuré, imperatif, orienté objet
Auteur Jürg Billeter
Développeur Jürg Billeter & Raffaele Sandrini
Dernière version 0.38.8[1] ()
Typage statique, fort, nominatif
Influencé par C#, C++, C, Java
Écrit en Vala, sauf pour la première version qui était écrite en C
Système d'exploitation Windows, Linux, Mac OS X
Site web wiki.gnome.org/Projects/Vala

Vala est un langage de programmation compilé, dont l'objectif est de fournir les bénéfices des langages de programmation modernes (comme la POO) aux développeurs de la plateforme GNOME qui utilisent GLib et son système GObject.[2][3]

Sa syntaxe est basée sur celle de C# mais il ne nécessite pas d'environnement d'exécution. Vala est transformé en code C, lui-même compilé en code machine natif. Les avantages d'une telle chaîne de compilation sont de produire des logiciels qui requièrent moins de mémoire vive et qui s'exécutent plus rapidement.

De plus, ce passage par l'étape C rend possible l'utilisation des bibliothèques C au moyen d'interfaces définies dans les fichiers Vapi. Des fichiers Vapi sont fournis avec Vala pour une grande partie de la plateforme GNOME, ainsi que pour d'autres bibliothèques.

Par exemple, les logiciel Shotwell, Geary, GNOME Contacts[4] ou le greffon Arte+7 pour Totem[5] sont écrits en Vala.

Utilisation[modifier | modifier le code]

Vala est surtout utilisé par des logiciels libres (tels que Shotwell), et notamment des application GNOME, comme la calculatrice.[6][7]

La distribution GNU/Linux Elementary OS a également fait de Vala sont langage de développement principal.[8] De ce fait, de nombreuses applications fournies par défaut avec le système sont là aussi développées en Vala.

Vala est lui même écrit en Vala, à l'exception de la première version qui a été écrite en langage C.

Bien que le langage Vala soit principalement utilisé sous GNU/Linux, il n'est pas limité à celui-ci. On peut en effet également l'utiliser avec Windows[9][10][11], Mac OS X[9][12], les système de la famille BSD[13] ou n'importe quel système supportant GObject. Il est donc possible de créer des applications Android[14][15][16] en Vala. Une version du compilateur est également disponible pour les appareils iOS jailbreakés.[17]

Caractéristiques[modifier | modifier le code]

Syntaxe[modifier | modifier le code]

La syntaxe de Vala est très inspirée de celle d'autres langages tels que C# ou Java.[2][18] Cette syntaxe permet d'offrir une plus grande concision que celle du C combiné à GObject, et ainsi de gagner du temps.

Les commentaires suivent les mêmes règles qu'en C ou qu'en C#, c'est-à-dire peuvent soit être placés après // et ils se termineront alors à la fin de la ligne, soit ils commencent par /* et se terminent par */.

Les blocs sont délimités par des accolades, mêmes si celle-ci peuvent être omises si le bloc ne contient qu'une seule instruction.

Mot-clés[modifier | modifier le code]

En Vala, avec la version 0.34.1, les mot-clés utilisés par le langage sont : abstract, as, async, base, break, case, catch, class, const, construct, continue, default, delegate, delete, do, dynamic, else, enum, ensures, errordomain, extern, false, finally, for, foreach, get, hash, if, in, interface, internal, is, lock, namespace, new, null, out, override, owned, params, private, protected, public, ref, requires, return, sealed, set, signal, sizeof, static, struct, switch, this, throw, throws, true, try, typeof, unowned, using, var, virtual, void, volatile, weak, while et yield [19]. On peut cependant utiliser ces mot-clés comme identifiants à condition de les préfixer d'un arobase (@).

Typage[modifier | modifier le code]

Vala est un langage au typage fort, statique et nominatif.

Les types par défaut sont ceux de GLib, et sont définis dans le fichier glib-2.0.vapi.[20]

On peut donner la possibilité à une variable d'être nulle, en ajoutant un ? à la suite de son type. Cependant, le compilateur n'affiche pas d'erreur si on ne le fait pas, à moins de compiler avec l'option --enable-experimental-non-null.

En Vala, les structures (struct) ainsi que les types avec l'attribut [Compact] sont des types de valeur, c'est-à-dire que lorsqu'on fait passer une variable de ce genre à une autre méthode (que ça soit en retournant cette variable ou en la passant en argument), c'est la valeur de la variable qui sera renvoyée : une copie de l'originale sera faite avant d'être passée à l'autre méthode. Les autres types sont des types de référence, c'est-à-dire que si ils sont modifiés dans une autre méthode, les modifications auront également lieu. On peut cependant utiliser le mot-clé ref pour qu'une variable normalement passée par valeur soit passée par référence. Ainsi le code suivant affichera : « A, B », car string est un type de valeur.

void main () {
    string chaine1 = "A";
    string chaine2 = "A";
    modifier (chaine1);
    modifier_par_reference (ref chaine2);
    print ("%s, %s\n", chaine1, chaine2);
}

void modifier (string chaine) {
    chaine = "B";
}

void modifier_par_reference (ref string chaine) {
    chaine = "B";
}

Le mot-clé out a le même rôle que ref à la différence que le compilateur renverra une erreur si il existe une possibilité pour que la variable passée par référence ne soie pas modifiée avant la fin de méthode.

Modèle Objet[modifier | modifier le code]

héritage simple

mixin = interfaces

Réflexivité[modifier | modifier le code]

Gestion de la mémoire[modifier | modifier le code]

Fonctionnement de la chaîne de compilation[modifier | modifier le code]

Parler des attributs

Bibliothèque standard[modifier | modifier le code]

Vala étant entièrement basé sur GObject, la bibliothèque standard du langage est GLib. En plus de cela, le compilateur est fournit avec des fichiers .vapi, permettant d'utilser une bibliothèque écrite en C dans un programme Vala, pour de nombreuses bibliothèques, qu'elles utilisent GObject ou non.

GLib permet notamment de gérer les entrées et sorties, les fichiers (grâce à GIO), de communiquer avec le système d'exploitation (variables d'environnement…) et fournit un framework de tests.

Conventions de style[modifier | modifier le code]

Il existe deux ensembles de conventions de style largement utilisés pour Vala. Le premier est celui de GNOME[21], l'autre celui d'elementary OS[22]. Ils s'accordent cependant sur les points suivants.

  • Le style d'indentation utilisé est « One True Brace Style »
  • Le mot-clé else se trouve sur la même ligne que l'accolade fermant le bloc if précédent
  • Les accolades sont obligatoires pour les blocs qui ne font qu'une seule ligne
  • Il y a toujours une espace entre les nom de méthode et la parenthèse ouvrante qui suit
  • Les noms de variables et de méthodes sont en snake_case
  • Les noms des types sont en CamelCase
  • Les constantes et les membres d'énumérations sont en SCREAMING_SNAKE_CASE
  • On n'utilise pas la notation hongroise

Exemples de code[modifier | modifier le code]

Le programme « Hello World » :

void main () {
    print ("Hello World\n");
}

Le programme « Hello World » programmation orientée objet :

public class Main {
    public static int main (string[] args) {
        stdout.printf("Hello, World\n");
        
        return 0;
    }
}

Documentation[modifier | modifier le code]

ecriture

valadoc

valadoc.org

Éditeurs de texte et EDIs[modifier | modifier le code]

Il existe plusieurs éditeurs de texte ou EDIs qui supportent le langage Vala[23]. On a notamment :

Notes et références[modifier | modifier le code]

  1. « Vala Releases », sur git.gnome.org (consulté le )
  2. a et b « Projects/Vala/About - GNOME Wiki! », sur wiki.gnome.org (consulté le )
  3. « The GNOME Journal: Writing Multimedia Applications with Vala », (consulté le )
  4. (en) Contacts
  5. (en) Totem Arte+7 Plugin, 30 décembre 2009
  6. (en) « Apps/Calculator », sur wiki.gnome.org (consulté le )
  7. « Projects/Vala/Documentation - GNOME Wiki! », sur wiki.gnome.org (consulté le )
  8. (en) « Projects/Vala/Documentation - GNOME Wiki! », sur wiki.gnome.org (consulté le )
  9. a et b « Vala », sur www.tarnyko.net (consulté le )
  10. « ValaToWindows », sur SourceForge (consulté le )
  11. « Projects/Vala/ValaOnWindows - GNOME Wiki! », sur wiki.gnome.org (consulté le )
  12. « Projects/Vala/ValaOnOSX - GNOME Wiki! », sur wiki.gnome.org (consulté le )
  13. « Projects/Vala/ValaOnStarBSD - GNOME Wiki! », sur wiki.gnome.org (consulté le )
  14. « Tutoriel : cross-compiler sous Linux pour Android (Vala) | Tarnyko.net, site sérieux et fat », sur www.tarnyko.net (consulté le )
  15. « Libgee, Libgsf, SQLite3... pour Android (Vala) | Tarnyko.net, site sérieux et fat », sur www.tarnyko.net (consulté le )
  16. « Tutoriel : dessiner avec Cairo sous Android (Vala) | Tarnyko.net, site sérieux et fat », sur www.tarnyko.net (consulté le )
  17. « radare cydia repository », sur cydia.radare.org (consulté le )
  18. « Projects/Vala/ValaForJavaProgrammers - GNOME Wiki! », sur wiki.gnome.org (consulté le )
  19. « vala - Compiler for the GObject type system », sur git.gnome.org (consulté le )
  20. « vala - Compiler for the GObject type system », sur git.gnome.org (consulté le )
  21. « Projects/Vala/Hacking - GNOME Wiki! », sur wiki.gnome.org (consulté le )
  22. elementary LLC, « Référence », sur elementary.io (consulté le )
  23. a et b « Projects/Vala/Tools - GNOME Wiki! », sur wiki.gnome.org (consulté le )
  24. « Apps/Anjuta - GNOME Wiki! », sur wiki.gnome.org (consulté le )
  25. (en) « language-vala-modern », sur atom.io (consulté le )
  26. (en) « valhalla », sur atom.io (consulté le )
  27. « Apps/Builder/Features - GNOME Wiki! », sur wiki.gnome.org (consulté le )
  28. « valable in Launchpad », sur launchpad.net (consulté le )
  29. « Projects/Vala/Emacs - GNOME Wiki! », sur wiki.gnome.org (consulté le )
  30. « Geany : All Filetypes », sur www.geany.org (consulté le )
  31. « Google Code Archive - Long-term storage for Google Code Project Hosting. », sur code.google.com (consulté le )
  32. « Projects/Valencia - GNOME Wiki! », sur wiki.gnome.org (consulté le )
  33. « GNOME/valencia », sur GitHub (consulté le )
  34. « carbonfx/netbeans-valaproject », sur GitHub (consulté le )
  35. « Vala - Packages - Package Control », sur packagecontrol.io (consulté le )
  36. « technosophos/Vala-TMBundle », sur GitHub (consulté le )
  37. « Code : valide : Tarnyko », sur code.launchpad.net (consulté le )
  38. « Projects/Vala/Documentation - GNOME Wiki! », sur wiki.gnome.org (consulté le )
  39. « Valama/valama », sur GitHub (consulté le )
  40. « Projects/Vala/Vim - GNOME Wiki! », sur wiki.gnome.org (consulté le )
  41. « scrooloose/syntastic », sur GitHub (consulté le )
  42. « Vala Code - Visual Studio Marketplace », sur marketplace.visualstudio.com (consulté le )

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]

  1. (en) « Developer ⋅ elementary », sur elementary.io, (consulté le )