rewind a écrit 3425 commentaires

  • [^] # Re: C'est quoi le problème ?

    Posté par  (Mastodon) . En réponse au journal Est-ce qu'on est sérieux?. Évalué à 2.

    ou alors c'est juste de la résistance au changement ?

    Ce n'est pas un argument. On peut ne pas vouloir un changement sans pour autant être résistant au changement dans l'absolu. Si je te dis qu'à partir de maintenant, tu dois marcher sur les genoux, je pense que tu n'accepteras pas, et pourtant je ne pense pas que tu sois résistant au changement, n'est-ce pas ?

  • [^] # Re: Troll de langage de programmation

    Posté par  (Mastodon) . En réponse au journal Des nouvelles d'Ulfius, framework web en C. Évalué à 6. Dernière modification le 15 octobre 2018 à 13:15.

    En pratique, il existe suffisamment de langages récent et supérieur tel que C++, Go, Rust, Python, etc. pour faire ce genre de chose.

    Et s'il veut que son framework puisse être utilisé par tous ces langages à la fois et pas juste un seul, il l'écrit en C et les autres font un binding.

  • [^] # Re: LinuxFR change

    Posté par  (Mastodon) . En réponse au journal Journal qui dénonce [E13S20]. Évalué à 5.

    Quand je suis arrivé il y avait aussi des jeux amateurs

    C'est aussi peut-être lié à la vieillesse des contributeurs. De nos jours, un gamin qui fait un jeu amateur (disons qu'il a utilisé Unity pendant 2h, importé un modèle moisi de OpenGameArt et l'a fait avancé dans un espace complètement plat avec un cube, et il appelle ça un FPS), il le met sur itch.io voire sur Steam, il ne vient pas ici pour l'annoncer. Et nous, les «vieux», on a moins de temps pour produire des jeux amateurs (ça fait 5 ans que j'ai commencé le mien, et ça avance très lentement).

  • [^] # Re: Nous les anciens

    Posté par  (Mastodon) . En réponse au journal Journal qui dénonce [E13S20]. Évalué à 6.

    La solution : ne pas lire les liens, désactiver dans l'affichage par défaut et hop !

  • [^] # Re: Nous les anciens

    Posté par  (Mastodon) . En réponse au journal Journal qui dénonce [E13S20]. Évalué à 8.

    la névrose typiquement française de devoir se écrire une longue dissert' en 3 parties

    D'un autre côté, on pourrait aussi parler des lecteurs qui descendent la moindre dépêche ou le moindre journal qui ne contient que quelques lignes en mode «on n'est pas sur Reddit ici».

    La rigidité idéologique de l'orientation libriste

    WTF? Le libre n'est pas un acquis. Ça reste un combat, en témoigne l'actualité récente sur l'Europe. Oui, il faut maintenir la tranchée et il faudra aussi longtemps que cette belle idée de partage sera menacée par ceux qui ne veulent pas partager. Si, en disant ça, je suis un idéologue rigide de l'orientation libriste, et bien soit.

  • [^] # Re: motivation

    Posté par  (Mastodon) . En réponse au journal Java 11 est dehors. Évalué à 6.

    Ho purée, je suis en retard sur Java.

  • [^] # Re: motivation

    Posté par  (Mastodon) . En réponse au journal Java 11 est dehors. Évalué à 6.

    Il n'y avait aussi un projet de modularisation de la bibliothèque standard Java où on pouvait par conséquent ne dépendre que de petit morceau plutôt que de l'ensemble ?

  • [^] # Re: Trackers <3

    Posté par  (Mastodon) . En réponse au journal OpenMPT 1.28 : OPL & concours. Évalué à 2.

    J'ai jamais osé mettre mes «productions» sur un site. À un moment, elles étaient en ligne mais elles ne sont pas restées très longtemps.

  • # Trackers <3

    Posté par  (Mastodon) . En réponse au journal OpenMPT 1.28 : OPL & concours. Évalué à 10.

    C'est malin ! Je viens de passer ma journée à lire des mods ! Malheureusement, pas avec OpenMPT. Mais grâce à cette news, et en particulier la page wikipedia sur les trackers, j'ai découvert qu'il existait un clone de FastTracker 2. Ça compile nickel sous Linux et le résultat est simplement bluffant ! D'après ce que j'ai compris, l'auteur a pris les sources originales en Pascal et assembleur et les a porté en C/SDL2. L'ensemble n'est pas libre, puisque les assets sont sous CC-BY-NC-SA. Mais quand même, ça me replonge une petite vingtaine d'année en arrière. Du coup, j'ai fait de l'archéologie dans mon grenier et j'ai ressorti plein de vieux CD gravés à cette époque là et sur lesquels j'avais toute une collection de xm, s3m et autre mod. Je suis aussi allé faire un tour sur modarchive et sur scene.org pour en chercher quelques autres. Bref, ça fait du bien d'entendre à nouveau Necros, Skaven, Purple Motion, MaF, Zodiak, Keih303, etc !

    Personnellement, j'adore les trackers, et je me demande pourquoi ils n'ont pas plus percé que ça. Moi qui n'ai aucune formation musicale (hormis ce qu'on apprends au collège), je pouvais tâtonner et sortir des trucs pas trop mal. Après, pour faire des choses évoluées, il fallait des années d'expérience, mais comme pour tout art. Quand je vois que, de nos jours, il faut un matériel de dingue pour faire de la MAO, j'ai l'impression qu'un tracker demandait (et demande toujours ?) beaucoup moins de ressources (FastTracker2 tournait sur un 486 DX2 à 66MHz !). Vivent les trackers !

  • [^] # Re: Faire la différence

    Posté par  (Mastodon) . En réponse au journal De l'avenir des projets communautaires face aux sirènes de la finance. Évalué à 9.

    c'est ce que j'adore dans les pro-copyleft qui me bassinent avec le "bien commun" du copyleft face à la fermeture du copyfree : le copyleft est en fait utilisé pour verrouiller, sur le produit publicitaire afin de vendre du proprio, ha ha

    Prenons un exemple. Une entreprise A a un produit P en copyleft, et un produit P' qui est P avec des fonctionnalités propriétaires. Une entreprise B forke P et commence à ajouter des fonctionnalités pour fabriquer P". Un client C de B achète P". La seule différence avec un client de A, c'est qu'il a accès à l'ensemble des sources de P" et qu'il n'a pas accès aux fonctionnalités de P'. Il peut divulguer les sources de P", la licence l'y autorise, mais il peut aussi les garder pour lui. Admettons qu'il les garde pour lui parce que ça lui coûte de les mettre à disposition et qu'il n'a ni le temps ni l'argent pour ça. Dans tout ça, A n'a pas accès à P". Dans ce scénario, quelle différence, du point de vue de A, avec du copyfree ? Aucun.

    Conclusion : le monde n'est toujours pas binaire avec les gentils copyfree et les méchants copyleft.

  • # static if -> if constexpr

    Posté par  (Mastodon) . En réponse au journal Pythran - 0.8.7. Évalué à 7.

    On ne dit plus static if, on dit if constexpr. Le vocabulaire a évolué pendant la normalisation. Et comme constexpr concerne tout ce qui est calculé à la compilation, le comité a trouvé plus logique de dire if constexpr (if calculé à la compilation).

  • [^] # Re: Conclusion étrange

    Posté par  (Mastodon) . En réponse au journal Directive sur le droit d’auteur adoptée. Évalué à 6. Dernière modification le 14 septembre 2018 à 17:15.

    Avoir une opinion, c'est quelque chose. Défendre une opinion auprès des lecteurs, c'est autre chose. Et interpréter l'actualité, présenter les faits de manière partisane, ou pondre des éditos fallacieux, c'est encore différent. Quand la défense d'une opinion passe par des pratiques de manipulation, de rhétorique douteuse, voire de mensonge flagrant, c'est problématique (et ça veut aussi dire beaucoup sur les bases rationnelles de cette opinion).

    Mais c'est dingue ! La presse a toujours défendu des opinions, c'est même son rôle que de débattre des idées, de confronter des points de vue, de donner des prismes de lecture. Si tu veux des faits rationnels et neutre, tu lis une encyclopédie pas un journal.

  • [^] # Re: Conclusion étrange

    Posté par  (Mastodon) . En réponse au journal Directive sur le droit d’auteur adoptée. Évalué à 6.

    En quoi est-ce dérangeant que la presse ait une opinion ? Ce qui me gêne, ce n'est pas qu'elle ait une opinion, c'est que la plupart des grands journaux (et en particulier ceux qui sont détenus par les dits milliardaires) ont la même opinion, à quelques nuances près.

  • [^] # Re: Machine de Turing

    Posté par  (Mastodon) . En réponse à la dépêche Le Frido 2018, livre libre de mathématique pour l’agrégation. Évalué à 2.

    Le mieux serait de créer un chapitre

    D'accord. Je pense que ce sera plus propre.

    Un petit TieBreak ?

    Heu… je ne joue pas au tennis ? J'ai eu du mal à le trouver, je ne savais pas qu'il s'appelait comme ça ce machin. Mais OK ! Je t'envoie un mail et on organise un truc.

  • [^] # Re: Pub

    Posté par  (Mastodon) . En réponse au journal Windows 10 fait la publicité de Edge pendant l'installation de Firefox et Chrome !. Évalué à 2.

    Microsoft s'est déjà pris une belle amende par le passé et a été obligé de proposé en Europe le choix entre plusieurs navigateurs (vers 2010 de mémoire).

    Ce n'était pas les navigateurs le problème mais les lecteurs de fichiers audio/vidéo. Et ils avaient été obligé de sortir une version sans le lecteur par défaut de Windows. Ce sont les versions estampillés N. Et donc, comme on voit que le nom de la version identifie bien le problème, on peut se douter que les gens se ruent dessus… ou pas.

    Un tout petit résumé de l'affaire

  • [^] # Re: Machine de Turing

    Posté par  (Mastodon) . En réponse à la dépêche Le Frido 2018, livre libre de mathématique pour l’agrégation. Évalué à 8.

    À la fin de ce fichier, les ensembles N,Z,Q et C sont construits avec leurs principales structures : ordre, anneau, groupe, corps.

    Donc, si je comprends bien, tu voudrais mettre les définitions/propriétés liées aux langages à la fin de ce fichier. C'est bien ça ? Et pour les machines de Turing, à la suite ?

    D'autre part, dans mazhe.pdf, je n'ai pas trouvé la définition d'un monoïde (il y a juste le lemme 6.19 qui parle de sous-monoïde et quelques autres trucs mais jamais de définition formelle). Or, l'ensemble des mots sur un vocabulaire muni du produit (concaténation) forme un monoïde (non-commutatif).

    Enfin, en parcourant ton site, je m'aperçois qu'on travaille à 300m l'un de l'autre, ça vaudrait sans doute le coup qu'on se voit IRL pour discuter de tout ça ;)

  • # Machine de Turing

    Posté par  (Mastodon) . En réponse à la dépêche Le Frido 2018, livre libre de mathématique pour l’agrégation. Évalué à 5.

    Ou plus modestement, rédiger la définition d'une machine de Turing et donner deux exemples serait déjà pas mal.

    Si on reste dans l'esprit du livre, on ne peut pas se contenter de ça. Parce que parler de machine de Turing sans parler de langage, ça n'a pas de sens. Donc, il faut définir ce qu'est un langage, et donc définir ce qu'est un alphabet, un mot. Cependant, les langages peuvent partir de la théorie des ensembles (puisque ce sont eux-mêmes des ensembles et que beaucoup de notions sont identiques).

    Si j'ai du temps, j'essaierai de contribuer sur cet aspect. Je fais un cours de Théorie des Langages donc j'ai déjà quelques définitions sous la main.

  • # Aucun !

    Posté par  (Mastodon) . En réponse au journal Go et Rust, lequel est le remplaçant du C ?. Évalué à 10.

    C est là depuis longtemps et occupe une place qu'aucun autre langage ne peut prendre. C est la lingua franca des langages de programmation puisque quasiment tous les autres peuvent appeler une fonction C alors que l'inverse est très souvent faux. C a un écosystème énorme comparé à Go ou Rust. C est omniprésent dans l'embarqué et le premier compilateur présent sur une nouvelle architecture est quasiment toujours un compilateur C. Bref, vouloir prendre la place de C, c'est un doux rêve. Ce qui ne veut pas dire que ces langages (Go et Rust) n'ont pas un intérêt propre.

  • [^] # Re: pouvoir exhorbitant...

    Posté par  (Mastodon) . En réponse au journal Chaque été depuis 9 ans, Altran enclenche une procédure de licenciement contre un délégué syndical. Évalué à 1.

    le fond est justement l'usage de mensonges

    Non, ça c'est la forme.

  • [^] # Re: pouvoir exhorbitant...

    Posté par  (Mastodon) . En réponse au journal Chaque été depuis 9 ans, Altran enclenche une procédure de licenciement contre un délégué syndical. Évalué à 10.

    En 1936, quand les syndicats proposaient les congés payés, il y avait déjà des Zenitram pour expliquer à quel point c'était complètement démagogique, et que les syndicats n'aidaient pas les salariés parce qu'ils allaient couler les entreprises. Imaginez-vous, être payé à ne rien faire, vraiment ils voulaient la ruine du pays ces saloperies de syndicats. Et pourtant, l'histoire leur a donné raison.

    On pourrait multiplier ce genre d'exemples tout au long de l'histoire. Tu ne fais qu'un mauvais remake d'une pièce qui a déjà été joué des dizaines de fois. Mais les faits sont là, toi qui adore te référer à la vérité, jamais on n'a vu une avancée sociale venir des patrons, ce sont toujours les syndicats qui ont obtenu toutes les avancées sociales à force de lutte acharnée. La Sécurité Sociale, par exemple, ça vient d'un ministre communiste de De Gaulle qui était ouvrier auparavant, ça n'est pas venu du Gattaz de l'époque (ou plutôt du Roux de Bézieux de l'époque). Et chaque fois que les syndicats sont en difficulté, certaines conquêtes sociales disparaissent ou sont rabotées. C'est ce qu'il se passe en ce moment. Mais on trouvera toujours un Zenitram pour expliquer que c'est la faute des syndicats qui sont beaucoup trop exigeants, ce n'est jamais la faute du gouvernement aux ordres du patronat et qui écrit les lois de régression sociale. Bref, du déjà vu, rien de nouveau.

  • [^] # Re: pouvoir exhorbitant...

    Posté par  (Mastodon) . En réponse au journal Chaque été depuis 9 ans, Altran enclenche une procédure de licenciement contre un délégué syndical. Évalué à 10.

    Tant de mots pour nous confirmer ton anti-syndicalisme primaire, mais pas un mot pour dénoncer les agissements des patrons d'ALTRAN qui ont l'air d'être des récidivistes. C'est triste.

  • [^] # Re: Godbolt

    Posté par  (Mastodon) . En réponse au journal Le quiz c++ de l'été. Évalué à 3.

    Dans ce cas, tu es comme dans le dernier cas que j'ai cité du shared_ptr, tu ne sais pas si tu vas conserver le paramètre ou pas, donc tu passes une référence constante et tu fais la copie seulement si besoin. Donc on est bien d'accord et c'est très logique en fait.

  • [^] # Re: Godbolt

    Posté par  (Mastodon) . En réponse au journal Le quiz c++ de l'été. Évalué à 6.

    Non, ce n'est pas inversé. Je vais prendre un exemple avec std::string pour que ce soit plus clair. L'hypothèse de départ, c'est qu'on veut conserver la chaîne de caractères passé en paramètre (sinon, pas besoin de se poser la question, voir plus bas). Le cas le plus fréquent, c'est un constructeur, mais ça pourrait être n'importe quelle fonction.

    struct Toto {
      Toto(std::string s) : str(std::move(s)) { }
      std::string str;
    };
    
    struct Titi {
      Titi(const std::string& s) : str(s) { }
      std::string str;
    };
    
    int main() {
      std::string str1("str1");
    
      Toto toto1(str1); // (a)
      Toto toto2("str2"); // (b)
    
      Titi titi1(str1); // (c)
      Titi titi2("str2"); // (d)
    }

    En (a), il y a une copie qui est faite au moment de l'appel, mais dans le constructeur, il n'y a pas de copie, juste un déplacement (ce qui revient à déplacer le pointeur). En (b), il n'y a pas de copie, la chaîne est construite dans le paramètre qui est ensuite déplacé dans la variable membre. En (c), il y a un passage de référence au moment de l'appel, mais il y a une copie dans le constructeur. En (d), il y a une création d'une chaîne sur la pile, puis il y a une copie dans le constructeur. Au final, en passant par valeur, on s'évite une copie si on passe un littéral, alors qu'en passant par référence, on a une copie superflue. C'est pour ça que depuis C++11 (depuis qu'on a la sémantique de déplacement), il est conseillé de passer ce genre de paramètre par valeur, et plus par référence.

    Si on n'a pas besoin de conserver le paramètre, alors il faut passer le paramètre par référence constante. Mais ce cas était déjà géré avant C++11.

    Dans le cas d'un std::shared_ptr<T>, on peut tenir le même genre de raisonnement, mais il y a une subtilité en plus qui est qu'on a en fait deux objets : le pointeur intelligent en lui-même (std::shared_ptr), et l'objet pointé (de type T). Comme le précise Herb Sutter dans l'article que j'ai lié un peu plus haut, si on n'a besoin que de l'objet pointé, on doit passer soit une référence sur un T, soit un pointeur sur un T parce que ça rend la fonction plus générique en ce sens qu'on ne la restreint pas à une seule politique de gestion mémoire. Si on a besoin de partager le pointeur, alors on passe un shared_ptr<T> par copie (pour la même raison que pour le std::string précédemment). Si on passe un shared_ptr<T> par référence non-constante, c'est qu'on veut modifier le pointeur lui-même et pas l'objet pointé. Et si on le passe par référence constante, c'est qu'on ne sait pas si on va faire une copie ou pas, mais ce cas est extrêmement rare et c'est précisément celui qui est donné en exemple dans le post initial.

  • [^] # Re: Godbolt

    Posté par  (Mastodon) . En réponse au journal Le quiz c++ de l'été. Évalué à 3.

    Changez rien, les gars.

    Effectivement, il n'y a rien à changer. C++ permet une gestion très fine de la mémoire et des passages de paramètres (par valeur ou par référence, on a le choix, contrairement à quasiment tous les autres langages), et donc il y a des implications à choisir l'un ou l'autre. Mais ces implications sont très loin des «effets papillons». C'est juste histoire de savoir ce qu'on fait et comment ça se passe. Il y a des gens qui ont besoin de ce genre de subtilités pour avoir des performances, c'est bien qu'il existe un langage qui leur permette de le faire, il s'appelle C++.

  • [^] # Re: Godbolt

    Posté par  (Mastodon) . En réponse au journal Le quiz c++ de l'été. Évalué à 2.

    Si tu le passes par références pour le stocker tu n'as qu'une seule copie.

    Le lien que tu donnes dit explicitement «Shortly, there is no reason to pass by value, unless the goal is to share ownership of an object», ce qui est exactement ce que j'ai dit plus haut : «Soit on a besoin d'un partage et dans ce cas là, on passer par valeur.»

    Et après, de manière générale, si tu veux stocker un objet, tu as intérêt à le demander par valeur (ça ne concerne pas que les shared_ptr pour le coup) pour éviter des copies justement. Dans le cas du passage par référence, l'objet va être créé puis copié dans la fonction. Dans le cas du passage par valeur, il va y avoir zéro copie, l'objet va être créé puis déplacé directement.

    Dans le lien que tu donnes, il y a d'ailleurs une réponse qui pointent vers un post de Herb Sutter qui est accessoirement le président du comité de normalisation et qui donne une réponse très détaillée pour tous les cas de figure.