Pour ceux qui n'ont pas encore la chance de connaitre Ruby, c'est un langage de script simple et puissant comme Perl et orienté objet. Cette sortie est l'occasion de parler de Ruby.
Ruby est un langage récent (sa première version publique date de 1995). Il a été développé au Japon par Yukihiro Matsumoto, alias «Matz». Celui ci ne trouvant pas dans les langages de scripts disponibles (Perl et Python en particluier) un que le satisfasse, aussi il décida d'en créer un. Il cherchait un langage alliant la puissance de Perl à un model Objet Pure (celui de Python n'étant pas satisfaisant). Le langage allie des fonctionnalités héritées de divers langages tels que la manipulation de texte de Perl, le modèle objet de SmallTalk, une syntaxe très claire similaire à Eiffel, ...
Voici un petit résumé des fonctionnalités intéressantes de Ruby:
Interprété. Le développement plus rapide, pas de phase de compilation.
Pure Objet. Tout ce que l'on manipule est est un objet. Il est néanmoins possible de programmer de manière procédurale et de presque oublier cette particuliarité.
Non typé. Le type des variables est déterminé pendant l'éxécution. Ceci permet d'écrire du code génirique sans avoir à se soucier du type de donnée que l'on manipule.
Gestion automatique de la mémoire. C'est l'interpréteur qui se charge d'allouer de la mémoire lors de la création d'objets, il gére aussi leur destruction (garbage collector).
Possibilité de passer un bloc d'intructions en paramètre d'une méthode.
Gestion des processus, signaux, threads, mutex, ...
Librairie TCP/IP très puissante.
Surcharge des opérateurs.
Disponible sur un grand nombre de plateformes (Unix, Windows, Dos, Amiga, ...)
Ruby est un langage extremment bien pensé et cohérent , il obéit au principe de la «moindre suprise» (Principle of Least Surprise), c'est à dire que le langage est conçu pour se comporter de la manière attendue. La syntaxe simple fait que l'on n'est pas surchargé de message d'erreurs lors de l'exécution (contrairement aux compilateurs C/C++ ou Java pour ne citer qu'eux), la gestion de structures de données complexes (de type tableaux de tableaux) est bien plus simple qu'en Perl et la gestion automatique de la mémoire évite bien des problèmes. Ruby permet de se concentrer sur l'aspect créatif de la programmation sans avoir à se soucier des complexités du langage.
Aller plus loin
- l'annonce (4 clics)
- Ruby 1.6.8 (4 clics)
- Ruby 1.8.0 (6 clics)
- Le site du langage (4 clics)
- Le livre de référence en ligne (3 clics)
# Re: Nouvelles versions de Ruby
Posté par Lafrite . Évalué à 10.
http://www.thinkware.se/cgi-bin/thinki.cgi/RubyVsPython(...)
Deux beaux langages de script somme toute.
[^] # Re: Nouvelles versions de Ruby
Posté par wilk . Évalué à 7.
# Re: Nouvelles versions de Ruby
Posté par manatane . Évalué à 10.
- http://perso.wanadoo.fr/alain.feler/(...) le guide de l'utlisateur en français
- http://www.approximity.com/ruby/ruby_fr/siframes.html(...)
- http://myruby.ifrance.com/myruby/(...)
[^] # Re: Nouvelles versions de Ruby
Posté par analogue o/ (site web personnel) . Évalué à -7.
[^] # Re: Nouvelles versions de Ruby
Posté par lorill (site web personnel) . Évalué à 4.
# Re: Nouvelles versions de Ruby
Posté par menez bernard . Évalué à 8.
Et Ruby transformera tout le procédural en mèthodes s'appliquant à un objet global ;)
[^] # Re: Nouvelles versions de Ruby
Posté par Cédric Foll . Évalué à 10.
En Python (moins propre) les fonctions sont des instances d'une classe fonction. Cette classe surcharge l'opérateur ().
Quand on fait en Python fun(var), on fait en fait fun.()(var) (fun est une instance de classe fonction, on appelle la méthode () en lui passant var en parametre). (enfin c'est ce que j'ai compris, je ne maitrise pas particulierement ce langage).
Quand on fait en Ruby fun(var), on fait en fait main.fun(var).
[^] # Re: Nouvelles versions de Ruby
Posté par lorill (site web personnel) . Évalué à 6.
[^] # Re: Nouvelles versions de Ruby
Posté par Cédric Foll . Évalué à 6.
$cat > test.rb
def hello
puts "hello"
end
p self.private_methods.grep "hello" #self c'est "main"
p Object.private_methods.grep "hello"
^D
$ruby test.rb
["hello"]
["hello"]
On a raison tout les deux. (je suis limite de mauvaise foi je sais ...)
# Taduction du Perl Cookbook de O'reilly
Posté par Cédric Foll . Évalué à 10.
Ce projet a pour but de traduire le livre "Perl Cookbook" ("Perl en action" dans sa version française) dans différents langages de programmation.
Pour ce qui ne connaissent pas ce livre, il s'agit d'un recueil de recettes (comment faire tel ou tel truc en Perl ?).
Le but de site est de traduire les recettes Perl dans différents langages de programmations (Python, Ruby, guile, ...).
Environs 40% des recettes ont été trdauites en Ruby, il reste du boulot pour les amateurs.
[^] # Re: Taduction du Perl Cookbook de O'reilly
Posté par Pierre . Évalué à 2.
[^] # Re: Taduction du Perl Cookbook de O'reilly
Posté par Pierre . Évalué à -2.
[^] # Re: Taduction du Perl Cookbook de O'reilly
Posté par Cédric Foll . Évalué à 2.
# Re: Nouvelles versions de Ruby
Posté par William Steve Applegate (site web personnel) . Évalué à 7.
D'un autre côté, un ingé qui essayait récemment de montrer les bases du C++ dans mon assoc' (salut, Denis :-) expliquait pour sa part que le grand nombre de messages d'erreur du compilo C++ était une bonne chose, car ils étaient affichés à la compilation (et non à l'exécution, comme le dit l'auteur de l'article), ce qui permettait (justement) de minimiser les problèmes à l'exécution, en faisant du code plus robuste dès le départ. Personnellement, je n'ai pas été très convaincu (je pense qu'une syntaxe simple évite au débutant la plupart des chausse-trappes qui nécessiteraient de telles vérifications en profondeur), mais ça montre qu'il y a des arguments pour et contre. Pour ma part, j'aime bien que (le compilo|l'interpréteur) vérifie un minimum ce que j'ai pondu. En Perl, je mets toujours l'option `-w' et le drapeau `use strict;', par exemple...
--
WSA
Noyeux Joël à tous les dyslexiques !
Envoyé depuis mon PDP 11/70
# Re: Nouvelles versions de Ruby
Posté par André Rodier . Évalué à 1.
Cela permettrait de savoir quel language est adapté à des besoins spécifiques d'une application.
On pourrait comparer les performances, les OS supportés, les blibliothèques intégrées, licenses, etc...
Cette profusion de languages de script n'entraine-t-elle pas un ambaras (du choix) pour celui qui veut commencer une application en script ?
[^] # Re: Nouvelles versions de Ruby
Posté par manatane . Évalué à 10.
tu as l'excellent http://www.bagley.org/~doug/shootout/(...)
et aussi :
- http://www.ruby-lang.org/en/compar.html(...)
- http://www.python.org/doc/Comparisons.html(...)
Cette profusion de languages de script n'entraine-t-elle pas un ambaras (du choix) pour celui qui veut commencer une application en script ?
Pas vraiment AMHA : bien que Perl, Ruby et Python soient comparables en terme de performances et de fonctionnalités, chacun possède ses propres petites caractéristiques qui font qu'on les adoptera plutôt qu'un autre selon le developpement à faire ou tout le temps ;) :
- le symbole de Perl est le chameau : il travaille dur et bien dans toutes les situations mais il n'est pas beau et parfois il crache à la figure (quand on relie son code par exemple :)
- Python est beaucoup plus joli mais oblige à une identation très stricte ce qui peut provoquer des erreurs quand tu fais un copier coller (même si le copier coller c'est pas conseillé...)
- Quant à Ruby j'ai 37 raisons de l'aimer : http://www.hypermetrics.com/ruby37.html(...) ;)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.