Aller au menu - Aller au contenu

Ruby 1.9.2 : dans la suite des idées !

Revenir à la liste des news
Participer à la discussion

Image

Informations

Contributeur(s) : Etienne et Grayox
Publié : le 22/08/2010 à 05:00:00
Catégorie : Programmation
Visualisations : 13 011

Licence : Creative Commons BY SA

Ruby 1.9.2 : dans la suite des idées !

Le jeudi 19 août, les développeurs du langage Ruby ont présenté Ruby 1.9.2, une version importante qui marque la véritable transition entre Ruby 1.8 et Ruby 1.9. En effet, cette mise à jour présente des améliorations en rapport avec les évolutions du monde de la programmation.
Image utilisateur

Le langage Ruby a été créé en 1995 par le japonais Yukihiro Matsumoto, qui ne trouvait pas entière satisfaction dans les langages de son époque tels que Perl ou Python. Ruby est un langage interprété multiplate-forme, fortement orienté objet et publié sous licence libre.


Ruby, présenté rapidement sur le site de la communauté francophone ou encore étudié dans ses profondeurs sur le Site du Zéro, est actuellement très connu du fait de ses diverses implémentations et de son framework web Ruby on Rails.

Il s'avère que cette news contient des erreurs concernant les nouveautés de cette version du langage, pour plus d'informations se référer à http://www.siteduzero.com/news-62-37397-172964-ruby-1-9-2-dans-la-suite-des-idees.html#r172964


Ruby 1.9.2, un langage dans son époque


En plus de plusieurs bugs corrigés, la nouvelle version de Ruby apporte beaucoup de nouveautés, répondant à l'évolution de l'informatique.


La classe Time prête à affronter l'an 2038


Avec Ruby, le bug de l'an 2038 sera évité grâce à une nouvelle implémentation de la classe Time, gérant le temps. Auparavant, la date était représentée par un nombre qui s'incrémentait d'une unité à chaque seconde écoulée depuis le premier janvier 1970. Or, ce nombre, appelé timestamp, ne peut contenir que 32 chiffres. En 2038, il atteindra son maximum. Les développeurs de Ruby se sont penchés sur ce problème et ont étendu la restriction des dates à avant 1901 et après 2038.

La classe Time a été enrichie de nouvelles méthodes, telles que to_r, qui renvoie un nombre rationnel correspondant au nombre de secondes écoulées depuis le timestamp.
Ainsi, le code suivant va renvoyer quelque chose comme : 8807170717088293/8388608.

Code : Ruby
1
2
heureActuelle = Time.now
heureActuelle.to_r



Le réseau avec Ruby opérationnel pour IPv6


D'autres soucis seront empêchés notamment celui qui concerne les IP. Chaque machine connectée au réseau mondial est identifiée grâce à un nombre unique : l'adresse IP. La version 4 de ce protocole, dévoilée dans les années 70, permet de découper les données qui transitent sur le réseau en paquets, afin de faciliter la transmission de celles-ci. Les adresses de ce protocole sont composées de 4 nombres allant de 0 à 255 séparés par un point. Ainsi, 124.120.15.0 est une adresse IPv4. Or, de plus en plus de machines sont connectées au réseau (ordinateurs, smartphones, tablettes...) et les IP étant uniques, il ne peut y avoir « que » 4 294 967 296 combinaisons possibles.

Pour pallier une future « pénurie » d'adresses IP, un nouveau protocole, IPv6, a été imaginé.
Dans cette convention, les adresses sont représentées par un nombre hexadécimal et on compte plus de 667 132 000 milliard de combinaisons par millimètre carré de la surface de la Terre !
Afin de s'adapter, Ruby a récrit son API réseau en accord avec ce nouveau protocole, qui commence à faire son apparition.


Manipulation aléatoire des nombres


Une nouvelle classe, Random, voit le jour avec Ruby 1.9.2 et permet de générer des nombres aléatoires.

Code : Ruby
1
2
nombre = Random.new()
nombre.rand(0..100) # on tire un nombre au hasard entre 0 et 100



Encodage


L'encodage des caractères permet de définir de quelle façon ils vont s'afficher. Par exemple, l'absence d'encodage UTF8 provoquera des problèmes d'affichage des caractères accentués. Encoding, une classe qui permet de gérer les caractères « exotiques », supporte dans cette nouvelle version de Ruby de nombreux autres caractères orientaux.

Code : Ruby
1
2
3
4
5
6
chaine = "Gérard"

# Cette chaîne va poser un problème à cause de l'accent.
# Pour que tout s'affiche bien, on l'encode en UTF8 :

chaine.encode("UTF8")



Mathématiques


Ruby 1.9.2 complète aussi sa bibliothèque mathématiques : la classe Matrix permet par exemple de générer des matrices. Elle a été enrichie par de nouvelles méthodes telles que empty?, qui vérifie si la matrice est vide. La méthode renvoie true si la matrice est vide ou false dans le cas échéant.

Par exemple, ce code va générer cette matrice : \begin{pmatrix}25 & 93 \\-1 & 66\end{pmatrix}.

Code : Ruby
1
Matrix[ [25, 93], [-1, 66] ]


On peut très facilement tester notre matrice :

Code : Ruby
1
2
3
matrice = Matrix[ [25, 93], [-1, 66] ]

matrice.empty?


Qui affichera dans ce cas : false.


Les structures de données


Des méthodes ont également été rajoutées sur plusieurs structures de données. Les tableaux, gérés par la classe Array sont plus facilement manipulables grâce à select!, par exemple.
Du côté des énumérations, sous la tutelle de la classe Enumerable, on note l'arrivée de each_entry, qui permet de manipuler plus aisément les données d'une collection.


Les expressions régulières


Les expressions régulières (REGEX) peuvent permettre de traiter un texte. Les propriétés Ruby de ces REGEX sont désormais insensibles à la casse. Cela signifie que l'expression peut être écrite avec ou sans espace, en majuscule ou en minuscule : Ruby comprendra la même chose !
Auparavant, il fallait rajouter à sa regex l'option /i pour que le tout soit insensible à la casse. C'est désormais automatique.


Ruby continue donc son évolution, en prenant compte des futurs changements de l'ère informatique. Les développeurs comptent d'ailleurs sur la communauté d'utilisateurs pour faire des suggestions et rapporter les éventuels bugs.


Une coïncidence


Le 19 août 2010 (date de l'annonce de Ruby 1.9.2), la bibliothèque libre Shoes est passée en version 3. Shoes est écrit en Ruby et facilite la création de fenêtres. On trouvera ici une liste d'applications réalisées en Ruby avec cette bibliothèque. Shoes est désormais compatible avec Ruby 1.9.1 et Mac OS X Snow Leopard et la stabilité a en outre été améliorée.


Le « Whyday »


Le 19 août 2009, Why the Lucky Stiff, une des personnes les plus connues de la communauté Ruby, s'est retirée de celle-ci. Il est notamment populaire pour son « Why's Guide to Ruby », un tutoriel sur le Ruby, et « Try Ruby », un site internet qui permet de tester Ruby directement sur votre navigateur, ne nécessitant aucune installation préalable.

Une année après son retrait, le 19 août 2010, nous avons fêté le « Whyday », célébré en hommage à son fantastique travail. Plus d'informations sur le site de Whyday.


En savoir plus...


71 Participations

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1  2  3  Suivante
Pseudo Discussion
2 visiteurs sur cette news (0 membre et 2 anonymes)
Page 1  2  3  Suivante
Hors ligne Zeal # Posté le 22/08/2010 à 05:27:14
Avatar

J'en avais déjà entendu parler !
Hors ligne Jarzon # Posté le 22/08/2010 à 06:29:08
Avatar

Ville : Saint-philémon
Pays : Canada

Ruby semble être un bon langage, qui à apporter beaucoup notamment avec RoR qui est La référence en matière de Framework web, mais je le trouve beaucoup trop lent, je préfère Python.
Hors ligne pifpaf987 # Posté le 22/08/2010 à 08:10:43

un jour il faudra que je me penche sur RoR.

le tout est plus que la somme des parties
 
Hors ligne anonyme # Posté le 22/08/2010 à 09:06:28

Enfin ils ont finit par la sortir leur classe d'encodage, depuis le temps que je l'attendais.
Bonne news, relativement exhaustive.
Hors ligne Hilaia # Posté le 22/08/2010 à 09:36:21
C'est la fin du début...
Avatar
Groupe : Anciens

Ville : Profondeville
Pays : Belgique

Citation : Zeal
J'en avais déjà entendu parler !


Dans le menu "Participez" ? :-° .
Bonne news je trouve. Même si certains exemples ne me parlent pas spécialement.

Dropbox: Obtenez 250Mo supplémentaires en étant parrainé sur ce service de synchronisation de données.
Peut servir à tout, et juste génial pour gérer ses projets gratuitement.
 
Hors ligne nono47 # Posté le 22/08/2010 à 10:24:38
La réponse est dans la doc
Avatar

Salut,

C'est une news pour ceux qui savent, personnellement, ça me parle pas !

Bon, je vais faire un tour dans le tuto, parce que là c'est du chinois (et j'ai rien contre les chinois !) Image utilisateur
 
Hors ligne Marg51 # Posté le 22/08/2010 à 10:42:17

Avatar

Ville : Saint pierre de boeuf
Pays : France métropolitaine

news intéressante, c'est un langage que je prévois d'apprendre donc c'est très enrichissant :)

user powered by Image utilisateur
 
Hors ligne Mow # Posté le 22/08/2010 à 10:56:37
La vie sans compromis.
Avatar
Flux RSS

Ville : Grenoble
Pays : France métropolitaine

Merci pour la news
 
Hors ligne keke21410 # Posté le 22/08/2010 à 11:12:22
"Belong to web"
Avatar

Ville : Ancey
Pays : France métropolitaine

merci pour la news, le langage devient de plus en plus intéréssant, et le principe de l'encodage je trouve ça plus qu'utile :) (et simple à utiliser)
 
Hors ligne anonyme # Posté le 22/08/2010 à 11:15:21

De même que katagoto je suis bien content qu'il est enfin fait quelque chose pour l'encodage ( c'était chiant de jamais pouvoir mettre d’accents dans ces applis console ).
Sinon, il existait déjà un fonction pour générer des nombre aléatoire ( la fonction rand() ) mais visiblement la class Random va un peu plus loin ?
Hors ligne MAC-Titou # Posté le 22/08/2010 à 11:18:44
man woman
Avatar

Ville : Uccle
Pays : Belgique
Études : Université de Liege

News très technique et spécialisée, mais ca fait plaisir de voir qu'on parle de Ruby sur le SdZ :diable:

Enfin, la classe Encoding est lààà :) (marre de me manger des erreurs du style "Invalid multi Byte Char in US-ASCII", même en utilisant String.encode! ^^ )

MyImage utilisateur Ruby | Php-MySQL | C ... et quelques restes de Logo de ma tendre enfance
Image utilisateur
Rédigez vos questions convenablement !
 
Hors ligne anonyme # Posté le 22/08/2010 à 11:25:23

Ca me fais plaisir de pas être le seul à avoir eu ce problème ^^

Je pense que ça va avoir de nombreuses retombées sur RoR
Hors ligne anonyme # Posté le 22/08/2010 à 11:28:24

Ha, et puis : @Jarzon > Ruby est loin d’être beaucoup plus lent que python, surtout depuis la branche 1.9.X qui a booster l’interpréteur ruby.
Hors ligne laliloulelo # Posté le 22/08/2010 à 11:41:19
Avatar

Études : ESISAR

question: pour quel type d'application le Python ou le Ruby est-il recommandé ?
Hors ligne MAC-Titou # Posté le 22/08/2010 à 12:34:24
man woman
Avatar

Ville : Uccle
Pays : Belgique
Études : Université de Liege

Des p'tits scripts utilitaires surtout (un peu comme Perl).
Et puis comme langages pour le web, ils sont de plus en plus utilisés !

Il te permettent d'écrire un algorithme assez facilement, rapidement et naturellement ;)

MyImage utilisateur Ruby | Php-MySQL | C ... et quelques restes de Logo de ma tendre enfance
Image utilisateur
Rédigez vos questions convenablement !
 
Hors ligne qwerty # Posté le 22/08/2010 à 12:38:02
"2 virgule 21 gigowatts ?!"
Avatar
Groupe : Bannis

Aux moins ils commence déjà résoudre le bug de 2038 !
 
Hors ligne SpaceFox # Posté le 22/08/2010 à 13:03:18
Utilise ton cerveau !
Avatar
Validateurs
Flux RSS

Études : UTT

Heu, c'est complètement flippant en fait comme news.

Si je comprends bien la news, ça veut dire qu'avant la version 1.9.2 de Ruby :
  • Pas de moyen simple de gérer des dates hors "timestamp unix" ?
  • Pas de Random ?
  • Pas de gestion d'encodage des chaînes ?
  • Incompatible avec IPv6 ?

Et qu'en plus maintenant les REGEX ne fonctionnent pas comme elles devraient ? (Je suis désolé, mais pour moi une regex doit être sensible à la casse tant qu'on lui a pas dit le contraire. Et c'est le cas dans tous les langages que je connais).

J'espère que c'est pas Ruby eux-même qui présentent ça comme "dans son époque" ; parce que là ça ressemble plutôt à un rattrapage de retard.

Image utilisateur
 
Hors ligne anonyme # Posté le 22/08/2010 à 13:05:32

SpaceFox> Je suis parfaitement d'accord avec toi. Les pro-ruby ont tendance à oublier qu'ils n'impressionnent qu'eux-mêmes.
Hors ligne Graphox # Posté le 22/08/2010 à 13:23:23
Avatar
Groupe : Anciens

Citation : SpaceFox
Heu, c'est complètement flippant en fait comme news.

Si je comprends bien la news, ça veut dire qu'avant la version 1.9.2 de Ruby :
  • Pas de moyen simple de gérer des dates hors "timestamp unix" ?
  • Pas de Random ?
  • Pas de gestion d'encodage des chaînes ?
  • Incompatible avec IPv6 ?

Et qu'en plus maintenant les REGEX ne fonctionnent pas comme elles devraient ? (Je suis désolé, mais pour moi une regex doit être sensible à la casse tant qu'on lui a pas dit le contraire. Et c'est le cas dans tous les langages que je connais).

J'espère que c'est pas Ruby eux-même qui présentent ça comme "dans son époque" ; parce que là ça ressemble plutôt à un rattrapage de retard.

Je t'approuve tout à fait.

Un langage qui vient de se doter d'une bibliothèque d'encodage, de la gestion des nombres aléatoires et avec des regex insensibles à la casse (j'espère quand même qu'il y a moyen de faire l'inverse), ça fait peur.
Je suis resté bouche bée devant cette liste de nouveautés d'un langage qui a quand même 15 ans d'existence.
 
Hors ligne Etienne # Posté le 22/08/2010 à 13:40:01
Have you mooed today ?
Avatar
Groupe : Anciens

Sans vouloir partir dans un troll, il me semble que PHP, par exemple, a aussi 15 ans d'existence. Et je ne pense franchement pas que le timestamp de PHP soit opérationnel pour 2038 (souvenirs de l'ancien cours de M@teo21).
Hors ligne tcpc` # Posté le 22/08/2010 à 13:44:56
tcpc™
Avatar
Groupe : Bannis

Lol PHP. Celui qui prend ce langage comme référence n'a rien compris.
 
Hors ligne anonyme # Posté le 22/08/2010 à 13:54:27

Citation : Etienne-02
Sans vouloir partir dans un troll, il me semble que PHP, par exemple, a aussi 15 ans d'existence. Et je ne pense franchement pas que le timestamp de PHP soit opérationnel pour 2038 (souvenirs de l'ancien cours de M@teo21).


La réponse est oui et non, à savoir que PHP ne dispose pas de chiffre assez grands (32 bits dont 1 pour le signe) pour stocker le timestamp d'UNIX, seulement lorsqu'un chiffre est trop grands il est "automatiquement" convertit en chaine de caractère.
Ruby à encore des progrès à faire, c'est indéniable.
Hors ligne SpaceFox # Posté le 22/08/2010 à 13:59:08
Utilise ton cerveau !
Avatar
Validateurs
Flux RSS

Études : UTT

PHP n'est pas spécialement une référence...
Mais cela dit oui, PHP ne comprends que les timestamp UNIX dans ses objets Date, ou alors les timestamp "étendus" (possibilité d'un timestamp négatif donc de remonter à fin 1901) depuis la 5.1.0.

La grosse différence est que PHP n'impressionne plus personne, même les pro-PHP sont d'accord pour dire que ce langage a de graves lacunes ("pro" dans les 2 sens d'ailleurs : "ceux qui sont pour" et "professionnels").

PS : Je viens de voir le message qui parle de la "conversion en chaîne de caractère".
C'est peut-être possible avec les objets DateTime de PHP ; honnêtement je sais pas dans ce cas et j'ai la flemme de tester.

Image utilisateur
 
Hors ligne Pingouin chauffé # Posté le 22/08/2010 à 14:28:36
Oči tíško plačúúúú
Avatar

Citation : SpaceFox

Si je comprends bien la news, ça veut dire qu'avant la version 1.9.2 de Ruby :
  • Pas de moyen simple de gérer des dates hors "timestamp unix" ?
  • Pas de Random ?
  • Pas de gestion d'encodage des chaînes ?
  • Incompatible avec IPv6 ?

Et qu'en plus maintenant les REGEX ne fonctionnent pas comme elles devraient ? (Je suis désolé, mais pour moi une regex doit être sensible à la casse tant qu'on lui a pas dit le contraire. Et c'est le cas dans tous les langages que je connais).

  • ? La classe Time rencontrait le problème, mais pas la classe DateTime (si j'ai bien compris ta question) ;
  • Pas de classe Random à proprement parler. Les quelques méthodes relatives aux nombres aléatoires étaient directement intégrées dans le cœur ;
  • Si, mais il a été étendu (Big5, Big5-UAO, ISO-2022-JP-KDDI, SJIS-DoCoMo, SJIS-KDDI, SJIS-SoftBank, UTF8-DoCoMo, UTF8-KDDI, UTF8-SoftBank) ;
  • Une partie de l'API Socket n'était pas encore compatible.
Concernant les expressions régulières, Ruby ignore désormais la casse, les espaces et les underscores dans les propriétés Unicode. C'est-à-dire qu'il y a désormais équivalence entre /\p{Other_Letter}/ et /\p{other letter}/ . Rien à voir, donc, avec ce que tu as compris du billet.
Hors ligne Artefact2 # Posté le 22/08/2010 à 14:34:52
Avatar

Ville : Reims
Pays : France métropolitaine
Études : Université de Reims

Code : PHP
1
2
3
4
5
6
7
<?php
$d = new DateTime();
$d->add(new DateInterval('P3500YT23S'));
echo $d->format('r');

// Produit (au moment où le script a été lancé) :
// Mon, 22 Aug 5510 12:36:29 +0000
Hors ligne planete.game57 # Posté le 22/08/2010 à 14:38:36
Avatar

Études : IRIS

Quel réactivité, Ruby 1.9.2 vient à peine de sortir. :)

Merci beaucoup pour ces excellentes nouvelles, je viens d'apprendre ce qu'était en détail le bug de l'an 2038.
Je sent que beaucoup de développeurs vont pouvoir se régaler face à autant de nouveautés mais il était temps que ces fonctionnalités voient le jour. :p

xHTML/CSS |||||||||| 100% | PHP/MySQL |||||||||| 100% | Langage C |||||||||| 8.5%
Python |||||||||| 100% | JavaScript |||||||||| 5.5% | Photoshop |||||||||| 0.0%
Smarty |||||||||| 100%

Image utilisateurImage utilisateur
 
Hors ligne nietzsche # Posté le 22/08/2010 à 14:38:47
Fan de Cynthia Prion
Avatar
Groupe : Bannis

Cette news est terriblement mauvaise. Désolé.

#LGDF: nietzsche vaincra !
Image utilisateur

Si jamais joyeusement je fus assis là où d'antiques dieux jouissent ensevelis, bénissant le monde, aimant le monde auprès des mémoriaux de ceux qui jadis ont calotté le monde ; - - car me sont chères même les églises et les tombeaux des dieux dès que le ciel, au travers de leurs toits baisés, regarde d'un œil pur; comme l'herbe et le rouge pavot, sur des ruines d'églises j'aime m'assoupir. - oh ! comment de l'éternité n'aurais-je concupiscence, et du nuptial anneau des mazots, - de l'anneau du retour ?
 
Hors ligne SpaceFox # Posté le 22/08/2010 à 14:39:46
Utilise ton cerveau !
Avatar
Validateurs
Flux RSS

Études : UTT

@Pingouin chauffé : C'est la news qui est particulièrement mal écrite alors ; parce que quelqu'un qui ne connaît rien à Ruby comme moi :
- Ne sait pas qu'il y a une classe DateTime qui est sensé fonctionner.
- Ne sait pas qu'il y a des méthodes aléatoires directement dans le coeur.
- Ne sait pas que la classe Encoding existait déjà, et qu'elle n'a été qu'étendue (et si elle ne gérait pas UTF-8 comme semble le montrer l'exemple, c'est grosso modo comme si elle n'existait pas).
- Ne sait pas qu'une partie de l'API Socket était compatible (la news parle d'une réécriture).

Enfin, ce que tu expliques sur les REGEX et ce qu'expliquent la news sont totalement différents. La news dit bien "Cela signifie que l'expression peut être écrite avec ou sans espace, en majuscule ou en minuscule : Ruby comprendra la même chose !" (lesquels espaces n'ont rien à voir avec la casse d'ailleurs).

@Artefact2 : OK, ça marche avec DateTime mais pas avec date() donc.

Image utilisateur
 
Hors ligne Galdon # Posté le 22/08/2010 à 14:59:12
Ah, monde de merde !
Avatar
Flux RSS

Euh, je crois qu'on dit "de la suite dans les idées", pas "dans la suite des idées"...
 
Hors ligne Zopieux # Posté le 22/08/2010 à 15:01:15
Mhg n pryhv dhv zr yvg
Avatar
Groupe : Interdiction d'écriture

Euh, je crois qu'il y a une fonctionnalité pour notifier une erreur dans la news...
 
Pour accéder à cette section
Connectez-vous !
connexion_rpx

Revenir à la liste des news