Microsoft vise la simplicité avec le langage de programmation Bosque

Microsoft a lancé un nouveau projet open-source pour développer le langage de programmation Bosque. Le but du projet de langage Bosque est de construire un langage de programmation fonctionnel qui évite la «complexité accidentelle» dans le processus de développement.

Les objectifs de conception pour le langage Bosque incluent une productivité améliorée des développeurs, une meilleure qualité logicielle et l'activation d'une gamme de nouveaux compilateurs et d'expériences d'outils. 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.

Un objectif clé est l'élimination de la complexité accidentelle. Le code de Bosque est censé être simple et facile à comprendre pour les machines et les humains. Mais Bosque reste très en développement à ce stade; les promoteurs ne recommandent pas d'utiliser Bosque pour tout travail de production. Les développeurs sont encouragés à l'expérimenter.

Certaines fonctionnalités et choix de conception effectués pour Bosque sont les suivants:

  • Toutes les valeurs sont immuables, Bosque adoptant un modèle fonctionnel avec des données immuables. La compréhension de l'effet d'une déclaration de bloc de code est simplifiée lorsqu'elle est sans effet secondaire, indique la documentation de Bosque. Les langages fonctionnels ont bénéficié de simplifications du développement de programmes, d'outils sophistiqués et d'optimisations de compilateurs activées par ce modèle.
  • La programmation fonctionnelle est fusionnée avec des étendues de bloc et des {…}accolades en permettant plusieurs affectations à des variables pouvant être mises à jour var!.
  • Les fonctions sont des valeurs et des types de première classe.
  • Les constructeurs Lambda combinent la définition de code pour le corps lambda avec une sémantique de copie de variable pour la fermeture des variables capturées lors de la création lambda.
  • Un système de type simple et sans opinion permet d'utiliser une gamme de types structurels, combinés et nominaux pour transmettre l'intention et coder les caractéristiques pertinentes du domaine du problème.
  • Les chaînes typées fournissent un mécanisme pour soulever la structure connue concernant le contenu d'une chaîne dans le type d'une manière qui est significative pour les personnes et utilisée par le vérificateur de type.
  • Les paramètres peuvent être filetés via le refpassage d'arguments. Une alternative aux valeurs de retour multiple, cela simplifie les scénarios où une variable est transmise à une méthode qui peut l'utiliser et la mettre à jour. Autoriser la mise à jour dans le paramètre élimine la gestion de la valeur de retour supplémentaire qui serait nécessaire. Cette fonctionnalité n'est pas encore implémentée.
  • Les arguments nommés sont fournis, tout comme les opérateurs repos et propagation. Ceux-ci peuvent effectuer la manipulation des données dans le cadre des appels et des opérations de constructeur.
  • Un support de premier ordre est offert pour l'expression d'une gamme d'invariants, de vérifications de cohérence et d'assertions de diagnostic.
  • 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 à concentrer le code sur l'intention globale 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 telles que la projection, la mise à jour multiple et la fusion.
  • Avec une capacité de traitement itératif, les boucles structurées sont échangées contre des constructions de traitement itératif de haut niveau. La suppression du passe-partout de l'écriture des mêmes boucles élimine les classes d'erreurs, y compris les calculs liés; l'intention est clairement définie.

Bosque devient le dernier projet de langage chez Microsoft, qui a produit des langages dont C #, un langage orienté objet; F #, un langage fonctionnel; et TypeScript, un sur-ensemble typé de JavaScript. Le géant du logiciel a eu un bon degré de succès dans le développement de langages qui gagnent en popularité. C #, par exemple, s'est classé cinquième et TypeScript 12e dans le plus récent classement des langages RedMonk, basé sur des discussions dans Stack Overflow et sur l'utilisation du code dans GitHub. 

Vous pouvez trouver de la documentation Bosque, des exemples et une implémentation de référence sur GitHub. Des tutoriels sont en préparation.