Aluminium95 a écrit 223 commentaires

  • [^] # Re: Je ne vote plus blanc

    Posté par  . En réponse au journal Résultats des elections, qui est le vrai vainqueur ?. Évalué à 2.

    Alors, explique-lui avec une véritable démonstration autre qu'une attaque ad-hominem, le fait qu'il puisse voter Macron sans être d'accord avec toutes les idées, mais que si jamais il vote FN, il est forcément en train d'adhérer à l'ensemble de toutes les politiques imaginables et réalisables par le FN. C'est quand même une asymétrie qui mérite une explication à mon avis.

    D'un point de vue un peu plus « méta-théorique », je suppose qu'avec ce genre de commentaires, ton objectif est de convaincre que voter FN n'est pas un vote de protestation, et que c'est une impasse très dangereuse. Mais en analysant l'argumentaire, c'est à mon sens assez faible (pas d'explications), généralisateur et agressif. Et honnêtement, j'ai beaucoup de mal à imaginer que cela puise convaincre quelqu'un qui n'est pas convaincu au départ. C'est peut-être même contre-productif, parce qu'en refusant même d'engager une conversation, ça radicalise simplement les positions des uns comme des autres.

    Attention, je ne soutiens pas la thèse inverse (celle qui dit que le FN est un vote protestataire).

  • [^] # Re: Abstention abstention ...

    Posté par  . En réponse au journal Résultats des elections, qui est le vrai vainqueur ?. Évalué à 2. Dernière modification le 08 mai 2017 à 19:58.

    Pas d'algorithme, pas de tableaux avec calculs simplifiés pour bonne conscience d'abstentionnistes,

    Ton algorithme c'est regarder la loi ;-). Au contraire les choses sans algorithme de décision c'est un peu foireux généralement, du genre « faire l'effort de remettre leurs idéaux politiques de côté », bon, c'est bien sympathique mais ça ne veut pas dire grand chose. Est-ce que justement inscrire des décisions dans les institutions ce n'est pas faire de la politique ? Et donc les défendre c'est aussi de la politique qui correspond à certains idéaux ? Un mec qui met de côté ses idéaux politiques pour défendre les institutions d'un régime totalitaire mérite-t-il aussi le respect ? Alors on sait répondre à ces questions, et on peut raisonnablement imaginer ce qu'on veut dire par cette formulation … maintenant définir proprement c'est autre chose.

    J'ai mis beaucoup de temps avant de comprendre que ta citation était une phrase du journal initial et non pas d'un de mes commentaires !
    Alors, c'est bien ce que je me disais : tu as une vision légaliste, alors que dans la phrase que tu cites c'est une vision « sociale », c'est-à-dire une vision « morale », dans le sens des règles et des valeurs qui font norme dans une société donnée. À ce moment là, dire que c'est pas dans la loi c'est simplement passer à côté de sa phrase qui est : à partir de quand peut-on remettre en cause des normes de société ?

    J'admets que c'est très certainement de la sur-interprétation, mais c'est la seule manière que je vois de comprendre la citation. J'imagine qu'il dit que comme beaucoup de gens sont en désaccord avec les institutions, et que la majorité a de plus en plus de mal à être accueillie en tant que telle, alors il faut envisager que le pouvoir donné par le peuple à la majorité s'effrite (par construction, puisque les « perdants » ne veulent plus jouer le jeu). Attention, je ne dis pas que c'est mal ou bien, c'est simplement des trucs qui se passent. Par exemple le Brexit, c'est exactement la même chose : une partie assez importante du RU a décidé que jouer le jeu de l'unanimité à l'UE c'était pas leur truc, et ils ont décidé de partir. Il y a aussi des tensions non-négligeables avec l'Écosse en ce moment il me semble. C'est une crise de la légitimité, mais pas au sens légaliste du terme.

    Attention encore une fois, je ne dis pas que c'est le cas, il faudrait faire des sondages, des statistiques, pour comprendre le phénomène et s'assurer en premier lieu de son existence même. Je voulais juste faire remarquer que vous ne parliez pas de la même chose, et j'ai essayé (certainement en vain) de mettre des mots un peu plus précis que « légitimer ».

    Notons qu'on mélange allègrement les deux notions, par exemple quand dans un même commentaire on voit

    Il est donc élu de façon légitime.

    Parce qu'il a suivi le processus décrit dans les institutions : c'est le point de vue légaliste.

    Mélenchon essaie de faire interpréter l'abstention à sa sauce (i.e. comme un vote contre les deux choix): là, par contre, c'est illégitime.

    Ce n'est pas le point de vue légaliste : si c'était le cas, ce serait soit une tautologie, soit la loi serait vraiment étrange à décrire comment les gens doivent interpréter l'abstention (mais peut-être est-ce le cas ?).

  • [^] # Re: Abstention abstention ...

    Posté par  . En réponse au journal Résultats des elections, qui est le vrai vainqueur ?. Évalué à 1.

    sur la notion morale et éthique d'équité

    Ça c'est ce dont tu parles, mais il me semble que le message auquel je réponds (qui sauf si j'ai fait une bourde n'est pas de toi) se voulait plutôt factuel. Si on parle de « morale », alors commence par définir ce que tu entends par là … et surtout à qui tu l'appliques.

  • [^] # Re: Abstention abstention ...

    Posté par  . En réponse au journal Résultats des elections, qui est le vrai vainqueur ?. Évalué à 1. Dernière modification le 08 mai 2017 à 15:32.

    J'aimerais bien savoir quel est ton algorithme pour déterminer si un truc est légitime ou non. J'ai l'impression que tu en prends le sens premier, qui est en gros « reconnu par la loi ». Est-ce bien le cas ? Le choix du mot « illégitime » m'a plutôt fait penser à un jugement de valeur péjoratif, mais c'est peut-être une fausse impression.

  • [^] # Re: Ça devient lourd

    Posté par  . En réponse au journal Un président néo-libéral est-il moins pire qu'une présidente xénophobe ?. Évalué à 2.

    Le terme de néolibéralisme désigne aujourd'hui un ensemble multidimensionnel d'analyses d'inspiration libérale – ou supposées telles – qui partagent un socle d'idées communes :

    • de façon critique : la dénonciation du développement excessif de l'État-providence dans les pays développés après 1945 et de l'accroissement des interventions publiques dans l'économie
    • de façon positive : la promotion de l'économie de marché au nom de la liberté de l'individu et de l'efficacité économique ;
    • et qui prennent des orientations politiques communes, prônant la dérégulation des marchés (qui doivent se « réguler eux-mêmes » par le jeu de la concurrence et des « lois du marché ») et la disparition progressive du secteur public au profit du privé.

    Bon, Wikipédia n'est pas forcément une référence, et il est clairement dit que le sens du terme a varié dans le temps. Dire que cela ne s'applique pas aux politiques Français c'est un peu comme dire que la définition s'arrête aux frontières ? Ou bien il n'y a effectivement personne qui n'a cette vision de la société en France ?

  • [^] # Re: Allons, un peu de discipline

    Posté par  . En réponse au journal La peste ou le choléra ?. Évalué à 1. Dernière modification le 05 mai 2017 à 10:58.

    Parce que l'état totalitaire, "ça n'arrivera pas"?

    Et

    mais la France qui dérive vers un état totalitaire, ça non, ça n'arrivera jamais

    Mmmh … C'est trop gros. Il serait peut-être bon de rappeler que l'état d'urgence intemporel est défendu par le candidat dit républicain de manière officielle.

    Ce même candidat, dans tout le respect des institutions parlementaires de la république désire réformer le code du travail par ordonnances, sans s'en cacher aucunement.

    Le sujet des violences policières est très sensible, et il est difficile d'affirmer une opinion, mais il semblerait que les violences policières se soient régularisées :

    1. L'ONU n'est pas content
    2. Des affaires pas sympathiques

    C'est peut-être une suite de coïncidences, mais ce monsieur n'est pas d'accord, et libération semble approuver.

    La conclusion est la même que la tienne bien sûr, à savoir :

    le candidat élu dimanche le sera pour 5ans

    Mais libre à chacun de considérer la stratégie qui lui semble la meilleure pour ces 5 ans.
    On peut par exemple remarquer que beaucoup d'hommes politiques/entreprises se rallient à Macron, et très peu se rallient à Le Pen (en comparaison). Ainsi, à l'assemblée, il est probable que le même clivage se crée, et il serait possiblement plus facile de lutter contre une politique de Le Pen que contre une politique de Macron. Bien sûr, ce n'est qu'hypothétique et c'est très risqué.

    Tout cela pour dire qu'il existe d'autres raisonnements, et que « choisir le moins pire » peut assez facilement devenir la pire des solutions. On se souviendra par exemple de Sarkozy/Hollande, où ce dernier a réussi à faire une politique qui en a déçu un nombre conséquent, pensant qu'ils votaient pour le moindre mal, alors que « ce n'était pas très malin » comme diraient certains.

    Limiter drastiquement l'immigration, sortir de l'Euro, c'est pour toi aussi grave que… 5ans de plus au même rythme?

    C'est une question qui se pose vraiment, et la balayer d'un revers de main est au mieux impoli, au pire malhonnête.

    Lepen n'aura aucun impact négatif sur l'engagement de la France dans les institutions Européennes

    C'est ton opinion politique que l'engagement de la France dans les institutions Européennes c'est une bonne chose. Par exemple le programme de Mélenchon proposait aussi de modifier (et en cas d'échec de sortir) des traités qui sont jugés inacceptables. Quand on additionne les deux ça fait à priori 40.8% de votants qui pensent que bon, faudrait peut-être faire quelque chose. Bien entendu, les deux positions sont radicalement différentes, bien que partant d'un même constat. Dans une moindre mesure, Hamon voulait lui aussi renégocier les traités, ce qui veut bien dire que quelque part, certains se questionnent sur l'engagement de la France, et pas seulement l'extrême droite.

    Relis bien le programme de Lepen: la réforme de la Constitution est bien dedans!

    D'accord, alors si je lis ceci, qui semble être en accord avec cela, voilà de quoi il s'agit

    1. Sur la forme, visiblement c'est l'article 89 ou l'article 11 qui permet de modifier la constitution, et dans tous les cas ils nécessitent une certaine forme de vote (référendum ou 3/5 aux chambres en résumant)
    2. La préférence nationale
    3. Rétablir la supériorité du droit national. Alors l'article n'est pas très clair, car il utilise le terme « rétablir » et « retrouver » sans guillemets, ayant un peu la flemme de chercher, je vais supposer que c'est parce qu'avant c'était le cas, et qu'on l'a supprimé ensuite.
    4. Élection proportionnelle aux assemblées.
    5. Faire plein de référendums
    6. Réduire le budget du parlement (et autoriser le cumul des mandats ?!)
    7. Restructuration des administrations locales
    8. Suppression du Conseil Économique, Social et Environnemental

    Mon avis personnel, c'est qu'on peut encore dire STOP après son élection si on crie assez fort. Mais c'est un risque, et il faut le mesurer. On sait par exemple que Le Pen était contre les grèves trop dures, et pour la loi travail c'était assez rigolo. Donc de ce point de vue là c'est mal parti. On notera qu'en même temps, faire la grève n'empêche pas d'utiliser le 49.3 donc bon … C'est pas évident !

    Enfin, Macron aussi veut réformer la constitution, pas pour les mêmes raisons certes, mais bon, vu que tu n'es pas allé dans le détail et que mon commentaire est déjà long je m'arrête là.

    Conclusion : dire qu'un abstentionniste c'est un anti-républicain, c'est quand même une insulte à un grand nombre de gens, et cela dessert l'objectif même de ce discours, qui est avant tout de convaincre de voter pour Macron, surtout quand les arguments ne sont pas développés pour convaincre mais pour faire autorité.

  • [^] # Re: Mauvaise cible

    Posté par  . En réponse au journal Le respect de la vie privée n’intéresse pas les lecteurs de LinuxFr.org ?. Évalué à 1.

    Il n'y a pas de différence entre contributeur et lecteur. Tout lecteur peut contribuer et cela en fait donc un seul et unique groupe.

    Je trouve cet argument rigolo, tout simplement parce que tu comprends « contributeur » comme « quelqu'un qui a la capacité potentielle de contribuer ». Et du coup un tas de trucs peuvent se prouver, alors que si tu comprends « contributeur » comme « quelqu'un qui contribue » c'est plus dur. Je pense que dans le contexte, il est quand même étrange de considérer que toute personne qui est capable de contribuer contribue effectivement, au point qu'il est considéré contributeur, mais c'est peut-être un abus de langage courant.

    De manière très amusante, la suite de ton argumentation continue de fonctionner même si tu retires le fait que « contributeur = lecteur », parce qu'étant lecteur il est capable de contribuer et cela suffit pour ton discours.

  • [^] # Re: Echec des la première fois

    Posté par  . En réponse au journal On cherche mes remplaçants.... Évalué à 2.

    Je ne vois pas en quoi […] est dans l'intérêt du patient

    Je fais juste la remarque que si toi tu ne le vois pas, cela ne veut pas dire que c'est un fait universel et non sujet à débat. Pour revenir dans le concret, il est vrai que tu faisais plutôt référence à la manière dont était approché le débat : partir du principe que c'est un « droit », et donc faire en quelque sorte « plaisir » aux homosexuels (si j'ai bien compris), ce qui est un argument irrecevable j'en conviens.

    Néanmoins, il y a peut-être des arguments rationnels qui pousseraient à accepter les dons : est-ce qu'on prend vraiment un risque ? Combien de sang on refuse chaque année sur ce critère ? Etc… Et pour le coup je ne désire pas que ce soit laissé « à la discrétion du médecin ». On peut d'ailleurs voir dans les commentaires des gens qui expliquent que le critère « homosexuel » n'est pas judicieux, d'autres rétorquant que c'est quand même une bonne approximation (et honnêtement je n'ai pas vraiment une idée sur le sujet).

    je souligne que cette comparaison n'est pas acceptable

    Tu as certainement raison (d'ailleurs dans la suite de mon commentaire j'ai expliqué que la situation n'était pas la même).

    Mais peut-être pas ? Ici la comparaison n'est pas à l'échelle du seul patient qui se voit refuser un traitement, mais d'un ensemble de personnes qui ne peuvent pas bénéficier de soin optimaux faute de l'abondance de transfusions sanguines qui pourraient (c'est une grosse hypothèse dont je me dédouane totalement) être plus nombreuses si on acceptait les dons des homosexuels. Note que je ne veux pas prendre parti ici, c'est simplement le raisonnement qui m'intéresse.

    l’unique intérêt de la personne a soigner.

    On peut se demander si c'est pertinent … Enfin, il est clair que l'on vit dans une société avec plusieurs personnes, on peut vouloir par exemple qu'en cas d'épidémie on mette en place des quarantaines, ou je-ne-sais quelles mesures d'urgences, qui ne sont pas reliées à l'intérêt d'une personne, mais un intérêt collectif, qui ne peut pas se résumer à l'intérêt de chacune (enfin je pense) et donc définitivement ce critère tombe à l'eau. Et même sans parler de catastrophes, on peut vouloir diminuer la consommation de je-ne-sais quel médicament parce que sa production a un impact sur l'environnement, et donc on ferait passer dans la mesure du raisonnable (et là il faut un débat pour savoir quelle est cette mesure précise) le « bien commun » avant la santé d'une unique personne.

  • [^] # Re: Echec des la première fois

    Posté par  . En réponse au journal On cherche mes remplaçants.... Évalué à 4.

    Je m'excuse d'avance si je sors du débat, mais je voudrais simplement réagir sur l'idée que la médecine devrait être indépendante de toute notion politique. Peut-être est-ce simplement parce que je prends la « mauvaise » définition de politique pour lire cette phrase, mais je la trouve un peu choquante :

    Les décisions des médecins ne doivent pas être politiques: elles doivent être centres sur l’unique intérêt de la personne a soigner.

    Ça dépend de ce qu'on comprend comme « politique », si c'est au sens « le cadre général d'une société organisée et développée », alors définitivement, quand on parle de don du sang, et donc d'un système complet beaucoup plus large que le simple traitement d'un unique individu, c'est politique. On peut même argumenter sur le fait que le traitement individuel est lui même politique : puisqu'il s'inscrit dans des lignes directrices qui sont à priori communes et mériteraient d'être décidées.

    Par exemple un médecin qui refuserait de traiter les patients sur la base de leur couleur de peau ou un autre critère arbitraire se verrait certainement sanctionné par la loi (enfin j'imagine ?). Et la loi n'est-elle pas issue de la politique ? (là encore, c'est peut-être sujet à débat).

    Ils sont et doivent être les seuls juges de ce genre de décisions

    C'est l'exemple même d'une opinion politique qui se renie en se faisant passer pour l'absence d'opinion politique (ou alors je passe à côté du propos ?). Décider qui doit avoir la décision est un truc qui ne tombe pas dans l'ordre naturel des choses, et est donc sujet à débat, et donc est politique. C'est pour cela qu'on a des comités d'éthique d'ailleurs (même si je ne suis pas particulièrement au fait de leur fonctionnement ni de leur pouvoir réel).

    Après, je ne suis pas contre le fait que pour des raisons de simplicité, on refuse par exemple le don de certaines populations, parce que des statistiques montrent que la majorité du sang collecté ne sera pas utilisable. Mais c'est là l'idée : il faut argumenter et défendre cette idée, on est pas laissé dans l'arbitraire complet !

    Enfin sérieusement, si on voulait expérimenter sur des enfants (ce qui serait beaucoup plus grave j'en conviens, que de refuser du sang, ce qui à priori ne porte pas préjudice à la personne directement) tu dirais « ils sont et doivent en être les seules juges » ?

    Je m'excuse encore si je suis passé à côté du message, que j'ai pu interpréter de travers, et aussi pour le « hors-sujet ».

  • [^] # Re: 5000 personnes à Paris

    Posté par  . En réponse au journal Marche pour les sciences samedi 22 avril 2017. Évalué à 4. Dernière modification le 26 avril 2017 à 07:52.

    Qu'est-ce que tu dirais si une «marche pour la science» était organisée par l'église de scientologie

    N'est-ce pas un peu extrême comme comparaison ? Ou alors c'est moi qui me fait des idées sur la CGT ?

    on est super-nuls dans la communication autour de la démarche scientifique, et on est tellement nuls en com qu'on ne s'en rend même pas compte

    C'est fort possible, après, il faudrait déjà savoir ce qu'on veut « communiquer » sur la « science ». Parce que ce que je lis sur wikipédia FR (source qui n'est peut-être pas fiable) c'est la chose suivante :

    Le projet de marche pour les sciences est né en réaction à l'attitude de l'administration Trump, notamment le gel des financements accordés par l’Agence de protection de l’environnement (contribution à la recherche scientifique notamment) et le fait que Scott Pruitt, connu pour son climatoscepticisme, soit nommé à la tête de l'institution

    Ce qui est donc fondamentalement un acte politique (contre la politique de Trump), ou alors je n'ai pas bien compris.

    C'est pourquoi, indépendamment de la CGT il y a déjà des gens qui disent que c'est un évènement trop chargé politiquement : "Why Some Scientists Won't March for Science". Je ne dis pas que c'est une référence, je ne dis pas que c'est comparable. Mais on constate déjà qu'avant même la mise en place la question de la politique s'est posée.

    Mais je suis peut-être mal réveillé et suis passé à côté de quelque chose …

  • [^] # Re: marre des cons qui mettent en danger les autres

    Posté par  . En réponse au journal Marre des cons. Évalué à 4.

    Eh bien, non, on n'est pas aussi dangereux à 130 km/h qu'à 160 (et encore moins à 50 ou 30), car l'énergie cinétique n'est pas la même et de loin.

    C'est tout à fait vrai, néanmoins je pense que (peut-être est-ce de la sur-interprétation) que Zenitram parle aussi de la vitesse relative aux autres véhicules. De mon point de vue, il est plus dangereux de rouler à 50 sur une autoroute (ou sous entendu tout le monde roule aux environs de 130) plutôt que de rouler aux environs de 130, car si on peut argumenter que la gravité des accidents « diminue », on peut répondre que l'autre voiture roulera quand même à 130, et que la probabilité d'accident augmente à cause de la différence de vitesse (et du caractère inhabituel de celle-ci). Je suis peut-être en train de dire n'importe quoi, et je fais peut-être dire des choses à Zenitram, donc corrigez moi si je suis dans l'erreur.

  • [^] # Re: Module et type abstrait

    Posté par  . En réponse au journal Une petite histoire d'utilisation type fort dans Ocaml. Évalué à 1.

    Notons que pour la même raison il y a aussi une différence entre A×B et B×A: à cause des exceptions et de l'ordre d'évaluation de la paire en call-by-value.

  • [^] # Re: Module et type abstrait

    Posté par  . En réponse au journal Une petite histoire d'utilisation type fort dans Ocaml. Évalué à 1.

    C'est monstrueux ! Je suis curieux, ce comportement est documenté quelque part ?

  • [^] # Re: Sympa

    Posté par  . En réponse au journal Après le MOOC OCaml. Évalué à 1.

    En effet, pour reprendre un lien ajouté par Benoît Laurent dans un autre commentaire, voici ce qu'on lit ici

    A build system that is so obviously superior to the other alternatives that everyone switches to it instantly. Or a stdlib replacement/extension that is so obviously superior that everyone switches to it (ahah). Imho the big problem with the ecosystem is not really that it lacks critical features, it's more that everything is fragmented, incompatible, complicated to the beginner

    Cela rejoint mon expérience sur la librairie standard, et ajoute que le problème est exactement le même pour le système de build : le problème c'est que ça marche assez bien pour ne pas avoir envie de tout changer. Cela incite fortement les gens à construire des surcouches pour éviter d'avoir à casser l'existant (d'où les 3 niveau de build).

    Après, il faut faire attention avec les outils plus agréables, parce que la gestion des librairies c'est pas toujours super. Le système de type NPM/Hackage/OPAM incite à des évolutions rapides et potentiellement incompatibles qui font que parfois, il devient impossible de compiler un projet (en tout cas pour Haskell). De plus ce genre de système ne remplace pas un gestionnaire de paquets, et pourtant il est tentant d'utiliser OPAM comme seul moyen de distribution.

  • [^] # Re: Sympa

    Posté par  . En réponse au journal Après le MOOC OCaml. Évalué à 1. Dernière modification le 29 décembre 2016 à 10:57.

    Un truc dont je suis bien conscient et, je pense, tout le monde dans la communauté OCaml, c'est que ce n'est pas vraiment agréable comme expérience pour les débutants.

    Pas plus que d'utiliser gcc ou clang avec un makefile et les autotools. Je pense que ce qui est le plus pénible pour un débutant c'est la librairie standard : d'un côté elle existe et répond à certain besoins, d'un autre côté elle est assez mal faite. Le problème, c'est qu'elle n'est pas assez mal faite pour l'abandonner totalement, parce qu'elle répond au moins partiellement à certaines attentes basiques. Un choix plus raisonnable aurait été de ne pas avoir de librairie standard du tout (pas de Map, HashMap, etc …).

    Ici, le développeur qui vient d'un langage avec une lib correcte (comme python pour citer le lien so you're learning ocaml) se retrouve avec une lib bancale, et soit recode ses fonctions à la main dans un fichier perso qu'il trimballe du genre utils.ml (ce que je fais pour le moment), soit il apprend une autre librairie standard, avec ses conventions. Le problème c'est que dans tous les cas, il y a un choix (Core vs Batteries vs truc perso) et que le code devient moins « portable » : quand on arrive sur un truc basique qui devient dur à comprendre parce qu'on ne connait pas la lib, et bah c'est lourd. À la fin, un mec qui lit du code finira par connaître les habitudes des gens qui écrivent leurs propres fonctions, Core et Batteries.

    Un deuxième point est la syntaxe qui est parfois très pénible, notamment la priorité des opérateurs, en particulier du if qui est super chiant. Et le fait d'utiliser des begin ... end pour corriger toutes les priorités alors que les constructions standard pourraient facilement l'éviter.

  • # Mode visuel

    Posté par  . En réponse au journal [Bookmark] Pourquoi Kakoune, la quête d'un meilleur éditeur de code. Évalué à 3. Dernière modification le 15 décembre 2016 à 19:10.

    Une chose perturbante est la « fusion » du mode normal et du mode visuel de vim en un seul et même mode dans Kakoune.

    En effet, la séparation des deux modes permet d'avoir des raccourcis différents dans vim et c'est très appréciable : dans kakoune la fusion des deux modes fait qu'il n'est pas rare d'utiliser la touche <ALT>, ce qui en soit n'est pas désagréable, mais c'est quand même moins pratique.

    D'un autre côté la sélection multiple est très bien pensée, avec une construction cohérente (malgré l'absence de séparation visuel/normal) : lettre minuscule pour se déplacer, lettre majuscule pour se déplacer et étendre la sélection.

    Dernier point faible : la répétition des actions. En effet, il n'est pas possible d'utiliser . pour répéter une action, ce qui est assez pénible.

  • [^] # Re: Mode pinaillage :-P

    Posté par  . En réponse au journal Cohérence des fonctions de tri. Évalué à 4.

    En effet, j'ai mis un bout de temps avant d'abandonner l'idée de comprendre la première phrase et continuer de lire l'article pour voir où l'auteur voulait aller :

    Dit autrement, soit x = max(a, b) si a == b, quelle est la valeur de x, a ou b ?

    Par construction, si a == b alors on ne peut pas les différencier … du coup … on retourne a ou b c'est pareil.
    J'ai fini par comprendre que l'égalité a == b ne signifiait pas l'égalité (ni au sens faible de l'égalité physique de pointeurs, ni au sens fort de l'égalité structurelle). Le problème venait donc bien du fait que la relation d'ordre n'en était pas une !

    Notons que si on définit une nouvelle relation d'égalité ~ sur les structures, et que l'ordre <= est une relation d'ordre relativement à cette relation d'égalité, et bien le comportement de max et min redevient totalement déterminé : si on a x ~ y alors c'est que dans notre programme, on a voulu confondre les deux valeurs, et donc il n'y a pas de raison de choisir un représentant plutôt qu'un autre.

    Ma conclusion c'est que raisonner sur la sémantique d'une fonction définie sur un ordre (total) en utilisant seulement un ordre (partiel) et se servir de l'implémentation pour la justifier c'est un peu foireux. D'ailleurs, en haskell la documentation précise clairement que Ord représente un ordre total:

    The Ord class is used for totally ordered datatypes.

    Et la signature de l'interface demande clairement que le type possède une certaine notion d'égalité (ce qui n'est pas nécessaire pour un préordre) :

    class Eq a => Ord a where

    Néanmoins, il est intéressant de noter que ces conditions ne sont pas vérifiées statiquement, et on peut en effet écrire

    sortBy (compare `on` snd) liste
  • # Curryfication

    Posté par  . En réponse au journal Tagless-final ou l'art de l'interprétation modulaire.. Évalué à 1.

    Bonjour !
    Avant tout je voudrais te remercier pour ce super journal, instructif et très pédagogique (ce qui a certainement demandé beaucoup de temps de ta part).

    Une modeste contribution pour la curryfication (il faut voir si c'est instructif ou non).

    Une fonction est caractérisée par un ensemble de définition (son domaine), un ensemble d'arrivée (son codomaine) et une relation univoque entre un élément du domaine vers un élément du codomaine. Lorsque l'on traite des fonctions de plusieurs variables, le domaine est constitué de n-uplets ou tuples. Le principe de la curryfication consiste à se ramener, dans ce cas, à des fonctions d'une seule variable.

    Il est dommage de construire directement des exemples dans des langages (ocaml/python) qui traitent les fonctions comme des valeurs directement. En langage mathématique, la distinction est plus nette et il est à mon avis plus lisible de comparer A × B -> C et A -> EncodeFonction(B,C), avec A, B, C et EncodeFonction(B,C) qui sont des ensembles « normaux ».

    Cela revient à dire :

    A × B -> C =~= A -> EncodeFonction (B,C)
    

    En théorie des ensembles on écrit souvent B^C pour parler de cet objet qui encode une fonction de B vers C.

    En python ou en caml, on ne travaille jamais vraiment avec des fonctions, mais toujours avec des codes qui représentent ces fonctions (ordinateur oblige), ainsi, la traduction est « déjà faite », et il suffit de produire une « fonction python ». L'égalité devient

    EncodeFonction (A × B, C)  === EncodeFonction (A, EncodeFonction (B,C))
    

    La transformation se fait très naturellement par la suite, et de manière générique (naturelle) en B,

    def bijection (codeFonction1):
        codeFonction2 = lambda a: (lambda b: codeFonction(a,b)) # dans EncodeFonction (A, EncodeFonction (B,C))
        return codeFonction2

    Notons que cela se base sur la capture d'arguments (l'argument a est utilisable dans la fonction dont l'argument est b).
    Cette construction est un cas particulier d'adjonction.

  • [^] # Re: TCP

    Posté par  . En réponse au message client serveur par socket en clientThread. Évalué à 1.

    La fragmentation au niveau du protocole IP c'est mal. En effet, si on fragmente un paquet IP, il n'y a pas de mécanisme de re-négociation, et donc il suffit de perdre un morceau du paquet pour se retrouver à renvoyer l'intégralité du paquet, ce qui n'est généralement pas une bonne idée.

    De plus, avec les NAT, ça devient marrant : « Reassembly is intended to happen in the receiving host but in practice it may be done by an intermediate router, for example, network address translation (NAT) may need to re-assemble fragments in order to translate data streams.[3] » (IP Fragmentation)

    Enfin, c'est vraiment pas très bien fait

    « In IPv4, hosts must make a best-effort attempt to reassemble fragmented IP datagrams with a total reassembled size of up to 576 bytes. They may also attempt to reassemble fragmented IP datagrams larger than 576 bytes, but they are also permitted to silently discard such larger datagrams. Applications are recommended to refrain from sending datagrams larger than 576 bytes unless they have prior knowledge that the remote host is capable of accepting or reassembling them »

    Du coup, bon, c'est bien gentil, mais autant passer par TCP, ou gérer son propre truc sur UDP, ce sera toujours mieux fait.

  • [^] # Re: TCP

    Posté par  . En réponse au message client serveur par socket en clientThread. Évalué à 1.

    Je ne suis pas expert en réseau, mais voilà comment il me semble que cela marche :

    1. La couche physique envoie des messages encodés d'une certaine manière et n'est pas fiable (ou peu). C'est le câble.
    2. La couche lien s'occupe de prendre une trame et de la convertir en un message encodé pour la couche physique. C'est le cas d'Ethernet, ou des normes WiFi. Encore une fois, même si elles font des choses pour limiter les pertes, elles ne sont pas fiables.
    3. La couche protocole (IP) s'occupe d'envoyer un message à une destination distance (c'est à dire pas uniquement sur le lien local) et gère en particulier le routage. Encore une fois elle n'est pas fiable (enfin, autant que les couches en dessous)
    4. Enfin, la couche transport (TCP/UDP) s'occupe des mécanismes plus haut niveau pour envoyer des messages via IP. En particulier, TCP va découper les messages, et même si les paquets arrivent dans le désordre il est capable de les remettre dans le bon. En plus, il gère dans une certaine mesure la perte de paquet et normalement il est fiable.

    C'est le protocole TCP qui gère tout pour nous dans le cas du streaming : l'ordre, la perte, etc …

    Ça dépend pour quoi, UDP est un protocole qui gère les choses de manière très différente. Par exemple, il y a une notion de message, et on récupère/envoie des messages « en un bloc ». En revanche, il n'y a aucune garantie d'ordre d'arrivée, et pas de gestion des pertes. En contre partie, c'est beaucoup plus rapide que TCP.

    De manière historique, TCP est clairement un protocole destiné à gérer des flux de données, et on peut le constater non seulement par la sémantique des appels recv et send, mais aussi en regardant le nom associé pour la création de la socket SOCK_STREAM.

    Cela dépend de l'utilisation, ici j'avais l'impression qu'il voulait quelque chose de simple, et ajouter encore une couche (comme HTTP) serait un peu surfait.

    Non il ne faut pas changer la valeur 1024, enfin, cela ne va pas changer grand chose. De toute manière, l'API socket est la suivante : quand on fait un recv (1024), il nous donne un contenu qui fera au plus 1024 octets, mais peut-être qu'il en fait beaucoup moins ! Du coup, même si la taille du fichier envoyé est inférieure à 1024, il se peut que TCP découpe et que deux/trois/mille recv soient nécessaires …

  • # TCP

    Posté par  . En réponse au message client serveur par socket en clientThread. Évalué à 3.

    Bonjour,

    Le code que tu utilises ne marche pas pour une raison très simple : quand on fait de la communication réseau au niveau applicatif (comme toi), on utilise généralement une couche transport qui est UDP ou TCP. Tu as utilisé TCP (en précisant que la socket est de type SOCK_STREAM), et c'est une bonne chose pour ce genre d'utilisation, seulement, il faut comprendre comment TCP fonctionne.

    Quand tu demandes à TCP d'envoyer un message, il le découpe en plein de morceaux, chaque message est alors envoyé via IP (généralement), qui lui même va le filer à une couche lien, qui elle même va faire transiter le paquet sur un bon vieux câble (ou du wifi). Lors de la réception, l'inverse est effectué, en écoutant le câble, la couche lien va faire remonter le paquet IP, qui lui même revient à la couche TCP.

    Comme tu as pu le remarquer, d'un côté il y a un découpage implicite, de l'autre il n'y a pas de reconstruction, c'est une des particularités de TCP : il produit uniquement des flux. En conclusion :

    1. C'est à toi de délimiter la fin d'un message
    2. C'est à toi d'accumuler les bouts de message à la réception jusqu'à obtention d'un message complet

    Dans ton cas, TCP est particulièrement adapté car dès que tu lis un paquet, tu peux écrire directement ce morceau dans le fichier, et faire du streaming, plutôt que d'attendre d'avoir l'intégralité du fichier en mémoire avant de l'écrire. Note par exemple que le paramètre que tu donnes à recv est la taille maximale d'un message que tu veux lire … donc sauf si ton fichier fait moins de 1024 octets il te faudra nécessairement plusieurs recv pour récupérer ton fichier en entier.

    socket_client = ...
    
    while 1:
        message = socket_client.recv (1024)
        contenu,doit_terminer = fonction_qui_determine_si_on_est_a_la_fin (message)
        file.write (contenu)
        if doit_terminer:
            break

    J'espère que j'ai été assez clair et que tu peux maintenant continuer ton programme :-)

  • [^] # Re: Pointeurs multiples

    Posté par  . En réponse à la dépêche GNOME 3.22 Karlsruhe : A Land Far, Far Away. Évalué à 1.

    Il serait logique que le focus soit différent pour chaque pointeur, et comme on a déjà la notion de paire (pointeur/clavier), les différents claviers auraient un focus différent. Est-ce que c'est possible ? C'est une question de gestionnaire de fenêtres il me semble.

  • [^] # Re: Exemple judicieux ?

    Posté par  . En réponse à la dépêche Apprendre la programmation fonctionnelle avec le MOOC OCaml. Évalué à 2.

    Version courte: votre "fold" ne fait pas la même chose

    C'est là qu'est l'erreur, cette fonction fait exactement la même chose !

    Que fait un fold sur une liste ?

    1. Il commence avec une graine : le paramètre f dans le code du journal
    2. Il accumule des valeurs : le paramètre g dans le code du journal

    Une preuve possible que c'est bien la même chose, nous allons montrer que si f et e sont respectivement une fonction d'accumulation et une graine, alors on peut trouver f' et g' deux fonctions (arguments du fold du journal) telles que quelque soit la liste l :

    fold f e l = fold f' g' (encode_en_arbre l) 
    

    J'ai commencé une preuve sur la structure du journal, mais celle-ci possède de nombreux défauts

    1. Les arbres ne contiennent que des entiers
    2. Il n'y a pas d'arbre vide

    Le deuxième point ne permet pas d'encoder la liste vide, le premier est plus embêtant parce qu'il ne permet pas de retrouver où commence la liste dans l'encodage (tous les noeuds sont identiques).

  • [^] # Re: Exemple judicieux ?

    Posté par  . En réponse à la dépêche Apprendre la programmation fonctionnelle avec le MOOC OCaml. Évalué à 2.

    En effet je n'ai pas été très clair.

    Pour revenir sur le sujet du fold (avant de parler de ce que j'ai voulu dire en parlant d'ordre) voilà pourquoi il est naturel de dire que la fonction proposée dans le journal est un fold. Alors, pour cela il faut savoir ce qu'on entend par fold. C'est là que la divergence d'opinion provient : tu veux que ce soit une fonction qui ait une signature plus ou moins proche de celle sur des collections de même nature que les listes (tableaux, etc …), tandis qu'on peut interpréter cette signature comme une spécification d'un concept plus général.

    Très rapidement, je vais expliquer d'où provient cette spécialisation. Passer ce paragraphe si c'est déjà connu.
    Je vais généraliser d'une manière grossière (on peut faire mieux) mais les types en ocaml (somme et produits) permettent de construire une algèbre de termes. La construction est très simple, c'est construire le type des arbres avec pour noeuds les constructeurs (et le nombre de fils correspondants à constructeur). Cette construction généralise clairement celle des listes.
    Si on se demande maintenant d'où vient le fold, on comprend que c'est une fonction d'évaluation sur les listes, qui part d'une graine et qui accumule un résultat. Une manière totalement générale de faire ceci sur des termes arbitraires c'est de mettre des graines sur les feuilles, et faire remonter les valeurs en les combinant en fonction des noeuds.
    Comme pour la liste les noeuds sont toujours de type concaténation, il suffit de donner une unique fonction de combinaison de valeurs, et comme il y a une seule fin de liste (la liste vide) il suffit de donner une valeur comme graine.

    Il y a donc de très bonnes raisons pour dire que ces deux choses sont similaires, au point qu'on puisse les nommer de manière identique (comme une grosse fonction fold polymorphique qui déciderait en fonction de la structure comment agir).

    Pour revenir sur la notion d'ordre, c'était simplement pour dire que si tu veux utiliser la « vraie » fonction fold, elle ne peut faire des combinaisons que locales, et accumuler un résultat. Pour un arbre, il est possible d'écrire les noeuds dans une liste (par exemple avec un parcours), mais appliquer un fold séquentiel dessus semble très étrange (vu qu'il ne respectera presque aucune propriété) sauf si on sait que l'opérateur vérifie des hypothèses très fortes. Je voulais simplement dire que pour un arbre, l'opération « importante » c'est de faire des branchements, et donc proposer une fonction « linéaire » de réduction c'est très souvent impossible.

  • [^] # Re: Exemple judicieux ?

    Posté par  . En réponse à la dépêche Apprendre la programmation fonctionnelle avec le MOOC OCaml. Évalué à 2.

    'a coll -> 'b -> ('b -> 'a -> 'b) -> 'b

    C'est la signature pour une collection séquentielle, cela veut dire que les opérations sont faites de proche en proche en suivant un parcours particulier de la structure (par exemple un parcours en profondeur dans un arbre). Ce n'est généralement pas la chose la plus intuitive pour une structure d'arbre.

    La fonction fold qui est définie dans le journal est bel et bien ce que l'on désire, c'est à dire un catamorphisme.