kantien a écrit 1208 commentaires

  • [^] # Re: Quelle super idée !

    Posté par  . En réponse au journal Statue Android à Montélimar . Évalué à 2.

    Dans ce cas, si l'on quitte le sol français, quoi de mieux que la ville de Hambourg qui donna son nom au hamburger ?

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re:

    Posté par  . En réponse au journal Bookmark: Ordinateurs bloquants l'installation de GNU/Linux. Évalué à 2.

    Allo ? Le boot loader ?

    Ah bah non ! De ce que j'ai compris, Allo c'est la nouvelle messagerie instantanée de Google pour son système Android, rien à voir avec un bootloader.

    Allo est une appli de messagerie intelligente conçue pour être simple, fiable et amusante. Exprimez-vous avec les autocollants, les dessins, et aussi avec du texte et d'ÉNORMES émoji. Avec Allo, découvrez un aperçu de l'Assistant Google.

    :-P

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: GTK+4

    Posté par  . En réponse à la dépêche Firefox 49 en chansons. Évalué à 2.

    Au mois de juin, lors du GTK hackfest à Toronto, il y a eu des discussions sur la nouvelle politique de version de GTK. Allison Lortie a écrit deux articles, en anglais, sur le sujet :

    Le premier s'ouvre ainsi :

    The first topic that we discussed was how to deal with a problem that we have had for some time: the desire to create a modern toolkit with new features vs. the need to keep a stable API

    Traduction personnelle :

    Le premier sujet que nous avons discuté concernait la façon de gérer un problème que nous avons depuis un moment : la volonté de créer une boîte à outils moderne avec de nouvelles fonctionnalités versus le besoin de conserver une API stable.

    Nous en saurons peut être plus lors de la sortie de la prochaine dépêche sur Gnome.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: intéressant

    Posté par  . En réponse au journal Le web distribué: Zeronet, IPFS, Dat.data, Maidsafe,.... Évalué à 4. Dernière modification le 21 septembre 2016 à 14:07.

    opensource ça veut juste dire que tu peux accéder/lire au code source.

    Non, comme l'a rappelé GuieA_7 l'a définition d'open-source c'est celle-là qui comporte en introduction :

    Open source doesn't just mean access to the source code.

    Soit :

    Open source ne signifie pas seulement l'accès au code source.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: mouais

    Posté par  . En réponse au journal Un peu de méca : mesurer un module de Young avec son smartphone. Évalué à 10. Dernière modification le 21 septembre 2016 à 13:58.

    Où vois-tu du gâchis ? À titre personnel cette application ne me sera d'aucune utilité, mais de ce que je comprends du journal - et il me semble clair sur ce point là - c'est qu'il présente une application permettant de transformer son smartphone en instrument de mesure. En dehors des personnes qui sauront quoi faire de la mesure obtenue (i.e les mécaniciens), quel peut être le public cible ? Et pour eux, d'après leurs commentaires, le contenu du journal semble assez clair.

    Que voulais-tu qu'il fasse : un présentation de l'utilité pratique de déterminer l'élasticité des matériaux ? Son objectif semble plutôt avoir été : vous êtes mécanicien, il vous arrive d'avoir besoin de connaître l'élasticité des matériaux que vous utilisez ? Alors j'ai une solution pour vous : transformez votre smartphone en instrument de mesure grâce à mon application, et si vous voulez vous pouvez aussi l'installer sur votre PC en suivant la procédure décrite en fin de journal. Je me répète, mais où est le gâchis ?

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Privé ou privé ?

    Posté par  . En réponse au journal Quand on délègue sa liberté d'expression à twitter. Évalué à 2. Dernière modification le 19 septembre 2016 à 18:54.

    Si on se réfère à la loi informatique et libertés, on loit.
    « CHAPITRE II - CONDITIONS DE LICÉITÉ DES TRAITEMENTS DE DONNÉES À CARACTÈRE PERSONNEL

    Article 7
    Un traitement de données à caractère personnel doit avoir reçu le consentement de la personne concernée ou satisfaire à l’une des conditions suivantes : [Trucs qui ne concernent pas tweeter] »

    Cela ne me paraît pas si évident que cela que ces « trucs » ne concernent ni tweeter, ni reflets.

    Reprenons le texte de la loi dite informatique et libertés. L'article 2 tout d'abord expose le domaine auquel s'applique la loi ainsi que la terminologie utilisée dans le reste du texte :

    La présente loi s'applique aux traitements automatisés de données à caractère personnel, ainsi qu'aux traitements non automatisés de données à caractère personnel contenues ou appelées à figurer dans des fichiers, à l'exception des traitements mis en oeuvre pour l'exercice d'activités exclusivement personnelles, lorsque leur responsable remplit les conditions prévues à l'article 5.

    Constitue une donnée à caractère personnel toute information relative à une personne physique identifiée ou qui peut être identifiée, directement ou indirectement, par référence à un numéro d'identification ou à un ou plusieurs éléments qui lui sont propres. Pour déterminer si une personne est identifiable, il convient de considérer l'ensemble des moyens en vue de permettre son identification dont dispose ou auxquels peut avoir accès le responsable du traitement ou toute autre personne.

    Constitue un traitement de données à caractère personnel toute opération ou tout ensemble d'opérations portant sur de telles données, quel que soit le procédé utilisé, et notamment la collecte, l'enregistrement, l'organisation, la conservation, l'adaptation ou la modification, l'extraction, la consultation, l'utilisation, la communication par transmission, diffusion ou toute autre forme de mise à disposition, le rapprochement ou l'interconnexion, ainsi que le verrouillage, l'effacement ou la destruction.

    Constitue un fichier de données à caractère personnel tout ensemble structuré et stable de données à caractère personnel accessibles selon des critères déterminés.

    La personne concernée par un traitement de données à caractère personnel est celle à laquelle se rapportent les données qui font l'objet du traitement.

    Vient plus loin l'article 7, que tu n'as pas cité dans sa totalité, qui dit :

    Un traitement de données à caractère personnel doit avoir reçu le consentement de la personne concernée ou satisfaire à l'une des conditions suivantes :

    1. Le respect d'une obligation légale incombant au responsable du traitement ;
    2. La sauvegarde de la vie de la personne concernée ;
    3. L'exécution d'une mission de service public dont est investi le responsable ou le destinataire du traitement ;
    4. L'exécution, soit d'un contrat auquel la personne concernée est partie, soit de mesures précontractuelles prises à la demande de celle-ci ;
    5. La réalisation de l'intérêt légitime poursuivi par le responsable du traitement ou par le destinataire, sous réserve de ne pas méconnaître l'intérêt ou les droits et libertés fondamentaux de la personne concernée.

    En vertu de l'article 2, on pourrait arguer qu'un lien vers le résultat d'une requête sur le registre whois est une « communication par transmission, diffusion ou toute autre forme de mise à disposition », est constitue donc un traitement de donnée à caractères personnelles tel que défini par le dit article.

    Ensuite, il semble peu douteux que Jean-Paul Ney n'ait pas donné son consentement à ce traitement, et reste donc les conditions auxquelles celui-ci doit satisfaire en vertu de l'article 7. Il va de soi que reflet ne peut invoquer les points 1, 2, 3 et 4 pour justifier leur lien. Reste donc le point 5 :

    La réalisation de l'intérêt légitime poursuivi par le responsable du traitement ou par le destinataire, sous réserve de ne pas méconnaître l'intérêt ou les droits et libertés fondamentaux de la personne concernée.

    La réalisation de l'intérêt légitime poursuivi par reflets (le responsable du traitement, ce qui implique médiatement Tweeter) ou par le public de ses abonnés (le destinataire) autorisait-elle un tel traitement ? Et si oui, cela s'est-il fait sans méconnaître l'intérêt ou les droits et libertés fondamentales de Jean-Paul Ney ?

    Honnêtement je suis bien incapable de trancher juridiquement ces questions, et il semblerait que Tweeter considère que c'est là porter atteinte à l'intérêt ou aux droits et libertés fondamentaux de Jean-Paul Ney, raison pour laquelle ils ont bloqué le comte de reflets. C'est du moins ainsi que j'interprète le troisième point « divulguer les informations privées d'autres utilisateurs » dans leur message :

    message tweeter

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Oui, enfin quand on regarde les détails...

    Posté par  . En réponse au journal Quand on délègue sa liberté d'expression à twitter. Évalué à 3.

    pas tout à fait, tu en es plus le locataire que le propriétaire ;-)

    Ta formulation est effectivement plus correcte, je le loue avec un bail que je renouvelle annuellement pour l'instant.

    Toutes les informations accessibles via un whois sont publiques
    Or nous avons obtenues ces informations via un whois
    Donc ces informations sont publiques.

    J'avoue que pour moi, il était acquis que les infos d'enregistrements de noms de domaine étaient publiques. Du coup, je suis allé jeter un œil sur wikipedia, et dans le paragraphe criticism, il y a :

    Currently the Internet Corporation for Assigned Names and Numbers (ICANN) broadly requires that the mailing address, phone number and e-mail address of those owning or administrating a domain name to be made publicly available through the "WHOIS" directories

    traduction suivant la méthode rache :

    Pour le moment, l'ICANN exige que l'adresse postale, le numéro de téléphone et l'adresse e-mail des détenteurs ou administrateurs de noms de domaine soient publiquement disponibles dans les répertoires WHOIS.

    Ces points touchent effectivement la majeure du raisonnement, et tout comme toi ou reflets, elle me semblait aller de soi. Dans mon cas, ce sont les informations de mon hébergeur que l'on trouve mais je ne savais pas qu'il y avait des réflexions sur le sujet et que même l'ICANN considérait qu'il y avait là un problème. En tout cas, merci pour les liens, je vais aller voir cela.

    Cela étant, à l'heure actuelle, il me semble bien que l'on peut considérer ces informations comme publiques, ce qui n'épuise évidemment pas la question de savoir s'il était légitime de la part de reflets de le pointer du doigt.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Oui, enfin quand on regarde les détails...

    Posté par  . En réponse au journal Quand on délègue sa liberté d'expression à twitter. Évalué à 4.

    Sérieusement, en dehors de considérations légales / propres à Twitter, vous trouvez légitime ce qu'a fait Reflets?

    Qu'est ce que tu n'as pas compris dans la conclusion de mon message ?

    En revanche, sur le plan juridique, il reste une question soulevée par Sufflope qui consiste dans l'intention de reflets de signaler ces informations. Mais là, cela dépasse mes compétences juridiques.

    La première partie de mon message était une réponse à gaaaaaAab qui disait que l'argumentation de reflets pour justifier le caractère publique de ces informations n'était pas fondée sur le fait qu'elles étaient accessibles via whois. Ce à quoi je lui ai objecté que selon ma lecture ce fait constitué bien une partie de leur raisonnement, en l'occurence la mineure. Pour ce qui est de la majeure, elle me semble aller de soi.

    Je m'exprime si mal que cela pour que tu n'ais pas compris ?

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Oui, enfin quand on regarde les détails...

    Posté par  . En réponse au journal Quand on délègue sa liberté d'expression à twitter. Évalué à 3.

    Ils n'ont pas écrit que ces infos sont publiques parce que faciles à obtenir, mais et faciles à obtenir.

    Cela se discute. Leur argumentation, telle que je la comprends, pourrait s'écrire ainsi :

    Toutes les informations accessibles via un whois sont publiques
    Or nous avons obtenues ces informations via un whois
    Donc ces informations sont publiques.

    Ainsi l'argumentation de reflets pour justifier le caractère publique de ces informations et bien le fait (la mineur qui suit le or) qu'elles soient accessibles via un whois.

    Cela étant je ne leur donne pas tort sur ce point, si ces informations à l'origine privées sont accessibles via whois c'est bien que le propriétaire du nom de domaine à accepter de les rendre publiques. Je suis moi-même propriétaire d'un nom de domaine, et un whois dessus renverra entre autre ceci :

    contact:     Ano Nymous
    remarks:     -------------- WARNING --------------
    remarks:     While the registrar knows him/her,
    remarks:     this person chose to restrict access
    remarks:     to his/her personal data. So PLEASE,
    remarks:     don't send emails to Ano Nymous. This
    remarks:     address is bogus and there is no hope
    remarks:     of a reply.
    remarks:     -------------- WARNING --------------
    

    En revanche, sur le plan juridique, il reste une question soulevée par Sufflope qui consiste dans l'intention de reflets de signaler ces informations. Mais là, cela dépasse mes compétences juridiques.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Ah oui, quand même

    Posté par  . En réponse à la dépêche Séminaire de réarmement intellectuel et technique sur le "Big Data". Évalué à 1.

    Je ne suis pas du tout convaincu par ce genre de raisonnement. Si les augmentations de productivité devaient produire du chômage, alors depuis les nombreux siècles qu'on augmente la productivité, il n'y aurait plus que 1% de la population active qui aurait un travail.

    Il me semble que c'est également où voulais en venir EauFroide, et c'est peut-être pour cela qu'il a mis le mot « chômeurs » entre guillemets. Si les progrès techniques font disparaître des emplois, assurément ils en créent également de nouveau, c'est ce que Schumpeter appelait la « destruction créatrice ». Cela étant, le sophisme économique qui consiste à ne voir que la destruction sans voir la création qui l'accompagne est assez répandu. L'économiste français Frédéric Bastiat en avait recensé quelques un dans son essai Ce qu'on voit et ce qu'on ne voit pas, celui sur les machines occupant le chapitre 8, dont est extrait ce magnifique paragraphe :

    Cela ne doit pas nous surprendre. Dans une fausse voie, on est toujours inconséquent, sans quoi on tuerait l’humanité. Jamais on n’a vu ni on ne verra un principe faux poussé jusqu’au bout. J’ai dit ailleurs : l’inconséquence est la limite de l’absurdité. J’aurais pu ajouter : elle en est en même temps la preuve.

    Le chapitre 7, qui repose au fond sur le même principe de réfutation, porte lui sur la « maudite concurrence étrangère » et s'attaque au slogan à la mode de nos jours : « nos emplettes sont nos emplois » ou le patriotisme économique.

    Il a également consigné, en deux tomes, toute une série de sophismes économiques et leurs réfutations dans son livre : Sophismes économiques.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Exemple judicieux ?

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

    Il est vrai que j'ai mal présenté la chose. Disons que par rapport à une liste, il n'y a pas besoin de valeur initiale car l'arbre contient déjà tout ce qui lui faut pour faire un reduce via la fonction g. Et le fold que j'ai écrit est une généralisation d'un map+reduce.

    let fold_map f g init = function
      | [] -> failwith "empty list"
      | x::xs -> 
         let rec loop acc = function
          | [] -> acc
          | hd::tl -> loop (g acc (f hd)) tl
         in loop (g init (f x)) xs
    ;;
    val fold_map : ('a -> 'b) -> ('c -> 'b -> 'c) -> 'c -> 'a list -> 'c = <fun>
    
    fold_map (string_of_int) (fun s s' -> Printf.sprintf "(%s + %s)" s s') "1" [2; 3];;
    - : string = "((1 + 2) + 3)"
    
    (* à comparer avec cette version sur les arbres *)
    
    let t = Node (Node (Leaf 1, Leaf 2), Leaf 3) in show_p t;;
    - : string = "((1 + 2) + 3)"

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Exemple judicieux ?

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

    Pour le voir encore autrement, je vais représenter les arbres d'évaluations des fold sur une liste.

    let l = [1; 2; 3]
    
    List.fold_left (+) 0 l;;
    - : int = 6 (* ((0 + 1) + 2) + 3 *)
    
    List.fold_right (+) l 0;;
    - : int = 6 (* 1 + (2 + (3 + 0))) *)

    Dans le premier cas, on évalue ainsi :

          +
         / \
        +   3
       / \
      +   2
     / \
    0   1
    

    Dans le second, on évalue comme ceci :

      +
     / \
    1   +
       / \
      2   +
         / \
        3   0
    

    À comparer aux arbres que j'ai dessiné en réponse à Pierre-Matthieu Anglade.

    Avec des listes on construit toujours des arbres en peigne soit vers la gauche, soit vers la droite. Mais un arbre pourrait avoir une toute autre structure comme celui-là :

       / \ 
      /   \
     /\   /\
    1  2 3  0
    

    Et si tu fais un fold (fun i -> i) (+) sur lui, c'est évaluer l'expression (1 + 2) + (3 + 0)

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Exemple judicieux ?

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

    l'usage en ocaml est de nommer le reduce "fold", et pas votre catamorphisme

    Et c'est ce que fait notre fonction fold : un reduce via la fonction g. Ce qu'il y a c'est que dans une liste, ou une collection séquentielle ou linéarisée, on peut attaquer la structure par deux bouts : le début ou la fin, d'où le fold_left et le fold_right.

    Dans le cas des arbres binaires, on attaque nécessaire par la racine puis on descend dans les branches pour finir sur les bouts de la structure que sont les feuilles où l'on applique la fonction f, puis l'on réduit la structure via la fonction g. C'est bien une généralisation du cas sur les listes dont le nom technique général est catamorphisme. Voilà une série d'articles en F# sur le sujet, le premier commence par les listes :

    La différence est seulement dans le fait que l'on ne réduit pas une liste et un arbre de la même façon.

    P.S : tu as raison pour le code du fold_list : si elle est vide on renvoie une exception (ou None si on veut renvoyer un type 'a option) ou alors on passe par des listes qui ne peuvent être vides comme type 'a coll = End of 'a | Cons of 'a * 'a coll — les arbres étant garantis d'être non vides par construction.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Exemple judicieux ?

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

    Pour que ce soit peut être plus clair, je mets le code dans le cas de listes et dans celui des arbres binaires. Essayes de voir en quoi il se ressemble dans la forme.

    type 'a list = Nil | Cons of 'a * 'a list
    type 'a tree = Leaf of 'a | Node of 'a tree * 'a tree
    
    let rec fold_list f g = function
      | Nil -> f
      | Cons (x, xs) -> g x (fold_list f g xs);;
    val fold_list : 'a -> ('b -> 'a -> 'a) -> 'b list -> 'a = <fun>
    
    let rec fold_tree f g = function
      | Leaf i -> f i
      | Node (l, r) -> g (fold_tree f g l) (fold_tree f g r);;
    val fold_tree : ('a -> 'b) -> ('b -> 'b -> 'b) -> 'a tree -> 'b = <fun>

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Exemple judicieux ?

    Posté par  . En réponse à la dépêche Apprendre la programmation fonctionnelle avec le MOOC OCaml. Évalué à 1. Dernière modification le 16 septembre 2016 à 23:58.

    Mon propos est qu'il est d'usage d'appeler la première version fold. Si j'avais l'habitude de sommer les feuilles de mon arbres avec fold (+) zero tree vous me demandez maintenant de l'écrire zero + (fold (+) (fun x -> x) tree). Alors ok ça fait la même chose mais en l'utilisant différemment. Je dis simplement que je trouves cela perturbant…

    Non, tu n'a toujours pas compris. Il n'y a pas de zero dans le cas des arbres ! C'est la fonction f qui joue le rôle de cette constante que l'on fournit dans le cas des fold sur les listes : c'est bien plus fonctionnel que ce à quoi tu veux réduire le fold. Tu cherches à le réduire au cas où la graine est une constante, et on te dit que comme on est dans un langage fonctionnel cela peut aussi être une fonction. C'est pour cela que c'est une généralisation du cas sur les listes.

    Une liste à pour type : type 'a list = Nil | Cons of 'a * 'a list, ce sont des listes chaînées. Quand on parcourt une liste on termine toujours sur Nil et c'est la qu'on utilise la graine. Dans un langage impératif ce serait la gestion du cas où l'on tombe sur un pointeur null. Dans le cas des arbres, en bout de parcours on tombe sur une feuille qui contient un int et alors on applique une fonction. Le principe est identique mais généralisé.

    Comme te l'as dit Aluminium95 :

    Que fait un fold sur une liste ?

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

    Il n'y a que toi que cela perturbe, tu es la première personne que je rencontre qui voit là un problème.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Retour d'expérience sur la première session

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

    Tu veux prendre de l'avance :-p ?

    Oh non, je ne pense pas m'inscrire à la formation, je n'ai pas besoin d'être initié à la programmation fonctionnelle. ;-)

    Mon premier projet en OCaml (et mon seul d'ailleurs, je ne suis pas développeur) consistait à implémenter un EDSL d'arithmétique transfinie, et ma machine était sous Windows 98. Même si je ne programme plus, ou peu, cela m'a permis de comprendre véritablement le problème de l'arrêt et pourquoi l'hypothèse du continu de Cantor était indécidable.

    Je suis dans une position inverse de la tienne, en tant que mathématicien c'est plutôt les paradigmes impératif et orienté objet qui me semble difficile à comprendre par moment. Quand je lis du code dans ces paradigmes, j'ai souvent l'impression de tomber sur la comptine des neufs divisions

    Division par 1 :

    • Pas besoin de diviser. (1 étant le nombre élémentaire, la division n’est pas nécessaire). La méthode n’est pas définie.

    Division par 2 :

    • 2, 1, augmente-le pour obtenir 5.
    • Si tu rencontres 2, avance 10.

    Division par 3 :

    • 3, 1, 31.
    • 3, 2, 62.
    • Si tu rencontres 3, avance 10.

    Division par 4 :

    • 4, 1, 22.
    • 4, 2, augmente-le pour obtenir 5.
    • 4, 3, 72.
    • Si tu rencontres 4, avance 10.

    Division par 5 :

    • 5, 1, double-le pour obtenir 2.
    • 5, 2, double-le pour obtenir 4.
    • 5, 3, double-le pour obtenir 6.
    • 5, 4, double-le pour obtenir 8.
    • Si tu rencontres 5, avance 10.

    Division par 6 :

    • 6, 1, ajoute 4 en dessous.
    • 6, 2, 32.
    • 6, 3, augmente-le pour obtenir 5.
    • 6, 4, 64.
    • 6, 5, 82.
    • Si tu rencontres 6, avance 10.

    Division par 7 :

    • 7, 1, ajoute 3 en dessous.
    • 7, 2, ajoute 6 en dessous.
    • 7, 3, 42.
    • 7, 4, 55.
    • 7, 5, 71.
    • 7, 6, 84.
    • Si tu rencontres 7, avance 10.

    Division par 8 :

    • 8, 1, ajoute 2 en dessous.
    • 8, 2, ajoute 4 en dessous.
    • 8, 3, ajoute 6 en dessous.
    • 8, 4, augmente-le pour obtenir 5.
    • 8, 5, 62.
    • 8, 6, 74.
    • 8, 7, 86.
    • Si tu rencontres 8, avance 10.

    Division par 9 :

    • Pour diviser par 9, suis la tige actuelle en dessous.
    • Si tu rencontres 9, avance 10.

    Celui qui comprend cela à la première lecture, et en quoi cet algorithme implémente la division en arithmétique et est correct… je lui tire mon chapeau. ;-)

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Retour d'expérience sur la première session

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

    Enfin, à un moment, on préfère quand même éditer son code dans un vrai éditeur, surtout pour le projet final.

    Justement à ce sujet, pourrais-tu nous dire en quoi consiste précisément ce projet final ?

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Exemple judicieux ?

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

    Dans toutes la littérature que j'ai pu lire, j'ai toujours rencontré l'usage de l'appellation générique fold. Alors je l'ai reprise.

    Déjà, dans la bibliothèque standard OCaml, dans le module List on en trouve au moins deux exemplaires :

    List.fold_left;;
    - : ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a = <fun>
    
    List.fold_right;;
    - : ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b = <fun>

    Peut être que cela te donnera une idée de ce que l'on entend par ordre de parcours : de gauche à droite, ou de droite à gauche dans le cas des listes avec les fonctions au-dessus.

    Pour les arbres binaires, la fonction que j'ai codé est un parcours en profondeur qui commence par explorer le sous-arbre gauche.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Puisqu'on parle de grammaire ...

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

    Merci.

    Je me suis dit qu'ils étaient effectivement peut être passés inaperçus, et qu'en répondant à un de tes messages tu en serais informé. J'avais vu juste.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Exemple judicieux ?

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

    Qu'est-ce que tu ne comprends pas dans cet exemple ?

    Je vais essayer de l'expliquer avec un dessin sur l'exemple de l'arbre binaire que j'ai utilisé. Si on le représente graphiquement l'arbre ressemble à cela :

      /\
     /  \
    1   /\
       2  3
    

    L'idée de la fonction fold est d'appliquer une fonction f sur les feuilles et une fonction g sur les nœuds. Dans le cas de l'addtion, la fonction plus, cela donnerait cet arbre :

       +
      / \
     /   \
    1     +
         / \
        2   3
    

    Ce qui est une façon de représenter sous forme d'arbre le calcul 1 + ( 2 + 3 ).

    Dans le cas général, la fonction fold, cela pourrait se représenter ainsi :

        g
       / \
      /   \
    f 1    g
          / \
       f 2   f 3
    

    Le principe te semble-t-il plus clair ainsi ?

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Retour d'expérience sur la première session

    Posté par  . En réponse à la dépêche Apprendre la programmation fonctionnelle avec le MOOC OCaml. Évalué à 1. Dernière modification le 16 septembre 2016 à 14:21.

    est-ce que le contenu de cette deuxième session est totalement identique à celui de la première ?

    Je ne sais pas. J'ai relayé une information que j'ai vu passer sur le Planet OCaml, j'ai cherché un peu, mais je n'ai pas trouvé d'informations pour savoir si le contenu avait évolué par rapport à la première session. Comme tu as participé à la première et que le contenu du programme de celle-ci est connu, y vois-tu une différence ?

    Le point un peu ennuyeux reste que le cours est dispensé en anglais par des non anglophones

    Cette fois-ci les cours semblent disposer d'un sous-titrage en français. Ce n'était pas le cas à la première session ?

    En regardant la vidéo de présentation sur la page d'inscription, j'ai eu également du mal à comprendre l'anglais de Ralf Treinen avec son accent allemand.

    A-t-on des nouvelles ?

    Je n'ai rien vu passer de tel sur le Planet.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Puisqu'on parle de grammaire ...

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

    Merci Benoît.

    Serait-il également possible d'effectuer les modifications que j'ai proposées dans le premier fil de commentaires, à moins que l'équipe de modération ne considère que la présence de ces informations en commentaires est suffisante ?

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Réaction (saine) de Bruno Bellamy

    Posté par  . En réponse au journal Pepper et Carrot. Évalué à 2.

    Effectivement, la réaction de Bruno Bellamy est bien plus saine que celle de Béhé et Boulet. J'aime particulièrement sa définition de l'art :

    En résumé : je crois que quand un artiste est maltraité, en colère, privé d’espoir et de confiance, ça se voit sur ses dessins (j’en ai fait, des dessins dans ces conditions là, et je peux vous dire que je n’étais pas très fier de ce que j’avais produit). A contrario, quand il est heureux de faire ce qu’il fait parce qu’il sait qu’il travaille pour des gens qui apprécient ses efforts, qui le considèrent comme une personne et lui permettent de se sentir en confiance, eh bien ça se sent aussi dans les dessins, et ça donne, je crois, tout son sens à ce qui est, selon moi, la définition même de l’art : transmettre ces choses pour lesquelles il n’y a pas de mots.

    Pour ta conclusion :

    La route est encore vraiment longue…

    … oui mais la voie est libre, pour reprendre le slogan de Framasoft. ;-)

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Puisqu'on parle de grammaire ...

    Posté par  . En réponse à la dépêche Apprendre la programmation fonctionnelle avec le MOOC OCaml. Évalué à 2. Dernière modification le 16 septembre 2016 à 09:11.

    Merci pour avoir relevé ces erreurs, c'était la fin de la dépêche mon attention s'est relâchée.

    J'avais contrôlé avec grammalecte mais il n'avait pas remarqué les erreurs. Je ne sais si le dernier exemple t'a plu, ou si tu le trouves judicieux, mais c'est un choix qui relève d'un intérêt personnel sur la question depuis bien longtemps. Le premier commentaire que j'ai posté sur linuxfr, et la raison pour laquelle je me suis inscrit ici, portait déjà là-dessus. C'était justement sur la dépêche de présentation de grammalecte dans le cadre de sa campagne de financement participatif, et déjà à l'époque, alors que d'autres commentaires soulignés la ressemblance avec le fonctionnement d'un compilateur, j'avais essayé d'expliquer à l'auteur que le problème algorithmique auquel il était confronté était de la vérification et de l'inférence de type.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • [^] # Re: Correction

    Posté par  . En réponse à la dépêche Apprendre la programmation fonctionnelle avec le MOOC OCaml. Évalué à 2. Dernière modification le 16 septembre 2016 à 08:56.

    À la lecture du commentaire de benja et de sa note actuelle (+3), je me rends compte que j'aurais du ajouter une note d'avertissement en préambule du corps de la dépêche. Je ne suis lié en aucune façon à l'équipe pédagogique qui est à l'origine de la formation et si dans sa description revient souvent le pronom « nous » c'est parce que j'ai traduit la notice de présentation que l'équipe avait proposée dans son mail d'annonce sur la mailing list. En revanche les exemples de code à la fin son mon œuvre propre et s'ils sont jugés défectueux, mal adaptés ou peu pédagogiques, je ne souhaiterais pas que cela puisse nuire en quelconque façon à la formation, ou soit pris comme représentant la qualité pédagogique des formateurs. En conséquence, il pourrait être bon de rajouter cette notice entre le sommaire et la première partie :

    Note de l'auteur :

    Je ne suis nullement affilié ou lié en quelque façon aux personnes et à l'équipe pédagogique qui sont à l'origine de la formation. Les parties sur la description et le contenu de celle-ci, ainsi que celle sur la présentation de l'équipe, sont mes traductions de matériaux que l'on trouve dans leur courrier d'annonce sur la mailing list ou sur la page d'inscription.

    En revanche, les exemples de code en OCaml à la fin de la dépêche sont de moi et relèvent d'un choix personnel pour illustrer le langage. Au cas où ceux-ci seraient jugés confus ou peu pédagogiques, il ne faudrait pas que ces défauts soient considérés comme relevant de l'équipe pédagogique de la formation, mais devrait plutôt être mis au compte de ma seule responsabilité. Au demeurant, je suis conscient de n'être ni fin pédagogue, ni bon didacticien.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.