vendredi 17 août 2007
Livre : Débuter en programmation avec Ruby
Je viens de finir ce livre en 2 jours, je ne suis pas débutant en programmation, mais j'ai eu envie de repartir de zéro afin solidifier mes bases en Ruby puis de passer aux livres de niveau "expert".
Première chose sur ce livre il s'adresse bien à un futur programmeur qui débute en programmation ou en Ruby. C'est plutôt une bonne chose !!! Mais en plus d'être clair et agréable à lire, ce livre reprend les concepts fondamentaux de la programmation (procédurale et objet). Je le conseil donc à tous ceux qui débute en programmation mais aussi à ceux qui s'initient au langage Ruby. Car Chris Pine (l'auteur) est très pédagogue et explique aussi certains aspects caractéristiques de ruby tel que l'exécution des blocs de code et des procs :
def ma_fonction un_proc
puts 'Je suis occuped !!!'
un_proc.call
puts 'OK je suis dispo.'
end
proc_dire_bonjour = Proc.new do
puts 'Bonjour'
end
proc_dire_aurevoir = Proc.new do
puts 'Au revoir'
end
ma_fonction proc_dire_bonjour
ma_fonction proc_dire_aurevoir
Résultat dans IRB :
irb(main):031:0* ma_fonction proc_dire_bonjour Je suis occuped !!! Bonjour OK je suis dispo. => nil irb(main):032:0> ma_fonction proc_dire_aurevoir Je suis occuped !!! Au revoir OK je suis dispo. => nil
Alors vous me direz, oui mais c'est quoi cet exemple à la c*n ???
Imaginez que pour une raison ou pour une autre vous rêviez d'executer 3 fois le code d'un proc passé en paramêtre de notre fonction "ma_fonction" (chose qui peut être crucial dans les routines de tests automatiques d'applications, de jeux vidéos ou autres):
def ma_fonction un_proc
puts 'Je suis occuped !!!'
un_proc.call
un_proc.call
un_proc.call
puts 'OK je suis dispo.'
end
ou encore
def ma_fonction un_proc
puts 'Je suis occuped !!!'
3.times do
un_proc.call
end
puts 'OK je suis dispo.'
end
Et voilà le tour est joué. Pour les connaisseurs ce traitement est très puissants... Je vous laisse le maîtriser à travers le livre.
Ruby a aussi un système similaire aux procs qui sont les blocs, en gros on peux créer une fonction capable d'exécuter un bloc de code comme ceci :
def ma_fonction &un_bloc
start_time = Time.now
un_bloc.call
duration = Time.now - start_time
puts 'Temps d\'execution : ' + duration.to_s + 'secondes'
end
ma_fonction do
#Je calcule quelque chose de très grand
number = 1
25000.times do
number = number + number
end
puts 'Le result est un nombre à ' + number.to_s.length.to_s + ' chiffres'
end
C'est vraiment trop beau ; je crée une fonction qui accepte un bloc en paramètre (noter le '&' devant 'un_bloc'), et tout ce qui est exécuté dans mon bloc, est profilé (le temps d'exécution). Je vous laisse imaginez les possibilités offertes par ces deux exemples (raccourcis) de Chris Pine mais qui sont propre au langage Ruby...
Personnellement je recherche, maintenant, un livre de niveau expert en Ruby (fera l'objet d'un autre post) et je commence la seconde édition du livre "RubyOnRails" de Dave Thomas et David Heinemeier.
RUBY quand tu nous tient !!!
RubyOnRails et Ruby - vendredi 17 août 2007
Tags : programmation
, ruby