Ruby votre prochain langage de programmation préféré Guillaume Cottenceau LinuxDays Genève 22 Mai 2007.

Slides:



Advertisements
Présentations similaires
Formation universitaire à .NET: Introduction à C#
Advertisements

Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Palais des congrès Paris 7, 8 et 9 février Mardi 7 février Nicolas Ledez Architecte système Orange Business Services Introduction à Ruby.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
2.1 - Historique Chapitre 2 : Introduction au langage C++
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
Formation des enseignants Formation MATLAB. Formation des enseignants MATLAB® (pour MATrix LABoratory) est un logiciel scientifique de calcul numérique.
Le débogage Semaine 12 Version A15. Plan de leçon - Débogage  Commentaire javadoc  Définition  Fonctionnement  Point d’arrêt  Exécution  Contrôler.
Emacs Laurent Pierron
GCstar Gestionnaire de collections personnelles Christian Jodar (Tian)
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
Toulibre : présentation de... par Rémy Sanchez +.
Développement à l'Aide de Langages Dynamiques : Smalltalk module IT308: Méthodologies et outils logiciels Nada Ayad, Damien Cassou et Annabelle Souc.
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
Présentation python : Épisode 1 ● Introduction à Python ● Les types de base et leur manipulation ● Les structures de contrôle ● Les fonctions Étienne Loks.
1 Programmation en C++ IO en C++/SL. 2 Sortie à l’écran Exemple: #include int main () { std::cout
1 Le stage informatique de Masters APIM et PIE (2012/2013) Ivana Hrivnacova Vincent Lafage Basé sur le stage informatique du LAL et IPN par (2005/2006):
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Introduction à Ruby Julien De Bona Bawet, 15 avril 2006.
Présentation python : Épisode 3 ● Comment programmer comme un gentilhomme ? ● Le style de code ou comment bien présenter ● Les test unitaires ou comment.
Le Langage JavaScript pour le web
Interfaçage entre Maple et du code externe
Micro Informatique au Cellier
JAVA.
Ajouter le code dans une page html
Module de gestion des tournées de livraison
Modèle objet : les classes
java : l'héritage (rappel)
Environnement de développement des BD
Les Instructions Itératives (Les Boucles)
Introduction au Langage Pascal
Threads et Lightweight Processes
LES TABLEAUX EN JAVA.
Pas de variable globale
Les notions de classe et d'objet
Programmation en C++ IO en C++/SL
Le « Bugtracking » Alejandro FERNANDEZ – Etienne FONTEIX
Semaine #1 INF130 par Frédérick Henri.
Javadoc et débogueur Semaine 03 Version A17.
AO (Architecture des ordinateurs)
Principes de programmation (suite)
Langages de programmation TP7
Les fonctions.
Session 1 31 mai 2017 Plateforme ICONICS Justine Guégan
Javadoc et débogueur Semaine 03 Version A16.
Principes de programmation (suite)
Tableaux à plusieurs dimensions en langage C
Programmation Orientée Objet I. Introduction
Les interfaces en PHP.
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
Programmation en C++ C++ de base
Modélisation avec UML 2.0 Partie II Diagramme de classes.
Programmation Orientée Objet C# El Akel Bouchra ISMONTIC Tanger 2013/2014.
Calcul Scientifique Initiation à SCILB
Les classes et les objets
Programmation Android Les listes
Les structures de base Listes chainées. Listes Les listes(similaire aux tableaux) sont des structures informatiques qui permettent de garder en mémoire.
Les exceptions Le mécanisme des exceptions est destiné à permettre aux fonctions profondes d'une bibliothèque de notifier la survenue d'une erreur aux.
Schéma de conception Factory Method Exemple
Programmation par Objets et Java
Compléments sur Python (EduPython)
Flowchart Itération Cours 04.
Principes de programmation (suite)
Threads et Lightweight Processes
Lecture/Écriture de fichiers (I/O)
Structure de données Les listes.
Bases de données Singleton pour la connexion
Contenu Systèmes de test parallèles Multithreading Synchronisation
Transcription de la présentation:

Ruby votre prochain langage de programmation préféré Guillaume Cottenceau LinuxDays Genève 22 Mai 2007

À propos de l'intervenant ● Architecte logiciel spécialiste Linux ● Utilise des langages de programmation depuis une vingtaine d'années ● Utilise surtout Java professionnellement ● Amateur de Ruby depuis 6 ans ● Fondateur de Romandie.rb, groupe des utilisateurs de Ruby dans la région

Ruby est... ● Un langage interprété ● Rapide et facile à utiliser (productivité) - il suit le principe de la moindre surprise ● Complètement orienté-objet ● Un logiciel libre (GPL) qui a 12 ans, créé par Yukihiro Matsumoto au Japon ● Le langage de Ruby on Rails, ce qui a contribué à le faire connaître plus largement

Portée de cette présentation ● Illustrer l'utilisation de base de Ruby ● Montrer un éventail des principaux attraits de Ruby par rapport aux autres langages courants ● Susciter votre envie de découvrir plus avant le langage

Hello, world! ● La tradition (qui remonte apparemment à 1974) est de commencer par Hello world... puts ”Hello, world!” => Hello, world! ● Syntaxe simple et élégante, pas besoin de terminateur d'instruction “;” s'il n'y a qu'une seule instruction sur une ligne

Une API efficace ● Utilisation simple des regexp (comme Perl) : if nom =~ /calmy.*rey/i puts “Bonjour présidente !” end ● Beaucoup de méthodes utiles, par exemple : ● chaine = “J'adore Ruby” ● chaine[“adore”] = “ADORE” ● => “J'ADORE Ruby”

Une API efficace ● Forme simplifiée des boucles, des intervalles et du formatage des chaînes : for i in puts “M. #{nom}, voyons le mois n°#{i}” end ● Assignation en parallèle, par exemple pour tourner un groupe de variables : ● a, b, c = b, c, a

Définir une classe ● On définit une classe avec le mot-clé class, et des méthodes avec le mot-clé def : ● class Voiture – def klaxon ● puts “pouet !” – end ● end

Appel de méthode ● On crée un objet avec la méthode de classe new et on appelle les méthodes avec l'opérateur “.” : ● ma_voiture = Voiture.new ● ma_voiture.klaxon ● => pouet !

Portée des variables ● Un caractère spécial précédant le nom d'une variable sert à traduire sa portée : – rien : variable locale : variable d'instance (attribut) – : variable de classe (variable statique) – $ : variable globale

Réouverture d'une classe ● On peut réouvrir une classe pour ajouter la création d'une variable de classe et d'une variable d'instance : ● class Voiture – = 15 # variable de classe – def avance = 30 # variable d'instance – end ● end

Réouverture des classes de base ● On peut même réouvrir les classes de base : ● class String – def pair? ● return length % 2 == 0 – end ● end ● puts “Ruby”.pair? ● => true

Tout est objet ● (Presque) tout est objet, y compris les nombres : ● 3.next ● => 4 ● 1.2.floor ● => 1

Méthodes singleton ● Il est possible d'ajouter ou de spécialiser une méthode dans une instance d'objet uniquement : ● def ma_voiture.klaxon – puts “pweeet !” ● end ● Cette méthode n'existera pas pour les autres instances de la classe Voiture

Utilisation des opérateurs ● Les opérateurs mathématiques ont une signification utile dans plusieurs classes de base, par exemple “-” implémente la différence ensembliste pour les tableaux : ● [1, 2, 4, 8, 16] - [1, 2, 3, 5] – => [4, 8, 16]

Utilisation des opérateurs ● Utilisation des opérateurs avec nos classes : ● class Voiture – def +(autre_voiture) ● return [ self, autre_voiture ] – end ● end ● ( ma_voiture + Voiture.new ).size ● => 2

Les blocs pour raccourcir le code ● Les blocs sont utilisés pour passer aisément du code plutôt que des données en paramètre d'une méthode : ● nombres = [ 4, 8, 15, 16, 23, 42 ] ● nombres.each { |i| puts i } ● File.readlines(“/tmp/data”) ●.each { |ligne| puts ligne.length }

Les blocs comme fermetures ● Les blocs sont des fermetures, ils permettent une interaction avec l'environnement : ● def add_progressbar(progress_monitor) – pbar = Gtk::ProgressBar.new – fenetre_principale.add(pbar) – Gtk.timeout_add(100) { ● pbar.fraction = progress_monitor.get –}–} ● end

Les modules pour organiser ● Les modules servent à organiser le code : ● module Format – def Format.total_caracteres(chaines) ● nb = 0 ● chaines.each { |ch| nb += ch.length } ● return nb – end ● end

Mixer les modules ● Les modules peuvent contenir des méthodes d'instances ● Elles sont ensuite disponibles pour les classes qui incluent ces modules (c'est un mixin) ● C'est presque comme de l'héritage multiple, mais ce n'est pas de la spécialisation – on ne peut pas hériter les modules

Exemple de mixin ● Le module standard Comparable a des méthodes d'instance qui définissent plusieurs opérateurs de comparaison (“<”...) ● Pour réaliser la comparaison demandée, les méthodes appellent l'opérateur “ ”, en partant du principe qu'il sera disponible ● Dans une classe, il suffit donc de mixer Comparable et de définir “ ” pour obtenir tous les opérateurs de comparaison à moindre coût

Exemple de mixin ● class Voiture – include Comparable – def (autre_voiture) ● return long autre_voiture.long – end ● end ● puts ma_voiture > autre_voiture ● => true

Threads dans l'interpréteur ● Ruby supporte le multi-threading ● L'implémentation est dans l'interpréteur : – pro : portable sur tous les OS, sans aucune API nécessaire ni effort de développement – con : tous les threads sont bloqués lors des appels système ● C'est très pratique dans la majorité des cas

Exemple de multi-threading ● chemin_iso = demande_chemin(...) ● md5_ok = false ● thr = Thread.new { – md5_ok = calcule_md5_iso(chemin_iso) ●}●} ● demande_options_gravure(...) ● thr.join ● if md5_ok –...

Autres fonctionnalités notables ● Exceptions ● Gestion automatique de la mémoire (garbage collector “mark & sweep”) ● Réflexivité ● Extensibilité

Ruby votre prochain langage de programmation préféré Guillaume Cottenceau LinuxDays Genève 22 Mai 2007