Programmation Ruby: Preface

Original: http://docs.ruby-doc.com/docs/ProgrammingRuby/

Ce livre est un tutoriel et de référence pour le langage de programmation Ruby. Utilisez Ruby, et vous allez écrire un meilleur code, être plus productif, et de profiter de la programmation de plus.

Ce sont des réclamations audacieuses, mais nous pensons que, après avoir lu ce livre, vous serez d’accord avec eux. Et nous avons l’expérience pour étayer cette croyance.

Comme les programmeurs pragmatiques, nous avons essayé beaucoup, beaucoup de langues dans notre recherche d’outils pour rendre nos vies plus faciles, des outils pour nous aider à mieux faire notre travail. Jusqu’à présent, cependant, nous avions toujours été frustrés par les langues que nous utilisions.

Notre travail consiste à résoudre des problèmes, pas nourrir à la cuiller compilateurs, si nous aimons les langages dynamiques qui s’adaptent à nous, sans règles rigides, arbitraires. Nous avons besoin de clarté afin que nous puissions communiquer en utilisant notre code. Nous apprécions la concision et la capacité d’exprimer une exigence dans le code avec précision et efficacité. Le moins de code que nous écrivons, le moins que peut aller mal. (Et nos poignets et les doigts sont reconnaissants, aussi.)

Nous voulons être aussi productifs que possible, de sorte que nous voulons que notre code à exécuter la première fois; le temps passé dans le débogueur est temps de vol de l’horloge de développement. Il aide également si nous pouvons essayer le code que nous éditons il; si vous devez attendre un cycle de maquillage de 2 heures, vous pouvez aussi bien être en utilisant des cartes perforées et soumettre votre travail pour la compilation par lots.

Nous voulons une langue qui fonctionne à un niveau d’abstraction élevé. Le niveau plus élevé de la langue, le moins de temps que nous passons à traduire nos exigences dans le code.

Lorsque nous avons découvert Ruby, nous avons réalisé que nous avions trouvé ce que nous avons cherché. Plus que toute autre langue avec laquelle nous avons travaillé, Ruby reste hors de votre chemin. Vous pouvez vous concentrer sur la résolution du problème à la main, au lieu de prises avec des problèmes de compilation et de la langue. Voilà comment il peut vous aider à devenir un meilleur programmeur: en vous donnant la chance de passer vos solutions en temps la création de vos utilisateurs, pas pour le compilateur.


Ruby Sparkles

Un vrai langage orienté objet, comme Smalltalk. Déposez la syntaxe ne connaissent pas et de passer à, le code source plus classique à base de fichiers. Maintenant, ajoutez dans une bonne mesure de la flexibilité et la commodité des langages tels que Python et Perl.

Vous vous retrouvez avec Ruby.

Aficionados OO trouveront beaucoup à aimer dans Rubis: les choses telles que l’orientation de l’objet pur (tout est un objet), les métaclasses, les fermetures, les itérateurs, et des collections hétérogènes omniprésents. Utilisateurs de Smalltalk se sentiront comme à la maison (et C ++ et les utilisateurs Java se sentent jaloux).

Dans le même temps, Perl et Python sorciers trouveront bon nombre de leurs fonctionnalités préférées: support d’expression régulière complète, une intégration étroite avec le système sous-jacent d’exploitation, des raccourcis pratiques et l’évaluation dynamique.

Ruby est facile à apprendre. Les tâches quotidiennes sont simples à code, et une fois que vous les avez fait, ils sont faciles à entretenir et développer. Apparemment, les choses difficiles se révèlent souvent de ne pas avoir été difficile après tout. Ruby suit le principe de moindre surprise les choses fonctionnent de la façon dont vous vous y attendriez, avec très peu de cas particuliers ou des exceptions. Et cela fait vraiment une différence quand vous programmez.

Nous appelons Ruby une langue transparente. Nous entendons par là que Ruby ne masque pas les solutions que vous écrivez derrière beaucoup de syntaxe et de la nécessité de multiplier les rames de code de support juste pour faire avancer les choses simples faits. Avec Ruby vous écrivez des programmes proches du domaine du problème. Plutôt que de la cartographie en permanence vos idées et conceptions jusqu’au niveau de la plupart des langues piétonne, avec Ruby, vous vous apercevrez que vous pouvez les exprimer directement et de les exprimer avec élégance. Cela signifie que vous codez rapidement. Cela signifie également vos programmes restent lisible et maintenable.

Utilisation de Ruby, nous sommes constamment étonné de voir combien nous pouvons écrire le code en une seule séance, le code qui fonctionne pour la première fois. Il ya très peu d’erreurs de syntaxe, pas de violations de type, et beaucoup moins de bugs que d’habitude. Cela a un sens: il ya moins de se tromper. Aucun des points-virgules gênants pour taper mécaniquement à la fin de chaque ligne. Pas de déclarations de type ennuyeux de rester en synchronisation (en particulier dans des fichiers séparés). Pas de mots inutiles juste pour garder le compilateur heureux. Aucun code de cadre erreurs.

Alors pourquoi apprendre Ruby? Parce que nous pensons qu’il va vous aider à programmer mieux. Il vous aidera à vous concentrer sur le problème à la main, avec moins de distractions. Il vous rendra la vie plus facile.


Quel type de langage est Ruby?

Dans l’ancien temps, la distinction entre les langues était simple: ils ont été soit compilés, comme le C ou Fortran, ou interprétés, comme BASIC. Les langages compilés vous a donné la vitesse et l’accès de bas niveau; langages interprétés sont de niveau supérieur, mais plus lent.

Les temps changent, et les choses ne sont pas aussi simple qu’avant. Certains concepteurs de langage ont commencé à appeler leurs créations de langages de script. En cela, on devine qu’ils signifient que leurs langues sont interprétées et peuvent être utilisés pour remplacer des fichiers batch et des scripts shell, orchestrant le comportement d’autres programmes et l’exploitation sous-jacent système. Perl, TCL, Python et ont tous été appelés langages de script.

Qu’est-ce qu’un langage de script? Franchement, nous ne savons pas si c’est un investissement utile de distinction. En Ruby, vous pouvez accéder à toutes les fonctionnalités du système d’exploitation sous-jacent. Vous pouvez faire la même chose en Ruby que vous pouvez en Perl ou Python, et vous pouvez le faire plus proprement. Mais Ruby est fondamentalement différente. Il s’agit d’un véritable langage de programmation, aussi, avec de fortes racines théoriques et une syntaxe élégant, léger. Vous pouvez bricoler un gâchis de son avec Ruby, mais vous ne serez pas probablement. Au lieu de cela, vous serez plus enclins à concevoir une solution, pour produire un programme qui est facile à comprendre, facile à entretenir, et un morceau de gâteau d’étendre et de réutiliser à l’avenir.

Bien que nous ayons utilisé Ruby pour les emplois de script, la plupart du temps, nous utilisons comme un langage de programmation à usage général. Nous l’avons utilisé pour écrire des interfaces graphiques et des processus du serveur de niveau intermédiaire, et nous l’utilisons pour formater une grande partie de ce livre. D’autres ont utilisé pour la gestion des machines serveurs et bases de données. Ruby est au service des pages Web, l’interface avec les bases de données et la génération de contenu dynamique. Les gens écrivent des programmes de renseignement et d’apprentissage de la machine artificielle en Ruby, et au moins une personne l’utilise pour étudier l’évolution naturelle. Ruby trouver une maison comme un véhicule pour les mathématiques exploratoires. Et les gens partout dans le monde l’utilisent comme un moyen de coller ensemble toutes leurs différentes applications. C’est vraiment une grande langue pour produire des solutions à un large éventail de domaines de problèmes.


Ruby est pour moi?

Ruby n’est pas la panacée universelle pour les problèmes des programmeurs. Il y aura toujours des moments où vous aurez besoin d’une langue particulière: l’environnement peut dicter, vous pouvez avoir des bibliothèques spécialisées dont vous avez besoin, problèmes de performances, ou tout simplement une question de la formation. Nous n’avons pas renoncé langages tels que Java et C ++ tout (même si il ya des moments où nous souhaitons nous pouvions).

Cependant, Ruby est probablement plus applicable que vous pourriez penser. Il est facile d’étendre, à la fois au sein de la langue et de lien avec les bibliothèques tierces. Il est portable sur un certain nombre de plates-formes. Il est relativement léger et consomme des ressources système modestes. Et il est facile à apprendre; nous avons connu des gens qui ont mis du code Ruby dans les systèmes de production dans un jour de ramasser les ébauches de ce livre. Nous avons utilisé Ruby pour mettre en œuvre les parties d’un gestionnaire de fenêtres X11, une tâche qui est normalement considérée comme grave codage C. Ruby a excellé, et nous a aidé à écrire du code en heures qui aurait autrement pris jours.

Une fois que vous obtenez à l’aise avec Ruby, nous pensons que vous allez continuer à y revenir en tant que langue de votre choix.


Pourquoi avons-nous écrit ce livre?

Alors que nous venions de finir d’écrire The Pragmatic Programmer, nos familles avaient juste commencé à parler de nouveau à nous, et tout à coup nous avons senti le besoin d’écrire un autre livre. Pourquoi? On devine qu’il revient à une sorte de zèle missionnaire.

Ruby a été créé par Yukihiro Matsumoto (Matz) au Japon. Depuis 1995, sa popularité au Japon a augmenté à un rythme effarant; il ya des rumeurs que Ruby est plus populaire que Python au Japon. Mais à ce jour, une grande partie de la documentation détaillée Ruby est en japonais. Ce n’est probablement pas un langage de programmation que vous souhaitez juste tomber sur.

Nous voulions passer le mot, d’avoir plus de gens en dehors du Japon à l’aide de Ruby et en bénéficiant des avantages, nous avons décidé de documenter Ruby en anglais. Et ce qui a commencé comme un petit projet qui vient en quelque sorte grandi ….


Versions Rubis

Ce livre documente la version 1.6 de Ruby, qui a été publié en Septembre l’an 2000.

Ruby numéro de version suit le même schéma utilisé pour de nombreux autres projets open source. De presse avec les nombres pairs de subversion (1.0, 1.2, 1.4, et ainsi de suite) sont stables, les livraisons publiques. Ce sont les rejets qui sont préemballés et mis à disposition sur les différents sites Web Ruby.

Les versions de développement du logiciel ont des numéros de subversion impairs, comme 1.1 et 1.3. Celles-ci vous devrez télécharger et construire pour vous-même, tel que décrit dans la boîte à la page xxvii.


Installation de Ruby

Vous pouvez obtenir de Ruby ftp://ftp.netlab.co.jp/pub/lang/ruby, ou des sites miroirs listés sur la page 526 dans l’annexe C. Vous y trouverez la dernière version stable, ainsi que diverses développement de presse.

Vous trouverez toujours le code source des rejets de Ruby; vous pouvez également trouver des binaires précompilés pour d’autres systèmes d’exploitation (comme la distribution binaire de Ruby pour Windows à http://www.pragmaticprogrammer.com/ruby/downloads/rubyinstall.html).

Encadré: La toute dernière Ruby

Pour ceux qui ont juste pour être sur la toute dernière, chaud-off-thepresse et bord de coupe non testé (comme nous étions en écrivant ce livre), vous pouvez obtenir des versions de développement directement à partir du référentiel de travail des développeurs.

Les développeurs Ruby utilisent CVS (Concurrent Version System, disponible gratuitement sur http://www.cvshome.com) que leur système de contrôle de révision. Vous pouvez extraire des fichiers en tant qu’utilisateur anonyme de leurs archives en exécutant les commandes CVS suivantes:


% cvs -d :pserver:anonymous@cvs.netlab.co.jp:/home/cvs
   login
(Logging in to anonymous@cvs.netlab.co.jp)
CVS password: guest
% cvs -d :pserver:anonymous@cvs.netlab.co.jp:/home/cvs
   checkout ruby


L’arborescence du code source complet, tout comme les développeurs dernier laissé, va maintenant être copié sur un rubis sous-répertoire sur votre machine , la mise à jour de votre arbre de source locale à partir d’un référentiel de l’autre côté du monde. N’est-il pas grand temps d’être en vie?


Bâtiment Ruby

Dans la distribution Ruby, vous trouverez un fichier README, ce qui explique la procédure d’installation en détail. Pour résumer, vous construisez Ruby sur les systèmes POSIX utilisant les quatre mêmes commandes que vous utilisez pour la plupart des autres applications open source: ./configure, make, make test, et make install. Vous pouvez construire Ruby sous d’autres environnements (y compris Windows) en utilisant un environnement d’émulation POSIX comme Cygwin [Voir http://sourceware.cygnus.com/cygwin pour plus de détails.] Ou en utilisant les compilateurs natifs voir “ntsetup.bat» dans le sous-répertoire win32 de la distribution en tant que point de départ.


Courir Ruby

Maintenant que Ruby est installé, vous auriez probablement souhaitez exécuter certains programmes. Contrairement aux environnements compilés, il existe deux façons d’exécuter Ruby interactive et comme un programme.


Interactive Ruby

Le moyen le plus simple pour exécuter Ruby interactive est tout simplement de taper rubis à l’invite du shell.

 

% ruby
puts "Hello, world!"
^D
Hello, world!


Ici nous avons tapé dans l’expression puts unique et un caractère de fin de fichier (qui est le contrôleD sur notre système). Ce processus fonctionne, mais c’est un peu pénible si vous faites une faute de frappe, et vous ne pouvez pas vraiment voir ce qui se passe pendant que vous tapez.

Dans le répertoire de l’échantillon dans la distribution Ruby, vous trouverez un script nommé “ eval.rb . Il va un peu mieux, en nous montrant la valeur de chaque expression comme il est entré:

 

% cd sample
% ruby eval.rb
ruby> a = "Hello, world!"
"Hello, world!"
ruby> puts a
Hello, world!
nil
ruby> ^D
%


Ici, nous pouvons voir la sortie de puts, puis la valeur de retour de puts (qui est nul).

C’est bien beau, sauf que les expressions de plusieurs lignes ne fonctionnent pas, et vous ne pouvez pas modifier la ligne que vous êtes, ou revenir en arrière et utiliser des lignes précédentes (comme vous le feriez avec l’histoire de commande dans un shell).

Pour la prochaine étape de eval.rb, nous avons IRB Interactive Ruby. IRB est un Ruby Shell, avec l’histoire de ligne de commande, l’édition en ligne des capacités, et le contrôle de l’emploi. Il est assez configurable et dispose de nombreuses options, tant et si bien qu’il a sa propre annexe partir de la page 517, nous vous recommandons de vous familiariser avec irb de sorte que vous pouvez essayer certains de nos exemples interactive.


Programmes Rubis

Enfin, vous pouvez exécuter un programme Ruby partir d’un fichier comme n’importe quel autre script shell, Perl programme, ou un programme Python. Vous pouvez tout simplement exécuter Ruby donnant le nom du script comme argument:

 

% ruby myprog.rb


Ou vous pouvez utiliser Unix tralala «notation que la première ligne du fichier de programme. [Si votre système prend en charge, vous pouvez éviter de coder en dur le chemin de Ruby dans la ligne de tralala en utilisant #! / Usr / bin / env ruby, qui va chercher votre chemin pour le rubis et l’exécuter ensuite.]

#!/usr/local/bin/ruby -w

puts "Hello, World!"


puts “Bonjour tout le monde!”

Si vous faites ce fichier source exécutable (en utilisant, par exemple, chmod + x myprog.rb), Unix vous permet d’exécuter le fichier comme un programme:

%

% ./myprog.rb
Hello, World!


Vous pouvez faire la même chose sous Microsoft Windows à l’aide des associations de fichiers.

Ressources

Visitez les sites Web Ruby, http://www.rubycentral.com et http://www.rubylang.org, pour voir ce qui est nouveau, et discuter avec les autres utilisateurs Rubis sur les groupes de discussion ou listes de diffusion (voir l’annexe C) .

Et nous serions très reconnaissants de vous entendre. Commentaires, suggestions, erreurs dans le texte, et les problèmes dans les exemples sont tous les bienvenus. Envoyez-nous un courriel à:

mailto: rubybook@pragmaticprogrammer.com

Si vous nous dites au sujet des erreurs dans le livre, nous les ajouterons à la liste d’errata à:

http://www.pragmaticprogrammer.com/ruby/errata/errata.html

Enfin, http://www.pragmaticprogrammer.com/ruby contient également le code source de presque tous les exemples de l’ouvrage, organisé par page.


 Un livre est une entreprise de grande envergure, que nous ne serions jamais en mesure de mener à bien sans l’aide de nos tous nos amis, anciens et nouveaux. Nous sommes fiers de compter parmi nos vieux amis de l’équipe à AddisonWesley: Mike Hendrickson, John Fuller, toujours utile Julie Steele, et la merveilleuse Julie DiNicola. Merci à tous.

Nos examinateurs étaient fantastiques. Nous les avons mis en place contre certains délais incroyablement serrés et ils sont venus par pour nous. L’examen d’un livre plein de détails techniques n’est pas facile, c’est pourquoi nous sommes particulièrement reconnaissants à George Coe, Bob Davison, Jeff Deifik, Hal Fulton, Tadayoshi Funaba, Clemens Hintze, Kazuhiro Hiwada, Kikutani Makoto, Mike Linksvayer, Aleksi Niemelä, Lew Perin, Jared Richardson, Armin Roehrl, Conrad Schneiker, Patrick Schoenbach, et Eric Vought. Merci également aux deux Julies à Addison-Wesley pour coordonner cet effort véritablement international.

Plusieurs personnes nous ont aidés avec des domaines spécifiques de ce livre. Tadayoshi Funaba échangé d’innombrables e-mails avec nous jusqu’à ce que nous comprenions le module Date. Guy Decoux et Clemens Hintze ont patiemment répondu à nos questions sur l’écriture extensions Ruby, et Masaki Suketa ont aidés à comprendre le module WinOLE.

Bien que beaucoup de la documentation originale Ruby est en japonais, il ya un nombre croissant de traductions en anglais, principalement menées par les développeurs japonais, dont les compétences en anglais ne cessera jamais de nous étonner. Bien qu’il y ait trop de contributions individuelles à cet effort de nommer chaque auteur, nous aimerions distinguer Goto Kentaro, qui a produit un grand volume de documentation de haute qualité et l’a placé en ligne.

Enfin, nous devons remercier Yukihiro Matz Matsumoto, le créateur de Ruby. Nous avons perdu le compte du nombre de questions que nous avons posées à lui, et le nombre de réponses des patients et détaillées, il est envoyé en arrière. Ainsi que la création d’une langue vraiment merveilleux, Matz a favorisé une culture merveilleusement ouvert et favorable, dans lequel cette langue ne peut prospérer.

Merci à tous. Domo arigato gozaimasu.

Dave Thomas et Andy Hunt
Programmeurs PRAGMATIQUES
http://www.pragmaticprogrammer.com

Conventions de notation

Tout au long de ce livre, nous utilisons les notations typographiques suivantes.

Des exemples de code littérales sont affichés en utilisant une police de machine à écrire comme:

 

class SampleCode
  def run
    #...
  end
end


Dans le texte, Fred # doIt est une référence à une méthode d’instance (doIt) de la classe Fred, tandis que Fred.new [Dans une autre documentation Ruby, vous pouvez voir les méthodes de classe écrites comme Fred :: nouveau. C’est la syntaxe Ruby parfaitement valable; nous nous trouvons juste pour sentir que Fred.new est moins distrayant à lire.] est une méthode de classe, et Fred :: EOF est une constante de classe.

Le livre contient de nombreux extraits de code Ruby. Lorsque cela est possible, nous avons essayé de montrer ce qui se passe quand ils courent. Dans les cas simples, nous montrons la valeur des expressions sur la même ligne que l’expression. Par exemple:

 

a = 1
b = 2
a + b » 3

 

À certains moments, nous sommes également intéressés par les valeurs des déclarations d’affectation, dans ce cas, nous allons leur montrer.

 

a = 1 » 1
b = 2 » 2
a + b » 3


Si le programme produit une sortie plus complexe, nous montrons ci-dessous le code du programme:

 

3.times { puts "Hello!" }


produit:

 

Hello!
Hello!
Hello!


Dans une partie de la documentation de la bibliothèque, nous avons voulu montrer où les espaces apparaissent dans la sortie. Vous verrez que ces espaces [espace] caractères visibles “ ”.

Invocations de ligne de commande sont indiquées par un texte littéral dans une police romaine, et les paramètres que vous fournissez en italique. Les éléments facultatifs sont affichées en grands crochets.

 

ruby [
            flags
            ]*
             [
            progname
            ] [
            arguments
            ]+

Comments are closed.