mais j'ai dit "ou toute autre license plus libre" \o/ donc j'en fait don à l'humanité (et aux peuplades extraterrestres tant qu'ils ont des patates et de la crème, s'ils en ont pas, nous aviserons)
Le 26 janvier 2021, Rolafutor de la planète Surcoufia prit connaissance de ta recette. Intrigué il se rendit chez la mère Jean pour goûter le mystérieux gratin et envoya un message infra-temporel à ces supérieurs: c'est donc dans un restaurant que débuta le plus grand conflit qu'ait connu l'humanité, l'opposant à un empire trans-galactique soucieux de contrôler les dernières resources de crème fraîche et de patates d'un univers à limite de la rupture culinaire. (Musique dramatique de votre choix.)
"Que personne de sérieux n'arrive à démontrer scientifiquement que ça fonctionne. C'est tout." : si la mortalité des hôpitaux français où l'HCQ a été prescrite est plus faible que là où elle ne l'a pas été, si ça ne te suffit pas…
Ce n'est pas l'aiguille de ma montre qui entraîne les cloches de l'église, corrélation et causalité ce n'est pas pareil… faire la distinction entre les deux c'est à peu près le problème fondamental de la science.
mais comme disait Einstein : l'univers est fini, mais pas la bêtise humaine qui, elle, est infinie.
C'est une restitution approximative d'une citation controversée… tous les moyens de démontrer la solidité de son argumentation te sont bons! :-D
Une autre chose qu'on oublie, c'est que les statistiques ne peuvent pas être comparées car chaque pays à sa méthode.
Quand-même depuis presqu'un an qu'on est obligé de répéter ça à tout bout de champ on pourrait espérer qu'on l'oublie de moins en moins! :-)
La Belgique a décidé que tout mort avec COVID était inclus dans les statistiques de décès liés au COVID.
Et même si on s'accorde là-dessus il y a des différences: l'Allemagne utilise aussi ce critère, mais cela ne veut pas dire que les analyses médicales sont systématiques pour tout cas de décès. Si on traite différemment les décès en milieu familial, hospitalier ou semi-hospitalier on arrive à des visions très différentes du phénomène.
Sans compter les divers effets de seuil: en Allemagne toujours il y a eu un jour ou environ trente mille contaminations ont été relevées… agrégeant les statistiques qui dormaient depuis quelques jours dans les tiroirs pour cause de fêtes de fin d'année.
Bref, il faut tenir compte de tout cela pour tirer un bilan honnête de la situation et attribuer les bonnes causes aux bons effets.
Ce qui va prendre beaucoup prendre de temps et occuper la recherche académique , notamment en médecine, politique et administration, pendant quelques années et je ne prends pas trop de risque à dire qu'on aura encore des études qui sortiront sur la gestion de crise jusqu'en 2026 au moins.
C'est terrible d'écrire ça mais être à proximité d'un assistant vocal et donc d'être écouté par cet assistant est aujourd'hui le cas général – jusqu'à ce qu'on rende ces outils illégaux? (À moins qu'ils ne le soient déjà?) Il n'y a aucune raison de croire qu'on n'est pas proche d'un assistant vocal à moins de prendre des mesures spécifiques pour cela.
(Même sans assistant vocaux, les téléphones portables ont une longue historique de détournement comme micro-espions – depuis la fin des années 90 au moins.)
De 2000 à 2010 environ j'ai essentiellement utilisé Gnus/Emacs (oui Gnus: “gniouzes”) pour lire et écrire mes mails. Les raisons principales qui font que je ne l'utilise plus sont que:
Cela encaisse mal le volume des communications. En étant abonné à quelques mailing lists à fort trafic (FreeBSD), recevant plein de spams (plus de 50 par j) et ayant une messagerie d'entreprise avec un trafic complètement délirant, le logiciel ne suit pas.
La plupart des mes correspondants préfèrent les messageries instantanées. (Pas tous, la plupart.)
En travaillant avec plusieurs ordinateurs cela demande un effort de synchroniser les configurations de ces logiciels.
Comme tu le constates, les clients de messagerie ne sont pas très satisfaisants… soit la gestion des fils de discussion, tags, … est mauvaise ou inexistante, soit le flot de travail est contre-intuitif, soit trop gourmand en ressources, … bref aucun que j'ai utilisé en me disant “C'est vraiment ce qu'il me faut.”
Du coup j'utilise essentiellement les interfaces web de mes diverses messageries.
Si tu as un volume de messages relativement faible et que tu aimes bien configurer tout ce qui est configurable, j'avais trouvé Gnus/Emacs vraiment bien!
J'ai peu d'espoir que ce genre d'initiative améliore la gestion de crise du gouvernement (#YOLO) et j'ai peur qu'au contraire ça n'affaiblisse encore d'avantage celui-ci, le rendant encore moins capable de gérer la situation
Si l'autorité du ministre de la santé par exemple est entamée par la procédure au point qu'il ne puisse continuer d'assumer ses fonctions il démissionnera et l'administration assurera la continuité de la gestion de crise.
C'est un peu étrange mais si nous pouvons certainement regretter que ces opérations doivent être menées, car on préfèrerait que les problèmes qui les motivent n'aient pas eu lieu, il nous faut pourtant aussi nous réjouir qu'elles soient menées, car elles font honneur à notre démocratie.
mais en même temps le timing me met un petit peu mal à l'aise.
Ça c'est un peu comme les vacances des salariés, tomber malade, ou les examens à la fac: ce n'est jamais le bon moment, tout simplement!
Ce n'est pas vraiment un “shell lisp” ce que je montre en exemple c'est juste un usage interactif dans la boucle d'interaction mais les fonctions en question sont “juste” des fonctions utilisables dans n'importe quel programme. (Lisp gomme beaucoup de différences entre l'usage interactif du langage et l'usage non interactif.)
La bibliothèque définit un type “command” et des fonctions pour exécuter une commande selon les modes que j'ai décrits “utilitaire”, ”test”, ”recherche” ou “filtre”. L'utilisation de la fonction “cp” renvoie donc une commande, et pour rendre l'écriture d'interfaces comme la fonction “cp” et le programme Unix “cp” facile, j'ai écrit une macro qui s'occupe de toute la plomberie et qui s'utilise comme ça:
(define-commandcp(pathname-listdestination)((follow:flag"-H")(force:flag"-f")(recursive:flag"-R"))(:program#p"/bin/cp":documentation"Run cp(1) on PATHNAME-LIST and DESTINATION.":reference"http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cp.html":rest(append(ensure-listpathname-list)(listdestination))))
En évaluant ce bout de code, Lisp définit une fonction “cp” qui comprend les options “follow”, ”force” et “recursive” et les traduits en les arguments correspondants du programme “cp”.
Cette macro traite “le cas facile” mais pour “find*” j'ai du comme tu le devinais dans ton commentaire écrire une interface spécifique:
(defunfind*(predicate-exprpathname&keydirectoryenvironmentfollow)"Prepare a find(1) command on PATHNAME with the given PREDICATE-EXPR.The options are FOLLOW If set, symbolic links are followed. DIRECTORY A pathname to a working doirectory to use when running the command.";; References: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html(make-instance'command:program#p"/usr/bin/find":directorydirectory:environmentenvironment:argv(append(whenfollow(list"-L"))(mapcar#'define-command/to-string(ensure-listpathname))(find-predicate-to-argvpredicate-expr))))
(Le “make-instance” en Lisp c'est comme le “new” en C++ pour faire vite.)
La partie compliquée est cachée dans la fonction “find-predicate-to-argv” qui convertit un prédicat comme '(:and (:has-kind :regular)(:name "*.lisp")) en quelque chose que le programme “find” comprend.
Qu'est-ce que c'est lush? Il me semble avoir compris en survolant la page qu'il s'agissait d'un langage “à la Lisp” mais qui ne cherche pas du tout à implémenter un Lisp standard (par exemple, pas trace de CLOS). En tout cas merci du lien, je m'intéresse aussi au calcul scientifique et à l'apprentissage automatique, j'y consacrerai un peu de temps.
Comment as-tu découvert lush et pour quoi t'en sers tu?
Ah oui, maintenant je me souviens du gros problème que j'avais avec 5AM il y a deux ans, et la raison pour-laquelle j'ai écrit Kaputt (en plus du fait que je voulais mieux comprendre le traitement des erreurs).
La raison est que lorsqu'un test du style
(is(equalab))
n'est pas satisfait on a besoin de voir a et b, ce que montre 5AM et la plupart des outils analogues. Là où ça se corse, c'est lorsqu'on dévie de la forme la plus simple du test
(is(prédicat-binaireattendureçu))
la macro is a besoin de savoir des choses sur le prédicat pour montrer intelligemment les arguments, par exemple si on a quelque chose comme:
Ah cool, merci pour le commentaire encourageant et les détails! :-)
J'ai vu que le “cookbook” présente PROVE comme obsolète, du coup il faudrait réécrire la section. Qu'est-ce que tu préconiserais comme paquet de référence pour le remplacer?
je voudrais commencer par un message assez encourageant et rassurant: c'est une très beau problème que tu te poses et se le poser est déjà presque le résoudre. Il n'y a pas d'absolu dans la simplicité et en ce qui me concerne je continue d'avancer sur ce chemin même si je programme depuis maintenant presque 30 ans!
Pour faire des progrès dans ce domaine, voici quelques idées que tu pourrais voiloir incorporer dans ta pratique:
En parler à tes collègues!
C'est tout bête mais si tu travailles dans un environnement assez ouvert et qui stimule la progression c'est un sujet que tu peux aborder très ouvertement avec tes collègues et par exemple convenir avec ton équipe que le critère de simplicité soit systématiquement abordé dans les revues par exemple pour les 3 prochains mois.
Programmer en binôme
C'est une pratique plus ou moins répandue mais un des nombreux bénéfices de la programmation en binôme (pairing) est généralement l'obtention d'une code plus simple.
Faire des lectures critiques régulièrement.
Pour les 3 prochains mois tu peux te réserver 1-2h par semaine pour lire des programmes écris par d'autres, ou des programmes que tu as écris toi-même il y a longtemps, en te concentrant particulièrement sur les aspects de simplicité qui te préoccupent en ce moment. (C'est en général une bonne chose de lire du code écrit par d'autres!)
Un exercice consiste par exemple à partir d'un comportement du programme qu'on voudrait modifier et à examiner le programme pour 1/trouver la partie responsable et 2/comprendre les conséquences de cette modification. Tous les obstacles à 1 et 2 sont autant d'enseignements qu'on peut retirer.
Faire du développement gouverné par les tests (test driven development en beau nanglais)
Le cycle de va et viens entre les tests et le programme aident à se concentrer sur les attentes du programme et souvent à privilégier des solutions simples.
Apprendre de nouveaux langages de programmation
C'est un gros investissement en temps mais apprendre de nouveaux langages tous les 3-4 ans est vraiment quelque chose qui m'a fait progresser dans la programmation en général et en simplicité en particulier. Par exemple quand j'étais encore à la fac je faisais surtout du OCaml et des Shell scripts. Un beau jour je me suis rendu compte que j'écrivais beaucoup plus rapidement mes programmes avec le Shell qu'avec OCaml – alors que ce langage très primitif qu'est le Shell devrait être battu à plate couture par le langage de très haut niveau qu'est OCaml! C'est donc dans ma pratique de ces langages que je devais chercher l'explication et En faisant un peu d'autocritique je me suis rendu compte quellen programmant OCaml je passais beaucoup plus de temps à m'amuser et à explorer les possibilités expressives du langage qu'à me concentrer réellement sur les fonctions de me programme. Bien-sûr cette exploration a aussi des vertus mais en ce qui concerne la recherche de simplicité elles sont plutôt nuisibles.
Quand on programme le Shell tout est simple: typiquement une fonction lit son entrée sur STDIN écrit sa réponse sur STDOUT e basta.
Ce point est particulièrement important si tu fais de la POO avec un langage tel que Java, où tout est un object ce qui pousse naturellement à faire de plutôt mauvaises modélisations (souvent beaucoup trop granulaires et avec les relations de dépendance dans le mauvais sens) et à définir trois classes là où le problème n'en exige qu'une.
Rien que son nom, toki pona peut s'interpréter de différentes manières tel que "langue du bien" ou […]
ou encore novlangue. ;-) (Je taquine, rien de sérieux.)
L'expérience que tu décris par “De part sa simplicité, la langue force à changer sa manière de penser” je l'ai en partie vécue en m'installant en Allemagne il y a 10 ans avec des connaissances rudimentaires dans la langue. Cela m'a permis de retrouver les chemin vers les catégories les plus simples comme “oui, non, bon, mauvais, j'aime, j'aime pas, je veux, je veux pas” et rappelé que s'il est louable de faire preuve d'esprit de finesse, il ne faut pas pour autant perdre de vue ces catégories car lorsque le temps est venu d'agir ou décider, il n'y a pas toujours d'entre deux et d'équilibre.
À ce propos, les gens de la mer étaient-ils vraiment obligés de créer tout un vocabulaire redondant avec le français courant ?
Il faut croire que oui. :-) Surtout il ne faut pas oublier que jusqu'à il n'y a pas très longtemps le français n'était pas forcément parlé par les français, qui pratiquaient des langues régionales. Les gens de la mer dont le vocabulaire a irrigué notre langue n'étaient pas forcément français et de nombreux termes de marine proviennent du néerlandais.
Gauche, droite, avant et arrière sont vraiment ambiguës au point de nécessiter bâbord, tribord, proue et poupe ?
Sur un bateau entraîné par des rameurs, ces derniers et le barreur (qui guide l'embarcation) regardent dans des directions opposées, ce qui rend gauche et droite assez ambigus.
Si on veut écrire du code spaghetti dégueulasse le GO TO est complètement obsolète: la programmation asynchrone avec callbacks à la NodeJS ou bien les architectures d'applications décentralisées faisant un usage intensif des “bus d'évènements” surpassent largement le GO TO dans leur acceptation techno-sociale ou leur champ d'action. ;-)
Cependant si cela était amené à se reproduire et que tu ne disposais pas de sauvegardes il y a un réflexe absolument vital à avoir: ne pas utiliser en écriture le disque ou les partitions où sont enregistrées les fichiers “perdus”: il faut éviter le moindre risque que l'OS réclame l'espace utilisé par les fichiers (cas du rm -rf malheureux par exemple).
Donc booter en read-only, si besoin depuis un système de récupération. À l'époque j'avais eu une bonne expérience avec https://www.cgsecurity.org/wiki/TestDisk sous FreeBSD.
Ceci dit le plus simple est d'avoir une sauvegarde à jour. (On trouve des volume USB de 2TB dans le 50 EUR aujourd'hui ce qui devrait amplement faire l'affaire et le stockage en ligne est relativement abordable aussi.)
[^] # Re: Soyons sérieux nous sommes sur Linuxfr.org tout de même !
Posté par Michaël (site web personnel) . En réponse au journal de l'art et la manière de faire du gratin dauphinois. Évalué à 8.
Le 26 janvier 2021, Rolafutor de la planète Surcoufia prit connaissance de ta recette. Intrigué il se rendit chez la mère Jean pour goûter le mystérieux gratin et envoya un message infra-temporel à ces supérieurs: c'est donc dans un restaurant que débuta le plus grand conflit qu'ait connu l'humanité, l'opposant à un empire trans-galactique soucieux de contrôler les dernières resources de crème fraîche et de patates d'un univers à limite de la rupture culinaire. (Musique dramatique de votre choix.)
[^] # Re: Hérésie !
Posté par Michaël (site web personnel) . En réponse au journal de l'art et la manière de faire du gratin dauphinois. Évalué à 3.
au lait délicieusement parfumé à l'ail – prévoir une casserole énorme car le lait monte, comme chacun sait :-)
[^] # Re: J'ai faim...
Posté par Michaël (site web personnel) . En réponse au journal de l'art et la manière de faire du gratin dauphinois. Évalué à 2.
C'est à peu près tout les pays sauf la France quoi :-)
[^] # Re: parfait ça marche merci
Posté par Michaël (site web personnel) . En réponse au message SSH linux compression dossier. Évalué à 4. Dernière modification le 26 janvier 2021 à 16:33.
Coucou Thieri,
tu peux utiliser plusieurs fois l'option
--exclude
pour ajouter des dossiers à la lister de dossier omis de l'archive.Lorsque tu sais quelle option ou fonction te permet d'atteindre un effet similaire à ce dont tu as besoin, tu peux
Bien-sûr poser une question ici, ce qui t'oblige à attendre une réponse.
Regarder la page de manuel ou d'info de la commande
man tar
ouinfo tar
dans le terminal ou bien en ligne.Faire une recherche sur les sites d'entraide type StackOverflow
Bonne chance et bienvenue sur LinuxFr ! :-)
(P.S. Sur le site tu peux répondre à un commentaire pour créer une discussion, au lieu de répondre dans un commentaire séparé.)
[^] # Re: Platistes
Posté par Michaël (site web personnel) . En réponse au journal toujours pas convaincus par l'Hydroxychloroquine ?. Évalué à 7.
Ce n'est pas l'aiguille de ma montre qui entraîne les cloches de l'église, corrélation et causalité ce n'est pas pareil… faire la distinction entre les deux c'est à peu près le problème fondamental de la science.
C'est une restitution approximative d'une citation controversée… tous les moyens de démontrer la solidité de son argumentation te sont bons! :-D
[^] # Re: Le Professeur Maboul et l’extrême droite sont dans un bateau
Posté par Michaël (site web personnel) . En réponse au journal toujours pas convaincus par l'Hydroxychloroquine ?. Évalué à 6.
Quand-même depuis presqu'un an qu'on est obligé de répéter ça à tout bout de champ on pourrait espérer qu'on l'oublie de moins en moins! :-)
Et même si on s'accorde là-dessus il y a des différences: l'Allemagne utilise aussi ce critère, mais cela ne veut pas dire que les analyses médicales sont systématiques pour tout cas de décès. Si on traite différemment les décès en milieu familial, hospitalier ou semi-hospitalier on arrive à des visions très différentes du phénomène.
Sans compter les divers effets de seuil: en Allemagne toujours il y a eu un jour ou environ trente mille contaminations ont été relevées… agrégeant les statistiques qui dormaient depuis quelques jours dans les tiroirs pour cause de fêtes de fin d'année.
Ce qui va prendre beaucoup prendre de temps et occuper la recherche académique , notamment en médecine, politique et administration, pendant quelques années et je ne prends pas trop de risque à dire qu'on aura encore des études qui sortiront sur la gestion de crise jusqu'en 2026 au moins.
[^] # Re: seriously ??
Posté par Michaël (site web personnel) . En réponse au journal toujours pas convaincus par l'Hydroxychloroquine ?. Évalué à 8.
Arrêter d'en balancer, c'est vraiment trop demander?
# Il faut plutôt partir du point de vue inverse
Posté par Michaël (site web personnel) . En réponse au message Peut-on savoir si on est à proximité d'un assistant vocal ?. Évalué à 6. Dernière modification le 17 janvier 2021 à 23:12.
C'est terrible d'écrire ça mais être à proximité d'un assistant vocal et donc d'être écouté par cet assistant est aujourd'hui le cas général – jusqu'à ce qu'on rende ces outils illégaux? (À moins qu'ils ne le soient déjà?) Il n'y a aucune raison de croire qu'on n'est pas proche d'un assistant vocal à moins de prendre des mesures spécifiques pour cela.
(Même sans assistant vocaux, les téléphones portables ont une longue historique de détournement comme micro-espions – depuis la fin des années 90 au moins.)
# Une question de volume?
Posté par Michaël (site web personnel) . En réponse au journal Vim ou Emacs pour le courriel ?. Évalué à 9.
De 2000 à 2010 environ j'ai essentiellement utilisé Gnus/Emacs (oui Gnus: “gniouzes”) pour lire et écrire mes mails. Les raisons principales qui font que je ne l'utilise plus sont que:
Cela encaisse mal le volume des communications. En étant abonné à quelques mailing lists à fort trafic (FreeBSD), recevant plein de spams (plus de 50 par j) et ayant une messagerie d'entreprise avec un trafic complètement délirant, le logiciel ne suit pas.
La plupart des mes correspondants préfèrent les messageries instantanées. (Pas tous, la plupart.)
En travaillant avec plusieurs ordinateurs cela demande un effort de synchroniser les configurations de ces logiciels.
Comme tu le constates, les clients de messagerie ne sont pas très satisfaisants… soit la gestion des fils de discussion, tags, … est mauvaise ou inexistante, soit le flot de travail est contre-intuitif, soit trop gourmand en ressources, … bref aucun que j'ai utilisé en me disant “C'est vraiment ce qu'il me faut.”
Du coup j'utilise essentiellement les interfaces web de mes diverses messageries.
Si tu as un volume de messages relativement faible et que tu aimes bien configurer tout ce qui est configurable, j'avais trouvé Gnus/Emacs vraiment bien!
https://www.gnu.org/software/emacs/manual/html_node/gnus/Starting-Up.html#Starting-Up
Il y a même un chapitre “Emacs pour les païens” :D
# Au risque de passer pour un petit joueur …
Posté par Michaël (site web personnel) . En réponse au journal Un RISC-V sous Linux pour $12.50. Évalué à 2.
Au risque de passer pour un petit joueur je dois souligner qu'il faut écrire “un jeu d'instructions” avec “jeu” au singulier.
[^] # Re: Impression de déjà vu
Posté par Michaël (site web personnel) . En réponse au lien Julia, le code informatique qui bouleverse la science. Évalué à 4. Dernière modification le 02 novembre 2020 à 22:51.
Ben en fait ça fait penser non seulement à Python mais à plein de langages de programmations: OCaml, Lisp, Clojure, Ruby, JavaScript, Scala, Go, …
[^] # Re: Pas que
Posté par Michaël (site web personnel) . En réponse au journal Comment se compose un exécutable Linux ?. Évalué à 3.
Par une poignée? Donc sous windows, tout est fenêtre, porte, sac à main ou tasse de thé. CQFD.
# Cela devrait être normal
Posté par Michaël (site web personnel) . En réponse au journal H.S. En France petite leçon de démocratie (de séparation des pouvoir, surtout). Évalué à 9.
Si l'autorité du ministre de la santé par exemple est entamée par la procédure au point qu'il ne puisse continuer d'assumer ses fonctions il démissionnera et l'administration assurera la continuité de la gestion de crise.
C'est un peu étrange mais si nous pouvons certainement regretter que ces opérations doivent être menées, car on préfèrerait que les problèmes qui les motivent n'aient pas eu lieu, il nous faut pourtant aussi nous réjouir qu'elles soient menées, car elles font honneur à notre démocratie.
Ça c'est un peu comme les vacances des salariés, tomber malade, ou les examens à la fac: ce n'est jamais le bon moment, tout simplement!
[^] # Re: Presque ?
Posté par Michaël (site web personnel) . En réponse au message Recréation d'arborescence et de contenu. Évalué à 2.
Ben oui, c'est bien ce qu'il faut faire!
et ceci est un conseil des plus valables!
Dans les programmes plus compliqués j'aime bien faire quelque chose comme
pour tracer les appels à un programme extérieur.
[^] # Re: Rashell
Posté par Michaël (site web personnel) . En réponse au journal Rashell – Une bibliothèque pour remplacer les scripts shells par du Lisp. Évalué à 2.
Ce n'est pas vraiment un “shell lisp” ce que je montre en exemple c'est juste un usage interactif dans la boucle d'interaction mais les fonctions en question sont “juste” des fonctions utilisables dans n'importe quel programme. (Lisp gomme beaucoup de différences entre l'usage interactif du langage et l'usage non interactif.)
La bibliothèque définit un type “command” et des fonctions pour exécuter une commande selon les modes que j'ai décrits “utilitaire”, ”test”, ”recherche” ou “filtre”. L'utilisation de la fonction “cp” renvoie donc une commande, et pour rendre l'écriture d'interfaces comme la fonction “cp” et le programme Unix “cp” facile, j'ai écrit une macro qui s'occupe de toute la plomberie et qui s'utilise comme ça:
En évaluant ce bout de code, Lisp définit une fonction “cp” qui comprend les options “follow”, ”force” et “recursive” et les traduits en les arguments correspondants du programme “cp”.
Cette macro traite “le cas facile” mais pour “find*” j'ai du comme tu le devinais dans ton commentaire écrire une interface spécifique:
(Le “make-instance” en Lisp c'est comme le “new” en C++ pour faire vite.)
La partie compliquée est cachée dans la fonction “find-predicate-to-argv” qui convertit un prédicat comme
'(:and (:has-kind :regular)(:name "*.lisp"))
en quelque chose que le programme “find” comprend.[^] # Re: Snif !
Posté par Michaël (site web personnel) . En réponse au journal Rashell – Une bibliothèque pour remplacer les scripts shells par du Lisp. Évalué à 2.
Qu'est-ce que c'est lush? Il me semble avoir compris en survolant la page qu'il s'agissait d'un langage “à la Lisp” mais qui ne cherche pas du tout à implémenter un Lisp standard (par exemple, pas trace de CLOS). En tout cas merci du lien, je m'intéresse aussi au calcul scientifique et à l'apprentissage automatique, j'y consacrerai un peu de temps.
Comment as-tu découvert lush et pour quoi t'en sers tu?
[^] # Re: + de doc sur CL
Posté par Michaël (site web personnel) . En réponse au journal Kaputt – une bibliothèque pour tester ses programmes Common Lisp. Évalué à 2.
Ah oui, maintenant je me souviens du gros problème que j'avais avec 5AM il y a deux ans, et la raison pour-laquelle j'ai écrit Kaputt (en plus du fait que je voulais mieux comprendre le traitement des erreurs).
La raison est que lorsqu'un test du style
n'est pas satisfait on a besoin de voir a et b, ce que montre 5AM et la plupart des outils analogues. Là où ça se corse, c'est lorsqu'on dévie de la forme la plus simple du test
la macro
is
a besoin de savoir des choses sur le prédicat pour montrer intelligemment les arguments, par exemple si on a quelque chose comme:il faut faire des efforts pour montrer les arguments.
[^] # Re: + de doc sur CL
Posté par Michaël (site web personnel) . En réponse au journal Kaputt – une bibliothèque pour tester ses programmes Common Lisp. Évalué à 2. Dernière modification le 14 septembre 2020 à 09:08.
Ah cool, merci pour le commentaire encourageant et les détails! :-)
J'ai vu que le “cookbook” présente PROVE comme obsolète, du coup il faudrait réécrire la section. Qu'est-ce que tu préconiserais comme paquet de référence pour le remplacer?
# Considérer le problème c'est déjà presque le résoudre!
Posté par Michaël (site web personnel) . En réponse au message Problèmes lors de la conception / abstraction de programmes. Évalué à 2.
Salut Pascal,
je voudrais commencer par un message assez encourageant et rassurant: c'est une très beau problème que tu te poses et se le poser est déjà presque le résoudre. Il n'y a pas d'absolu dans la simplicité et en ce qui me concerne je continue d'avancer sur ce chemin même si je programme depuis maintenant presque 30 ans!
Pour faire des progrès dans ce domaine, voici quelques idées que tu pourrais voiloir incorporer dans ta pratique:
En parler à tes collègues!
C'est tout bête mais si tu travailles dans un environnement assez ouvert et qui stimule la progression c'est un sujet que tu peux aborder très ouvertement avec tes collègues et par exemple convenir avec ton équipe que le critère de simplicité soit systématiquement abordé dans les revues par exemple pour les 3 prochains mois.
Programmer en binôme
C'est une pratique plus ou moins répandue mais un des nombreux bénéfices de la programmation en binôme (pairing) est généralement l'obtention d'une code plus simple.
Faire des lectures critiques régulièrement.
Pour les 3 prochains mois tu peux te réserver 1-2h par semaine pour lire des programmes écris par d'autres, ou des programmes que tu as écris toi-même il y a longtemps, en te concentrant particulièrement sur les aspects de simplicité qui te préoccupent en ce moment. (C'est en général une bonne chose de lire du code écrit par d'autres!)
Un exercice consiste par exemple à partir d'un comportement du programme qu'on voudrait modifier et à examiner le programme pour 1/trouver la partie responsable et 2/comprendre les conséquences de cette modification. Tous les obstacles à 1 et 2 sont autant d'enseignements qu'on peut retirer.
Faire du développement gouverné par les tests (test driven development en beau nanglais)
Le cycle de va et viens entre les tests et le programme aident à se concentrer sur les attentes du programme et souvent à privilégier des solutions simples.
Apprendre de nouveaux langages de programmation
C'est un gros investissement en temps mais apprendre de nouveaux langages tous les 3-4 ans est vraiment quelque chose qui m'a fait progresser dans la programmation en général et en simplicité en particulier. Par exemple quand j'étais encore à la fac je faisais surtout du OCaml et des Shell scripts. Un beau jour je me suis rendu compte que j'écrivais beaucoup plus rapidement mes programmes avec le Shell qu'avec OCaml – alors que ce langage très primitif qu'est le Shell devrait être battu à plate couture par le langage de très haut niveau qu'est OCaml! C'est donc dans ma pratique de ces langages que je devais chercher l'explication et En faisant un peu d'autocritique je me suis rendu compte quellen programmant OCaml je passais beaucoup plus de temps à m'amuser et à explorer les possibilités expressives du langage qu'à me concentrer réellement sur les fonctions de me programme. Bien-sûr cette exploration a aussi des vertus mais en ce qui concerne la recherche de simplicité elles sont plutôt nuisibles.
Quand on programme le Shell tout est simple: typiquement une fonction lit son entrée sur STDIN écrit sa réponse sur STDOUT e basta.
Ce point est particulièrement important si tu fais de la POO avec un langage tel que Java, où tout est un object ce qui pousse naturellement à faire de plutôt mauvaises modélisations (souvent beaucoup trop granulaires et avec les relations de dépendance dans le mauvais sens) et à définir trois classes là où le problème n'en exige qu'une.
Bonne chance!
[^] # Re: J'aime pas :)
Posté par Michaël (site web personnel) . En réponse au journal Mi kama sona e toki pona*. Évalué à 5.
ou encore novlangue. ;-) (Je taquine, rien de sérieux.)
L'expérience que tu décris par “De part sa simplicité, la langue force à changer sa manière de penser” je l'ai en partie vécue en m'installant en Allemagne il y a 10 ans avec des connaissances rudimentaires dans la langue. Cela m'a permis de retrouver les chemin vers les catégories les plus simples comme “oui, non, bon, mauvais, j'aime, j'aime pas, je veux, je veux pas” et rappelé que s'il est louable de faire preuve d'esprit de finesse, il ne faut pas pour autant perdre de vue ces catégories car lorsque le temps est venu d'agir ou décider, il n'y a pas toujours d'entre deux et d'équilibre.
Il faut croire que oui. :-) Surtout il ne faut pas oublier que jusqu'à il n'y a pas très longtemps le français n'était pas forcément parlé par les français, qui pratiquaient des langues régionales. Les gens de la mer dont le vocabulaire a irrigué notre langue n'étaient pas forcément français et de nombreux termes de marine proviennent du néerlandais.
Sur un bateau entraîné par des rameurs, ces derniers et le barreur (qui guide l'embarcation) regardent dans des directions opposées, ce qui rend gauche et droite assez ambigus.
[^] # Re: Mes premières lignes de code professionnelles
Posté par Michaël (site web personnel) . En réponse au journal Des nouvelles de Fortran. Évalué à 4.
Si on veut écrire du code spaghetti dégueulasse le GO TO est complètement obsolète: la programmation asynchrone avec callbacks à la NodeJS ou bien les architectures d'applications décentralisées faisant un usage intensif des “bus d'évènements” surpassent largement le GO TO dans leur acceptation techno-sociale ou leur champ d'action. ;-)
[^] # Re: J'ai trouvé
Posté par Michaël (site web personnel) . En réponse au message Perte de données sous linux. Évalué à 3.
Très bonne nouvelle!
Cependant si cela était amené à se reproduire et que tu ne disposais pas de sauvegardes il y a un réflexe absolument vital à avoir: ne pas utiliser en écriture le disque ou les partitions où sont enregistrées les fichiers “perdus”: il faut éviter le moindre risque que l'OS réclame l'espace utilisé par les fichiers (cas du rm -rf malheureux par exemple).
Donc booter en read-only, si besoin depuis un système de récupération. À l'époque j'avais eu une bonne expérience avec https://www.cgsecurity.org/wiki/TestDisk sous FreeBSD.
Ceci dit le plus simple est d'avoir une sauvegarde à jour. (On trouve des volume USB de 2TB dans le 50 EUR aujourd'hui ce qui devrait amplement faire l'affaire et le stockage en ligne est relativement abordable aussi.)
[^] # Re: Sans bruit?
Posté par Michaël (site web personnel) . En réponse au journal Victor Hugo : « Les nains sapent sans bruit le travail des géants ». Évalué à 4.
(Atchoum est en quarentaine.)
[^] # Re: Sans bruit?
Posté par Michaël (site web personnel) . En réponse au journal Victor Hugo : « Les nains sapent sans bruit le travail des géants ». Évalué à 3.
D'ailleurs depuis quelques jours l'un d'entre eux manque à l'appel.
[^] # Re: Les nains sont discrets
Posté par Michaël (site web personnel) . En réponse au journal Victor Hugo : « Les nains sapent sans bruit le travail des géants ». Évalué à 4.
L'œuvre des VRPs dédiée aux nains est ample, majestueuese et indispensable. “Je voudrais être un nain” ou encore “Les nénés des nanas des nains.”