Apprenez à programmer en Vala

a marqué ce sujet comme résolu.
Auteur du sujet

Tout le monde se secoue ! :D

J'ai commencé (dimanche 13 juillet 2014 à 13h56) la rédaction d'un tutoriel au doux nom de « Apprenez à programmer en Vala » et j'ai dans l'objectif de proposer en validation un texte aux petits oignons. Je fais donc appel à votre bonté sans limite pour dénicher le moindre pépin, que ce soit à propos du fond ou de la forme. Vous pourrez consulter la bêta à votre guise à l'adresse suivante :

Pour le moment c'est juste la première partie sur les bases du langage. Je commencerai une deuxième partie sur la POO et peut-être une annexe une fois que celle-ci sera bien propre.

Voilà, merci d'avance pour vos retours !

Édité par anonyme

+3 -0

Comme tu t'en doutes, je ne peux que t'encourager pour la suite du tutoriel ! J'ai déjà parcouru la première partie et c'est du très bon.
Penses-tu parler du mot clé var que j'utilise quasiment tout le temps ? :-°

+0 -0
Auteur du sujet

Seulement dans la partie sur la POO je pense, ou on commencera à avoir des types avec des noms à ralonge (types génériques notamment). En tout cas merci pour ton soutien !

+0 -0

Cette réponse a aidé l’auteur du sujet

Salut.

J'ai quelques remarques.

Dans « Notre premier programme », la signature de main présentée est void main(). Plus tard dans le tutoriel (« Les méthodes »), les codes d'exemple contiennent void main(string args[]). Or, je crois que la seconde signature n'est pas expliquée.

Globalement, le style des codes d'exemple n'est pas très consistant. Dans les premières sections, l'accolade ouvrante des méthodes est placée après un retour à la ligne. Par la suite, l'accolade passe sur la même ligne que la signature.

Dans « Qu'est-ce que Vala ? », tu dis la chose suivante :

Les programmes compilés ne gèrent pas aussi bien la mémoire que les programmes interprétés (où la gestion de la mémoire est plus "automatique", grâce à des technologies comme le Garbage Collector).

La présence d'un GC est tout à fait indépendante du processus de compilation ou d'interprétation. Il s'agit d'une question de support par l'environnement d'exécution, qui peut très bien être sous la forme d'une bibliothèque liée à un programme compilé. À l'inverse, rien n'oblige une machine virtuelle ou un interprète à fournir un GC.

Mon Github | Pony : Un langage à acteurs sûr et performant

+0 -0

Cette réponse a aidé l’auteur du sujet

Dans « Notre premier programme », la signature de main présentée est void main(). Plus tard dans le tutoriel (« Les méthodes »), les codes d'exemple contiennent void main(string args[]). Or, je crois que la seconde signature n'est pas expliquée.

En faite c'est difficile de parler d'une signature pour une fonction main en Vala puisqu'on peut la définir comme on veut…

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
public int main () {
...
}

int main () {
...
}

public int main (string arg, string[] args) {
...
}

void main () {
...
}

Toutes ces méthodes sont valides! :)

+0 -0
Auteur du sujet

Dans « Notre premier programme », la signature de main présentée est void main(). Plus tard dans le tutoriel (« Les méthodes »), les codes d'exemple contiennent void main(string args[]). Or, je crois que la seconde signature n'est pas expliquée.

Comme l'a dit Wizix, main peut avoir de nombreuses signatures en Vala. Mais je penses que j'utiliserait void main () pour la suite, sauf si à un moment j'ai besoin des arguments (dans un exercice par exemple) à partir de là j'expliquerai ce que c'est et je le noterai.

Globalement, le style des codes d'exemple n'est pas très consistant. Dans les premières sections, l'accolade ouvrante des méthodes est placée après un retour à la ligne. Par la suite, l'accolade passe sur la même ligne que la signature.

Dans « Qu'est-ce que Vala ? », tu dis la chose suivante :

Les programmes compilés ne gèrent pas aussi bien la mémoire que les programmes interprétés (où la gestion de la mémoire est plus "automatique", grâce à des technologies comme le Garbage Collector).

La présence d'un GC est tout à fait indépendante du processus de compilation ou d'interprétation. Il s'agit d'une question de support par l'environnement d'exécution, qui peut très bien être sous la forme d'une bibliothèque liée à un programme compilé. À l'inverse, rien n'oblige une machine virtuelle ou un interprète à fournir un GC.

Praetonus

Les premiers chapitres ne sont pas de moi mais de linkboss et j'auri bien aimé lui demander avant de modifier ce qu'il a fait, mais il ne s'est pas connecté depuis septembre … donc je penses que je peux y aller, surtout pour des petites modifications comme ça.

Merci pour ton retour en tout cas. :)

+0 -0
Auteur du sujet

Bonjour les agrumes !

La bêta a été mise à jour et décante sa pulpe à l'adresse suivante :

Merci d'avance pour vos commentaires.

Edit : j'ai mis à jour le tuto en prenant en compte vos commentaires, et en rajoutant/corriegant quelques trucs par-ci par-là (je n'ai pas encore touché à la partie sur le GC par contre).

Édité par anonyme

+1 -0
Auteur du sujet

Bonjour les agrumes !

La bêta a été mise à jour et décante sa pulpe à l'adresse suivante :

Merci d'avance pour vos commentaires.

J'ai modifié la partie sur le GC et j'ai francisé les noms de variables qui étaient en anglais. J'ai aussi chagé le terme fonction en méthode.

Édité par anonyme

+1 -0
Auteur du sujet

Bonjour tout le monde.

J'aimerai connaître votre avis sur cette question : Est-ce qu'il vaut mieux que je publie d'abord la première partie une fois qu'elle sera bien propre, puis que je publie la seconde partie et les autres si il y en a ou bien j'attends d'avoir tout fini et je publie tout d'un coup ?

Et bien-sûr si vous avez vu des fautes à corriger, des passages qui ne vous semblent pas clairs ou autres, allez-y, la bêta est faite pour ça. :)

+0 -0
Auteur du sujet

Cette réponse a aidé l’auteur du sujet

J'aimerai connaître votre avis sur cette question : Est-ce qu'il vaut mieux que je publie d'abord la première partie une fois qu'elle sera bien propre, puis que je publie la seconde partie et les autres si il y en a ou bien j'attends d'avoir tout fini et je publie tout d'un coup ?

Je pense que tu peux d'abord publier la première partie, puis les autres viendront s'ajouter progressivement. C'est par exemple ce que fait le tutoriel Ruby.

+2 -0
Auteur du sujet

Bonjour les agrumes !

La bêta a été mise à jour et décante sa pulpe à l'adresse suivante :

Merci d'avance pour vos commentaires.

J'ai simplement changé les tags suite à la MEP de la v18. J'attends toujours vos retours, avant d'envoyer cette première partie en validation.

Édité par anonyme

+2 -0

Cette réponse a aidé l’auteur du sujet

Salut, ton tuto est sympas, il est plaisant à lire !

J'ai remarqué des petits détails qui me dérangent, alors je t'en fait part :

  • Dans la partie Opérations sur les nombres, quand tu parle d'assignements augmentés, tu utilise deux exemple mais avec des variable differantes :

    1
    hp = hp - attack;
    

    1
    vie -= attaque; // hp vaut maintenant 30.
    

  • Pour les variable, je ne sait pas si il y a une convention de nommage (p. ex. CamelCase, lowerCamelCase ou snake_case). Si il y en a une, ça peut être intéressant de l'indiquer.

Sur ce, bonne chance pour la suite de la rédaction !

« One may say "the eternal mystery of the world is its comprehensibility." »  — Albert Einstein, Physics and Reality

+0 -0
Auteur du sujet

Pour les noms de variables différents, c'est parce qu'on était partis sur des noms en anglais par habitude et on s'est ensuite rendus compte que ça pouvait être un peu déroutant pour un débutant. Et les variables doivent être en snake_case, je vais le préciser. Merci beaucoup pour les remarques. :)

+1 -0
Auteur du sujet

Bonjour les agrumes !

La bêta a été mise à jour et décante sa pulpe à l'adresse suivante :

Merci d'avance pour vos commentaires.

Alors oui, c'est très le spam (j'ai d'ailleurs réussi à poster deux messages consécutifs en moins de 15 minutes :p ), mais je me suis rendu compte que l'icône que j'avais fait en 5 minutes avec GIMP était quand même bien moche, et je l'ai changée pour un truc un peu plus zoli.

Un truc un peu plus zoli

Édité par anonyme

+1 -0

Dans « Notre premier programme », la signature de main présentée est void main(). Plus tard dans le tutoriel (« Les méthodes »), les codes d'exemple contiennent void main(string args[]). Or, je crois que la seconde signature n'est pas expliquée.

En faite c'est difficile de parler d'une signature pour une fonction main en Vala puisqu'on peut la définir comme on veut…

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
public int main () {
...
}

int main () {
...
}

public int main (string arg, string[] args) {
...
}

void main () {
...
}

Toutes ces méthodes sont valides! :)

Wizix

En général la meilleure façon de déclarer son entrypoint est de le déclarer en static, comme suit:

1
2
3
4
5
public static int main (string[] args) {
  Application app = new Application ();
  app.do_something ();
  return 0;
}

De plus dans la partie des commentaires tu écris tes blocks d'une manière les rendant incompatible avec valadoc (si j'dis pas de conneries :p). Pour que valadoc fasse pas de la merde lors de l'extraction, la meilleur façon de définir ton commentaire serait

1
2
3
4
5
6
/**
*  Mon super commentaire sur plusieurs lignes,
*  et en plus en l'écrivant ainsi on peut avoir
*  les mêmes commentaires après extraction via 
*  valadoc! :D
**/

J'ai également vu que tu ne proposes pas tout les types de variables que Vala permet d'utiliser, il y'a également uint(?(32|64) et size_t, doit surement y'en avoir d'autres mais j'vois pas lesquels sinon. x)

Édité par skyzohkey

Développeur de Konv, un logiciel de messagerie instantané totalement décentralisé et chiffré, exit Skype!

+0 -0
Auteur du sujet

Pour une grosse application, quand le main est dans une classe, ça peut être bien (et même nécessaire), mais sinon je ne vois pas trop l'utilité : Vala mets automatiquement les méthodes hors des classes/interfaces en static et le public ne sert à rien, puisque cette méthode n'est censée être appelée qu'au lancement du programme, et pas par d'autres méthodes. Et puis pour un tuto qui se veut accessible aux débutants, c'est bien je pense de ne pas balancer 42 mot-clés dès le début, sans vraiment comprendre à quoi ils servent.

Et pour les commentaires Valadoc, il ont la forme suivante (je suis allé vérifier :p ).

1
2
3
4
5
6
/**
 * Le point d'entrée du programme
 */
void main () {
    // blabla
}

Mais les commentaires multilignes ne servent pas que pour la doc, on peut en mettre où on veut. Par contre je ferai sûrement une annexe sur comment bien documenter son coder, en suivant le format de Valadoc.

Édité par anonyme

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte