Python est un autre très bon langage généraliste. Si vous passez de Python à Ruby, vous verrez qu’il y a un peu plus d’éléments syntaxiques à retenir, quelques astuces, aussi—mais que dans l’ensemble, le tout n’est pas trop éloigné.
Similarités
Tout comme en Python, en Ruby…
- il existe une console interactive ou ‘shell’ (commande
irb
pour Interactive Ruby) ; - la documentation est accessible dans le terminal par la commande
ri
, à l’instar depydoc
; - il n’y a pas besoin de signe particulier pour marquer la fin des lignes, si ce n’est passer à la ligne suivante ;
- les chaînes peuvent s’étaler sur plusieurs lignes, comme avec le système de triple-quotes de Python ;
- on trouve des crochets pour les listes, des accolades pour les dictionnaires (que Ruby designe comme des hashs) ;
- le comportement des tableaux est le même (l’addition donne un nouveau
long tableau, mais la composition, comme dans
@a3 = [ a1, a2 ]
, donne un tableau de tableaux) ; - les objets sont fortement mais dynamiquement typés ;
- tout est un objet. Les variables ne sont que des noms pour les objets qu’elles référencent ;
- bien que les mot-clés soient légèrement différents, les exceptions agissent de la même manière ;
- un outil de documentation embarqué est disponible (RDOC,
rdoc
).
Différences
Contrairement à Python, en Ruby…
- les chaînes sont altérables ;
- vous pouvez créer des constantes (pour Ruby, des variables dont la valeur n’est pas censée changer) ;
- quelques règles de nommage sont imposées (par exemple, les noms de classes débutent par une majuscule, de même que les constantes ; les variables commencent par une minuscule ; etc.) ;
- il n’existe qu’un seul type de conteneur (le tableau), altérable ;
- les chaînes de caractères entre guillemets doubles admettent les
séquences d’échappement, telles que
\t
, ainsi qu’une syntaxe de substitution d’expression. Elle permet notamment d’insérer directement le résultat d’expressions dans d’autres chaînes sans utiliser le+
. Les chaînes entre guillemets simples sont la même chose quer"raw string"
de Python ; - il n’y a aucune distinction entre des classes old style et new style, il n’en existe qu’un seul type ;
- l’accès aux attributs de classe se réalise toujours par des méthodes, jamais directement ;
- les parenthèses dans les appels de méthodes sont bien souvent optionnelles ;
- les mot-clés
public
,private
etprotected
sont utilisés pour gérer l’accès aux classes, au lieu des syntaxes basées sur le signe_
; - l’héritage multiple se réalise à travers le mécanisme des mixins ;
- il est possible de ré-ouvrir une classe et de la modifier à loisir, y compris durant l’exécution ;
- on utilisera
true
au lieu deTrue
,false
au lieu deFalse
, etnil
au lieu deNone
; - seuls
false
etnil
s’évaluent à faux dans les tests conditionnels ; tout le reste est intrinsèquement vrai, y compris0
,0.0
,"..."
,[]
, etc. ; - on écrira
elsif
au lieu deelif
; - et
require
au lieu d’import
; - l’ajout de documentation embarquée se fait par RDoc, avec la syntaxe usuelles des commentaires, et au-dessus des sections (et non en dessous) ;
- un certain nombre de raccourcis sont offerts, dont la mémorisation est cependant assez rapide.