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 fonctionnels Discussion :

Microsoft Research lance Bosque, un langage de programmation sans boucles, open source, inspiré par TypeScript


Sujet :

Langages fonctionnels

  1. #1
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 131
    Points : 83 964
    Points
    83 964
    Billets dans le blog
    15
    Par défaut Microsoft Research lance Bosque, un langage de programmation sans boucles, open source, inspiré par TypeScript
    Microsoft Research lance Bosque, un nouveau langage de programmation sans boucles et open source,
    inspiré par TypeScript

    Microsoft Research a lancé un nouveau projet open source dont l'objectif principal est de développer un langage de programmation dénommé Bosque. Selon son éditeur, l'idée de créer Bosque résulte de la volonté de concevoir un langage de programmation fonctionnel qui évite toute complexité accidentelle dans le processus de développement et de codage. En d'autres termes, l'équipe de chercheurs à l'origine du projet estime que le nouveau langage de programmation Bosque est conçu pour écrire du code simple, clair et facile à comprendre par les humains et les machines.

    Nom : Bosque.jpg
Affichages : 39276
Taille : 30,4 Ko

    « Les objectifs de conception du langage Bosque comprennent l'amélioration de la productivité des développeurs, l'amélioration de la qualité des logiciels et la mise en œuvre d'une gamme de nouveaux compilateurs et de nouvelles expériences d'outils de développement. Le nouveau langage se positionne comme une expérience de conception régularisée pour un cycle de vie de développement logiciel assisté par machine, rapide et fiable », soutient l'équipe des chercheurs de Microsoft.

    D'après les informations recueillies, Bosque dérive d'une combinaison de syntaxe et de types inspirés par TypeScript et de la sémantique de ML (Meta Language) et Node/JavaScript. Mark Marron, chercheur en informatique chez Microsoft, décrit le nouveau langage de programmation comme un effort permettant d'aller au-delà du modèle de programmation structurée qui est devenu populaire dans les années 1970. Il convient également de rappeler que le paradigme de programmation structurée, dans lequel le contrôle des flux est géré avec des boucles, des conditions et des sous-routines, est devenu populaire suite à un article d'Edsger Dijkstra intitulé " Go To Statement Considered Harmful " et publié en 1968.

    Pour Marron, il est possible de faire mieux en programmation notamment en éliminant les sources de complexité comme les boucles, l'état mutable et l'égalité de référence. C'est ce qu'apporte Bosque, qui représente un paradigme de programmation que Marron, dans un un rapport technique qu'il a écrit, appelle « programmation régularisée ».

    « Ce modèle s'appuie sur le succès de la programmation structurée et des types de données abstraites en simplifiant les modèles de programmation existants sous une forme régularisée qui élimine les principales sources d'erreurs, simplifie la compréhension et la modification du code et convertit de nombreuses tâches de raisonnement automatisé en propositions triviales », explique Marron dans son document technique.

    À quoi ressemble Bosque ?

    Voici un exemple de code écrit en Bosque ; c'est l'équivalent d'une boucle en JavaScript où // désigne un commentaire d'une seule ligne :

    Code Bosque : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //Functor (Bosque) 
    
    var a = List[Int]@{...}; 
    //Pre: true 
    
    var b = a.map[Int](fn(x) => x*2); 
    //Post: List[Int]::eq(fn(x, y) => y == x*2, a, b)

    Ci-après quelques caractéristiques et choix de conception faits pour le langage Bosque :

    • toutes les valeurs sont immuables. La documentation de Bosque souligne que Bosque adopte un modèle fonctionnel avec des données immuables et la compréhension de l'effet d'une déclaration de bloc de code est simplifiée lorsqu'elle est sans effet secondaire ;
    • la programmation fonctionnelle est fusionnée avec les blocs de portée et les accolades {…} en permettant des affectations multiples à des variables modifiables ;
    • les fonctions sont des valeurs et des types de première classe ;
    • les arguments nommés sont implémentés, de même que les opérateurs de repos, d'épandage. Ceux-ci peuvent effectuer des manipulations de données dans le cadre d'invocations et d'opérations de construction ;
    • les opérations de données algébriques en masse dans Bosque commencent par des lectures en masse et des mises à jour des valeurs de données. Les opérateurs produits aident à focaliser le code sur l'intention générale et permettent aux développeurs d'effectuer un raisonnement algébrique sur les opérations de structure de données. Les opérations algébriques sont fournies pour les types de données, les tuples, les enregistrements et les types nominaux, ainsi que pour les opérations de projection, de mise à jour multiple et de fusion ;
    • avec une capacité de traitement itératif, les boucles structurées sont échangées pour des constructions de traitement itératif de haut niveau. En supprimant l'expression standard de l'écriture des mêmes boucles, on élimine les catégories d'erreurs, y compris les calculs liés ; l'intention est clairement exprimée ;
    • etc.

    Comme évoqué plus haut, un des objectifs premiers de Bosque est l'élimination de la complexité accidentelle, par conséquent le code Bosque est censé être simple et facilement compréhensible aussi bien par les humains que par les machines. Il convient par ailleurs de souligner que Bosque est encore en développement avancé et ses promoteurs recommandent de ne pas l'utiliser pour le moment dans les environnements de production. Cela dit, les développeurs sont invités à l'expérimenter.

    Le projet Bosque est hébergé sur GitHub.

    Source : Microsoft - Documentation de Bosque

    Et vous ?

    Que pensez-vous de ce nouveau projet open source de Microsoft ?
    Allez-vous tester ce nouveau langage ?

    Voir aussi

    Muon, un langage de programmation de bas niveau inspiré de C, C# et Go vise un degré de performance égal à celui du C~~ sous Windows, Linux et macOS

    La version 0.4.0 de Zig est disponible, le langage peut-il vraiment remplacer le C et devenir le nouveau standard pour la programmation système ?

    Programmation : une étude révèle les langages les plus voraces en énergie, Perl, Python et Ruby en tête, C, Rust et C++, les langages les plus verts
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 38
    Points : 46
    Points
    46
    Par défaut
    Le problème des boucles n'est pas la structure en elle-même mais le fait qu'on ait utilisé le zéro comme un index possible d'un tableau, ce qui est malencontreusement la source de la majorité des erreurs de boucles.

    Un casse tête dès que l'on change de langage pour savoir comment l'indexation est implémentée.

    En python, range(3) permet une énumération de 0 à 2, et range(3, 6) une énumération de 3 à 5...

    C'est complètement c** de commencer à compter à partir de 0, c'est contredire le sens même du zéro.

  3. #3
    Membre actif
    Inscrit en
    Juin 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 44
    Points : 205
    Points
    205
    Par défaut
    Citation Envoyé par le merou Voir le message
    Le problème des boucles n'est pas la structure en elle-même mais le fait qu'on ait utilisé le zéro comme un index possible d'un tableau, ce qui est malencontreusement la source de la majorité des erreurs de boucles.

    Un casse tête dès que l'on change de langage pour savoir comment l'indexation est implémentée.

    En python, range(3) permet une énumération de 0 à 2, et range(3, 6) une énumération de 3 à 5...

    C'est complètement c** de commencer à compter à partir de 0, c'est contredire le sens même du zéro.
    Commencer à numéroter les données d'un tableau à partir de 0 est logique pour les langages de bas niveau puisque qu'il sagit d'un offset par rapport à l'adresse de début de la liste, mais c'est effectivement plus discutable pour les langages de haut niveau tel que Python. Plusieurs d'entre eux ont fait un autre choix ( https://en.wikipedia.org/wiki/Compar...guages_(array) ).

    Pour le reste Microsoft va devoir, selon moi, proposer un peu plus, sans quoi son langage sera vite oublié.

  4. #4
    Expert éminent
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    Avril 2016
    Messages
    1 469
    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 469
    Points : 6 102
    Points
    6 102
    Par défaut
    Je viens de lire la documentation du langage Bosque et je ne vois pas l'intérêt de ce langage par rapport à ce qui existe.
    • Bosque ne fait pas partie des langages qui étendent un langage existant, comme TypeScript qui étend JavaScript.
    • Bosque ne fait pas partie des langages qui permettent de gérer le bas niveau, comme C, C++ et Rust.
    • Bosque ne fait pas partie des langages qui font un paquet de contrôles à la compilation, comme Haskell, Rust et D.
    • Bosque ne fait pas partie des langages qui permettent de faire de la métaprogrammation, comme les dialectes du Lisp.
    • Bosque ne fait pas partie des langages qui cherchent à être à la fois rapides à apprendre et accessibles aux débutants, comme Go.
    • Bosque ne fait pas partie des langages qui ont plein d'outils et de bibliothèques déjà disponibles, comme beaucoup de langages utilisés en entreprise.


    Du coup, à quoi sert-il ?

    Je copie-colle ici l'abstract de Regularized Programming with the Bosque Language :
    The rise of Structured Programming and Abstract Data Types in the 1970's represented a major shift in programming languages. These methodologies represented a move away from a programming model that reflected incidental features of the underlying hardware architecture and toward a model that emphasized programmer intent more directly. This shift simultaneously made it easier and less error prone for a developer to convert their mental model of a system into code and led to a golden age of compiler and IDE tooling development. This paper takes another step on this path by further lifting the model for iterative processing away from low-level loop actions, enriching the language with algebraic data transformation operators, and further simplifying the problem of reasoning about program behavior by removing incidental ties to a particular computational substrate and indeterminate behaviors. We believe that, just as structured programming did years ago, this regularized programming model will lead to massively improved developer productivity, increased software quality, and enable a second golden age of developments in compilers and developer tooling.
    Quand on lit l'abstract, on a l'impression que les auteurs du langage Bosque veulent révolutionner le développement logiciel.
    Mais, quand je lis les fonctionnalités du langage, je ne vois qu'une combinaison d'idées déjà existantes dans d'autres langages et je ne vois pas de cas d'utilisation de cette combinaison-là.

  5. #5
    Membre du Club
    Profil pro
    Dirigeant
    Inscrit en
    Juin 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Dirigeant

    Informations forums :
    Inscription : Juin 2005
    Messages : 13
    Points : 56
    Points
    56
    Par défaut
    Plutôt que d'inventer de nouveaux langages qui périclitent aussi rapidement qu'ils sont apparus, il serait plus utile de se concentrer sur un langage, de l'améliorer et de le rendre universel. Mais la tour de Babel ça a toujours été la spécialité de l'informatique.

  6. #6
    Membre actif
    Inscrit en
    Juin 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 44
    Points : 205
    Points
    205
    Par défaut
    Citation Envoyé par LeclercqBertrand Voir le message
    Plutôt que d'inventer de nouveaux langages qui périclitent aussi rapidement qu'ils sont apparus, il serait plus utile de se concentrer sur un langage, de l'améliorer et de le rendre universel. Mais la tour de Babel ça a toujours été la spécialité de l'informatique.
    Ba... c'est ce que C++ essai de faire, mais bon, même si j'aime ce langage pour des raisons logiques et/ou sentimentales, il ne sera jamais (avis personnel) le langage qui permettra de faire avancer la programmation.
    Il faut partir sur de nouvelles bases, avec des nouveaux langages, en gardant à l'esprit les erreurs du passé. Je parle de plusieurs langages car il y a de nombreux cas d'utilisations ne nécessitant pas les mêmes paradigmes.
    Bon, pour le moment Bosque ne me botte pas tellement, mais j'aimerai bien voir quelques unes de ses principes ajouté au Go.

  7. #7
    Membre habitué
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2015
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2015
    Messages : 82
    Points : 155
    Points
    155
    Par défaut
    Je me demande toujours pourquoi on reste bloqué sur une description de programme en texte, alors que les humains ont inventé d'autres formes de langues comme les idéogrammes, ou des langages à base de schema (merise, sadt, UML surtout) plus a même de bien retranscrire un état et des processus, clairs, explicites, universels, sans erreurs,... A quand Microsoft ou Google voire Apple, le chantre de l'UI, enfin inventer un tel langage graphique ? (ne me parlez pas de Scratch ou des L4G des années 90 comme Magic, mais c'est néanmoins dans le même esprit)

  8. #8
    Membre habitué
    Homme Profil pro
    Etudiant
    Inscrit en
    Février 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 115
    Points : 139
    Points
    139
    Par défaut
    Pour le reste Microsoft va devoir, selon moi, proposer un peu plus, sans quoi son langage sera vite oublié.
    Du coup, à quoi sert-il ?
    Plutôt que d'inventer de nouveaux langages qui périclitent aussi rapidement qu'ils sont apparus, il serait plus utile de se concentrer sur un langage, de l'améliorer et de le rendre universel. Mais la tour de Babel ça a toujours été la spécialité de l'informatique.
    C'est un projet de R&D, je vois pas le mal de faire des POC dont le but est d'arriver sur des nouveaux paradigmes de programmation, c'est pas fait pour écrire votre prochain backend.
    Je trouve ça cool de voir un projet r&d d'une grosse boite comme MS en open-source, ça aurait très bien pu rester en interne...

Discussions similaires

  1. Réponses: 9
    Dernier message: 13/04/2017, 04h39
  2. CodeCombat, un jeu d'apprentissage à la programmation, passe en open source
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 27
    Dernier message: 16/01/2014, 14h29
  3. Smile lance son référentiel en ligne des meilleures solutions open source
    Par Hinault Romaric dans le forum Logiciels Libres & Open Source
    Réponses: 0
    Dernier message: 13/09/2013, 15h07
  4. Réponses: 9
    Dernier message: 14/08/2012, 16h38

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