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 !

CUE, un langage open source pour définir, générer et valider des données avec un ensemble d'API et d'outils,
Pourra-t-il concurrencer Jsonnet ?

Le , par Bill Fassinou

25PARTAGES

4  0 
La communauté Cuelang a récemment ajouté un nouveau langage, CUE (Configure Unify Execute), à la grande famille des langages de définition et de configuration de données. CUE est un langage de définition et de validation de données open source qui vise à simplifier les tâches impliquant la définition et l'utilisation de données. D’après l’équipe de développement de CUE, c'est un surensemble de JSON qui permet aux utilisateurs familiarisés avec JSON de se lancer rapidement. Il vous permet aussi de définir un schéma de validation détaillé pour vos données, de définir et d'exécuter des scripts déclaratifs, etc.

D’après sa documentation, CUE est un langage de validation de données et un moteur d'inférence qui tire ses racines de la programmation logique. CUE n’est pas un langage de programmation généraliste, mais il a de nombreuses applications, telles que la validation de données, la modélisation de données, la configuration, l'interrogation, la génération de code et même de scripts. Le moteur d'inférence peut être utilisé pour valider des données dans un code ou pour les inclure dans un pipeline de génération de code. Contrairement à ses langages homologues, CUE fusionne les types et les valeurs en un seul concept.

En effet, selon l’équipe de développement de CUE, alors que dans la plupart des autres langages de la même famille, les types et les valeurs sont strictement distincts, CUE les ordonne dans une hiérarchie unique (un réseau, pour être précis). Il s’agirait d’un concept très puissant qui permet à CUE de faire beaucoup de choses fantaisistes. Selon l’équipe de développement de CUE, le langage est conçu de manière à ce que la combinaison des valeurs de CUE dans n'importe quel ordre donne toujours le même résultat (associatif, commutatif et idempotent).


Les racines de CUE se trouvent dans GCL, le langage de configuration dominant utilisé par Google. GCL a été conçu à l’origine pour configurer Borg, le prédécesseur de Kubernetes. Selon l’équipe, l’idée de départ était d’utiliser l’unification graphique utilisée dans CUE pour GCL. Ainsi, CUE renvoie à l'idée initiale d'utiliser une approche basée sur des contraintes et s'efforce également d'intégrer les leçons tirées de 15 années d'utilisation de GCL. Cela inclut également les enseignements tirés de la progéniture et différentes approches de la configuration. Le nouveau langage possède en général six cas d’utilisation.

La documentation de CUE précise qu’il est utilisable dans un large éventail d'applications liées aux données à savoir :

  • la configuration : comme langage de configuration, CUE gère des fichiers texte pour définir l’état souhaité du système. Il vous permet d’ajouter la validation à vos données existantes (CUE, YAML, JSON), de réduire le passe-partout dans les configurations à grande échelle, ou les deux ;
  • la validation de données : CUE vous permet de valider des données textuelles ou programmatiques ou les documents de base de données. Il vous permet aussi d’effectuer des validations côté client et sur des bases de données orientées document comme MongoDB qui sont caractérisées par un schéma flexible ;
  • définition de schémas : CUE vous permet de définir un schéma pour communiquer avec une API ou une norme et valider la compatibilité avec les versions antérieures ;
  • génération et extraction de code : CUE vous permet de conserver le code de validation en synchronisation entre les bases de code, les définitions Protobuf et les définitions OpenAPI ;
  • requête : CUE vous permet de rechercher les emplacements des instances de types et de valeurs CUE dans les données et de trouver des données correspondant à certains critères. En d'autres termes, les contraintes CUE peuvent être utilisées pour trouver des modèles dans les données. De plus, la documentation précise que des requêtes plus élaborées sous la forme d'une sous-commande « find » ou « query » sont également possibles ;
  • scripts : CUE a une couche de script qui vous permet d’automatiser l'utilisation de vos données sans écrire un autre outil.


Dans ce dernier cas, selon la documentation, la couche de script CUE définit le script déclaratif, exprimé en CUE, au-dessus des données, ce qui résout trois problèmes. Cela permet de travailler autour de la fermeture des définitions CUE (CUE est hermétique) et fournit un moyen facile de partager des scripts et des workflows courants pour utiliser des données. Enfin, il donne à CUE la connaissance de la façon dont les données sont utilisées pour optimiser la validation. D’après les explications de l’équipe, le script CUE est générique et permet aux utilisateurs de définir n’importe quel flux de travail.

En gros, CUE est conçu pour l'automatisation. C’est un langage open source, avec un ensemble complet d’API et d’outils, pour définir, générer et valider toutes sortes de données. Il peut interagir avec diverses autres normes telles que le standard de sérialisation de données YAML, le format d’échange de données JSON, le langage de programmation Go, les tampons de protocole Protobouf et Kubernetes. Il peut aussi s'intégrer au format de description d’API Rest OpenAPI. Vous pouvez en savoir plus en consultant la documentation de l’outil.

Selon certains, cela ressemble à une alternative à Jsonnet qui apporte la validation de schéma et les types stricts. Cependant, ces derniers estiment que la syntaxe est un peu plus compliquée que Jsonnet dont la syntaxe est beaucoup plus simple. De son côté, Jsonnet est un langage de modélisation de données open source pour les développeurs d'applications et d'outils. Il permet de générer des données de configuration, d’organiser, simplifier et d’unifier les données. Il permet également de gérer la configuration tentaculaire.

En effet, ces derniers ont expliqué que Jsonnet possède un net avantage sur CUE et d’autres langages du même type, car il a déjà une intégration avec des EDI qui sont largement utilisés tels que Visual Studio Code et Intellij IDEA. Par conséquent, ils préfèrent continuer leur chemin avec Jsonnet. D’autres par contre apprécient l’effort fourni par l’équipe de CUE et attendent de voir comment va évoluer le langage par la suite.

Source : Cuelang

Et vous ?

Que pensez-vous de CUE ?
Quel langage de modélisation de données utilisez-vous ?
Pensez-vous que CUE puisse parvenir à surpasser Jsonnet ?

Voir aussi

Des ingénieurs demandent à ce que soient ajoutés les opérateurs de type Bash && et || à PowerShell dans une RFC

La version 1.9 d'Elixir est publiée avec l'ajout de nouvelles fonctionnalités et une configuration améliorée

Python 3.8.0 : la première version bêta est publiée avec une API C pour améliorer la configuration de l'initialisation

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