Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Chroniqueur Actualités
    Avatar de Patrick Ruiz
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    février 2017
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : février 2017
    Messages : 728
    Points : 25 646
    Points
    25 646

    Par défaut Muon, un langage de programmation de bas niveau inspiré de C, C# et Go vise le degré de performance du C

    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

    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.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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


    Nom : muon.png
Affichages : 4206
Taille : 13,0 Ko

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

    Citation Envoyé par un internaute
    J'ai une critique en ce qui concerne la façon dont les types de données de base sont nommés. Les noms de types comme long, short, char (et le très cher long long) ne devraient plus être utilisés dans un nouveau langage de programmation. Ils sont déroutants (de même que la réponse à la question : combien de bits y a-t-il dans votre int, long, short ? (dont on sait qu'elle dépend à la fois de l'architecture cible et du compilateur)) et depuis les années 70 nous avons découvert dans la douleur qu'ils ne sont pas extensibles. Il en va de même pour le sort du type char dans le monde post ASCII. Le langage C continue de conserver toutes ces antiquités pour les besoins de rétro compatibilité, mais l'usage de types comme uint32_t définis dans stdint.h est devenu une pratique courante pour les bases de code modernes.

    Certains choix ne sont pas non plus compatibles avec C ou Go, ce qui ajoute à la confusion. En effet, sous Muon le type int a une taille de 32 bits et le type long a une taille de 64 bits sur toutes les architectures ! Donc, même pour les programmeurs C/C++ et Go, la nostalgie peut mener au piège. N'ayant aucune familiarité avec C# (je n'ai pas beaucoup fait usage de Windows depuis les années 90 et C# n'existe pratiquement pas pour Linux/macOS que Muon prétend cibler), j'ai creusé et il semble que ce choix est basé sur l'adoption déformée du standard C89 par le C#.

    Go pour sa part définit le type int comme étant la taille du registre entier natif sur l'architecture cible (ce que j'aime bien parce que c'est ce que int est censé signifier à l'origine ; c'était la compréhension commune lors du portage de code du langage C vers l'assembleur), ce qui unifie uint et size_t, rendant size_t obsolète.
    De façon ironique, Muon utilise le suffixe explicite du nombre de bits pour le type de données bool32 (alors qu'il n'y a pas de bool16 ou bool64). D'ailleurs, je ne sais même pas pourquoi on pourrait l'avoir comme type de base pour un langage de programmation.

    J'espère vraiment que les créateurs de ce langage adopteront une convention de nommage similaire à celle de stdint.h dans C99 ou Go dont ils prétendent s'être inspirés
    .
    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++
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre expert
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    avril 2016
    Messages
    922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : avril 2016
    Messages : 922
    Points : 3 953
    Points
    3 953

    Par défaut

    Encore 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.

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    janvier 2014
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2014
    Messages : 519
    Points : 1 183
    Points
    1 183

    Par défaut

    ...à 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++17
    Pensez à utiliser les pouces d’appréciation, pour participer à la visibilité de l'apport d'un propos, ou l'intérêt que vous y prêtez... qu'il soit positif ou négatif.

  4. #4
    Membre confirmé
    Profil pro
    retraité
    Inscrit en
    décembre 2010
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : décembre 2010
    Messages : 218
    Points : 450
    Points
    450

    Par défaut

    Et 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 D

  5. #5
    Expert confirmé

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    juin 2015
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2015
    Messages : 482
    Points : 4 084
    Points
    4 084
    Billets dans le blog
    8

    Par défaut

    Mais bon à part les créateurs personne ne va l'utiliser donc...il suffit de regarder le langage D
    Oh détrompe-toi, je suis déjà tombé sur des devs se servant du D (pas plus tard que ces 4 derniers jours) pour des choses bien concrètes. Dans ce cas précis, c'était pour du modding.
    Avant de poster: FAQ Rust; FAQ Dart; FAQ Java; FAQ JavaFX.
    Vous souhaiteriez vous introduire au langage Rust ? C'est par ici ou ici !
    Une question à propos du langage ? N'hésitez pas à vous rendre sur le forum !


    Pour contribuer à la rubrique, vous pouvez me contacter par MP (Sorry, we're closed!) ou contacter directement la rédaction.

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    24 163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 24 163
    Points : 177 128
    Points
    177 128
    Billets dans le blog
    47

    Par défaut

    Bonjour,

    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é.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre confirmé
    Profil pro
    retraité
    Inscrit en
    décembre 2010
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : décembre 2010
    Messages : 218
    Points : 450
    Points
    450

    Par défaut

    Citation Envoyé par Songbird Voir le message
    Oh détrompe-toi, je suis déjà tombé sur des devs se servant du D (pas plus tard que ces 4 derniers jours) pour des choses bien concrètes. Dans ce cas précis, c'était pour du modding.
    Je 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.

  8. #8
    Membre confirmé Avatar de KsassPeuk
    Homme Profil pro
    Post-Doctorant
    Inscrit en
    juillet 2013
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Post-Doctorant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2013
    Messages : 126
    Points : 519
    Points
    519

    Par défaut

    Citation Envoyé par Steinvikel Voir le message
    ...à 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++17
    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.

  9. #9
    Membre confirmé
    Profil pro
    retraité
    Inscrit en
    décembre 2010
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : décembre 2010
    Messages : 218
    Points : 450
    Points
    450

    Par défaut

    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    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é.
    Je 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/ind.../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...

  10. #10
    Membre éprouvé
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2004
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : juin 2004
    Messages : 734
    Points : 1 005
    Points
    1 005
    Billets dans le blog
    1

    Par défaut

    Tant 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.
    intel i7
    OpenSuse Leap 42.2
    Plasma et Cinnamon

  11. #11
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2016
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : novembre 2016
    Messages : 79
    Points : 261
    Points
    261

    Par défaut

    Citation Envoyé par Madmac Voir le message
    (si vous connaissez le terme français, fait-le-moi savoir).
    Compilation à la volée.

  12. #12
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Cyber sécurité
    Inscrit en
    mai 2004
    Messages
    9 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Cyber sécurité

    Informations forums :
    Inscription : mai 2004
    Messages : 9 634
    Points : 25 736
    Points
    25 736

    Par défaut

    Hello,

    1/ Quel est le but de ce langage ? S'ils l'ont créé, c'est bien dans un but non, pas pour passer le temps ?

    2/ Rien que dans les exemples ci-dessus, il y a des doublons qui me chiffonnent : pourquoi supporter printf et Stout.writeLine ? C'est pour éviter d'écrire un \n dans le printf ?? Ce genre de doublons ne me dit rien qui vaille.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  13. #13
    Membre éprouvé
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2004
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : juin 2004
    Messages : 734
    Points : 1 005
    Points
    1 005
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par CS FS Voir le message
    Compilation à la volée.
    Merci!
    intel i7
    OpenSuse Leap 42.2
    Plasma et Cinnamon

Discussions similaires

  1. Terra : le nouveau langage de programmation bas niveau sort
    Par Cedric Chevalier dans le forum Autres langages
    Réponses: 1
    Dernier message: 24/05/2013, 12h43
  2. C et programmation bas niveau
    Par ledawa dans le forum Windows
    Réponses: 4
    Dernier message: 24/09/2007, 20h45
  3. langage de programmation de niveau moyen
    Par sjprm dans le forum Calcul scientifique
    Réponses: 9
    Dernier message: 21/02/2007, 10h26
  4. Driver - Programmation Bas niveau
    Par abennis dans le forum Administration système
    Réponses: 15
    Dernier message: 21/07/2006, 16h50
  5. Programmation bas niveau de la carte vidéo !!
    Par nico le terrible dans le forum Assembleur
    Réponses: 3
    Dernier message: 03/03/2005, 11h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo