PHP est très répandu pour les applications Web, mais si vous avez découvert Ruby on Rails ou souhaitez aborder un langage plus généraliste, Ruby vaut certainement le coup d’œil.
Similarités
Tout comme en PHP, en Ruby…
- le typage est dynamique : pas besoin de déclarer les variables ;
- il y a des classes, dont la gestion est la même qu’en PHP 5 (
public
,protected
,private
, etc.) ; - certaines variables débutant par
$
(mais pas toutes : seulement les globales) ; eval
est disponible (il est recommandé d’y apporter la même attention vis-à-vis des performances et de la sécurité) ;- interpolation au sein des chaînes de caractères, de la forme
"#{foo} is a #{bar}"
au lieu de"$foo is a $bar"
. Comme en PHP, cela ne fonctionne que pour les chaînes entre guillemets doubles ; - les heredocs (échappement d’un bloc de texte) sont aussi disponibles ;
- des exceptions pour gérer les erreurs, comme en PHP 5 ;
- une bibliothèque standard relativement fournie ;
- des tableaux et des hashs identiques sur le fond, la forme étant
respectivement
{...}
au lieu dearray()
; true
etfalse
identiques, avec simplementnull
écritnil
;
Différences
Contrairement à PHP, avec Ruby…
- le typage est fort. Il faut utiliser des méthodes comme
to_s
,to_i
pour faire les conversions de types ; - nombres, chaînes de caractères, tableaux, hash, etc. tous sont des
objets. Par exemple, on écrira
-1.abs
et non pasabs(-1)
; - les parenthèses sont souvent optionnelles, notamment dans les appels de méthodes. Usage recommandé pour clarifier la filiation des paramètres, cependant ;
- la bibliothèque standard s’organise en modules et classes ;
- la réflection est une capacité intrinsèque des objets : pas besoin
d’utiliser une classe comme
Reflection
en PHP 5 ; - les variables sont des références aux objets (leurs noms), pas des objets ;
- pas de classes abstraites (
abstract
) ni d’interfaces ; - les tableaux et dictionnaires (hashs) ne sont pas interchangeables ;
- seuls
false
etnil
s’évaluent à faux :0
,array()
,"..."
valent tous vrai dans les tests conditionnels ; - à peu près tout est un appel de méthode, d’une manière ou d’une autre
(même
raise
, lethrow
de PHP).