From 91149dfb9162ff362c3d40472e68738adc22a75a Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Sat, 20 Apr 2013 08:28:02 +0200 Subject: Grammar correction --- content/Informatique/vala.rst | 121 ++++++++++++++++++++---------------------- 1 file changed, 57 insertions(+), 64 deletions(-) (limited to 'content/Informatique/vala.rst') diff --git a/content/Informatique/vala.rst b/content/Informatique/vala.rst index 7ca8e8e..55d83f3 100755 --- a/content/Informatique/vala.rst +++ b/content/Informatique/vala.rst @@ -13,20 +13,20 @@ curiosité, j'ai cherché à en savoir davantage sur le langage. Le langage C m'a toujours paru difficile à aborder. Non pas au niveau de sa syntaxe, mais au sujet de l'accès à sa documentation et aux librairies disponibles. Pour moi qui suis habitué à Java ou à Python, j'ai regardé -Vala comme un moyen de mettre un pied dans le C. Je vais essayé de +Vala comme un moyen de mettre un pied dans le C. Je vais essayer de présenter ma manière de le voir, après avoir fait une petite plongée dedans… Présentation ~~~~~~~~~~~~ -Le langage Vala à été créé par les développeurs de Gnome pour qu'ils +Le langage Vala a été créé par les développeurs de Gnome pour qu'ils puissent disposer d'un langage de haut niveau. Gnome ayant eu pendant -quelques temps un pied ( dansant ) dans mono, Vala en est très inspiré. -( Je ne connais pas mono et ne peux donc pas lancer de comparatif, je +quelque temps un pied (dansant) dans mono, Vala en est très inspiré. +(Je ne connais pas mono et ne peux donc pas lancer de comparatif, je vous renvoie donc à celui présenté par Gnome `par rapport à C# `_, et -pour `Java `_ ). Le +pour `Java `_). Le langage est ensuite compilé en C, et GCC est utilisé pour la compilation d'un exécutable. On est donc dans un langage intermédiaire, qui reste très proche du C comme nous allons le voir par la suite. @@ -35,45 +35,40 @@ Analyse ~~~~~~~ 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 de définir un type de fonction -pour un callback ), une gestion *événementielle* ( gérer le -déclenchement de plusieurs méthodes dans le code par un appel unique ) … -On dispose donc d'un langage objet assez riche pour éviter d'avoir -passer du temps sur des détails et se concentrer sur le programme et son -déroulement. Il est pensé objet et l'on retrouve vite ses marques, tout -comme l'on sent qu'il est assez facile d'« abstraire » le code 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 `_ qui explique la -structure du langage en 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, diffusées sous formes de -classes objets et bien documentées ( la -`valadoc `_ ). Cela rejoint l'histoire de -Vala puisque La GLib est tout utilisée par les développeurs Gnome ( on -constate d'ailleurs que la plupart des composants Gnome ont une entrée -dans cette Valadoc ). Il ne faut cependant pas croire que l'on dispose -avec cette bibliothèque standard d'un ensemble de routines aussi riche -que dans le package standard d'un Java ou d'un Python : la GLib est -avant tout destinée à des développeurs C, et beaucoup des méthodes -standard du C n'y 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 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 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 ) : +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 +le code par un appel unique) … On dispose donc d'un langage objet assez riche +pour éviter d'avoir à passer du temps sur des détails et se concentrer sur le +programme et son déroulement. Il est pensé objet et l'on retrouve vite ses +marques, tout comme l'on sent qu'il est assez facile d'« abstraire » le code +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 +`_ qui explique la structure du langage en +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, +diffusées sous formes de classes objets et bien documentées (la `valadoc +`_). Cela rejoint l'histoire de Vala puisque La +GLib est tout utilisée par les développeurs Gnome (on constate d'ailleurs que +la plupart des composants Gnome ont une entrée dans cette Valadoc). Il ne faut +cependant pas croire que l'on dispose avec cette bibliothèque standard d'un +ensemble de routines aussi riche que dans le package standard d'un Java ou d'un +Python : la GLib est avant tout destinée à des développeurs C, et beaucoup des +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 +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 +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) : :: @@ -87,7 +82,7 @@ et voici la signature de la méthode C correspondante : extern int execl (__const char *__path, __const char *__arg, ...) __THROW __nonnull ((1)); Les types primitifs de la GLib étant basés sur les types primitifs C -correspondant, il n'y a pas de problème de cast dans la plupart de cas. +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… @@ -97,7 +92,7 @@ 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 +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 @@ -122,12 +117,12 @@ Conclusion Pour résumer, je dirais que Vala correspond à ce qu'il annonce : un langage haut niveau pour faciliter la création d'applications Gnome. Dès que l'on cherche à sortir de ce cadre, on se retrouve confronté à des -limitations ( qui ne sont bien sûr pas insurmontable ) : +limitations (qui ne sont bien sûr pas insurmontable) : - Pour ceux qui ne cherche pas à travailler sur du code Gnome, - embarquement de bibliothèques qui ne nous intéressent pas forcement. - ( Bien que sur ce point, la GLib est plutôt standard sur les PCs - ayant X d'installés ) + embarquement de bibliothèques qui ne nous intéressent pas forcément. + (Bien que sur ce point, la GLib est plutôt standard sur les PCs + ayant X d'installés) - Pour ceux qui cherchent un langage de haut niveau, le C est encore trop présent entre les lignes pour pouvoir l'oublier complètement. D'un autre côté, l'intégration du code C n'est pas toujours évidente @@ -137,17 +132,15 @@ limitations ( qui ne sont bien sûr pas insurmontable ) : soient pas encore disponibles oblige à mettre le doigt dans les bindings régulièrement. -Le langage est bien sûr encore amené à évoluer, et les points que je -cite ici ne sont pas pour autant rédhibitoires. D'un point de vue -totalement subjectif Je trouve le langage simple mais sans trop de -saveur. Ça reste un langage objet qui n'est bien sûr pas -révolutionnaire; on sent qu'il ne fait que reprendre les concepts des -langages qui l'ont inspiré, mais le produit est cohérent, et d'après les -benchs génère un code plutôt optimisé ( en rapport avec le temps que -l'on pourrait passer à produire le même code en C ). Après, je ne prend -pas le même plaisir à programmer en Vala qu'en python ( j'avais bien dit -que j'étais subjectif ^^ ). Cela dit, pour moi, qui ne suis pas un -développeur Gnome, je suis plus intéressé par la possibilité d'avoir un -langage haut niveau qui reste très proche du C, avec les performances -qui vont avec; si le prix pour cela est une dépendance vers la GLib, ça -reste un coût sommes toutes assez faible. +Le langage est bien sûr encore amené à évoluer, et les points que je cite ici +ne sont pas pour autant rédhibitoires. D'un point de vue totalement subjectif +Je trouve le langage simple mais sans trop de saveur. Ça reste un langage objet +qui n'est bien sûr pas révolutionnaire; on sent qu'il ne fait que reprendre les +concepts des langages qui l'ont inspiré, mais le produit est cohérent, et +d'après les benchs génère un code plutôt optimisé (en rapport avec le temps que +l'on pourrait passer à produire le même code en C). Après, je ne prends pas le +même plaisir à programmer en Vala qu'en python (j'avais bien dit que j'étais +subjectif ^^). Cela dit, pour moi, qui ne suis pas un développeur Gnome, je +suis plus intéressé par la possibilité d'avoir un langage haut niveau qui reste +très proche du C, avec les performances qui vont avec; si le prix pour cela est +une dépendance vers la GLib, ça reste un coût sommes toutes assez faible. -- cgit v1.2.3