1. #1
    Membre éclairé

    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    septembre 2007
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : septembre 2007
    Messages : 200
    Points : 714
    Points
    714

    Par défaut Présentation du projet

    1. Présentation du projet

    1.1. R++, the Next Step?

    ``R++, the next step?'' est un projet open source de création d'un environnement de travail dédié à l'analyse statistique. Cet environnement s'inspire fortement du logiciel R, avec lequel il est compatible. Par analogie avec C++ et C, il s'appelle R++.

    Principales différences avec R, R++ est un langage objet, compilable, intégrant en natif la gestion du parallélisme et permettant la gestion de grandes bases de données.


    1.2. Pourquoi un nouveau langage ?

    R est un langage riche, en pleine expansion, présentant de nombreux avantages. Il est donc naturel de s'interroger sur la pertinence de la création d'un nouveau langage. Examiner les forces mais aussi les limitations de R met clairement en lumière l'intérêt d'un tel projet.

    1.2.1. Les forces de R

    Les principales forces de R :

    • Gratuit et open source : dans la période actuelle de difficultés financières pour nombre d'instituts académiques, alors que le prix de certains logiciels payant devient une charge lourde, c'est un atout non négligeable.
    • Langage permettant rapidement l'intégration de nouvelles méthodes : cet aspect est directement lié au côté open source. Lorsqu'un chercheur en statistique développe une nouvelle méthode, il est ensuite libre de la programmer et de la proposer à la communauté sous forme d'une librairie. Le temps qui s'écoule entre la création de la méthode et sa mise à disposition est potentiellement très court.
    • Nombreux packages : corollaire du point précédent, les individus ayant la possibilité d'enrichir eux-mêmes le langage, ils se sont saisis de cette possibilité. Le langage de base est donc enrichi de très nombreux packages. Pratiquement toutes les méthodes statistiques de pointe sont disponibles sous R.
    • Large communauté : les trois points précédents font de R un logiciel attractif. De fait, la communauté R est particulièrement dynamique. Les quatre listes de diffusion de R sont très actives, et sont complétées par de nombreux forums. La communauté R ne cesse de grandir.


    1.2.2. Les limites de R

    Mais malheureusement, les points que nous venons de présenter sont à mettre en regard d'inconvénients et limites :

    • Gestion du parallélisme : Comme beaucoup de langage, R n'a pas été conçu comme un langage pouvant gérer le parallélisme ou la concurrence. Les différents packages qui se proposent d'implémenter ce mode de fonctionnement ne présentent pas à ce jour des performances très prometteuses. En tout état de cause, aux dires de certains experts en parallélisme, un langage non initialement conçu comme parallèle pourra difficilement être rendu efficace par des surcouches.
    • Données de grande dimension : les appels de fonctions R se font par valeur, ce qui signifie que les variables passées comme arguments sont dupliquées en mémoire. Ce mode de fonctionnement présente de nombreux avantages et prévient bien des erreurs de programmation. Par contre, dans le cadre de manipulation de données de grandes dimensions, il n'est pas optimum.
    • Utilisation de la mémoire : les ordinateurs utilisent deux types de mémoire. La pile est d'accès rapide, mais petite et pas très facile à gérer. La RAM a une capacité supérieure mais est lente. La majorité des langages utilise la pile pour les codes critique (code exécuté un grand nombre de fois et qui ont besoin d'être rapide) et la RAM pour le reste. R n'utilise que la RAM.
    • Gestion des données : les outils permettant de gérer les données sous R sont parfois difficiles d'accès (comme par exemple la fonction reshape, qui est en fait un mélange de deux fonctions différentes). De même, l'import des données en provenance d'autres logiciels n'est pas toujours aisé.
    • Non uniformité des pratiques : la multitude de contributeurs est une force, mais elle fait de R un langage disparate. Cette hétérogénéité nuit grandement à l'apprentissage du langage et à son utilisation. Par exemple, numeric(0) désigne un numérique vide, mais factor(0) désigne un factor avec un élément qui est 0. factor() désigne un factor vide, mais matrix() désigne une matrice 1x1 contenant NA... Il est donc difficile de faire des inférences, d'appliquer ce que l'on sait sur un objet à un autre. Ainsi, connaitre la classe numeric ne donne pas une vraie connaissance de la classe integer ou factor. De même, la syntaxe des différentes fonctions est hétérogène. var dispose d'un argument na.rm alors que cor n'en dispose pas. Certains tests se font avec l'argument A~B, d'autres avec A,B, d'autre avec table(A,B). Les fonctions qui travaillent sur des données les appellent x, object, data...


    Toutes les forces de R sont autants de raisons de continuer à l'utiliser, toutes ses limites nous poussent à le faire évoluer. C'est le projet R++.


    2. Présentation de R++

    R++ a pour vocation de dépasser les limites de R tout en conservant ses forces. A terme, le but est de faciliter la vie de l'utilisateur final, y compris du débutant, tout en permettant au programmeur expert qui conçoit les librairies de travailler efficacement et de manière fiable. Pour cela, R++ suit un certain nombre de règles. Certaines sont fondamentales et structurent le langage. D'autres sont plus liées à des volontés de bonnes pratiques.


    2.1. Les fondamentaux

    2.1.1. Langage objet

    La programmation objet offre sur la programmation classique de nombreux avantages parmi lesquels une plus grande facilité à détecter les erreurs de programmation. Ce point, déjà été évoqué ci-dessus, justifierait à lui seul l'utilisation de l'objet. Une autre caractéristique de l'objet est l'encapsulation, propriété qui permet de cacher les données. Des fonctions sécurisées de manipulation de données sont ensuites mises à disposition de l'utilisateur. Or, R est essentiellement utilisé par des non informaticiens pour qui la programmation est une compétence annexe : ça n'est pas leur métier, c'est un des (nombreux) outils qu'ils doivent maitriser pour faire leur travail (en plus de parler anglais, être pédagogue, parler le LaTeX, savoir rédiger, encadrer des étudiants, répondre à des appels d'offre, ...). Pour de tels utilisateurs, la simplicité apportée par l'objet sera un plus très net.

    2.1.2. Intrinsèquement parallèle

    Les ordinateurs actuels sont tous multi-c\oe urs. Les cartes graphiques modernes comptent jusqu'à mille processeur parfaitement capables de faire des calculs. Enfin, pratiquement tous les ordinateurs peuvent interagir entre eux via internet. Cela fait trois sources de parallélisassions possibles. Le temps de calcul étant devenu une contrainte forte de nos analyses statistiques, un langage intrinsèquement parallèle offrirait une réelle plus-value à ses utilisateurs.

    2.1.3. Gestion des grandes bases de données

    Les données sur lesquelles les statisticiens travaillent ont évolué. Il n'est plus rare de travailler sur des dizaines de milliers de variables, ou sur des millions d'individus. Dans ce genre de cas, les logiciels actuels peinent à exploiter les données. Là encore, un langage conçu pour gérer les données de grande dimension serait un plus.

    2.1.4. Compilable

    Dans R, la seule solution pour optimiser le c\oe ur d'un programme est de l'écrire en C ou en Fortran. Cela nécessite de connaitre un nouveau langage, mais aussi de maitriser l'interface entre les deux. Pourtant, le gain d'une programmation compilée est très loin d'être négligeable (entre x10 et x50). R++ sera donc un langage nativement compilable (car les surcouches permettant la compilation ne sont pas très efficaces).

    2.1.5. Compatible avec R

    Une des grande forces de R est le nombre impressionnant de méthodes statistiques disponibles via de nombreux packages. Il serait complètement irréaliste de vouloir tous les réécrire. Or, un nouveau langage qui demanderait aux utilisateurs de renoncer à certaines fonctions dont ils ont l'habitude ne serait probablement pas adopté (comme en témoigne les différentes tentatives de réécriture de LaTeX). Il est donc important de rendre R++ compatible avec R afin qu'il puisse bénéficier d'une grande majorité des librairies R.

    Note : Cependant, l'efficacité et la propreté du langage seront prioritaire sur la compatibilité. Les instructions impropres, trop lourdes ou inefficaces de R ne seront pas récupérées dans R++. Par contre, nous étudierons la possibilité de mettre en place un ``traducteur automatique'' qui transformera le R en R++.


    2.2. Principes

    A côté des fondamentaux, R++ suivra également des principes liés aux bonnes pratiques. Ils peuvent paraitre d'importance moindre au premier abord, mais cela serait une erreur de les négliger. En effet, au quotidien, ils seront déterminants quant à la facilité d'utilisation du logiciel, au temps nécessaire au débogage et à son apprentissage. Autant de critères qui seront décisifs quant au succès de R++.


    2.2.1. Langage propre

    Les règles de programmation (ou bonnes pratiques) permettent de programmer en évitant un certain nombre d'erreurs. Or, si les bugs dans les programmes classiques sont gênants, ceux des langages statistiques peuvent être bien plus graves quant il s'agit d'erreur de calcul (pas nécessairement décelable). Un scientifique peut alors présenter en toute bonne foi un résultat faux, avec toutes les conséquences dramatiques que cela peut avoir (comme le changement de pratiques médicales, des produits non adaptés dans les assurances, la finance,...) Travailler avec un langage fiable peu sujet aux bugs est donc fondamental. A cet égard, R++ essaiera au maximum de respecter les bonnes pratiques (langage typé, pas de surcharge, pas de modification de type, pas d'ambiguïtés syntaxiques...)


    2.2.2. Pratiques homogènes

    Cela a été détaillé dans les limitations de R, la non uniformité des pratiques nuit grandement à l'apprentissage du logiciel, puis ensuite à son utilisation. Cela n'est pas une fatalité. Ainsi, en LaTeX, si l'on sait qu'une flèche à droite s'écrit \longrightarrow, on peut intuitivement trouver comment faire une flèche à gauche : cela sera simplement \longleftarrow. R++ a entre autre objectif d'harmoniser les pratiques de R. Ainsi, si numeric() désigne l'objet
    vide, alors factor(), matrix() et ClassDeLutilisateur() seront également des objets vides. De la même manière, R++ définira une liste de méthodes et le plus grand nombre possible d'objet y auront accès. Ainsi, si l'on sait mesurer le nombre de lignes d'un vecteur, l'on saura aussi mesurer le nombre de lignes d'un data.frame ou d'une matrice. R++ uniformisera toutes les pratiques en proposant une syntaxe unique.


    2.2.3. Non compilable et non objet

    C'est un des fondamentaux de R++, il sera un langage compilable. Néanmoins, le côté « calculatrice » de R (la possibilité d'ouvrir R, de lire un fichier, de taper quelques instructions) est très agréable. Afin de conserver cette facilité d'utilisation, il sera important de permettre de taper du code « à la volée », sans toute la lourdeur d'un compilateur. R++ offrira donc également une interface permettant d'écrire du code non compilé pour les utilisations légères. De même, les utilisateurs occasionnels n'ont pas nécessairement le besoin de se mettre à l'objet. Il sera donc possible d'écrire des petits programmes simples sans les objets (mais une telle programmation ne permettra pas de faire des packages).


    2.2.4. Editeur évolué

    Les éditeurs modernes fournissent aux utilisateurs nombre d'options qui facilitent grandement la programmation : coloration syntaxique, indentation automatique, bulles d'aide proposant différents options, complétion automatique, voir débogage en temps réel (typage, cohérence des noms et des appels des fonctions,...) R++ sera intégré dans un éditeur moderne comme Eclipse ou Rstudio offrant par défaut toutes ses options.

    2.2.5. Établir une gestion éditoriale des packages

    R++ devra inclure un travail éditorial sur plusieurs niveaux.


    Qualité du code
    • Niveau 0 : Package non compilable.
    • Niveau 1 : Package R compilable mais non accepté par le CRAN.
    • Niveau 2 : Package R compilable accepté par le CRAN
    • Niveau 3 : Package écrit en R++ avec Warnings
    • Niveau 4 : Package écrit en R++ sans Warnings


    Qualité scientifique

    • Niveau 0 : Package non présenté dans une revue
    • Niveau 1 : Package présenté dans une revue non référencée
    • Niveau 2 : Package présenté dans une revue référencée
    • Bonus +log10(n), avec n nombre de citation dans une revue référencée


    Clarté de la documentation
    Évaluation par des reviewers.


    Facilité d'utilisation
    Évaluation par des reviewers.

    Qualité technique
    Évaluation par des reviewers.

    Popularité
    • Nombre de téléchargements
    • Nombre de packages faisant appel à un package donné.



    2.2.6. BIEN DOCUMENTÉ !!!

    C'est probablement la plus grande faiblesse de R. Le langage est mal documenté. Pour que R++ ne tombe pas dans le même travers, un axe de développement complet sera spécifiquement dédié à la rédaction des documentations. Les aides seront rédigées en deux temps. Une première version sera écrite par un expert du domaine (celui qui a construit la librairie). Une deuxième version sera rédigée par un non expert, un utilisateur potentiel.


    3. Faisabilité du projet

    R++ est clairement un projet ambitieux. Nous n'avons pas la prétention de penser que cela sera facile, ni que nous sommes certains d'aboutir. Néanmoins, afin de mettre un maximum de chances de notre côté, nous avons adopté un certain nombre de stratégies.


    3.1. Ne pas réinventer la poudre

    Dans tous les domaines, des langages existent. Ils ont été réfléchis, ont évolué et sont le plus souvent devenus des outils équilibrés, adaptés aux besoins des utilisateurs. Au lieu de repartir de zéro, R++ s'inspirera de ce qui se fait de mieux dans différents langages. Ainsi, SQL est spécifiquement dédié à la gestion de bases de données alors que sous R, ce point est vraiment problématique. En matière de gestion de donnée, R++ adoptera donc une syntaxe proche de SQL. De la même manière, les data.frame seront hérités de R, le ramasse miette sera celui de java, les grandes dimensions s'inspirerons de S+ et ainsi de suite.


    3.2. Contacter des experts

    Les problèmes comme la gestion du parallélisme et des grandes dimensions ne sont pas l'apanage des logiciels statistiques, ce sont des problèmes globaux qui se posent dans tous les champs disciplinaires utilisant l'informatique. Il serait donc illusoire de penser que nous pouvons les résoudre localement avec nos compétences propres alors que des équipes entières de recherche y consacrent 100\% de leur temps. Pour ce genre de problème, nous contacterons des chercheurs (ou experts) de chaque domaine (équipe parallélisme, équipe base de donnée, équipe ergonomie,...) afin d'avoir une vision d'ensemble des techniques existantes et des techniques d'avenir.



    3.3. Contacter des non-experts

    ``Quel est le langage de vos rêves ?'' La question fait généralement sourire, rare sont ceux qui rêvent de langages. Pourtant, le statisticien-utilisateur est le premier concerné par cette question, et indirectement par la construction d'un langage, puisque c'est lui qui au final décidera de l'adopter, ou pas. Or, cet utilisateur, de par sa grande connaissance des statistiques, sait ce dont il a besoin ; dans les logiciels qu'il connait, il sait ce qui marche bien et ce qui doit être amélioré. Nous aurons donc à c\oe ur de rester au plus proche des utilisateurs, de leur demander régulièrement leur avis sur ce que doit et ne doit pas être R++.


    4. Les étapes

    R++ V0.1 : L'embryon

    • Déclaration des variables (simple, vectorielle, composée)
    • Utilisation comme une calculatrice
    • Lecture de données, au moins selon un format classique (txt ou csv)


    R++ V0.2 : Le bébé

    • Structures de contrôle while / for / if / ? / switch
    • Ajout de la possibilité d'écrire des fonctions, y compris récursives.


    R++ V0.3 : Le tronc commun

    • Passage à l'objet : possibilité de créer des objets et leurs méthodes



    R++ V0.4x : L'hydre

    La version V0.3 est appelé la « version de base ». A partir de là, on peut séparer le projet en différents axes, qui peuvent être mené de front par différentes équipes :

    R++ V0.4a : Statistiques de bases

    • Ajout des fonctions statistiques de base : summary, mean, plot...


    R++ V0.4b : Parallélisme

    • Programmation parallèle : parallélisation des boucles (sur plusieurs processeurs ?) et du calcul (sur la carte graphique ?). Parallélisation
      explicite ou discrète.


    R++ V0.4c : Gestion des bases de donnée

    • Gestion des bases de données : exploration et éventuellement intégration de la syntaxe SQL dans R++.


    R++ V0.4d : Base des donnée de grande dimension

    • Gestion des grandes bases de données : exploration de ce qui marche.


    R++ V0.4e : Éditeur

    • Intégration de R++ sous un éditeur moderne (Rstudio ? Eclipse ?)


    R++ V0.5 : Le (mini) Graal

    • Intégration des différents axes développés lors de l'étape V0.4.
    • Ré-écriture et uniformisation de toutes les doc.




    Cette version sera la première version publique !

    (YESSSS !!!!)

    5. L'équipe

    A ce jour (05/07/2013), les membres du projet, actif ou sympathisants :
    • Christophe Genolini, Maitre de conférences en bio-statistique, INSERM
    • Abdelmalek Haddad, Ingénieur de recherche INRA
    • Hervé Richard, Ingénieur de recherche INRA
    • Pierre Courtieu, Maitre de conférences au CNAM
    • Bruno Falissard , PUPH INSERM
    • Gaétant Hains : PU en informatique LACL Université Paris-Est \& LIFO Université d'Orléans
    • Jérome Collet, Ingénieur



    La répartition des rôles

    • Inclusion des fonctions de base :
    • Parallélisme : Gaétan Hains
    • Base de données :
    • Rédaction des docs : Christophe Genolini
    • Point de vu utilisateur : Bruno Falissard

  2. #2
    Inactif
    Inscrit en
    août 2013
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : août 2013
    Messages : 27
    Points : 52
    Points
    52

    Par défaut

    Intéressant ce projet que je découvre par hasard. Je vais suivre ça.
    En tant qu'utilisateur de R, la priorité me semble être gagner en performance en gardant la compatibilité des packages de R (en particulier bioconductor pour la bioinfo). Peut importe pour la méthode (compatibilité R ou convertisseur R-R++)
    Bon courage

  3. #3
    Membre éclairé

    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    septembre 2007
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : septembre 2007
    Messages : 200
    Points : 714
    Points
    714

    Par défaut

    Salut à toi, cher premier visiteur...

    Assurément, la performance et la compatibilité sont au coeur de nos préoccupation. Pour la compatibilité, il est clair qu'elle ne pourra pas être totale car nous comptons tout de même améliorer certaines "petites coquilles" de R. Mais un convertisseur est clairement au programme.

    Je vais suivre ça.
    Effectivement, n'hésite pas a venir commenter : bien connaitre le point de vu des utilisateurs nous parait fondamental...

    Christophe

  4. #4
    Inactif
    Inscrit en
    août 2013
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : août 2013
    Messages : 27
    Points : 52
    Points
    52

    Par défaut

    Citation Envoyé par Christophe Genolini Voir le message
    Pour la compatibilité, il est clair qu'elle ne pourra pas être totale car nous comptons tout de même améliorer certaines "petites coquilles" de R. Mais un convertisseur est clairement au programme.
    Il faut que la compatibilité soit totale. Beaucoup d'équipes stat ont leurs paquets de scripts R, qu'ils relancent pour générer les rapports quand on leur demande une étude. S'il n'est pas possible de lancer un script (même si c'est à cause d'une ligne de code sur 10000 lignes), R++ n'a aucune chance (à mon avis) de trouver son public s'il n'est pas compatible.

    A voir donc ce que donnera votre convertisseur...

Discussions similaires

  1. Présentation du projet
    Par Baptiste Wicht dans le forum JTheque
    Réponses: 4
    Dernier message: 31/05/2009, 22h47
  2. [BTS IG] Présentation de projet MySQL
    Par zyriuse dans le forum Débuter
    Réponses: 4
    Dernier message: 25/11/2007, 22h28
  3. présentation et projet
    Par blaise_laporte dans le forum Apple
    Réponses: 14
    Dernier message: 24/06/2007, 01h21
  4. Présentation du projet "Try"
    Par gunwolf dans le forum Projets
    Réponses: 5
    Dernier message: 21/02/2007, 14h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo