J'ai parcouru ton tuto rapidement et j'aurais quelques remarques :
je n'ai pas compris l'explication à propos de gets.chomp d'autant que le rôle de chomp est d'enlever des caractères à la fin d'une chaîne (« \r », « \n » et « \r\n » sans paramètre) ;
tu ne parles pas des conditions inline (instruction if condition) ;
même si l'intérêt en est moins évident, tu pourrais mettre une petite ligne sur unless ;
j'ai été étonné de ne pas voir citées les boucles du types 5.times ;
tu pourrais préciser la syntaxe des commentaires multi-lignes (=begin et =end) ;
après à toi de voir bien sûr, mais dans le chapitre sur les fonctions, je verrais bien une partie sur yield qui pourrait servir d'introduction aux blocs avec Ruby.
J'ai repéré quelques fautes et maladresses de français, je pourrai te faire une petite liste si ça t'intéresse.
Merci pour ton message Ekron !
J'ai bien noté tous tes commentaires, je tiendrais à modifier le tuto à propos de tes propositions dès que j'ai un peu le temps.
Concernant les fautes de français … moi qui pensait m'en être définitivement débarrassées ! Je veux bien ta petite liste, mais t'es vraiment pas obligé
Encore merci pour ton commentaire, c'est toujours apprécié
« Félicitation » -> « Félicitations » (dernière ligne de la partie),
titre du chapitre 2 : « chaines de caractère » -> « chaînes de caractères »,
chapitre 2, partie 1 :
« que nous avons vu » -> « que nous avons vues » (première ligne),
« Un flottant est un nombre avec une décimale » -> « avec une partie décimale », non ? Un flottant n'a pas forcément qu'une décimale si ma mémoire est bonne,
chapitre 2, partie 2 :
« un phrase » -> « une phrase » (première ligne),
« Une constante […] leur valeur » -> « Une constante […] sa valeur » (première ligne en dessous du titre « Constantes »),
« rien de plus simple … » -> « rien de plus simple… » (juste en dessous de la précédente) pas d'espace avant les points de suspension, en revanche je suis agréablement surpris de voir utilisé le caractère prévu à cet effet,
« en mathématique » -> « en mathématiques » (dans le bloc de code qui suit la précédente),
chapitre 2, titre de la partie 3 : « Chaines de caractères » -> « Chaînes de caractères »,
chapitre 2, partie 3 :
« une chaine de caractère » -> « une chaîne de caractères » (première ligne),
« soit un mot ou une phrase » -> « soit un mot soit une phrase » ou « un mot ou une phrase », mais pas un mélange des deux (première ligne),
« Variable » -> « Variables » (premier titre de la partie), ce n'est pas vraiment une faute, mais comme plus haut tu as nommé une partie « Variables » au pluriel et que cette partie contient un titre « Constantes » également au pluriel, je me dis que c'est plus cohérent,
« chaine de caractère » -> « chaîne de caractères » (juste en dessous du titre « Variable »
« chaines de caractère » -> « chaînes de caractères » (deuxième titre la partie, la ligne juste au-dessous également et même chose dans la phrase après le bloc de code),
chapitre 2, partie 4 :
« chaine de caractère » -> « chaîne de caractères » (première ligne du tableau et dans l'encadré attention),
« la valeur prend la valeur » -> « la variable prend la valeur », non ?
« Voyez-plutôt » -> « Voyez plutôt » (la ligne avant le dernier bloc de code de la partie),
chapitre 2, partie 5 :
« la méthode gets et tout désignée » -> « la méthode gets est toute désignée » (première ligne),
« si il y a » -> « s'il y a » (dernière ligne),
chapitre 3 : il faut un point à la fin de toutes les phrases en paramètre de print dans les blocs de code,
chapitre 3, partie 2 :
« le nombre de ligne » -> « le nombre de lignes » (dans l'encadré question),
« Ecrire le code dans des fichiers » -> « Écrire le code dans des fichiers » (le lien dans l'encadré question),
chapitre 3, partie 3 :
« qui vérifierai » -> « qui vérifierait » (première ligne),
« au dessus de 12 » -> « au-dessus de 12 » (deuxième ligne),
« la forme de condition case...when permettent » -> « la forme de condition case...when permet » (fin du premier paragraphe),
chapitre 3, partie 4 :
« tant qu'une condition est vrai » -> « tant qu'une condition est vraie » (première ligne),
« sont équivalent » -> « son équivalent » (deuxième ligne),
« par vous même » -> « par vous-même » (dernière ligne de la partie, avant le bloc de code),
chapitre 3, partie 6 :
« d'une intervalle » -> « d'un intervalle » (première ligne),
« Sans surprises » -> « Sans surprise » (ligne en dessous du premier bloc de code),
chapitre 4, introduction : « entrainer » -> « entraîner », ce n'est pas vraiment une erreur, mais « entrainer » appartient à l'orthographe rectifiée d'après 1990 alors que tu as tout du long employé l'orthographe traditionnelle. On peut utiliser l'une ou l'autre indifféremment, mais il est tout de même conseillé de garder la même durant l'intégralité du texte pour des questions de cohérence,
chapitre 4, partie 1 : « jeu" : Une année » -> « jeu" : une année »,
chapitre 4, partie 3 : il manque les points à la fin des phrases « L'année est bissextile. » et « L'année n'est pas bissextile. »,
« des chaines de caractère » -> « des chaînes de caractères »,
« un variable » -> « une variable » (la ligne entre les deux premiers blocs de code),
dans l'encadré attention, tu as oublié le point de la phrase,
chapitre 5, partie 2 : « le diner » -> « le dîner » (dans le premier bloc de code et à chaque phrase dans le deuxième), même remarque que pour « entraîner »,
chapitre 6, partie 1 :
« Procédure » -> « Procédure », même remarque que pour le titre « Variables » plus haut, ce n'est pas vraiment une erreur (premier titre de la partie),
« "Hello World !" » -> « "Hello World!" » (première ligne en dessous du titre « Procédure » et deux fois dans le bloc de code juste en dessous) il n'y a pas d'espace avant les signes de ponctuation hauts en anglais,
« deux nombre » -> « deux nombres » (première ligne en dessous du titre « Valeur de retour »),
« les instructions […] ne seront pas exécutés » -> « les instructions […] ne seront pas exécutées » (la ligne en dessous du bloc de code de la sous-partie « Valeur de retour »),
chapitre 6, titre de la partie 2 : « Exercice » -> « Exercices »,
chapitre 6, partie 2 :
« un calculatrice » -> « une calculatrice » (première ligne de l'énoncé de l'exercice 1),
« quatre fonctions: » -> « quatre fonctions : »,
« rafraichir » -> « rafraîchir », même remarquer que pour « entraîner », plus haut (avant-dernière ligne de l'exercice 2),
« si vous êtes coincés » -> « si vous êtes coincé » depuis le début tu t'adresses à un lecteur que tu vouvoies, le singulier est donc plus logique,
titre du chapitre annexe : « Ecrire le code dans des fichiers (Notepad++) » -> « Écrire le code dans des fichiers (Notepad++) »
chapitre annexe, introduction :
« le bloc-note » -> « le bloc-notes » (première ligne en dessous de l'encadré question),
« Bloc-Note » -> « Bloc-notes » (légende des images),
« ne pas afficher la console NppExec » -> « Ne pas afficher la console NppExec » tous les autres commentaires commencent par une majuscule (premier bloc de code de la partie),
« ce script: » -> « ce script : » (en dessous de l'image légendée « Ajout du script »),
« des touches déjà utilisé » -> « des touches déjà utilisées » (même paragraphe que la précédente, dernière ligne),
« raccourci (Notez que » -> « raccourci (notez que » (dernière ligne).
J'ai encore une suggestion et je la poste ici plutôt que par mp :
Vu que c'est une introduction à Ruby, il serait bon de mentionner certaines possibilités qu'offre le langage pour donner envie au lecteur d'aller plus loin. Ça pourrait par exemple être fait en conclusion. Exemple de possibilités : Programmation Orientée Objet, Faire un jeu en Ruby avec Gosu, faire un logiciel avec QtRuby, faire du développement web avec Ruby on Rails, etc… Et aussi proposer au lecteur de continuer son apprentissage avec les liens qu'offre le site officiel de Ruby par exemple, et rajouter ceux de ZdS en rapport avec le Ruby si jamais
Un peu comme ce que prévois de faire nohar avec le tutoriel Python : on écrit un tutoriel pour apprendre les bases et à la fin on dirige vers un autre tutoriel selon ce que le lecteur à envie de faire.
Ah, quelle joie ! Je craignais que ce cours n'ait été abandonné.
Et je suis encore plus content d'apprendre que le "cours" Ruby va prendre la voie ouverte par @nohar avec Python, une discussion sera t-elle ouverte à ce sujet sur le forum à l'instar de celle de Python pour dégager les grands axes ?
P.S.: J'ai dû loupé quelque chose, @Bat', pourquoi n'apparais-tu pas dans les rédacteurs ?
En fait, Bat' proposait une idée (très bonne d'ailleurs). Mais le tutoriel n'est pas abandonné. Il est en validation en ce moment et on continue à faire des corrections.
J'ai quelques questions/suggestions sur le contenu.
Peut-on changer la taille d'un tableau ? Ajouter un élément en fin de tableau (ou en milieu de tableau) ?
Y-a-t-il des listes (différentes des tableaux) ? Des dictionnaires ? Des structures de données plus complexes ?
Comment manipuler des fichiers ? Lire ce qu'écrit l'utilisateur dans la console ?
Si vous avez le temps de retravailler sur le tutoriel, je pense que ça a sa place (même dans une "introduction à Ruby"), pour éviter de rester sur sa faim
Autres questions en vrac sur Ruby, du point de vue d'un novice en Ruby mais qui connaît d'autres langages.
Est-ce que la convention sur les constantes qui commencent par une majuscule est imposée par le langage ou est-ce une convention de code ? (A part OCaml, je ne connais pas de langage qui donne une sémantique différente aux majuscules et minuscules).
Est-ce qu'on peut concaténer des chaînes de caractères et des nombres directement print "cinq vaut " + 5 ou faut-il obligatoirement convertir (comme en Python) print "cinq vaut " + 5.to_s ?
Concernant les conditions : comment écrire les opérateurs classiques NON, ET, OU ?
Comment s'indentent les blocs de code exactement (par exemple entre if et end) ? Est-ce que l'indentation est obligatoire comme en Python ? (Si oui avec des tabulations ? avec 4 espaces ? avec ce qu'on veut ?) (Si non peut-on écrire sur une seule ligne if a > 0 : print "positif" end ?)
Comment fonctionnent les intervalles ? 0..5 inclut-il 5 (contrairement à Python) ? Si oui pourquoi dans le case...when on a when 0..6 puis when 6..12 ?
Peut-on utiliser des variables dans les intervalles : for i in 0..n ?
Peut-on utiliser des variables dans les when (contrairement au switch du C) ? Peut-on utiliser case...when avec autre chose que des nombres : des chaînes de caractères, des tableaux, etc (idem, contrairement au C) ?
Je pense que les réponses peuvent être utiles pour les lecteurs qui connaissent déjà un ou plusieurs autre(s) langage(s).
J'ai quelques questions/suggestions sur le contenu.
Peut-on changer la taille d'un tableau ? Ajouter un élément en fin de tableau (ou en milieu de tableau) ?
Pour ajouter un élément en fin de tableau, on peut utiliser tableau << x qui renvoie un tableau auquel a été ajouté la valeur x (ça marche aussi pour les chaines de caractères). Si on veut changer la valeur de tableau il faut alors utiliser tableau = tableau << x. On peut également utiliser + pour concaténer deux tableaux.
Y-a-t-il des listes (différentes des tableaux) ? Des dictionnaires ? Des structures de données plus complexes ?
L'autre structures de données souvent utilisée : les tables de hachages qui permettent d'associer une valeur à un mot-clé plutôt qu'à un indice.
Comment manipuler des fichiers ? Lire ce qu'écrit l'utilisateur dans la console ?
Si vous avez le temps de retravailler sur le tutoriel, je pense que ça a sa place (même dans une "introduction à Ruby"), pour éviter de rester sur sa faim
On va voir alors.
Est-ce que la convention sur les constantes qui commencent par une majuscule est imposée par le langage ou est-ce une convention de code ? (A part OCaml, je ne connais pas de langage qui donne une sémantique différente aux majuscules et minuscules).
Oui, la majuscule est obligatoire.
Est-ce qu'on peut concaténer des chaînes de caractères et des nombres directement print "cinq vaut " + 5 ou faut-il obligatoirement convertir (comme en Python) print "cinq vaut " + 5.to_s ?
Il faut convertir. Le mieux pour ça est de tester et de voir l'erreur.
Concernant les conditions : comment écrire les opérateurs classiques NON, ET, OU ?
Ils s'écrivent avec not, or et and, mais c'est vrai qu'il faut plus s'attarder dessus.
Comment s'indentent les blocs de code exactement (par exemple entre if et end) ? Est-ce que l'indentation est obligatoire comme en Python ? (Si oui avec des tabulations ? avec 4 espaces ? avec ce qu'on veut ?) (Si non peut-on écrire sur une seule ligne if a > 0 : print "positif" end ?)
L'indentation n'est pas obligatoire. On peut en effet tout écrire sur une ligne mais il y a quelques changements.
Comment fonctionnent les intervalles ? 0..5 inclut-il 5 (contrairement à Python) ? Si oui pourquoi dans le case...when on a when 0..6 puis when 6..12 ?
0..n va de 0 à n inclus. On aurait pu mettre de 7 à 12 et changer le reste de la même manière, cela ne changera rien car dès qu'un cas est vrai les autres cas ne sont pas exécutés.
Peut-on utiliser des variables dans les intervalles : for i in 0..n ?
Oui on peut utiliser des variables dans les intervalles.
Peut-on utiliser des variables dans les when (contrairement au switch du C) ? Peut-on utiliser case...when avec autre chose que des nombres : des chaînes de caractères, des tableaux, etc (idem, contrairement au C) ?
Tu peux essayer pour voir et oui, on peut utiliser des variables, des chaines etc. dans les when
De manière générale, je trouve que le tutoriel est extrêmement léger. Les chapitres sont trop courts, ils ne présentent pas assez de choses, et surtout ne donnent pas assez d'exemples de code. Les questions de Tolf illustrent à mon avis ce défaut.
Je suis d'accord avec toi, c'est l'un de ses points faibles. C'est pour cela, qu'il nous faut l'étoffer (ce que je suis en train de faire en ce moment), rajouter des exemples et des exercices
Pour ce genre de cours, quand on ne sait pas trop ce qu'on pourrait mettre dedans pour l'étoffer (c'est pas facile quand on connaît bien un langage ou une techno de faire le point sur ce qu'on pourrait mettre dans un tel cours), une idée est de partir d'un cas très concret et répandu d'utilisation du langage et d'en extraire les principaux attraits. (dans sa tête hein, pas dans le cours).
Exemple : Pour Ruby, on sait que RoR est un framework très utilisé et donc que y'a quand même pas mal de chance pour qu'un bon nombre d'utilisateurs l'utilisent par la suite.
Du coup, de quoi on va avoir besoin dans un framework web ? De plein de trucs évidemment mais y'a deux choses qui me semblent essentielles pour utiliser RoR : les hashmap. Clairement c'est LA structure de données utilisée partout. Autre truc évident : l'héritage. Le framework est conçu (en tout cas pour les versions que je connais) par héritage : MaClass < ActiveRecord::Base c'est vraiment le truc basique de tout cours sur RoR. Voilà déjà deux idées à ajouter.
Après il faut faire le tri là-dedans : qu'est-ce-qu'on met en intro, qu'est-ce-qu'on met ailleurs ? Mais pour dresser un inventaire des fonctionnalités à ne pas oublier, utiliser un framework, une API, un cas d'utilisation, etc. existant ça permet de vite dégrossir et ne pas en oublier.
En espérant que ça vous aide à construire votre cours
Merci pour tes idées. Je pense aussi que ça peut-être utile de réfléchir de cette manière.
Comme je l'ai dit, je suis en train de rajouter des informations et des exercices. Je l'ai déjà fait pour les variables et les conditions et j'ai presque fini les boucles. Au dernier chapitre, j'ai rajouté dans la conclusion ce dont il faudrait parler dans le reste du tutoriel.
Je sais que ça risque de passer pour une obsession, mais je trouve que ce serait bien qu'il y ait une partie (ou une annexe) qui explique comment est composée la documentation, comment s'en servir, afin d'être autonome à la fin du tutoriel, de savoir où et comment chercher, de pouvoir approfondir soi-même au besoin.
Connectez-vous pour pouvoir poster un message.
Connexion
Pas encore membre ?
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