puts "Bonjour tout le monde"
Aujourd’hui je vais vous parler d’un jeune langage de programmation pas comme les autres. Il a fêté ses 20 ans le 24 février 2013. Sa version 2.0.0 est sortie en release le même jour.
Ce langage m’a facilité ma vie de développeur depuis que je l’ai découvert ça fait maintenant 5 ans (depuis 2008). Ce qui m’a le plus séduit chez ce langage c’est sa simplicité et le Framework Ruby On Rails (développé par David Heinemeier Hasson) pour les développements d’application Web et le Framework Sinatra (développé par Blake Mizerany) qui est vraiment simple pour implémenter des Services Web. Ne vous inquétez pas, je vous parlerai de tous ça dans mes articles à venir 🙂
Maintenant passons à la présentation de ce langage et je vous montrerais quelques bouts de code 🙂 Vous allez adorer (hihi)
C’est quoi le langage Ruby
Il ne faut pas le confondre avec l’actrice Ruby de je ne sais quel film. Le Ruby dont je vous parle est un langage de programmation interprété, libre, 100% orienté objet, … Il est développé par le japonais Yukihiro Matsumoto “Matz” qui a été honoré du prix du logiciel libre 2011.
Installation
- Si vous êtes sous linux
- téléchargez le code source ici : http://www.ruby-lang.org/fr/downloads/
- ensuite vous le décompresser
- vous ouvrez votre terminal
- vous vous déplacer dans le dossier
- vous tapez les commandes suivantes
> ./configure
> make
> make install
- Si vous êtes sous windows vous pouvez télécharger ruby installer ensuite il suffit de faire du “suivant, suivant, …, terminer :)”
voilà maintenant passons au code
les bases de ruby
Ruby vient avec un irb (Interactive Ruby) qui est un interpréteur interactif de commande Ruby.
Vous pouvez le lancer avec la commande
> irb
après vous aurez un truc du genre :
irb(main):001:0>
Voilà maintenant vous pouvez discuter avec votre ami Ruby 🙂 (si vous ne voulez pas installer Ruby vous pouvez le tester sur votre navigateur http://joshnuss.github.io/mruby-web-irb/ mais ce n’est pas complet).
On va commencer par le fameux ‘Hello world’
irb(main):001:0> puts “Hello World”
Hello World
=> nil
‘puts’ est une commande pour afficher.
les variables
irb(main):001:0> a = 14
=> 14
irb(main):002:0> b = 11
=> 11
irb(main):003:0> puts "a + b vaut " + (a+b).to_s
a + b vaut 25
=> nil
Ici nous avons créé deux variables a et b en leur affectant les valeurs respectives 14 et 11 après nous avons affiché la somme avec la méthode puts
. Nous avons calculé la somme, la transformer en chaîne de caractères avec la méthodes to_s
pour que la concaténation avec la chaîne de caractère “a + b vaut “
marche. La concaténation se fait avec l’opérateur ‘+’.
On vient d’apprendre beaucoup de choses hein, okey je vais faire doucement 😀
les chaînes de caractères
irb(main):001:0> s = gets
coucou
=> "coucou\n"
irb(main):002:0> s.chomp
=> "coucou"
irb(main):003:0> s2 = gets.chomp
cou
=> "cou"
irb(main):004:0> puts s2 * 2
=> "coucou"
Qui a compris ?
Qui n’a pas compris ?
Ok je vous explique.
gets
est une méthode qui permet de demander à l’utilisateur de saisir une valeur comme le readln
de Pascal ou le cin
de C++ mais il y’a une petite différente, si vous êtes un bon observateur vous pouvez le voir : la frappe sur la touche [ENTER] est incluse dans la chaîne de caractère. Mais ne vous inquiétez pas Matz à ajouté une méthode qui permet de l’enlever facilement => chomp
.
Donc au lieu de faire les traitements séparément vous pouvez demander une valeur à l’utilisateur avec gets.chomp
comme je l’ai fait à la troisième instruction.
La multiplication d’une chaîne de caractères par n fait une répétition de la chaîne n fois comme le montre l’exemple précédent.
Tout à l’heure je vous ai montré comment faire une concaténation avec l’opérateur ‘+’, mais s’il y a beaucoup d’élément à concaténer ça devient ennuyant. Une autre façon de concaténer c’est de mettre la variable ou bien l’expression dans la chaîne même entouré de #{...}
mais dans ce cas il faut utiliser les guillemets au lieu d’apostrophes pour délimiter la chaîne sinon l’expression ne sera pas interprétée. Ok un exemple -_-
irb(main):001:0> pseudo = "scicasoft"
=> "scicasoft"
irb(main):002:0> puts "Bonjour #{pseudo} !"
"Bonjour scicasoft !"
=> nil
Voilà, vous êtes content maintenant ?
Voici d’autres méthodes intéressantes pour les chaînes de caractères :
to_i
: transformer un chaîne en entierto_f
: transformer un chaîne en réellength
: retourne la taille d’une chaîneupcase
: convertit une chaîne en majusculedowncase
: le contraire de upcase 😛capitalize
: met en majuscule le premier caractère de la chaînereverse
: inverse la chaîne
Tableaux
irb(main):001:0> mon_tableau = ["a", 12, "b"]
=> ["a", 12, "b"]
Nous venons de créer une tableau 🙂 Non je ne me suis pas trompé le tableau est mixte. Un seul tableau peut contenir des entiers, réels, chaînes et même des tableaux.
Il y’a aussi des méthodes très intéressantes pour les tableaux :
shuffle
: permet de mélanger le contenu du tableaureverse
: inverse le tableausort
: tri le tableaucount
: renvoit sa taillefirst
: renvoit le premier élément du tableaulast
: renvoit le dernier élémentempty?
: vérifie si le tableau est vide
C’est pas tout. On peut concaténer 2 tableaux avec l’opérateur ‘+’, une méthode ‘uniq’ qui permet d’enlever les répétitions, l’opérateur ‘-’ qui calcule la différence entre deux tableaux, …
les structures de contrôle
- if … else … end
reponse = 12
if (reponse == 42)
puts "Bingo, LA réponse !"
else
puts "Essaie encore"
end
- unless … end
C’est le contraire de if (sauf si)
j = rand(10)
unless (j <= 5)
puts "j vaut plus de 5"
end
- while … end
puts "compte de 1 a 10"
i = 0
while (i < 10)
i += 1
puts i
end
- for … end
la boucle for s’applique à des éléments de collections : list, array, ...
puts "compte de 1 a 10"
for e in (1..10)
puts e
end
- each
puts "compte de 1 a 10"
(1..10).each { |elt1|
puts elt1
}
création d’une fonction
def say_hello
puts "hello"
end
création d’une classe
class Personne
def say_hello
puts ‘hello’
end
def self.who_are_you?
puts “je suis une personne”
end
end
une méthode précédée de self.
est une méthode de classe.
Les gems
Comme la plupart des langages de programmation actuels, Ruby s’appuie sur tout un écosystème de librairies.
Ces librairies sont bien souvent disponibles sous la forme d’une gem. RubyGems est le « gestionnaire de paquet de Ruby » permettant de télécharger et d’installer ces gems. Il facilite également leur création et leur partage. Il s’agit donc d’un équivalent à Apt ou Homebrew, mais pour Ruby spécifiquement.
utilisation
- recherche d’une gem
gem search -r html
l’option r (remote) permet d’inspecter le dépot distant http://rubygems.org.
- installer une gem
gem install djanoa
cette commande permet d’installer la gem djanoa
- lister toutes les gems
gem list -r
permet de lister toutes les gems disponible
gem list
permet de lister les gems en local seulement
- help
Une aide succincte est disponible directement en ligne de commande
gem help
C’est “tout”
Voilà j’ai assez parlé maintenant je vous laisse quelques liens pour si vous voulez approfondir :
- http://rubymonk.com/ : un site interactif pour apprendre Ruby
- http://jeveuxapprendreruby.fr/
- http://rubygems.org/
- http://www.ruby-lang.org/fr/
- http://ruby.developpez.com/cours/
- http://ruby5.envylabs.com/
- http://parlonsruby.com/ : ParlonsRuby est un podcast francophone où l’on parle du langage de programmation Ruby, son éco-système, la communauté… mais pas que.
Après je vais essayer de vous présenter quelques gems intéressants donc restez connecté 😉
([*(0..9)]+[*('a'..'z')]).shuffle[0..9].join