• # Best comment ever

    Posté par  . Évalué à 10 (+17/-0).

    Even Beethoven wrote his Symphony in C

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

  • # mine is better

    Posté par  . Évalué à 1 (+0/-1).

    Si on ne cible qu'une seule plateforme, on peut faire directement de l'assembleur et c'est pas forcément plus compliqué…

    Sinon il y a D qui est bien mieux et pas aussi complexe que C++ ! On peut préférer aussi Go ou Rust. Jdçjdr

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

    • [^] # Re: mine is better

      Posté par  (site Web personnel) . Évalué à 5 (+4/-0).

      Tiens donc, on a pas regardé la vidéo?

      I like interacting with hardware from a software perspective. I have yet to see a language that comes close to C in that respect.

      If you think like a computer, writing C actually makes sense.

      When I read C, I know what the assembly language will look like, and that's something I care about.

      Ni D, ni C++, ni Go, ni Rust ne remplissent ces 3 critères en même temps.

      https://link-society.com - https://kubirds.com

      • [^] # Re: mine is better

        Posté par  . Évalué à 3 (+1/-0).

        Bah justement. Ce qui était vrai à une certaine époque ne s'applique plus vraiment de nos jours, ou alors pour des programmes vraiment triviaux : j'avais l'habitude de désassembler les binaires de mes tests en C, et plus ça va et moins ça ressemble…
        Par ailleurs, quand je lis du D ou du Go, je retrouve les mêmes perspectives qu'en C : je vois (pour ma part) le même assembleur et mon algo est tout aussi proche de la machine. Si je dis ironiquement que c'est mieux, c'est parce-que ça me semble l'évolution naturelle du C (comme celui-ci l'a été pour le B —pour les personnes qui ont pris la peine de jeter un œil.)
        Mais pas grave si tu ne veux pas le comprendre.

        “It is seldom that liberty of any kind is lost all at once.” ― David Hume

        • [^] # Re: mine is better

          Posté par  (site Web personnel) . Évalué à 3 (+2/-0).

          j'avais l'habitude de désassembler les binaires de mes tests en C, et plus ça va et moins ça ressemble…

          Désactive les optimisations du compilateur, et comme par magie ça redeviendra comme avant. Comme Linus le dit dans la vidéo, fut un temps les compilateurs devaient être simple. Ils sont maintenant très intelligent.

          je vois (pour ma part) le même assembleur et mon algo est tout aussi proche de la machine

          Bizarre venant de langage avec un runtime, un garbage collector, et tout plein d'autres features qui viennent modifier l'assembleur produit.

          Si je dis ironiquement que c'est mieux, c'est parce-que ça me semble l'évolution naturelle du C

          Si tu as regardé la vidéo, tu comprendre que le titre racoleur de ce lien n'est qu'une infime partie du message de Linus: I have yet to see a language that comes close to C in that respect.

          En aucun cas il est dit que le C est le meilleur langage de tout les temps, tout usages confondus, toutes plateformes confondues, de manière purement objective.

          Mais pas grave si tu ne veux pas le comprendre.

          Oui, pas grave non plus si tu parles en lisant que le titre.

          https://link-society.com - https://kubirds.com

          • [^] # Re: mine is better

            Posté par  . Évalué à 2 (+0/-0).

            Désactive les optimisations du compilateur, et comme par magie ça redeviendra comme avant. Comme Linus le dit dans la vidéo, fut un temps les compilateurs devaient être simple. Ils sont maintenant très intelligent.

            Nous disons la même chose : avant on pouvait se figurer le code assembleur généré ; aujourd'hui peu y arrivent (et en tout cas pas moi, même en désactivant les optimisations avec certains compilos) et ce n'est pas forcément une mauvaise chose (les compilateurs font du très bon boulot, et bien mieux que ce qu'on ferait à la main sans y passer une éternité.) Mon propos est que l'assertion selon laquelle écrire du C est transparent par rapport au binaire produit n'était vrai qu'avant (quand les compilateurs étaient simples) ou pour de rares êtres suprêmes…

            Bizarre venant de langage avec un runtime, un garbage collector, et tout plein d'autres features qui viennent modifier l'assembleur produit.

            Beaucoup font cette critique en n'étant pas au courant qu'on peut le désactiver https://dlang.org/spec/garbage.html
            Mais je comparais surtout à code équivalent (sans utiliser les fonctionnalités ajoutés) pour dire que je lis (et traduit ou me représente mentalement les actions de bas niveau) de la même façon que pour le C. Je fais partir des gens qui s'amusent à réécrire leurs codes dans divers langages de plusieurs façon (au moins une naïve traduisant mot à mot le C ici, et une autre cherchant à utiliser les plus du langage au fur et à mesure que je gagne en maitrise dessus.)

            Si tu as regardé la vidéo, tu comprendre que le titre racoleur de ce lien n'est qu'une infime partie du message de Linus: I have yet to see a language that comes close to C in that respect.

            En aucun cas il est dit que le C est le meilleur langage de tout les temps, tout usages confondus, toutes plateformes confondues, de manière purement objective.

            C'est justement parce-que j'ai écouté la vidéo (que j'ai quand même trouvé agaçant par moment) que ma réponse est tout aussi nuancée : j'ai utilisé un titre racoleur aussi, mais ai indiqué que mes propositions dépendent des usages tout en répondant aux points que j'ai retenu.

            Tout le monde ne peut pas toujours dire amen.

            “It is seldom that liberty of any kind is lost all at once.” ― David Hume

          • [^] # Re: mine is better

            Posté par  (site Web personnel) . Évalué à 3 (+0/-0).

            Pour retrouver le charme de l'assembleur: https://github.com/wiz-lang/wiz

            Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

      • [^] # Re: mine is better

        Posté par  (site Web personnel) . Évalué à 5 (+3/-0).

        C non plus ne remplit plus ces critères pour les ordinateurs modernes: https://queue.acm.org/detail.cfm?id=3212479

        Il est construit sur un modèle qui n'existe plus: un seul fil d'exécution, pas de mémoire cache, des instructions qui s'exécutent dans l'ordre ou elles sont présentes dans le programme, un ensemble de registres fixes. Aujourd'hui, un ordinateur ne fonctionne plus comme ça. Il y a plusieurs CPUs qui chacun peuvent exécuter plusieurs threads en parallèle, plusieurs niveaux de mémoire cache et de mémoire virtuelle, les instructions sont exécutées dans le désordre et même parfois exécutées avant d'être finalement annulées, et les registres visibles en assembleur n'existent pas vraiment, le processeur assigne ses registres internes dynamiquement en fonction des dépendances qu'il détecte entre les instructions.

        Donc, non, le C n'est pas vraiment proche du comportement du matériel actuel. Il est proche du fonctionnement d'un ordinateur des années 70-80. Ça permet d'avoir un modèle simple à comprendre (mais approximatif) de ce qu'il se passe. Mais on pourrait prendre un autre modèle moins proche du PDP-11 et ça fonctionnerait bien aussi. Par exemple quand on programme en Smalltalk, on réfléchit en terme d'objets qui s'envoient des messages, et on peut très bien parler de performances dans ce contexte (combien d'objets sont créés/supprimés, combien de messages sont envoyés, etc). Ou par exemple si on fait du Haskell, on réfléchit en terme de fonctions, et les optimisations se font à un autre niveau (qu'est-ce qui peut être précalculé à la compilation?).

        La difficulté de C++ (je prend cet exemple parce que je le connaît bien), c'est surtout qu'il y a plusieurs façons de penser qui sont mélangées dans un seul langage. À la fois c'est intéressant, parce que ça permet d'écrire du code à différent niveaux d'abstraction sans trop s'embêter. À la fois, on a vite fait de tomber dans un piège parce qu'on saute sans cesse d'une façon de penser à une autre (de la programmation objet, impérative, procédurale, ou même fonctionnelle).

    • [^] # Re: mine is better

      Posté par  (site Web personnel) . Évalué à 2 (+1/-1).

      Sinon il y a D qui est bien mieux

      Il a un garbage collector et les devs se sont pris la tête au début donc il y a eu plusieurs versions de la stdlib pendant un moment. En plus de ça il n'apporte aucune fonctionnalités modernes. Ce langage est mort né.

      l'azerty est aux dispositions ce que subversion est aux SCMs

      • [^] # Re: mine is better

        Posté par  (site Web personnel) . Évalué à 3 (+0/-0).

        J'aime bien cet article pour ne plus craindre le grand méchant GC : https://dlang.org/blog/2017/03/20/dont-fear-the-reaper/

        Une autre approche de la gestion de la mémoire semiautomatique: https://ziglang.org/documentation/master/#Memory

        Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

      • [^] # Re: mine is better

        Posté par  . Évalué à 1 (+0/-1).

        Oui, il y a un ramasse-miettes qui n'est activé que dans des cas précis et peut être désactivé https://forum.dlang.org/thread/kpuujowqxgqudfujhzdu@forum.dlang.org
        Pour les apports, c'est quand même multi-paradigmes (parallélisme, concurrence, fonctionnel, orienté objet, etc.) et a introduit un certain nombre de concepts qui ont été repris plus tard dans C++ (fermetures, fonctions anonymes, etc.) Après, oui, il a une restriction relative par rapport à C++ : un code légitime en C ANSI se comporte de la même façon en D.
        Son seul (petit) inconvénient est de ne pas être 100% source compatible (le prix pour un peu plus de clarté et permettre l'ajout de fonctionnalités sans introduire d'ambiguïté.)

        “It is seldom that liberty of any kind is lost all at once.” ― David Hume

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.