summaryrefslogtreecommitdiff
path: root/content/Informatique/vala.rst
diff options
context:
space:
mode:
Diffstat (limited to 'content/Informatique/vala.rst')
-rw-r--r--content/Informatique/vala.rst75
1 files changed, 47 insertions, 28 deletions
diff --git a/content/Informatique/vala.rst b/content/Informatique/vala.rst
index 55d83f3..05aeeb7 100644
--- a/content/Informatique/vala.rst
+++ b/content/Informatique/vala.rst
@@ -7,6 +7,8 @@ Présentation de Vala
:date: 2010-06-11
:tags: Libre, Programmation
+.. default-role:: literal
+
J'ai découvert une présentation du langage dans GLMF n°127 qui
l'utilisait pour se brancher sur le pare-feu. Cela ayant aiguisé ma
curiosité, j'ai cherché à en savoir davantage sur le langage. Le langage
@@ -34,7 +36,10 @@ très proche du C comme nous allons le voir par la suite.
Analyse
~~~~~~~
-Langage objet haut niveau Vala est tout d'abord un langage haut niveau :
+Langage objet haut niveau
+--------------------------
+
+Vala est tout d'abord un langage haut niveau :
on y retrouve des *interface* (pour pouvoir moduler le code facilement), des
*delegate* (qui permettent de définir un type de fonction pour un callback),
une gestion *événementielle* (gérer le déclenchement de plusieurs méthodes dans
@@ -46,10 +51,15 @@ pour faire une application qui n'en reste pas un simple script… Je n'ai pas
envie de détailler la syntaxe du langage et tout ce qu'il intègre car vous
pourrez trouver tout cela en ligne. Je vous renvoie au `tutoriel
<http://live.gnome.org/Vala/Tutorial>`_ qui explique la structure du langage en
-détail, qui présentent des exemples détaillés. La GLib Le langage est basé sur
+détail, qui présentent des exemples détaillés.
+
+La GLib
+-------
+
+Le langage est basé sur
la GLib, la librairie standard utilisé dans les applications GTK. La plupart
-des types primitifs (int…) sont donc en réalités des types issus de cette
-librairie (gint…). On accède ainsi à l'ensemble des méthodes de la GLib,
+des types primitifs (`int` …) sont donc en réalités des types issus de cette
+librairie (`gint` …). On accède ainsi à l'ensemble des méthodes de la GLib,
diffusées sous formes de classes objets et bien documentées (la `valadoc
<http://valadoc.org/index.html>`_). Cela rejoint l'histoire de Vala puisque La
GLib est tout utilisée par les développeurs Gnome (on constate d'ailleurs que
@@ -60,7 +70,11 @@ Python : la GLib est avant tout destinée à des développeurs C, et beaucoup de
méthodes standard du C ne sont pas disponibles. Pour parer cela, Vala propose
une classe POSIX[LIEN] proposant les méthodes standard du C, mais celle-ci
n'est pas exhaustive et il nous arrive souvent de tomber sur une fonction qui
-ne nous est pas accessible via le langage haut niveau qu'est Vala. Les Bindings
+ne nous est pas accessible via le langage haut niveau qu'est Vala.
+
+Les Bindings
+------------
+
Pour répondre à cela, propose la possibilité de mettre en place un binding vers
une libraire C de manière native. (Normal me direz-vous, le code en sortie de
Vala est du C !) On peut donc très facilement utiliser n'importe quelle
@@ -68,7 +82,8 @@ libraire existante. Vala étant un langage objet, il devient donc possible
d'utiliser les librairies standard au sein d'un code objet de haut niveau. Cela
ne demande que quelques lignes, demandant au minimum le fichier dans lequel se
trouve la définition de la méthode, et sa signature. Exemple du binding
-définissant la méthode execl (issue du fichier /usr/share/vala/vapi/posix.vapi) :
+définissant la méthode `execl` (issue du fichier
+`/usr/share/vala/vapi/posix.vapi`) :
::
@@ -83,30 +98,34 @@ et voici la signature de la méthode C correspondante :
Les types primitifs de la GLib étant basés sur les types primitifs C
correspondants, il n'y a pas de problème de cast dans la plupart de cas.
-Toutefois, Vala utilise des char\* pour définir ses string : il est
-parfois nécessaire de mettre en place faire un cast quand une méthode
-nous un char[] : même dans le code haut niveau, le C n'est jamais loin…
-C'est souvent frustrant de devoir mettre en place un binding pour une
-fonction disponible en standard dans la libc. Je pense qu'il manque la
-possibilité d'inclure directement du code C dans le code vala, tout
-comme il est possible directement de l'assembleur dans du C. Cela
-permettrait un confort dans l'utilisation qui n'est pas disponible
-actuellement. À noter qu'un outil permet de mettre en place ces bindings
-pour les composants basés sur GObjet (Gnome toujours…). De plus de
-nombreux bindings sont disponibles pour les composants Gnome. Attention,
-cela n'empêchera pas d'avoir à installer les headers C correspondants !
-Les profils Il est possible d'utiliser des profils de compilation. Cette
-option encore expérimentale a été mise en place pour répondre à des
-réclamations de la part des utilisateurs qui voulaient programmer en
-Vala sans avoir de dépendances envers la GLib. Ainsi, il est possible
-d'appeler le compilateur avec la syntaxe suivante :
-
-::
-
- valac --profile posix
+Toutefois, Vala utilise des `char\*` pour définir ses string : il est parfois
+nécessaire de mettre en place faire un cast quand une méthode nous un `char[]` :
+même dans le code haut niveau, le C n'est jamais loin… C'est souvent
+frustrant de devoir mettre en place un binding pour une fonction disponible en
+standard dans la libc. Je pense qu'il manque la possibilité d'inclure
+directement du code C dans le code vala, tout comme il est possible directement
+de l'assembleur dans du C. Cela permettrait un confort dans l'utilisation qui
+n'est pas disponible actuellement. À noter qu'un outil permet de mettre en
+place ces bindings pour les composants basés sur `GObjet` (Gnome toujours…). De
+plus de nombreux bindings sont disponibles pour les composants Gnome.
+Attention, cela n'empêchera pas d'avoir à installer les headers C
+correspondants !
+
+Les profils
+------------
+
+Il est possible d'utiliser des profils de compilation. Cette option encore
+expérimentale a été mise en place pour répondre à des réclamations de la part
+des utilisateurs qui voulaient programmer en Vala sans avoir de dépendances
+envers la GLib. Ainsi, il est possible d'appeler le compilateur avec la syntaxe
+suivante :
+
+.. code-block:: console
+
+ $ valac --profile posix
ce qui a pour conséquence de réduire le jeu de bibliothèque par défaut à
-celles disponibles dans la classe POSIX. Cela permet de limiter les
+celles disponibles dans la classe `POSIX`. Cela permet de limiter les
dépendances du programmes, mais beaucoup de types standard de Vala
deviennent de ce fait indisponible; on sent bien que le langage n'a pas
été pensé pour ça.