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 !

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

Le , par Malick

171PARTAGES

10  0 
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.


« 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
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

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

Avatar de Dymmm
Membre du Club https://www.developpez.com
Le 22/04/2019 à 11:50
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é.
2  0 
Avatar de Pyramidev
Expert confirmé https://www.developpez.com
Le 23/04/2019 à 2:30
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à.
2  0 
Avatar de LeclercqBertrand
Membre du Club https://www.developpez.com
Le 23/04/2019 à 10:19
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.
2  0 
Avatar de Dymmm
Membre du Club https://www.developpez.com
Le 23/04/2019 à 21:59
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.
2  0 
Avatar de le merou
Nouveau membre du Club https://www.developpez.com
Le 22/04/2019 à 10:27
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.
2  1 
Avatar de Phago
Membre habitué https://www.developpez.com
Le 29/04/2019 à 15:41
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...
0  0 
Avatar de nhugodot
Membre régulier https://www.developpez.com
Le 29/04/2019 à 12:21
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)
0  1 
Contacter le responsable de la rubrique Programmation

Partenaire : Hébergement Web