Test du langage de programmation V
- Il s’agit d’un article qui passe en revue les fonctionnalités mises en avant par le langage V en 2022, quelques années après sa sortie, en les testant directement.
- Les fonctionnalités ont été évaluées en trois catégories : non fonctionnel, avertissement, fonctionnel. Voici ci-dessous les résultats de cette évaluation. Les exemples de code utilisés pour l’évaluation ainsi que les justifications figurent tous dans le corps de l’article.
- La liste ci-dessous a été traduite dans le cadre d’un apprentissage de l’anglais, il peut donc y avoir des erreurs factuelles. Merci de l’utiliser uniquement comme référence.
- Un langage simple, facile à maintenir.
- Affirmation subjective.
- N/A
Sécurité
- Absence de null.
- Le langage V permet de créer des pointeurs nuls (références V) sans erreur ni avertissement du compilateur.
- Non pris en charge.
- Absence de valeur indéfinie.
- Il est possible de lire de la mémoire non initialisée sans erreur ni avertissement du compilateur.
- Non pris en charge.
- Absence de comportement indéfini.
- Le compilateur V n’a pas empêché l’écriture de trois formes différentes d’UB. De l’UB se produit.
- Non pris en charge.
- Absence de masquage de variables (quand le même nom existe dans des espaces de noms différents et qu’un nom en masque un autre).
- Il n’a pas été possible de masquer des variables locales.
- Non pris en charge.
- Vérification des bornes.
- Il existe quelques vérifications de base, mais elles peuvent être contournées assez trivialement.
- Avertissement.
- Variables constantes par défaut.
- Les variables ne sont pas des constantes significatives. Il est facile d’assigner une référence constante à une variable déclarée
mut, puis de modifier la variable de sorte que la variable constante d’origine soit elle aussi modifiée.
- Non pris en charge.
- Fonctions pures par défaut.
- Cette affirmation est vide de sens, car elle redéfinit la pureté comme ce que signifie l’impureté.
- (L’auteur souligne que la prise en charge des fonctions d’E/S ne peut qu’être intrinsèquement impure, et que la documentation affirme que toutes les fonctions sauf les fonctions d’E/S sont pures. Mais il explique qu’à partir du moment où elles peuvent appeler des fonctions d’E/S, elles ne sont plus pures. C’est probablement pour cela qu’il dit que le sens a été vidé. Le corps de l’article montre un exemple ridicule où des fonctions pures produisent des valeurs impures.)
- Non pris en charge.
- Structures constantes par défaut.
- Il a déjà été démontré plus haut qu’il est possible de contourner les variables constantes.
- Non pris en charge.
- Vérification d’erreur obligatoire pour
Option et ses valeurs de résultat.
- Fonctionne comme annoncé.
- Types somme (syntaxe du type
type MyType = string | int).
- Les types somme semblent généralement fonctionner, mais présentent des problèmes d’implémentation interne. (En créant deux types supplémentaires, on peut utiliser des références comme types somme, alors que le langage V l’interdit.)
- Avertissement.
- Génériques
- Une implémentation de base existe, mais elle est très boguée et semble complètement déconnectée des promesses de sécurité et de performance du compilateur mises en avant par le langage lui-même.
- Non pris en charge.
- Absence de variables globales.
- V n’empêche en aucune manière significative la création ou la modification d’un état partagé globalement.
- Non pris en charge.
Performances
- Aussi rapide que C (le compilateur backend principal de V produit du code C lisible par un humain)
- Les affirmations de performance de V semblent ne pas être vérifiées.
- Non pris en charge.
- Interopérabilité C sans surcoût
- Fonctionne comme annoncé.
- Allocations minimisées
- Affirmation subjective.
- N/A. (L’auteur montre qu’un code V déclarant un
int, une fois traduit en C, aboutit à un malloc côté C.)
- Sérialisation intégrée sans réflexion à l’exécution
- Fonctionne comme annoncé.
- Compilation en binaires natifs sans aucune dépendance.
- V semble ne pas encore tenir pleinement cette promesse, mais dans l’idée générale il y a une part de vérité : les programmes V sont relativement autonomes et compacts.
- Avertissement.
Compilation rapide
- V compile 1 million de lignes par seconde, et par cœur CPU.
- Le compilateur V n’atteint pas un niveau de performance proche de ce qui est annoncé. (Même le site de benchmark du compilateur V parle plutôt d’environ 200 000 lignes V compilées.)
- Non pris en charge.
- V est écrit en V et peut se compiler lui-même en moins d’une seconde.
- Fonctionne comme annoncé.
- Gestion mémoire innovante
- Les affirmations de V sont peu étayées, et l’implémentation actuelle ne peut pas être qualifiée d’innovante.
- Non pris en charge
1 commentaires
En réalité, il est largement admis que V est encore loin d’être prêt, et ce texte décrit bien le processus qui le démontre. Choisissez simplement dans la liste ce qui vous intéresse, puis vérifiez une fois la démonstration correspondante.