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
Le 2019-04-08 18:56:07, par Patrick Ruiz, Chroniqueur Actualités
Tout d’abord, des exemples d’utilisation du langage pour la résolution de problèmes classiques comme celui de dénombrement du nombre d’occurrences d’un mot au sein d’une phrase ou encore le calcul des nombres d’une suite de Fibonacci.
Les ressemblances sautent à l’œil pour un développeur habitué au langage C. En effet, on retrouve l’utilisation d’accolades ouvrantes et fermantes pour la délimitation des blocs de code ou encore l’utilisation de la fonction printf() pour l’écriture sur la sortie standard. Mais, le visuel met également ceux qui font un usage extensif du C d’accord sur le fait qu’il s’agit d’un autre langage de programmation ; il n’y a qu’a voir avec la forme de l’opérateur d’affectation (:=) ou l’usage prononcé de l’indentation. D’après ses auteurs, Muon est un langage inspiré de C, mais également de C# et du langage Go de Google. Deux de ses principes de conception résument ce qu’est Muon : langage de programmation impératif, à fort typage statique et orienté données. Le langage s’appuie de façon essentielle sur les fonctions, les structures, les énumérations et toutes les notions liées (pointeurs de fonctions, etc). Avec Muon, pas de notions de classes, d’héritage, etc.
À la réalité, l’héritage du langage C, qui semble beaucoup plus perceptible que celui de C# et de Go fait débat sur certains aspects. Un commentaire sur la toile résume bien la situation surtout pour ce qui est des types de variables.
Envoyé par un internaute
.
D’après la note d’information des créateurs du langage, Muon vise un degré de performance égal à celui du langage C. Mais, l’équipe de développement n’a pas publié de comparatifs des performances du compilateur avec ceux disponibles pour le langage C. Le motif probable : la compilation de code Muon mène d’abord à l’obtention de code C par la suite transformé en exécutable par un compilateur C. L’équipe Muon annonce à ce propos qu’elle travaille à intégrer un backend LLVM pour permettre l’amélioration des performances. Autre grosse restriction pour le moment : l’actuel compilateur est conçu pour tourner sur une architecture 32 bits. L’équipe Muon a fait savoir qu’elle est à pied d’œuvre pour les plateformes Windows, Linux et macOS en 64 bits.
Source : GitHub
Et vous ?
Avez-vous déjà entendu parler de ce langage ?
Êtes-vous d’accord avec la remarque sur le nommage des types de données ?
Quels sont les aspects de la syntaxe qui vous plaisent ou déplaisent ?
Muon peut-il au moins faire jeu égal avec le langage C comme recherché par ses auteurs ?
Voir aussi :
Quel langage pourrait remplacer C ? Après avoir comparé Go, Rust et D, le choix d'Andrei Alexandrescu se porte sur D
Pourquoi les langages C et C++ auraient-ils encore de nombreuses années devant eux ? Donnez votre avis
C2 : un langage qui se présente comme une évolution de C, plus rapide, sans fichiers d'en-tête, avec système de build intégré et d'autres changements
Le langage de programmation V sera disponible en open source à partir de juin 2019 et serait rapide, léger et capable de traduire vos projets C/C++
Code : |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Array { countOccurrences(items Array<T>) { map := Map.create<T, int>() for items { count := map.getOrDefault(it) map.addOrUpdate(it, count + 1) } return map } } main() { ::currentAllocator = Memory.newArenaAllocator(4096) s := "How much wood could a wood chuck chuck if a wood chuck could chuck wood?" freq := s.split(' ').countOccurrences() // Equivalent to: Array.countOccurrences(ref string.split(s, ' ')) for e in freq { Stdout.writeLine(format("word: {}, count: {}", e.key, e.value)) } } |
Dénombrement du nombre d’occurrences d’un mot au sein d’une phrase
Code : |
1 2 3 4 5 6 7 8 9 10 11 12 13 | main() { n := 7 a := 1_u b := 1_u for i := 1; i < n { temp := a a += b b = temp } // alternatively, we could have counted down: // for i := n; i > 1; i -= 1 { ... } printf("%d\n", a) } |
Calcul des éléments de la suite de Fibonacci
Les ressemblances sautent à l’œil pour un développeur habitué au langage C. En effet, on retrouve l’utilisation d’accolades ouvrantes et fermantes pour la délimitation des blocs de code ou encore l’utilisation de la fonction printf() pour l’écriture sur la sortie standard. Mais, le visuel met également ceux qui font un usage extensif du C d’accord sur le fait qu’il s’agit d’un autre langage de programmation ; il n’y a qu’a voir avec la forme de l’opérateur d’affectation (:=) ou l’usage prononcé de l’indentation. D’après ses auteurs, Muon est un langage inspiré de C, mais également de C# et du langage Go de Google. Deux de ses principes de conception résument ce qu’est Muon : langage de programmation impératif, à fort typage statique et orienté données. Le langage s’appuie de façon essentielle sur les fonctions, les structures, les énumérations et toutes les notions liées (pointeurs de fonctions, etc). Avec Muon, pas de notions de classes, d’héritage, etc.
Code : |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | // Guessing game main() { ::currentAllocator = Memory.newArenaAllocator(16 * 1024) rs := time(null) // Initialize random seed num := cast(Random.xorshift32(ref rs) % 100 + 1, int) while true { Stdout.write("Your guess: ") input := Stdin.tryReadLine() if input.error != 0 { break } pr := int.tryParse(input.value) if !pr.hasValue { continue } guess := pr.value if guess < num { Stdout.writeLine("Try higher") } else if guess > num { Stdout.writeLine("Try lower") } else { Stdout.writeLine("You got it!") break } } } |
Jeu de devinettes.
À la réalité, l’héritage du langage C, qui semble beaucoup plus perceptible que celui de C# et de Go fait débat sur certains aspects. Un commentaire sur la toile résume bien la situation surtout pour ce qui est des types de variables.
D’après la note d’information des créateurs du langage, Muon vise un degré de performance égal à celui du langage C. Mais, l’équipe de développement n’a pas publié de comparatifs des performances du compilateur avec ceux disponibles pour le langage C. Le motif probable : la compilation de code Muon mène d’abord à l’obtention de code C par la suite transformé en exécutable par un compilateur C. L’équipe Muon annonce à ce propos qu’elle travaille à intégrer un backend LLVM pour permettre l’amélioration des performances. Autre grosse restriction pour le moment : l’actuel compilateur est conçu pour tourner sur une architecture 32 bits. L’équipe Muon a fait savoir qu’elle est à pied d’œuvre pour les plateformes Windows, Linux et macOS en 64 bits.
Source : GitHub
Et vous ?
Voir aussi :
-
PyramidevExpert éminentEncore un langage qui va tomber dans l'oubli.
Concernant les performances, elles seront un peu freinées par le choix de conception suivant :
No undefined behavior. Undefined behavior can lead to various, hard-to-spot, bugs. In Muon, all behavior, including platform-specific behavior, is defined.le 08/04/2019 à 19:28 -
CS FSMembre avertile 11/04/2019 à 17:13
-
LittleWhiteResponsable 2D/3D/JeuxBonjour,
Je trouve l'exemple du D très mauvais pour ce cas. Le D existe depuis presque 20 ans et continue à être supporté et mis à jour. Il y a plein d'autres langages (que j'ai déjà oublié, évidemment) qui ne sont ni mis à jour, ni supporté. le 09/04/2019 à 10:25 -
KsassPeukMembre confirméPour C++, il n'y a pas de liste à ma connaissance. Pour C, il y a maintenant une annexe dans la norme il me semble. Et sinon il doit y avoir des articles de John Regehr.
Sinon pour commenter cette news : reprendre les commentaires concernant n'importe quel langage pour lequel on a pour l'instant des promesses (juré craché) et rien d'autre.le 09/04/2019 à 10:32 -
archqtMembre émériteEt un de plus, un lol
Bon y a moins de création de nouveaux langages que de création de nouvelles distributions linux c'est déjà ça
Mais bon à part les créateurs personne ne va l'utiliser donc...il suffit de regarder le langage Dle 08/04/2019 à 22:42 -
SteinvikelMembre expert...à ce propos, quelqu'un sait où l'on peut trouver une liste des comportements non défini par langage ?
ex: tout les cas entrainant un comportement non-défini en C++17le 08/04/2019 à 19:41 -
SongbirdMembre expertMais bon à part les créateurs personne ne va l'utiliser donc...il suffit de regarder le langage Dle 09/04/2019 à 1:31
-
archqtMembre émériteJe ne conteste pas les avantages de D, c'était un exemple, mais il est quand même très peu utilisé et il n'a pas de courbe de croissance d'utilisation. Y a t il des offres demandant D ? peut être mais cela va rester anecdotique.le 09/04/2019 à 10:32
-
archqtMembre émériteJe ne doute pas qu'il soit toujours supporté et mis à jour MAIS sa courbe de croissante au niveau nombre d'utilisateur est faible. A part pour l'embarqué ou il se classe en sixième position d'après le classement IEEE https://spectrum.ieee.org/static/index/2016/0/1/1/1/1/50/1/50/1/50/1/30/1/30/1/30/1/20/1/20/1/5/1/5/1/20/1/100/index/2016/0/0/1/1/1/50/1/50/1/50/1/30/1/30/1/30/1/20/1/20/1/5/1/5/1/20/1/100/index/2016/0/0/0/1/1/50/1/50/1/50/1/30/1/30/1/30/1/20/1/20/1/5/1/5/1/20/1/100/index/2016/0/0/0/0/1/50/1/50/1/50/1/30/1/30/1/30/1/20/1/20/1/5/1/5/1/20/1/100/index/2016/0/0/0/1/1/50/1/50/1/50/1/30/1/30/1/30/1/20/1/20/1/5/1/5/1/20/1/100/ sinon il est au delà de la 20eme place facilement.
Quand on pense que le Pascal, qui est encore performant, se trouve aussi (hélas certainement) au niveau de D, cela sera difficile pour D de remonter dans les classements, donc muon...c'est mission impossible. Cela n'engage que moi mais...le 09/04/2019 à 10:39 -
MadmacMembre extrêmement actifTant qu'à apprendre un nouveau langage autant que cela soit Julia. Julia a été écrit (On emploi le masculin ou le féminin, car c'est UN langage avec un nom FÉMININ ? Je mis perd!) de façon à exploiter les multi-coeurs. Il semble rien apporté de nouveau, par rapport au C. Tout nouveau langage destiné à utiliser une machine virtuelle devrait être doté de support pour la programmation fonctionnelle: Pour tirer partie au maximum du compilateur Just-in-time (si vous connaissez le terme français, fait-le-moi savoir) et de la possibilité de parallélisme que cela permet.le 09/04/2019 à 23:19