IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Red : un langage de programmation impératif et fonctionnel et décrit comme un langage "à pile complète",
C'est-à-dire qu'il peut être utilisé pour la programmation de haut niveau et de bas niveau

Le , par Mathis Lucas

19PARTAGES

10  0 
Red est un langage de programmation fortement inspiré de Rebol, mais avec un champ d'utilisation beaucoup plus large grâce à son compilateur de code natif, allant de la programmation système à l'écriture de scripts de haut niveau, tout en fournissant un support moderne pour la concurrence et les CPU multicœurs. Red cherche à rester indépendant de toute autre chaîne d'outils ; il génère son propre code. Il est donc possible de compiler les programmes Red de n'importe quelle plateforme qu'il supporte vers n'importe quelle autre. Et tout cela à partir d'un exécutable binaire qui devrait rester inférieur à un mégaoctet (1 Mo). Red est distribué sous licence BSD.

Red est décrit par ses développeurs comme le premier langage de programmation à pile complète (full-stack). La pile Red se compose de deux couches principales, le langage Red de haut niveau et un DSL de plus bas niveau appelé Red/System, destiné à la programmation de systèmes et de pilotes de périphériques). Le langage de haut niveau serait très similaire au langage Rebol2 (environ 95 % compatible avec les sources), de sorte que la documentation de Rebol peut également être utilisée pour apprendre Red. Selon la documentation de Red, Red/System est similaire au langage de programmation C, mais intégré dans une structure lexicale Rebol.


Red est un langage homoiconique. (On dit qu'un langage est homoiconique si un programme écrit dans ce langage peut être manipulé comme des données en utilisant le langage, et donc la représentation interne du programme peut être déduite simplement en lisant le programme lui-même. Cette propriété est souvent résumée en disant que le langage traite le code comme des données.) Selon la documentation de Red, les principales caractéristiques du langage sont les suivantes :

  • syntaxe conviviale ;
  • homoiconique (Red est son propre métalangage et son propre format de données) ;
  • prise en charge de la programmation fonctionnelle, impérative, réactive et symbolique ;
  • prise en charge des objets basés sur des prototypes ;
  • multitypage ;
  • puissant système de macros de recherche de motifs ;
  • riche ensemble de types de données intégrés (plus de 50) ;
  • compilation statique et JIT en code natif (fonctionnalité non encore implémentée) ;
  • prise en charge de la compilation croisée ;
  • Red produit des exécutables de moins de 1 Mo, sans dépendances ;
  • prise en charge solide de la concurrence et du parallélisme (acteurs, collections parallèles) (fonctionnalité non encore implémentée) ;
  • capacités de programmation système de bas niveau grâce au DSL Red/System intégré ;
  • DSL d'analyseur PEG puissant intégré ;
  • collecteur de déchets rapide et compact ;
  • système d'interface graphique natif multiplateforme, avec un DSL d'agencement d'interface utilisateur et un DSL de dessin ;
  • passerelle vers la JVM ;
  • consoles GUI et CLI de script de haut niveau et REPL incluses ;
  • plugin Visual Studio Code avec de nombreuses fonctionnalités utiles ;
  • hautement intégrable ;
  • faible empreinte mémoire ;
  • un seul fichier (~1Mo) contient l'ensemble de la chaîne d'outils, la bibliothèque standard complète et la REPL (temporairement divisé en deux binaires) ;
  • pas d'installation, pas de configuration.


Red a été annoncé et présenté pour la première fois aux Pays-Bas en février 2011 lors de la conférence Rebol & Boron (ReBorCon) par son auteur Nenad Rakočević. En septembre 2011, le langage de programmation Red a été présenté à un public plus large lors du Software Freedom Day 2011. Rakočević est un développeur Rebol de longue date, connu comme étant le créateur du serveur HTTP Cheyenne. Tout comme le langage Rebol dont il est inspiré, Red prend en charge la métaprogrammation et les langages spécifiques à un domaine (DSL) et selon son créateur, Red constitue un outil très efficace pour la création de DSL intégrés ("dialection".


Red s'attaque à la complexité de la construction du logiciel en utilisant une approche orientée DSL (l'auteur les appelle dialectes). Ainsi, Red possède sa propre chaîne d'outils multiplateforme complète, comprenant un encapsuleur, un compilateur natif, un interpréteur et un éditeur de liens, ne dépendant d'aucune bibliothèque tierce, à l'exception d'un interpréteur Rebol2, requis pendant la phase alpha. Selon l'auteur, une fois la version 1.0 atteinte, Red sera autohébergé. Actuellement, Red est encore en phase alpha et uniquement en 32 bits. Les dialectes suivants sont intégrés :

  • Red/System : un langage de programmation système de niveau C compilé en code natif ;
  • Parse : un puissant analyseur PEG ;
  • VID : un dialecte simple de création d'interfaces graphiques ;
  • Draw : un dialecte de dessin vectoriel en 2D ;
  • Rich-text : un dialecte de description de texte riche.


Dans un billet de blogue publié en juillet de l'année dernière, l'équipe de développement du langage s'est exprimée sur les efforts à atteindre la version 1.0 de Red. L'équipe a déclaré : « vous n'avez pas pu manquer que ces derniers mois (et même ces dernières années), notre progression générale a ralenti de façon drastique. L'une des raisons principales est que nous avons dispersé nos ressources limitées en poursuivant différents objectifs tout en faisant peu de progrès sur le cœur du langage. Cela n'est pas du tout satisfaisant et nous mènerait très probablement à une impasse puisque nous épuisons nos fonds ».

« À partir de maintenant, notre seule préoccupation sera de terminer le langage de base et de l'amener à la version 1.0 tant attendue. Nous devons atteindre ce point afin de donner le coup d'envoi d'une adoption plus large et de nous fournir, ainsi qu'à nos utilisateurs, une base stable et solide sur laquelle nous pourrons construire les produits et services commerciaux nécessaires à la durabilité. Compte tenu de la complexité de l'achèvement du langage et de la mise en place d'une implémentation pouvant fonctionner sur les plateformes modernes 64 bits, nous avons conçu un plan en deux étapes », a-t-elle ajouté.


Ce plan en deux étapes comprend la mise à jour l'implémentation 32 bits de Red et l'implémentation d'une version 64 bits autohébergée. À propos de la mise à jour de version 32 bits du langage, l'équipe a écrit : « il est maintenant temps de le faire afin de nettoyer certaines règles sémantiques et de traiter tous les cas de figure possibles, ce qui nous aidera à atteindre nos objectifs de robustesse et de stabilité de l'implémentation. Le processus de rédaction des spécifications complètes du langage entraînera l'abandon de certaines fonctionnalités que nous possédons actuellement et qui s'avèrent problématiques ou incohérentes ».

« D'un autre côté, nous pourrions ajouter de nouvelles fonctionnalités qui devront être implémentées pour la version 1.0 », a-t-elle ajouté. Et en ce qui concerne le passage à la version 64 bits, elle indique : « afin de passer à la version 64 bits, nous devons abandonner entièrement le code de notre chaîne d'outils actuelle basée sur Rebol2 et le réécrire avec une architecture plus récente dans Red lui-même. Le code de la chaîne d'outils actuelle était jetable de toute façon, il n'était pas destiné à vivre aussi longtemps, donc c'était une mesure que nous devions prendre pour la version 1.0 de toute façon ».

Sources : Red, page GitHub de Red

Et vous ?

Que pensez-vous du langage de programmation Red ?
Que pensez-vous des caractéristiques de Red ? Réussira-t-il à s'imposer ?
Que pensez-vous des plans de l'auteur visant à faire de Red un langage à pile complète ?
Red pourrait-il être une alternative efficace aux langages tels que C, Java, JavaScript et Python ?

Voir aussi

« Un bon code est comme une lettre d'amour destinée au prochain développeur qui va le maintenir », estime Addy Osmani. L'ingénieur de Google montre les similitudes entre les deux

Microsoft présente un aperçu des nouvelles fonctionnalités de C# 12, dont l'amélioration de l'InlineArrayAttribute et de l'introduction d'Interceptors

Perl 5.38, la dernière mise à jour du langage de programmation, est disponible et apporte une nouvelle fonctionnalité expérimentale pour les classes, ainsi que plusieurs améliorations

Le temps perdu par les développeurs coûterait des milliards aux entreprises, un gaspillage qui est estimé à environ 12,97 milliards de dollars par an

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de bmayesky
Membre du Club https://www.developpez.com
Le 23/07/2023 à 16:30
Red est, pour moi au moins, le plus prometteur des langages. Il a les caractéristiques que j'attends:

- l'expressivité : un élément fondamental pour mes développements personnels pare que la vie est courte et que je suis d'autant plus heureux que le code est court à taper/débugger/... avant d'avoir la fonctionnalité que je veux.
- les types pour tout et n'importe quoi : avec l'expressivité, disposer de types (et de leurs méthodes) prêts à l'emploi pour de très nombreux cas est un facteur de développement fiable et sans erreur qui démultiplie la productivité.
- la compilation simple : pas de makefile, d'outils supplémentaires et un exécutable sans fioritures autour. Apprendre le langage et pas un écosystème est un plus.
- le cross-platform : je suis avec un Linux depuis plus de 10 ans et je sais que windows existe, Mac OS aussi et je vis les évolutions de différentes distributions, un code partout en attendant Linux partout (je sais, je peux attendre longtemps).
- Red embarque un GUI qui a l'avantage d'avoir été pensé pour être utilisé simplement et je trouve cela particulièrement précieux pour faire une interface à des scripts et autres applications périphériques.

En fait, l'expressivité est le facteur qui m'a fait tomber dans le giron de Rebol en son temps et fait que Red est ce que j'attends en suite, quelques soient ses défauts initiaux. Le seul défaut de Red est l'attente qu'il arrive en 1.0 pour l'utiliser et investir vraiment dessus.
1  0 
Avatar de kriska
Membre du Club https://www.developpez.com
Le 23/07/2023 à 17:43
Je suis toujours curieux des nouveaux languages et donc j'y ai jeté un oeil. Le premier point mis en avant sur le site du créateur : Human-friendly syntax.
Et... je trouve que c'est tout l'inverse. La syntaxe est particulièrement désagréable à lire (selon moi), ce qui fait que je n'ai pas regardé le reste des concepts car même si j'accepte une syntaxe pour certains languages un peu lourde, là c'est un cran au dessus
1  0 
Avatar de Fagus
Membre expert https://www.developpez.com
Le 23/07/2023 à 21:55
Citation Envoyé par bmayesky Voir le message
Red est, pour moi au moins, le plus prometteur des langages. Il a les caractéristiques que j'attends:

- l'expressivité : ...
- les types...
- la compilation simple ...
- le cross-platform :...
- Red embarque un GUI ...
Oui, mais est-ce utilisable actuellement ?
J'ai regardé rapidement sur leur site et leur fiche wikipedia, c'est très ambitieux comme langage, mais, c'est une petite équipe désargentée ; il sont dessus depuis 10 ans et pas en version 1 ; il y a pas de documentation claire (par ex, la GUI multiplate forme, c'est réputé un travail énorme, et c'est pas très clair de savoir ce à quoi ils sont arrivés) ; il y a très peu de projets github en red ; c'est pas clair de savoir s'il est facile de se brancher sur du c/c++ ou juste comment la mémoire est gérée; et pour finir leur compilo fait que le 32 bits.

il y a d'autres langages fonctionnels matures, non ?
1  0