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 :

Unison : un langage de programmation qui propose une nouvelle approche de la programmation distribuée


Sujet :

Langages de programmation

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Dirigeant
    Inscrit en
    juin 2016
    Messages
    2 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Dirigeant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2016
    Messages : 2 722
    Points : 58 855
    Points
    58 855
    Par défaut Unison : un langage de programmation qui propose une nouvelle approche de la programmation distribuée
    Unison : un langage de programmation qui propose une nouvelle approche de la programmation distribuée
    il est statiquement typé et purement fonctionnel

    Unison est un langage de programmation expérimental de type Haskell qui promet la possibilité de décrire des systèmes distribués entiers avec un seul programme. Il est présenté par ses créateurs comme "un langage de programmation convivial venu du futur". Unison est un langage de programmation moderne, statiquement typé, et purement fonctionnel. Il est open source et a été fondé sur la notion fondamentale que le code est immuable et identifié par son contenu. Le langage est actuellement en version alpha publique et le code source est disponible sur GitHub.

    Unison est conçu pour offrir un support spécial pour la construction de systèmes distribués. Il est motivé par l'idée que la technologie de création de logiciels doit être conçue de manière réfléchie dans tous ses aspects. Les complexités doivent être supprimées. Paul Chiusano, l'un des principaux développeurs du langage, a déclaré qu'Unison était un projet de recherche dans le cadre duquel ils étaient prêts à repenser le fonctionnement de la programmation. Encore au stade expérimental, Unison est un langage de programmation fonctionnelle typée statiquement, similaire à Haskell, qui offre les possibilités suivantes :

    • la possibilité de décrire des systèmes distribués ;
    • gestion simplifiée de la base de code : Unison utilise une base de données de définitions qui conserve le hash de l'arbre syntaxique au lieu de la source réelle ;
    • mise en cache des résultats des tests ;
    • élimination les conflits de dépendances
    • typage persistant et stockage simple ;
    • renommage trivial.




    Les définitions dans Unison sont identifiées par leur contenu, chaque définition constituant un arbre syntaxique. En hachant l'arbre d'une manière qui incorpore les hashs des dépendances de la définition, le hash d'Unison identifie de manière unique cette définition. Selon l'équipe de développement d'Unison, cette fonctionnalité est destinée à servir de base à de sérieuses améliorations de l'expérience de programmation, en éliminant les constructions et la plupart des conflits de dépendances et en permettant un déploiement facile du code et un stockage durable typé.

    Pour la refactorisation, Unison offre un processus structuré dans lequel une nouvelle version compilable du code est construite de manière incrémentielle sur le côté, offrant des avantages tels qu'une base de code qui est toujours exécutable et jamais cassée, éliminant le besoin de mettre à jour une base de code entière. La fonction Remote.Transfer du langage fournit un "effet à distance" qui facilite le calcul sur plusieurs nœuds Unison. Le transfert dynamique de calculs arbitraires est possible, car les définitions dans Unison sont identifiées par un hachage cryptographique de leur contenu.

    Lorsque les calculs sont transférés, le nœud destinataire vérifie si le contenu fait référence à des hashs inconnus. Les hashs inconnus sont synchronisés avec le destinataire avant que le transfert ne soit terminé et que le calcul ne se poursuive. « Cette hypothèse de départ offre des avantages surprenants : elle simplifie la programmation distribuée, élimine les constructions et les conflits de dépendances, prend en charge le stockage durable typé, les refactorisations structurées, permet de meilleurs outils pour travailler avec le code, et bien plus encore », a écrit l'équipe dans un billet de blogue.

    Voici un exemple d'implémentation distribuée de MapReduce :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    -- comments start with `--`
    mapReduce loc fn ifEmpty reduce data = match split data with
      Empty          -> ifEmpty
      One a          -> fn a
      Two left right ->
        fl = forkAt loc '(mapReduce loc fn ifEmpty reduce !left)
        fr = forkAt loc '(mapReduce loc fn ifEmpty reduce !right)
        reduce (await fl) (await fr)

    Cette fonction peut être soit simulée localement (éventuellement avec des fautes injectées à des fins de test), soit exécutée sur un pool de calcul distribué. Bien que certains semblent enthousiasmés par l'approche proposée par Unison, elle fait néanmoins l'objet de quelques critiques. Certains critiquent la façon dont le projet est mené. « Je pense qu'ils font une erreur fréquente dans ce genre de projet : "essayer trop de nouvelles choses à la fois". Ils ont déjà une façon très innovante de gérer le code source, avec une base de données de définitions qui conserve le hash de l'arbre syntaxique au lieu de la source réelle », commente un critique.



    « C'est une idée très intéressante qui résout de nombreux problèmes. La meilleure chose aurait été de développer cette idée suffisamment bien pour qu'elle fonctionne avec des outils de contrôle de source, des EDI et qu'elle puisse être déployée facilement et sans douleur sur l'infrastructure existante. Mais ils ont décidé de résoudre aussi l'informatique distribuée, un espace vraiment complexe. En outre, ils semblent se concentrer sur cela maintenant au lieu des idées "originales". Il me semble qu'il y a un énorme problème de dérapage à moins qu'ils aient pivoté vers l'informatique distribuée parce que les idées originales n'étaient pas assez attrayantes ».

    En réponse, un développeur d'Unison a déclaré que ce n'était pas le cas. Un autre commentaire a suggéré que la gestion du code et le calcul distribué ne sont pas si éloignés : « les deux domaines de la gestion du code source et du calcul distribué ne sont pas aussi disjoints dans le contexte d'Unison. Ils découlent du principe sous-jacent d'adresser les fonctions non pas par leur nom, mais par un hash de leur arbre syntaxique normalisé. Il y a un tas d'implications pour le calcul distribué, à savoir que vous pouvez facilement distribuer des parties fines de votre application sur des serveurs et que vous pouvez mettre en cache le résultat de calculs coûteux ».

    Un troisième a ajouté : « je pense que le problème de l'informatique distribuée est assez lié une fois que vous avez un code source "adressable par le contenu". Je suis d'accord pour dire que c'est beaucoup de travail, mais j'espère que ça va marcher ». Bien que Chiusano vante les avantages d'Unison, le débat semble se concentrer sur la relation réelle entre l'adressage du code source par le contenu et l'informatique distribuée. En outre, selon ceux qui pensent que cette relation n'existe pas, il n'est pas nécessaire de créer un nouveau langage pour avoir une distribution de code source "adressable par le contenu".

    Conclusion

    Unison est un pari intéressant qui teste de nouveaux concepts. Toutefois, il est difficile de dire s'il aura un grand avenir ou non. Mais l'idée des développeurs d'Unison est d'aider à repenser la façon dont nous abordons certains aspects du développement logiciel avec les langages de programmation. Pour beaucoup, il ne s'agit pas seulement d'une nouvelle syntaxe, mais plutôt d'un effort plus ambitieux.

    Sources : Unison, Référentiel GitHub d'Unison

    Et vous ?

    Que pensez-vous du langage de programmation Unison ?
    Que pensez-vous de l'approche proposée par Unison en matière de programmation distribuée ?
    Selon vous, existe-t-il une relation réelle entre l'adressage du code source par le contenu et l'informatique distribuée ?

    Voir aussi

    La version 5.0 de Celery, le framework de programmation distribuée en Python, est disponible avec une nouvelle implémentation CLI, qui n'est pas complètement rétrocompatible

    Jolie, un langage de programmation orienté services, il permet d'agréger directement les API de services dans un serveur Web

    YDB, une base de données SQL distribuée et open source, sous licence Apache 2.0, elle fonctionne sur des plateformes x86 64 bits avec un minimum de 8 Go de RAM

    Java, Python, Kotlin et Rust connaissent une croissance rapide, mais JavaScript reste le langage de programmation le plus populaire, selon une enquête de SlashData
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    décembre 2003
    Messages
    1 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2003
    Messages : 1 982
    Points : 2 621
    Points
    2 621
    Par défaut
    Bonjour.

    Çà à l'air nul à chier comme langage. Cela ressemble de loin à du javascript (await, reduce), un autre langage qui est aussi nul à chier.

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    août 2022
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : août 2022
    Messages : 436
    Points : 274
    Points
    274
    Par défaut
    Et hop,
    encore un langage qui va finir à la poubelle ...

    Il y en a déjà bien assez comme ça, chacun étant lié à une spécificité et des problématiques de performances.
    Au lieu de perdre du temps à vouloir en créer un nouveau pour combler un besoin de briller aux yeux du monde, ces ingénieurs auraient mieux fait d'améliorer les existants.

  4. #4
    Expert confirmé
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    avril 2016
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : avril 2016
    Messages : 1 341
    Points : 5 599
    Points
    5 599
    Par défaut
    Citation Envoyé par moldavi Voir le message
    Cela ressemble de loin à du javascript (await, reduce)
    MDR. Unison est un langage de programmation fonctionnelle statiquement typé. Il ne ressemble pas du tout à JavaScript. S'il suffit qu'un langage possède await et reduce pour ressembler de loin à JavaScript, alors le C++ aussi ressemble de loin à JavaScript, puisqu'il possède co_await et std::reduce.

    Citation Envoyé par HaryRoseAndMac Voir le message
    Au lieu de perdre du temps à vouloir en créer un nouveau pour combler un besoin de briller aux yeux du monde, ces ingénieurs auraient mieux fait d'améliorer les existants.
    Je pense, au contraire, qu'il est important de créer de nouveaux langages quand ceux-ci permettent d'explorer des idées peu connues.

    Si on prend l'exemple de Haskell, il n'est presque pas utilisé en entreprise, mais il a été une source très importante d'inspiration pour d'autres langages, y compris Rust qui s'est fait une place qui va grandir petit à petit. En effet, les traits de Rust sont inspirés des typeclasses de Haskell.

    Je ne sais pas si la manière qu'a Unison de gérer l'arbre syntaxique inspirera de nouveaux outils ou de nouveaux langages. Mais c'est bien qu'il y ait des gens qui explorent cette piste.

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    août 2022
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : août 2022
    Messages : 436
    Points : 274
    Points
    274
    Par défaut
    Citation Envoyé par Pyramidev Voir le message
    Je pense, au contraire, qu'il est important de créer de nouveaux langages quand ceux-ci permettent d'explorer des idées peu connues.

    Si on prend l'exemple de Haskell, il n'est presque pas utilisé en entreprise, mais il a été une source très importante d'inspiration pour d'autres langages, y compris Rust qui s'est fait une place qui va grandir petit à petit. En effet, les traits de Rust sont inspirés des typeclasses de Haskell.

    Je ne sais pas si la manière qu'a Unison de gérer l'arbre syntaxique inspirera de nouveaux outils ou de nouveaux langages. Mais c'est bien qu'il y ait des gens qui explorent cette piste.
    Pas besoin de créer tout un langage pour ça,
    de la même manière que les revues scientifiques, les équivalents existent dans le monde du logiciel, il aurait suffit de poster ces idées si je suis ta logique.

  6. #6
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    décembre 2003
    Messages
    1 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2003
    Messages : 1 982
    Points : 2 621
    Points
    2 621
    Par défaut
    Bonjour.

    Citation Envoyé par Pyramidev Voir le message
    MDR. Unison est un langage de programmation fonctionnelle statiquement typé.
    Au moins un bon point, c'est un langage typé. Par contre les langages de programmation fonctionnelle, personne n'y croit, hormis les universitaires.

    Citation Envoyé par Pyramidev Voir le message
    Il ne ressemble pas du tout à JavaScript. S'il suffit qu'un langage possède await et reduce pour ressembler de loin à JavaScript, alors le C++ aussi ressemble de loin à JavaScript, puisqu'il possède co_await et std::reduce.
    Le langage C++ existe depuis les années 1980, et le javascript depuis 1995. Le C++ ne peut donc pas ressembler à des langages qui ont été créés après.

    Citation Envoyé par Pyramidev Voir le message
    Je pense, au contraire, qu'il est important de créer de nouveaux langages quand ceux-ci permettent d'explorer des idées peu connues.

    Si on prend l'exemple de Haskell, il n'est presque pas utilisé en entreprise, mais il a été une source très importante d'inspiration pour d'autres langages, y compris Rust qui s'est fait une place qui va grandir petit à petit. En effet, les traits de Rust sont inspirés des typeclasses de Haskell.

    Je ne sais pas si la manière qu'a Unison de gérer l'arbre syntaxique inspirera de nouveaux outils ou de nouveaux langages. Mais c'est bien qu'il y ait des gens qui explorent cette piste.

    HaryRoseAndMac a raison, pas besoin de créer de nouveaux langages. Les bouffons qui créaient un nouveau langage, ne sont en général pas capables d'améliorer un langage existant.

    Il faut quand même dire que javascript et nodejs, c'est du monothread, donc de la bouse intégrale. Unison c'est pareil ?

  7. #7
    Futur Membre du Club
    Inscrit en
    septembre 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : septembre 2002
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Pour info Il existe déjà un projet unison qui n'a à priori rien à voir.

    C'est un outil de synchronisation dossier/fichier local/distant "type rsync" assez efficace

    https://github.com/bcpierce00/unison

Discussions similaires

  1. Proposer une nouvelle partie dans un programme
    Par trashhh2055 dans le forum Débuter
    Réponses: 4
    Dernier message: 22/01/2019, 19h57
  2. CakePHP 3.0 : stabilisation pour le framework PHP qui propose une architecture MVC
    Par Darkaurora dans le forum Bibliothèques et frameworks
    Réponses: 13
    Dernier message: 31/03/2015, 17h39
  3. Réponses: 0
    Dernier message: 20/09/2012, 09h54
  4. Réponses: 2
    Dernier message: 08/09/2008, 17h30
  5. lien qui ouvre une nouvelle page
    Par anthonycosson dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 22/09/2006, 00h23

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