3.

Un Tour Rapide (et J’Espère Sans Peine) de Ruby (avec des Renards de Bande-Dessinée)

[o]

Les renards apparaissent.

Yeah, ils sont deux. Mon asthme revient, aussi dois-je prendre une bouffée de médicament maintenant. Je reviens dans deux minutes.

Renards dans des boites.

On m’a dit qu’il vallait mieux être équipé d’un mouchoir pour ce chapitre. Quelque chose pour vous éponger le visage lorsque vous allez suer.

En effet, nous allons faire un tour à travers le langage en entier. Comme allumer chaque allumette d’une boite, aussi vite que possible.

1. Le Langage et JE VEUX DIRE le Langage

Nos amis, ces deux renards impuissants, réalise finalement la gravité de leur embarras.

Ma conscience ne me laisserais pas appeler Ruby un langage pour ordinateur. Cela impliquerait que le langage utilise principalement des termes de l’ordinateur. Que le langage est fait pour aider l’ordinateur en premier lieu. Et que donc, nous, les développeurs sommes des étrangers, cherchant à nous acclimater à l’ordinateur. C’est le langage de l’ordinateur et nous sommes les traducteurs pour le monde.

Mais comment appelez-vous un langage, quand votre cerveau commence à penser dans ce langage? Quand vous commencez à utiliser les propres mots du langage pour vous exprimer. Une machine ne peut faire ça. Comment cela pourrait-il être le langage de la machine? C’est le notre, nous le parlons naturellement!

Nous ne pouvons donc décemment pas l’appeler un langage pour ordinateur. C’est un dialecte de développeur. C’est le langage de nos pensées.

Lisez ce qui suit à haute voix, pour vous-même.

5.times { print "Odelay!" }

Dans les phrases françaises, les signes de ponctuation (telle que le point, le point d’exclamation, les parenthèses) sont des silences. La ponctuation ajoute du sens aux mots, en donnat des informations sur ce que l’auteur de lap hrase veut exprimer. Aussi lisons ce qui précède comme: Cinq fois affiche “Odelay!”.

Ce qui est exactement ce que fait ce petit programme en Ruby. L’exclamation en Espagnol mutant de Beck s’affichera cinq fois à l’écran.

Lisez ce qui suit à haute voix, pour vous-même.

exit unless "restaurant".include? "aura"

Ici nous faisons un test réel basique. Notre program sortira (exit: le programmera s’arrètera) à moins que (unless) le mot restaurant ne contienne (includes) le mot aura. Encore une fois, en Français: Arrête à moins que le mot restaurant n’inclue le mot aura.

Avez-vous déjà vu un langage de programmation utiliser les points d’interrogation de façon si effective? Ruby utilise certains signes de ponctuation, comme les points d’exclamation ou d’interrogation, pour augmenter la lisibilité du code. Dans le code précédent nous posons une question, aussi pourquoi ne pas rendre cela explicite?

Lisez ce qui suit à haute voix, pour vous-même.

['pain', 'fromage', 'vin'].each { |food| print food.capitalize }

Bien que ce bout de code soit moins lisible et moins semblable à une phrase que le précédent, je vous encourage quand même à le lire à haute voix. Même si Ruby peut se lire parfois comme de l’Anglais, il se lit aussi parfois comme un Anglais plus concis. En traduisant complètement ce qui précède en Anglais, vous auriez: With the words ‘pain’, ‘fromage’, and ‘vin’: take each food and print it capitalized. (NDT: En Français: Avec les mots ‘pain’, ‘fromage’ et ‘vin’: prendre chaque nourriture et l’afficher avec la première lettre en majuscule.)

L’ordinateur repondra alors courtoisement: Pain, Fromage et Vin.

Maintenant, vous devez vous demander comment ces mots vont en fait ensembles. Smotchkkiss se demande ce que signifient les points et les crochets. Je vais maintenant traiter les différents constituants du discours.

Tout ce que vous avez besoin de savoir est que Ruby est, à la base, fait de phrases. Ce ne sont pas exactement des phrases anglaises. Ce sont des ensembles de mots et de signes de ponctuation qui entourent une idée simple. Ces phrases peuvent former des livres. Elles peuvent former des pages. elles peuvent former des nouvelles entières, en les assemblant. Ces nouvelles peuvent être lues par des humains, mais aussi par des ordinateurs.

2. Les Constituants Du Discours

Comme la raie blanche en bas du dos de la mouffette et l’enroulement blanc du cortège de la mariée, plusieurs des constituants du discours de Ruby ont des indices visuels afin de vous aider à les identifier. La ponctuation et la capitalisation aideront votre cerveau à voir des parties de code et à ressentir une intense identification. Votre esprit vous criera fréquemment Hé, je connais ça mec! Vous serez aussi capable de placer ces noms dans les conversations avec d’autres Rubyistes.

Essayez de vous focaliser sur l’apparence de chacuns de ces constituants. Le reste du livre detaillera chaque spécificité. Je donne une description courte pour chacun des constituants, mais vous n’avez pas à comprendre l’explication. A la fin de ce chapitre, vous devriez pouvoir reconnaître chaque partie d’un programme écrit en Ruby.

Variables

N’importe quel mots constitué de lettres minuscules est une variable en Ruby. Les variables peuvent être constituées de lettres, chiffres ou de soulignés (NDT: _).

x, y, banane2 ou telephoner_a_une_caille sont des exemples.

Les variables sont comme des surnoms. Vous vous rappelez quand tout le monde vous appelait Pierre-Qui-Pue? Les gens disait, “Viens ici Pierre-Qui-Pue!” et tout le monde savait miraculeusement que vous étiez Pierre-Qui-Pue.

Les variables vous permettent de donner un surnom à ce que vous utilisez fréquemment. Par exemple, supposons que vous dirigiez un orphelinat. C’est un orphelinat moyen. Et quand Papa Warbucks vient pour acheter plus d’enfants, on insiste pour qu’il paie cent vingt et un euros et huit centimes pour l’ourson en peluche de l’enfant, auquel il s’est attaché dans les moments sombres de sa vie de cauchemard.

frais_d_ourson = 121.08

Plus tard, quand vous le retrouverez à la caisse enregistreuse (une caisse enregistreuse de première puisqu’elle tourne sous Ruby), vous devrez additioner ensemble toutes ces factures pour obtenir le total.

total = frais_d_orphelin + frais_d_ourson + gratuite

Ces noms de variables aident vraiment. Et dans le milieu miteux de la vente d’enfants, je suis sûr que toute aide est appréciée.

Ils se moquent de mes examples.

Nombres

Le type le plus basique de nombre est l’entier (integer), une série de chiffres qui peut commencer avec un signe plus ou moins.

1, 23, et -10000 en sont des exemples.

Les virgules ne sont pas autorisées dans les nombres, mais les soulignés (NDT: _) le sont. Donc, si vous sentez la nécessité de marquer les milliers afin que vos nombres soient plus lisibles, utilisez un souligné.

population = 12_000_000_000

Les nombres décimaux sont appelés flottants (floats) en Ruby. Les flottants sont faits de nombres avec une partie décimale ou une notation scientifique.

3.14, -808.08 et 12.043e-04 en sont des exemples.

Les chaines de caractères

Les chaines de caractères sont composées de n’importe quel caractère (lettre, chiffre, signe de ponctuation) entourés par des guillemets. A la fois les guillemets simples et doubles sont utilisés pour créer des chaines de caractères.

"laboratoire", '2021' ou "Ces bande-dessinées sont hilarantes!" en sont des exemples.

Quand vous entourez des caractères par des guillemets, ils sont stoqués ensemble, comme une seule chaine.

Pensez à un journaliste qui transcrit les divagations d’une célébrité. “Je suis beaucoup plus raisonnable,” dit Avril Lavigne. “Maintenant, je sais à quoi ressemble le mileu—ce que vous devez faire et comment le faire.”

 avril_citation = "Je suis beaucoup plus
  raisonnable. Maintenant, je sais à quoi ressemble 
  le mileu -- ce que vous devez faire et comment le
  faire."

De même que nous venions de stoquer un nombre dans la variable frais_d_ourson, nous stoquons maintenant une suite de caractères (une chaine) dans la variable avril_citation. Le journaliste envoie cette citation à l’impression, qui par chance, utilise Ruby pour faire fonctionner sa presse.

 print oprah_citation
 print avril_citation
 print ashlee_simpson_debacle

Ils veulent faire partie des mes exemples.

Symboles

Les symboles sont des mots qui ressemblent à des variables. Encore une fois, ils peuvent contenir des lettres, des chiffres ou des soulignés. Mais ils commencent avec deux points.

:a, :b, ou :ponce_de_leon en sont des exemples.

Les symboles sont des chaines de caratères “légères”. Généralement les symboles sont utilisés dans les situations ou vous avez besoin d’une chaine de caractères mais où vous ne voulez pas l’afficher à l’écran.

Vous pouvez voir les symboles comme étant plus léger pour l’ordinateur. Ils sont comme un antiacide. Les deux points ressemblent aux bulles remontant de l’estomac de l’ordinateur alors qu’il digère le symbole. Ah, quel soulagement!

Chunky bacon!!

Constantes

Les constantes sont des mots, à l’instar des variables, mais elles commencent par une lettre majuscule. Si les variables sont les noms de Ruby, alors pensez les constantes comme étant les noms propres.

Time, Array ou Bunny_Lake_a_Disparu en sont des exemples.

En Anglais (NDT: et en Français), les noms propres commencent par une majuscule. L’Empire State Building. Vous ne pouvez pas changer l’Empire State Building. Vous ne pouvez pas décider que l’Empire State Building désignera quelque chose d’autre. Les noms propres sont comme celà. Ils se rapportent à quelque chose de très spécifique et généralement ne changent pas au cours du temps.

De la même façon, les constantes ne peuvent pas changer après avoir été assignées.

EmpireStateBuilding = "350 5th Avenue, NYC, NY"

Si nous essayons de changer la constante, Ruby se plaindra. On désaprouve de telles pratiques.

Allez, chunky bacon.

Méthodes

Si les variables et les constantes sont les noms, alors les méthodes sont les verbes. Les méthodes sont généralement rattachées à la fin des variables par un point. Vous avez déjà vu des méthodes:

porte_devant.ouvre

Dans l’exemple précédent, ouvre est la méthode. C’est l’action, le verbe. Dans certains cas vous pouvez voir des actions enchainées.

porte_devant.ouvre.ferme

Nous avons demandé à l’ordinateur d’ouvrir la porte de devant et de la fermer immédiatement.

porte_devant.est_ouverte?

Ce qui précède est aussi une action. Nous demandons à l’ordinateur de tester la porte afin de savoir si elle est ouverte. On aurait pu appeler la méthode Porte.essaie_de_savoir_si_elle_est_ouverte mais le nom est_ouverte? est plus succint et tout aussi correct. On peut utiliser à la fois les points d’exclamation et d’interrogation dans les noms de méthodes.

Les Arguments de Méthode

Une méthode peut avoir besoin de plus d’information pour effectuer son action. Si nous voulons demander à l’ordinateur de peindre la porte, nous devons lui en indiquer la couleur.

Les arguments des methodes sont attachés à la fin des méthodes. Ils sont générallement entourés par des parenthèses et séparés par des virgules.

porte_devant.peindre( 3, :rouge )

Ce qui précède peint de 3 couches rouges la porte.

Représentez le vous comme une chambre à air que la méthode traine avec elle. Les parentèses forment les bords ronds et humides de la chambre à air. Les virgules sont les pieds de chaque argument accrochés au bord. Le dernier argument a ses pieds sous lui de façon à les cacher.

A l’instar d’un bateau pouvant remorquer plusieurs chambres à air, on peut enchainer les méthodes avec arguments.

porte_devant.peindre( 3, :rouge ).seche( 30 ).ferme()

Ce qui pécède peint de 3 couche de rouge la porte, la sèche pendant 30 minutes et la referme. Même si la dernière méthode n’a pas d’argument vous pouvez quand même mettre des parenthèses si celà vous chante. Toutefois, il est inutile de trainer une chambre à air vide, donc on ommet généralement les parenthèses.

Certaines méthode (comme print) sont des méthode de base (NDT: des méthodes du Kernel de Ruby). Ces méthodes sont utilisées partout en Ruby. Comme elles sont très fréquentes, on n’utilise pas le point.

print "Voyez, aucun point."

Méthodes de Classe

Comme les méthodes dont on vient de parler (que l’on appelle aussi des méthode d’instance (NDT: en anglais, instance methods)), les méthodes de classe sont généralement attachées aux variables et aux constantes. Plutôt qu’un point, on utilise deux double points pour les séparer.

Door::new( :oak )

Comme on peut le voir, la méthode de classe new est généralement utilisée pour créer de nouvelles choses. Dans l’exemple précédent, on demande à Ruby de nous créer une nouvelle porte en chêne. Bien sûr, Ruby doit savoir comment fabriquer une porte—de même que du bois de charpente, des bucherons et ces longues scies à deux hommes.

Plein de petits morceaux de bacon.

Variables globales

Les variables commençant par un signe dollar sont globales.

$x, $1, $chunky et $CHunKY_bACOn en sont des exemples.

La plupart des variables sont par nature temporaires. Certaines parties de votre programme sont comme de petites maisons. Vous y entrez et elles ont leurs propres variables. Dans une maison, vous pouvez avoir papa qui représente Archie, le représentant de commerce et collectionneur de squelette. Dans une autre maison, papa peut représenter Pierre, un dompteur de lion ayant un penchant pour la flanelle. Chaque maison a sa propre signification pour papa.

Avec les variables globales, vous avez la garantie que la variable sera la même dans chaque petite maison. Le signe dollar est tout à fait approprié à cela. Chaque foyer américain respecte la valeur du dollar. Nous en sommes dingues. Essayez de frapper à la porte de n’importe quelle maison américaine et tendez leur du fric. Je peux vous garantir que vous n’obtiendrez pas le même effet si vous frappez à une porte et leur offrez Pierre, le dompteur de lion ayant un penchant pour la flanelle.

Les variables globales peuvent être utilisées n’importe où dans votre programme. Elles ne sont jamais perdues de vue.

Variables d’Instance

Les variables commençant par une arobase sont des variables d’instance.

@x, @y, et @only_the_chunkiest_cut_of_bacon_I_have_ever_seen en sont des exemples.

Ces variables sont généralement utilisées pour définir les attributs de quelque chose. Par exemple vous pouvez fournir à Ruby la largeur de la porte_devant en affectant une valeur à la variable @largeur dans cette porte_devant. En Ruby, les variables d’instance sont utilisées pour définir les caractèristiques d’un objet donné.

Pensez au symbole arobas comme signifiant attribut. (NDT: marche mieux en anglais, où l’arobas se nomme at).

Variables de Classe

Les variables commençant par une double arobase sont des variables de classe.

@@x, @@y, et @@i_will_take_your_chunky_bacon_and_raise_you_two en sont des exemples.

Les variables de classe sont aussi utilisées pour définir des attributs. Mais plutôt que de définir un attribut pour un seul objet en Ruby, les variables de classe définissent un attribut pour plusieurs objets apparentés. Si les variables d’instance définissent les attributs pour une seule porte_devant, alors les variables de classe définissent les attributs pour tout ce qui est une Porte.

Pensez au double arobas comment signifiant attributs pour tous . Ou vous pouvez vous les imaginer comme un essaim de chasseurs AT-AT de Star Wars, tous commandés par Ruby (NDT: marche bien mieux en anglais ou l’arobase se nomme at). Vous modifiez une variable de classe et tous changent, pas seulement un.

Woohoo! Chunky bacon terminé!

Blocs

Tout code entourré par des accolades est un bloc.

2.times { print "Oui, j'ai utilisé Chunky Bacon dans mes exemple, mais je ne le ferai plus!" } en est un exemple.

Avec les blocs, vous pouvez grouper un ensemble d’instruction de façon à les transmettre au cours de votre programme. Les accolades ressemblents à des pinces de crabe qui auraient aggripé le code et le tiendrait groupé. Quand vous voyez ces deux pinces, rappelez vous que le code enserré a été compressé en une seule unité.

C’est comme l’une des ces petites boites Hello Kitty qu’ils vendent au supermaché, remplies de petits stylos et de papier microscopique, le tout empaqueté dans une petite trousse transparente et brillante qui tient dans le creux de la main. Mis à part que les blocs évitent de trop loucher.

Les accolades peuvent aussi être remplacées par les mots do et end, ce qui est plus clair si votre bloc tient sur plusieurs lignes.

 loop do
   print "Beaucoup mieux." 
   print "Ah. Plus d'espace!" 
   print "J'avais mal au dos à cause de ces pinces de crabe." 
 end

Arguments de bloc

Les arguments de bloc sont un ensemble de variables entourées par des pipes (NDT: |) et séparées par des virgules.

|x|, |x,y|, et |up, down, all_around| en sont des exemples.

Les arguments de bloc sont utilisés au début d’un bloc.

{ |x,y| x + y }

Dans l’exemple précédent, |x,y| sont les arguments. Le code se trouve après les arguments. L’expression x + y ajoute les deux arguments ensembles.

J’aime me représenter les deux caractères pipe comme un tunnel. Ils donnent l’impression d’un toboggan sur lequel les variables glissent. (x descend en écartant les jambes, alors que y croise les jambes.) Ce toboggan joue le rôle d’un passage entre les blocs et le monde qui les entoure.

Les variables sont passées grâce à ce toboggan (ou tunnel) au bloc.

And then, the dismal truth.

Intervalles

Un intervalle est composé de deux valeurs entourées par des parenthèses et séparées par une ellipse (sous la forme de deux ou trois points).

(1..3) est un intervalle, comprenant les nombres 1 à 3.

('a'..'z') est un intervalle comprenant les lettres minuscules.

Voyez-le comme un accordéon qui a été plié afin d’être transporté. (Bien sûr, le fait de vous promener avec un accordéon déplié peut vous apporter une grande vanité, mais parfois une personne a besoin de se vautrer dans le doute, en le transportant, plié, dans son étui.) Les parenthèses représentent les poignées sur les côté d’un bandoléon. Les points représentent la chaine qui maintient l’accordéon plié.

Généralement, on utilise seulement deux points. Si un troisième point est utilisé, la dernière valeur de l’intervalle est exclue.

(0...5) représente les nombres de 0 à 4 inclus.

Quand vous voyez ce troisième point, imaginez que vous ouvrez légèrement l’accordéon. A peine assez pour laisser s’échapper une seule note. La note est la valeur de fin. Laissons-là monter vers le ciel.

Tableaux

Un tableau est une liste entourée par des crochets et dont les éléments sont séparés par des virgules.

[1, 2, 3] est un tableau de nombres.

['coat', 'mittens', 'snowboard'] est un tableau de chaine de caractères.

Représentez le vous comme une chenille qui aurait été aggrafée sur votre code. Les deux crochets sont les aggrafes qui l’empèche de bouger, afin de noter où se trouvent la tête et la queue. Les virgules sont les jambes de la chenille frétillantes entre chaque section de son corps.

Il était une fois une chenille qui avait des virgules à la place des jambes. Ce qui veut dire qu’elle devait faire une pause littéraire après chaque pas. Les autres chenilles la respectaient beaucoup pour cette particularité, et elle servait un peu de chef. Et sans parler d’un philanthrope! Il était connu pour donner des feuilles fraiches aux moins fortunées.

Oui, un tableau est une collection de choses, mais il garde aussi ces choses dans un ordre spécifique.

Hachage

Une table de hachage est un dictionnaire entouré par des accolades. Les dictionnaires font correspondre des noms à leur définition. Ruby indique celà par une flêche, faite d’un signal egal suivit par un signe supérieur.

{'a' => 'aardvark', 'b' => 'badger'} en est un exemple.

Cette fois, les accolades représentent de petits symboles en forme de livre. Regardez comme elles ressemblent à de petits livres ouvert, pliés en leur milieu. Ils représentent l’ouverture et la fermeture de notre dictionnaire.

Imaginez que notre dictionnaire ait une définition sur chaque page. Les virgules représentent les coins de chacune des pages, que nous tournons pour voir la prochaine définition. Et sur chaque page: un mot suivi par une flêche poitant vers sa définition.

 {
   'nom' => 'Pierre',
   'profession' => 'dresseur de lion',
   'grand amour' => 'flannelle'
 }

Je ne compare pas les tables de hachage aux dictionnaires pour indiquer que l’on ne peut stocker que des définitions dans les tables de hachage. Dans l’exemple précédent, j’ai stocké les informations personnelles de Pierre, le dresseur de lion avec un penchant pour la flannelle. Les tables de hachage sont comme les dictionnaires car elles permettent une recherche facile.

A la différence des tableaux, les éléments d’une table de hachage ne sont pas gardés selon un ordre spécifique. The foxes think silence will kill the comic.

Expression Régulières

Un expression régulière(ou regexp) est un ensemble de caractères entourés par des slashes.

/ruby/, /[0-9]+/ et /^\d{3}-\d{3}-\d{4}/ en sont des exemples.

Les expressions régulières sont utilisées pour trouver des mots ou des motifs dans du texte. Les slahes de chaque côté de l’expressions sont des épingles.

Imaginez que vous ayez un petit mot avec des épingles de chaque côté et que vous le passiez sur le livre. Vous promenez le mot sur le texte et quand il s’approche d’un mot correspondant, il commence à clignoter. Vous épinglez alors l’expression régulière sur le livre, juste sur le mot correspondant et il fait briller les lettres du mot.

Et quand vous plantez les épingles dans le livre, le papier éternue, ”reg-exp!”.

Les expressions régulières sont beaucoup plus rapide que de passer vos mains sur les pages du livres. Ruby peut utliser une expression régulière pour chercher à travers énormément de livres très rapidement.

Opérateurs

Vous utiliserez la liste suivantes d’opérateurs pour faires des maths en Ruby ou pour comparer des choses. Lisez la liste, essayez d’en reconnaître certains. Vous savez, l’addition +, la soustraction - et tout celà...

  ** !  ~  *  /  %  +  -  &  
  << >> |  ^  >  >= <  <= <=>
  || != =~ !~ && += -= == ===
  .. ... not and or          

Mots Clé

Ruby comporte un certain nombre de mots-clé, imprégnés de signification. Ces mots ne peuvent être utilisés comme nom de variable ou modifiés afin de s’accorder à vos désirs. Nous avons déjà parlé de certains d’entre eux. Ils sont protégés mon ami. Vous les touchez et vous obtiendrez une erreur de syntaxe officielle.

  alias   and     BEGIN   begin   break   case    class   def     defined 
  do      else    elsif   END     end     ensure  false   for     if 
  in      module  next    nil     not     or      redo    rescue  retry 
  return  self    super   then    true    undef   unless  until   when 
  while   yield 

OK. Ce sont les illustres membres du langage Ruby. Nous allons en bouffer pendant les trois prochains chapitres, assemblant ces parties en de rusés petits bouts de code (poignant).

Je recommande de lire toutes les parties du discours encore une fois. Ayez-en une bonne vue d’ensemble. Je vous testerai dans la prochaine partie. Out in the pickup truck.

3. Si Je ne Vous Avez Pas Encore Assez Traité Comme un Enfant

Je suis fier de vous. Tout le monde vous²q dira combien je vante vos mérites. Combien je glorifie cette personne anonyme, là-bas, qui fait défiler son écran et lit, et fait défiler son écran et lit. “Ces enfants”, leur dis-je. “Mec, ces enfants m’ont eu. Je n’ai jamais …” Et je ne peux même pas finir ma phrase car je pleure comme un veau.

Et mon coeur brille d’un rouge vif sous ma peau vaporeuse et translucide, et ils doivent m’injecter 10 cm3 de Javascript pour me rétablir. (Je réponds bien au drogues dans le sang.) Mec, ce truc vous ferez sauter les pêches hors des ouies!

Et oui. Vous avez gentillement persévéré . Mais maintenant je dois commencer à devenir un maître d’école brutal. Je dois commencer à voir de bonnes notes de votre part. Jusqu’à présent vous n’avez rien fait d’autre que beaucoup bouger vos yeux. OK, bien sûr vous avez fait quelques lectures à haute voix exceptionnelles plus tôt. Mais maintenant, Smotchkkiss, nous allons avoir besoin de quelques talents de compréhension.

Prononcez à haute voix les parties du discours utilisées plus bas.

5.times { print "Odelay!" }

Vous pouvez même vouloir revoir ce paragraphe pendant que vous lisez, car vos yeux voudront sauter vers la réponse. Nous avons le nombre 5, suivi de la méthode .times. Ensuite la première paire de pince de crabe du bloc. La méthode du kernel print n’a pas de point et est suivie par la chaîne de caractères "Odelay!". La paire de pince de crabe terminale ferme notre bloc.

Prononcez à haute voix les parties du discours utilisées plus bas.

exit unless "restaurant".include? "aura"

A l’instar de la méthode print, exit est une méthode du kernel. Si vous avez fait attention lors de la grande list de mots-clé, vous savez que unless est un mot-clé. La chaine de caratères "restaurant" est suivi de la méthode include?. Et enfin, la chaîne de caratères "aura".

Prononcez à haute voix les parties du discours utilisées plus bas.

['pain', 'fromage', 'vin'].each { |food| print( food.capitalize ) }

Cette chenille participe à notre délicat festin. Cet exemple commence par un tableau. Dans ce tableau, trois chaînes de caratères: 'pain', 'fromage', et 'vin'. Ce tableau est suivi par la méthode each.

A l’intérieur d’un bloc, l’argument de bloc food descend par son toboggan à l’intérieur du bloc. La méthode capitalize met ensuite en majuscule la première lettre de l’argument de bloc, qui est devenu la variable food. Cette chaîne est alors passée à la méthode de kernel print.

Relisez encore ces exemples. Soyez sûr de reconnaitre les différentes parties du discours utilisées. Elles ont toutes un look différent, n’est-ce-pas? Prenez une inspiration profonde, appuyez fermement sur vos tempes. Maintenant, disséquons un bout de code.

4. Un Exemple pour Vous Aider à Grandir

Gettin' cabin fever.

Prononcez à haute voix les parties du discours utilisées plus bas.

 require 'net/http'
 Net::HTTP.start( 'www.ruby-lang.org', 80 ) do |http|
     print( http.get( '/en/LICENSE.txt' ).body )
 end

La prmière ligne est un appel à une méthode. La méthode appelée require est utilisée. Une chaîne de caractère contenant 'net/http' est passée à la méthode. Voyez cette première ligne de code comme une phrase. Nous avons demandé à Ruby de charger un code sensé nous aider, la bibliothèque Net::HTTP.

Les trois lignes suivantes vont toutes ensembles. La constante Net::HTTP se rapporte à la bibliothèque que nous venons de charger précédemment. Nous utilisons la méthode start de cette bibliothèque. Nous envoyons à la méthode la chaîne de caractères 'www.ruby-lang.org' et le nombre 80.

Le mot do ouvre un bloc. Ce bloc possède une variable de bloc http. Dans ce block, la méthode print est appelée. Qu’est-ce qui va être affiché?

La méthode get est appelée depuis la variable http. Nous passons à get une chaîne de caractères contenant le chemin '/en/LICENSE.txt'. Maintenant, remarquez qu’une autre méthode est enchainée avec get. La méthode body. Puis le bloc se termine avec un end.

Tout va bien? Juste par curiosité, pouvez-vous deviner ce que fait cet exemple? J’espère que vous voyez certains motif de Ruby. Sinon, remuez votre tête vigouresement pendant que vous avez ces exemples à l’esprit. Le code devrait se casser en de petites sections que vous devriez comprendre.

Par exemple, ce motif est utilisé plusieurs fois:

variable . méthode ( argument de méthode )

Vous le voyez dans le bloc:

http.get( '/en/LICENSE.txt' )

On utilise Ruby pour obtenir une page web. Vous avez sans doute déjà utilisé HTTP avec votre browser. HTTP est l’Hypertext Transfer Protocol. HTTP est utilisé pour transférer des pages web à travers Internet. Imaginez un conducteur de bus qui pourrait conduire à travers Internet et vous ramener des pages web. Sur son chapeau, brillent les lettres HTTP.

La variable http est ce conducteur de bus. La méthode est un message au conducteur de bus. Va chercher (NDT: get en anglais) la page web nommée /en/LICENSE.txt.

Aussi, là où vous verrez:

http.get( '/en/LICENSE.txt' ).body

Comme nous récupérons une page web de la part du conducteur de bus nommé http, vous pouvez le lire dans votre esprit comme:

page web .body

Et ce bout de code:

print( http.get( '/en/LICENSE.txt' ).body )

Ce code récupère la page web. Nous envoyons un message body à cette page web, ce qui nous donne tout l’HTML dans une chaîne de caractères. On affiche (NDT: print en anglais) ensuite cette chaine. Vous voyez comme le motif point-méthode est utilisé de façon chainée. Le prochain chapitre explorera ce genre de motifs en Ruby. Ce sera marrant.

Alors, que fait ce code? Il affiche le code HTML de la “home page” du sitre officiel de Ruby à l’écran. En utilisant un conducteur de bus branché au web.

5. Et, Le Voyage Rapide Arrive A Une Fin Simple et Rembourrée

Running after the truck.

Bien, maintenant nous avons un problème. J’ai l’impression que cette façon d’apprendre vous plait un peu trop. Et vous n’avez pas encore atteint le chapitre où j’utilise des chansons de saut à la corde pour vous aider à apprendre comment analyser du XML!

Si celà vous plait déjà, alors les choses vont vraiment mal. Dans deux chapitres, vous écrirez vos propres programmes en Ruby. En fait, c’est juste là que je vous ferai écrire votre propre jeu de rôle, votre propre réseau de partage de fichiers (à la BitTorrent) ainsi qu’un programme qui récupèrera des nombres aléatoires depuis Internet.

Proof has been extracted from the pudding.

Et vous savez (vous devez savoir!) que celà va devenir une obsession. D’abord vous allez complètement oublier de sortir le chien. Il attendra près de la porte de votre bureau, tournant sa tête vers vous, alors que vos yeux dévoreront le code, que vos doigts enverront des messages à l’ordinateur.

A cause de votre négligence, les choses vont commencer à aller mal. Vos tas de feuilles imprimées de code vont recouvrir vos conduits d’aération. Votre chaudière va se boucher. Les ordures vont s’amonceler: des boites à emporter que vous aurez commandé précipitamment, du courrier inoportun. Votre propre crasse polluera l’air. La mousse gagnera le chevron, les arrivées d’eau vont se boucher, les animaux entreront, et les arbres pousseront depuis les fondations.

Mais vous prendrez soin de votre ordinateur. Et vous, Smotchkkiss, le nourrirez avec votre connaissance. Au cours des éternités que vous aurez passé avec votre machine, vous serez devenu à moitié CPU. Et il sera devenu à moitié humain. Vos bras pénètreront directement dans les ports de votre ordinateurs. Vos yeux accepteront la video directement depuis une broche DVI-24. Vos poumons se trouveront juste au dessus du processeur, et le refroidiront.

Et juste comme la pièce sera prête à se refermer sur vous, juste comme tout cette luxuriance va vous avaler vous et votre ordinateur, vous terminerez votre script. Vous et votre machine, ensemble, ferez marcher ce dernier script Ruby, le produit de votre obsession. Et le script lancera des tronçonneuses pour couper les arbres, des cheminées pour aider à réchauffer la maison. Des nano-robots constructeurs sortiront de votre script pour reconstruire votre intérieur, re-carreler, rénover, chromer, polir et désinfecter. D’immenses piliers se dresseront, et des statues seront sculptées. Vous maintiendrez ce palais sous votre domination ainsi que les montagnes et îles qui entourent votre forteresse.

Bon je pense que l’on va être d’accord. Qu’est-ce-que tu dis? Attaquons ce script?

Tournez la page.