Axioplase ıɥs∀ a écrit 3050 commentaires

  • [^] # Re: à Québec City

    Posté par  (site web personnel) . En réponse au journal Entrevue avec Richard Stallman !. Évalué à 2.

    J'aime pas ça quand t'aimes ça, estie d'apprenti séparatiste anglo !
  • # Erreur

    Posté par  (site web personnel) . En réponse au journal Quelques questions à propos de l'affaire wikileaks…. Évalué à 3.

    >> Il a néanmoins la présomption d'innocence

    Ah ?
    Il est en France ?
    La présomption d'innocence est, je crois bien, propre au système français et pas partagée par bien d'autres pays.
    Je suis sûr qu'il y a des pays (même en Europe ?) où l'on est coupable tant qu'on n'a pas prouvé son innocence…
  • # Aeron

    Posté par  (site web personnel) . En réponse au message Un fauteuil .... je veux un fauteuil .... Évalué à 2.

    http://www.hermanmiller.com/Products/Aeron-Chairs

    La préférée de jwz.
    Chère, très chère. Vois avec ton employeur s'il peut te la payer.

    Dans tous les cas, cherche « chaise ergonomique » sur le net. Généralement, on peut les essayer dans las boutiques spécialisées, je pense que ça vaut le coup.
  • # Critique sélective

    Posté par  (site web personnel) . En réponse à la dépêche Quoi de neuf chez Google ?. Évalué à 2.

    Quand la société Machin passe de la version 2000 à la version XP, puis à Vista, puis à 7, c'est un véritable coup de ton aire dans le lent terne haut, mais quand la société Bidule passe de One à S, plus personne pour le faire remarquer qu'eux non plus ne savent pas compter ?
  • [^] # Re: typage mou

    Posté par  (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 2.

    J'aimerais qu'on m'explique les avantages possibles à choisir de rendre un appel non terminal.
    Selon moi, plus qu'offrir des avantages (je n'en vois pas encore un seul), ça n'offre que des inconvénients : vu que tu stockes sur la pile tes adresses de retour, tu risques en mode débug de créer des erreurs inexistantes en mode « bon sens » via des débordement de pile. Et c'est encore pire quand tu as du parallélisme ou de l'évaluation paresseuse car tu peux ne plus savoir du tout qui a alloué quoi ni quand…

    Le fait qu'on puisse le faire ne me justifie toujours pas qu'on veuille le faire ni que ce soit une bonne idée. L'optimisation des appels en position terminal date de la fin des années 70, et c'est sans doute pas pour rien que la norme du langage Scheme impose que tout appel de fonction en position terminale soit n'alloue pas de pile.


    Vouloir remplacer les appels terminaux par des appels qui allouent sur la pile revient à vouloir remplacer une boucle while par des appels récursifs de fonction en C (qui allouent donc sur la pile). Si c'était une bonne idée, j'imagine que ça se saurait/ferait.
  • [^] # Re: Intéressant pour les idées ... mais non

    Posté par  (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 5.

    Et la deuxième révision de D2, c'est R2D2 ?
  • [^] # Re: typage mou

    Posté par  (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 3.

    En quoi ?
    Savoir si un appel de fonction est en position terminale ou pas est décidable, et je n'ai pas souvenir de situation où un appel non terminal était préférable (ce qui ne veut pas dire qu'il n'y en a pas).

    Et si j'écris
    let rec fact n =
      if n = 0 then 1
      else n * ((fact (n-1))_terminal)

    ce qui est absolument faux vu qu'il reste à multiplier par n après que l'appel récursif a retourné fact (n-1), il va se passer quoi ?
  • [^] # Re: typage mou

    Posté par  (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 2.

    1) Ce qui n'empêche pas que *tout* retourne une valeur en Caml, et c'est très bien. Libre au programmeur d'ignorer la valeur retournée.

    2) Pas d'accord : il a un effet car tu peux mesurer son temps d'exécution s'il n'est pas paresseux. Et si ton programme est if (P = NP) then true else loop-for-ever() et que ton programme s'arrête, alors tu as un programme qui sert à prouver que P = NP.

    3) Non. Sans doute la plupart de ceux qui ont un évaluateur ou un compilateur. Mais le lambda calcul original, celui sur papier, ne peut pas faire d'effets de bords, et est bien un langage fonctionnel. Qui plus est, on passe encore du temps à travailler dessus, j'imagine que ce n'est pas pour rien !
  • [^] # Re: typage mou

    Posté par  (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 2.

    >> Ca c'est très discutable, dans Eros il se sont rendu compte que dans certaines fonctions la valeur retournée n'aurait pas du l'être, ce qui peut être génant dans certains cas (capabilities).

    Je viens de relire vite fait le papier sur Eros (ICFP'07), et je ne vois ni capabilités, ni retour de valeur qui n'aurait pu l'être autrement.
    Je demande qu'on m'éclaire sur ce point.
    Et tu peux *toujours* ne pas retourner de valeur, c'est à ça que servent unit ou les types sommes que sont Maybe a en Haskell et 'a option en OCaml.
    Et encore une fois, décider « la dernière sous expression évaluée dans e est la valeur retournée par e » permet d'économiser un mot clef.


    Je trouve un return inutile, point barre.
    Le ^ de smalltalk est un échappement, une rupture du flot de contrôle —contrairement au cas où l'on retourne la valeur de la dernière expression évaluée— et tu peux très facilement le simuler si tu as envie ; il est donc inutile de l'imposer dans la mesure où la majorité des gens s'en passent gaiement.

    (define (ma-fun x)
      (call/cc (lambda (^)
                 foo
                 (if bar
                   (^ h)
                   quux)
                 toto)))

    Et une simple macro permet de rendre l'écriture du call/cc à la main inutile.
  • [^] # Re: moralité

    Posté par  (site web personnel) . En réponse au journal Encore plus fort que Cantona. Évalué à 4.

    Non.
    Si une fausse pièce de 1centime coûte moins à fabriquer, alors ça devient rentable.
    Mais chiant à écouler, c'est sûr…
  • [^] # Re: Surprenant

    Posté par  (site web personnel) . En réponse au journal Encore plus fort que Cantona. Évalué à 3.

    Paradoxalement ?

    Le rapport intuitif est:
    - si tout le monde à du fric sur soi, alors les vols devraient être fréquents non ?
    - si personne n'a de fric soi, alors à quoi bon braquer les gens pour 5 euros ?

    En gros, les habitudes devraient pousser à la criminalité (car tout le monde n'est pas riche, hein !), non ?
    (Bon, en fait, on est dans la corrélation, pas l'implication, puis il manque au moins l'information sur l'écart de richesse/éducation entre les strates de la société pour "justifier" la quantité de vols et larcins commis. On a rarement des cadres supérieurs entrain de voler des sacs dans la rue, et s'ils sont largement majoritaires…)
  • [^] # Re: Faute d'ortographe

    Posté par  (site web personnel) . En réponse au journal Contribuer de nouveau à Shotwell en seulement quelques minutes. Évalué à 3.

    c'est triste ton avi sur shotwell.
  • [^] # Re: Surprenant

    Posté par  (site web personnel) . En réponse au journal Encore plus fort que Cantona. Évalué à 3.

    >> Heuuu, ya beaucoup d'etats uniens qui se ballade avec des liasses de billets de 100$ ?

    Ça, je sais pas.
    Mais au Japon, c'est très courant de se promener avec une liasse de billets de 10_000 Y
    Au taux du jour, c'est en gros des liasses de billets de $120.
  • [^] # Re: typage mou

    Posté par  (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 5.

    @ c'est l'opérateur de concaténation de listes.
    [1;2]@[3;4];; (* [1;2;3;4] *)

    return n'est pas un mot clé. Dans la mesure où le langage est fonctionnel et où toute expression et tout statement retourne une valeur, ça serait inutile d'avoir ce mot clef [http://caml.inria.fr/pub/docs/manual-ocaml/manual044.html]
    En haskell non plus ce n'est pas un mot clef.


    let _ = foo
    ça évalue foo puis ça jette le résultat. _ est un nom de variable valide, mais qui n'est accessible qu'en écriture. Tu peux donc faire let x = 3 in x mais pas let _ = 3 in _. C'est une info pour le compilo qui peut économiser des registres en ne sauvant pas la valeur retournée.
    La raison est que (>>) ne garde pas son résultat, alors que concatMap va me rendre une liste. Idéalement, il faudrait que je code une autre fonction qui me retourne la liste vide, mais j'ai eu la flemme, et le code ci-dessus a la même sémantique. (Et si tu te demandes l'intérêt d'évaluer une expression pour jeter son résultat, rappelle toi qu'on peut faire des effets de bord, donc que let _ = foo () in 42 et 42 ne sont pas pareil.)


    Pour ne pas comprendre
    let test () = foo, tu n'as pas du faire beaucoup de d'Ocaml.
    Ça déclare la *fonction* test qui n'a aucun argument. À chaque fois que tu l'appelles, foo est évalué.
    let test = foo déclare la *variable* test. foo n'est évalué qu'une fois, lors de la déclaration de test dont la valeur —qui ne changera plus jamais— est le résultat de l'évaluation de foo.
  • [^] # Re: typage mou

    Posté par  (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 2.

    Bon, le code ci-dessous est crade, mais dériver EQ, c'est juste associer un nombre qui s'incrémente à chaque nouveau constructeur.
    C'est d'ailleurs ainsi que c'est implanté en Caml, et sans doute en Haskell.

    Et ça se fait en CL assez facilement.
    (Après, il serait sans doute judicieux de passer par des méthodes génériques pour pouvoir traverser automatiquement des listes, vecteurs…)

    (defmacro init-order-table ()
    (defvar *order-table* (make-hash-table :test #'eql)))

    (defmacro defconstant-ordered (&rest constants)
    (cons 'progn
    (loop for c in constants
    for i from 0
    collect
    `(setf (gethash ',c *order-table*) ,i))))

    (defmacro compare (sym1 sym2)
    `(let ((v1 (gethash ',sym1 *order-table*))
    (v2 (gethash ',sym2 *order-table*)))
    (cond
    ((= v1 v2) 'EQ)
    ((< v1 v2) 'LT)
    (t 'GT))))

    (init-order-table)
    (defconstant-ordered cFoo cBar)

    (list
    (compare cFoo cBar)
    (compare cBar cFoo)
    (compare cBar cBar))



    type foo = Foo | Bar;;

    [(compare Foo Bar);
    (compare Bar Foo);
    (compare Bar Bar)];;
  • [^] # Re: typage mou

    Posté par  (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 4.

    Dire qu'il y a des monades en Haskell, mais pas en OCaml, c'est un peu comme dire qu'il y a des design pattern en C++ mais pas en Java…

    let concatMap f x = List.fold_left (@) [] (List.map f x);;
    let return x = [x];;
    let (>>=) v f = concatMap f v;;
    let (>>) v f = let _ = concatMap f v in [];;

    let test () =
    [0;1;2;3;4;5] >>=
    (fun x -> ["A";"B";"C";"D";"E"] >>=
    (fun y -> return (x,y)));;


    Et voila le travail.

    Les monades, quand on code, c'est rien d'autre qu'une interface…
    Et vu qu'OCaml a une couche objet, j'imagine qu'on peut même coder ça proprement, avec l'inférence de type qui se charge d'appeler les méthodes ">>=", ">>" et "return" correspondant à l'usage précis dans le code.
  • [^] # Re: Mais sinon, pourquoi je devrais m'intéresser à ce énième langage

    Posté par  (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 2.

    Et alors, ça change quoi ?
    Ça veut dire que moins de programmes valides qu'on écrit en CL seront acceptés par Go, c'est tout !

    Puis coller un typeur à CL (ou un sous-ensemble) c'est pas dur…


    Tant qu'à faire, si je devais coder en Go, je programmerais sans doute en CL, pour compiler vers Go après au début, jusqu'à ce que les gens autour se rendent compte qu'il n'est en fait pas nécessaire d'utiliser Go…
  • [^] # Re: Oui

    Posté par  (site web personnel) . En réponse au journal Humeur 4 : Couvrez cette information que je ne saurais voir. Évalué à 4.

    Oui mais non.
  • # Tout à fait d'accord (mais pas avec toi)

    Posté par  (site web personnel) . En réponse au journal Google: vers un contrôle assumé des résultats. Évalué à 2.

    >> - Comme dit sur l'article et qui tombe sous le sens, je ne vois pas comment Google peut être sûr qu'un terme particulier est lié au piratage.
    >> Je peux très bien chercher un logiciel de rippage de DVD disponible en torrent...

    Oui. Et dans les faits, ni « logiciel » ni « rippage » ni « DVD » ni « torrent » ne sont classés par google comme des termes liés au piratage. J'imagine qu'il y a assez de geeks là-bas pour qu'ils s'y connaissent un tant soit peu.

    Ensuite, il est possible que le site laisse passer « torrent truite omble » mais pas « torrent le-dernier-flim-qui-vient-de-sortir. »


    >> La censure n'est désormais plus réservée aux dictatures,

    Et ne l'a jamais été.
    Tu as toi-même du expérimenter la censure via tes parents bien avant, avec l'interdiction de regarder des films d'horreur ou de cul avant tes 10 ans. Ou même qu'ils t'avaient caché l'existence de ces films. Honte sur tes parents totalitaires, dictatoriaux et hadopistes. Et honte sur toi aussi, le fruit de leur union.

    >> et en plus elle relève maintenant des désidérata d'entreprises et non de gouvernements.

    En plus, google, c'est vraiment des connards : ils censurent le spam qui arrive chez moi ! Quelle bande d'enflures ! Ils censurent viagra, cyalis, online pharmacy, alors que si ça se trouve, y a plein de clients de gmail qui ont des besoins de soutient (pénien).
  • # Ça commence mal

    Posté par  (site web personnel) . En réponse au journal Quand Oracle parle à Hudson. Évalué à 2.

    >> Chère ... lecteur (oui pas de s car je ne pense pas en avoir plus d'un)

    Ouais, enfin, fallait écrire « lectrice » quand même alors…
  • # Le serveur web ?

    Posté par  (site web personnel) . En réponse au journal Le serveur de la FSF piraté?. Évalué à 3.

    Ouais, enfin, mettre des données secrètes sur le serveur web, hein…
  • [^] # Re: Mais que ce qu'il a de si spécial ce ZFS ?

    Posté par  (site web personnel) . En réponse au journal ZFS sous GPL grâce à GRUB ?. Évalué à 5.

    >> tout le monde veut l'avoir en GPL

    Non, seulement les frustrés qui sont coincés avec leur GPL manichéenne qui demande tout ou rien, et qui ne peuvent en conséquence pas avoir accès à ZFS comme ils le voudraient.
  • [^] # Re: Pourquoi compliquer ?

    Posté par  (site web personnel) . En réponse au journal ZFS sous GPL grâce à GRUB ?. Évalué à 2.

    >> C'est à dire que l'ensemble du logiciel DOIT être distributé sous GPL (et ce sans violer les conditions des autres licences).

    Distribué ou distribuable ?
    C'est pas pareil du tout.
    Distribué veut dire que je ne peux plus privatiser un bout de code en BSD fourni avec le logiciel GPL. Distribuable veut dire que si.

    Si c'est le premier cas, je trouve que ça pue vraiment.
  • [^] # Re: attention

    Posté par  (site web personnel) . En réponse au journal ZFS sous GPL grâce à GRUB ?. Évalué à 1.

    D'habitude, on écrit plutôt « Florent G. » et avec des majuscules aux noms propres.
  • [^] # Re: Erreur URL de ma feuille

    Posté par  (site web personnel) . En réponse au journal On peut se copier dessus ? Concours linuxfr.. Évalué à 10.

    Ouais, enfin, on fait pas le concours pour des clous, hein !
    Il peut très bien participer pour gagner le lot. Et à moins que vous ayez prévu un lot par personne qui a participé à la CSS gagnante, je trouve que l'accès publique aux données et la notion même de concours sont incompatibles…

    Alors bon, un concours où le gagnant (celui qui a bossé) n'est même pas sûr d'avoir son prix, raflé par un autre (celui qui a pompé), j'appelle ça un piège à con.

    Dans les concours, les appels d'offre, je crois bien que ne pas dévoiler son travail en cours est ce qu'on appelle couramment du bon sens…
    Si on avait le choix de se tirer une balle dans le pied, pourquoi pas, mais ça n'a même pas l'air d'être le cas…