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