Ritchie : un nouveau langage de programmation dérivé de C
Qui veut combiner la facilité de Python et la vitesse de C

Le , par Michael Guilloux, Chroniqueur Actualités
Depuis un peu plus d’un an, une équipe de développeurs travaille sur un langage de programmation baptisé Ritchie et qui repose sur le langage de programmation C. La vision de ces derniers est d’offrir un langage capable de combiner la concision de Python et l’efficacité du langage C, mais aussi d’autres caractéristiques propres aux langages de haut niveau.

« Ritchie est un langage expressif et efficace pour l’écosystème C », d’après sa description sur GitHub. Il « utilise des bibliothèques C nativement et génère un code C facile à comprendre ». Se rapprochant de sa première version, le langage a été conçu pour répondre à cinq principes de base :

  • faciliter la programmation, en s’inspirant de Python ;
  • offrir une rapidité similaire à celle de C ;
  • offrir un langage de type sécurisé comme Scala ;
  • offrir la possibilité d’écrire du code C ;
  • Ritchie n’a pas de mots réservés, tout peut être redéfini.

Après avoir été comparé avec Python et C, selon le benchmark Prime Counting, Ritchie a été trouvé presque aussi rapide que C et plus concis que Pyhton. En effet, pour le code exécuté, son écriture en langage Ritchie a utilisé 423 caractères contre 542 pour C et 474 pour Pyhton. Et l’exécution du code s’est faite en 457 ms pour Ritchie, 424 ms pour C, et 7836 pour Pyhton.


Ritchie est encore en phase de développement et de nombreuses fonctionnalités n’ont pas encore été pleinement implémentées. Parmi les caractéristiques actuelles du langage, on peut toutefois noter :

  • Ritchie est sensible aux espaces ;
  • il utilise l’inférence de type. À titre d’illustration, si l'on considère l’identificateur point et le type Point, la déclaration Java passe-partout Point point = new Point (x, y) devient en langage Ritchie point = Point x, y ;
  • le langage Ritchie utilise la notion de verbe pour regrouper ce que les autres langages appellent fonctions, méthodes ou sous-programmes ;
  • Ritchie n'a pas de mots-clés. Il utilise par contre des symboles avec des significations prédéfinies, mais tous ces symboles pourraient être redéfinis. Ritchie a été développé avec une langue standard qui lui est propre. À cet effet de nombreux symboles qui fonctionnent comme des mots-clés pourraient avoir une autre utilisation dans d’autres langages. À titre d’illustration, pour définir une classe dans Ritchie, vous pourrez taper SomeClass :: SomeBaseClass. Le :: est tout simplement un verbe qui veut dire « devenir une sous-classe de » ;
  • Ritchie essaie de suivre la construction linguistique (Sujet / Verbe / Objet) dans la plupart de ses expressions. Par exemple pour l’expression hello = "Hello", l’analyse donne hello comme sujet, = comme verbe et "Hello" comme objet ;
  • le langage introduit un type spécial de verbes classés comme des verbes de contrôle de flux. If, While et For font partie de ce type de verbe, et ne sont donc pas des mots-clés comme dans les autres langages. Ils peuvent toutefois être redéfinis même si cela n’est pas recommandé.

La liste des caractéristiques de Ritchie et des fonctionnalités restant à implémenter est disponible sur GitHub.

Liste des principales tâches de développement restant avant d'atteindre la version 1.0

Source : GitHub

Et vous ?

Quels commentaires pouvez-vous faire des caractéristiques de Ritchie ? Quelles sont ses forces et faiblesses ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de Gugelhupf Gugelhupf - Modérateur https://www.developpez.com
le 08/12/2015 à 10:56
Le langage Ritchie Rich par la compagnie Riz au Lait (c'était plus fort que moi désolé )
Il y a quelques exemples de code Ritchie ici. Je n'ai pas compris pourquoi ils mettent le test avant le mot-clé if ou while, histoire que le langage soit "différent" des autres ?
Je suis sûr que la création de ce langage part d'une bonne intention, un peu comme D pour C++, mais comme le dit Bjarne, sortir un nouveau langage aujourd'hui c'est pas gagné.
Avatar de Abacar94 Abacar94 - Membre habitué https://www.developpez.com
le 08/12/2015 à 11:01
bonjour !
ce langage a l'aire prometteur; ce que je veut savoir; y a t'il des compilateur disponible pour ce langage ?
Avatar de ternel ternel - Expert éminent sénior https://www.developpez.com
le 08/12/2015 à 11:11
En pratique c'est un langage compilé vers le C. Avoir des performances équivalentes sur de petits programmes, ca me parait normal, pas vous?

L'idée clé du langage, à ce que je vois, c'est que toute instruction prenne la forme sujet verbe objet, par exemple a = 2 ou a<0 if a = 0.
Du coup, avoir utilisé if est un peu dommage, j'aurai plutot repris le ? : à cette place.
Avatar de robertledoux robertledoux - Membre habitué https://www.developpez.com
le 08/12/2015 à 11:59
"Ritchie est sensible aux espaces ;"

mais pourquoi utiliser la pire chose de Python ?
Avatar de Aurelien Plazzotta Aurelien Plazzotta - Membre éprouvé https://www.developpez.com
le 08/12/2015 à 13:10
Un langage dérivé de C pour opérer sur l'éco-système C . Belle performance...

Et + 1 pour Robertledoux !
Avatar de dalfab dalfab - Membre expert https://www.developpez.com
le 08/12/2015 à 13:53
Bonjour,

Il est donc question de donner une seconde vie au C, en rendant hommage à Dennis Richie.
Avatar de steel-finger steel-finger - Membre habitué https://www.developpez.com
le 08/12/2015 à 15:08
ça ma l'air un peux bizarre comme langage, sinon au niveau des perf c'est vrai que ça a l'air prometteur
Avatar de anykeyh anykeyh - Membre confirmé https://www.developpez.com
le 08/12/2015 à 17:38
Je n'ai pas compris pourquoi ils mettent le test avant le mot-clé if ou while, histoire que le langage soit "différent" des autres ?
Je crois comprendre que c'est du au fait qu'il n'y a aucun mot clé à proprement parlé. J'imagine que cette construction [variable] [mot cle structure] [nvelle ligne indentation] [block] devait permettre plus de liberté dans la redefinition des choses.

Effectivement, dans le cas du "if", ils auraient du l'appeler "then", car c'est plus lisible "x==0 then doSomething"
Avatar de maske maske - Membre éprouvé https://www.developpez.com
le 08/12/2015 à 18:57
Citation Envoyé par anykeyh Voir le message
Effectivement, dans le cas du "if", ils auraient du l'appeler "then", car c'est plus lisible "x==0 then doSomething"
En fait ça peut avoir une certaine logique, en smalltalk on a (condition) ifTrue:[bloc de code]. Là le mot n'est pas hyper joli mais tient la logique si on fait la gym dans sa tête.

En revanche, si on peut redéfinir ça alors rien n'empêche de changer le "if" en "then" ou "ifTrue" - mais j'aimerais bien voir des exemples de ça.

Est-ce qu'il y aurait plus de concrêt là dessus à part la page github, notamment pourquoi ils font ce langage et comment marche la redéfinition ? Ça a l'air de tenir un peu plus du DSL que d'un GPL, mais du coup il y a peut-être un champ d'application propre qui justifie le langage ?
Avatar de chrtophe chrtophe - Responsable Systèmes https://www.developpez.com
le 08/12/2015 à 20:46
l’exécution du code s’est faite en 457 ms pour Ritchie, 424 ms pour C, et 7836 pour Pyhton.
Il faut comparer ce qui est comparable, le C est compilé, le python c'est de l'"interprété d'ou le gros écart.