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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

Red : un langage de programmation impératif et fonctionnel et décrit comme un langage "à pile complète"


Sujet :

Langages de programmation

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Juin 2023
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2023
    Messages : 542
    Points : 9 921
    Points
    9 921
    Par défaut Red : un langage de programmation impératif et fonctionnel et décrit comme un langage "à pile complète"
    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

    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").

    Nom : reichart-abstraction-diagram.png
Affichages : 64513
Taille : 50,6 Ko

    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

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Points : 51
    Points
    51
    Par défaut Red est le plus prometteur des langages
    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.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 20
    Points : 49
    Points
    49
    Par défaut
    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

  4. #4
    Membre expert
    Profil pro
    programmeur du dimanche
    Inscrit en
    Novembre 2003
    Messages
    785
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : programmeur du dimanche
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 785
    Points : 3 381
    Points
    3 381
    Par défaut
    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 ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/12/2015, 09h19
  2. Réponses: 18
    Dernier message: 29/07/2010, 23h57
  3. Réponses: 3
    Dernier message: 19/01/2010, 09h30
  4. Cloud computing : Red Hat confirme son programme
    Par Annaelle32 dans le forum RedHat / CentOS / Fedora
    Réponses: 0
    Dernier message: 06/07/2009, 22h32
  5. Cloud computing : Red Hat confirme son programme
    Par Annaelle32 dans le forum Actualités
    Réponses: 0
    Dernier message: 06/07/2009, 22h32

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