Ontologia a écrit 2121 commentaires

  • [^] # Re: ...

    Posté par  (site web personnel) . En réponse à la dépêche Erlang/OTP R11B supporte les architectures multiprocesseur. Évalué à 2.

    Et on en revient a la necessite d'avoir une grammaire du langage de programmation qui soit suffisamment expressive. Sinon, ces optimisations sont tres difficiles a mettre en oeuvre.

    C'est bien pour cela que le JIT a attendu des langages comme Java ou C# pour devenir populaire.


    On a surtout besoin de grammaires expressives.

    Dans le langage auquel je pensais (toujours le même), Lisaac, la conditionnel, les briques de bases pour les boucles n'existent pas. Le compilateur ne connait que 7 primitives (-,*,/,and, or, =, >). Toute la lib est faîte avec ça.

    Le if est une résolution dynamique sur les objets true et false héritant de booléan. Le compilateur l'optimise pour retomber sur un if comme en C. Ce qui fait que toutes les structures de ce type n'importe où dans le code sont optimisées. De même pour les récursives etc...

    Plus ta grammaire est minimaliste, plus le compilateur se concentre sur la sémantique du code, pare que tu retombes toujours dessus quand tu fait l'analyse sémantique dans le compilateur (le micro langage interne).

    Et c'est là que les optimisations sont possibles.

    Le nombre de primitives dans Java et C# sont énormes, (http://isaacos.loria.fr/li_simplicity.html ), par contre le langage de la machine virtuelle est sufisament minimaliste et expressif pour que les optims soient faites dessus.

    Cependant, l'analyse statique restera toujours limitee. Le comportement d'un programme depend de son code et de ses parametres en entree. Une optimisation statique a la compilation ne peut optimiser que le code d'un point de vue general. Elle ne peut pas connaitre quelle fonction est appelee plus souvent dans la pratique. C'est la que les optimisations JIT interviennent. Elles regardent le code s'executer et peuvent trouver les fonctions qui sont reellement utilisees en permanence.

    Le C etant compile en assembleur avant d'etre execute, toute l'information sur la notion de fonction et de variable est perdue. Meme si cette information perdurait, a terme, la grammaire du C est trop peu expressive a mon sens pour permettre des optimisations de longue haleine (pas de notion d'interface, pas de notion de dictionnaire, utilisation de pointeurs pour gerer des tableaux, utilisation de pointeurs sans types, etc).

    Donc plus ca va, plus le C va etre a la rue parce qu'il ne peut guere evoluer. D'un autre cote, cette stabilite est aussi ce qui a fait son succes.


    Il y a C et C : il y a C écrit par un humain et C généré par un compilateur.

    Le C écrit par un être humain exprime de la sémantique humaine : c'est à dire que le code est proche d'une représentation humaine du programme et moins un représentation adaptée à la machine.

    Il est par exemple quasiment impensable qu'on s'amuse à faire un gros malloc au début et gérer les pointeurs pour faire en sorte que la mémoire cache soit utilisée au mieux. Ca devient vite ingérable. Par contre un compilateur peut le faire.

    De même, souvent, tu vas utiliser des chaînes pour représenter une structure sémantique préfixée, alors que des nombres peuvent le faire, car c'est bijectif. C'est un peu ce qu'on fait dans les bases de données relationnelles.

    Il est vrai qu'en l'état actuel des choses, on devrait réfléchir non à la machine virtuelle, mais à une espèce de programme possédant des informations sur son code et capable dans certains cas de générer son propre code. Mais il faut faire très attention : là où la machine virtuelle virtualise tout, il faudrait un système qui permette d'utiliser des optimisations faites par les VM seulement là et quand c'est utile.


    C'est en tout cas une piste intéressante, mais le problème est qu'elle impose de connaître ton assembleur cible ou d'embarquer une part du compilateur (le back end de GCC par exemple)...

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: Grand méchant loup...

    Posté par  (site web personnel) . En réponse à la dépêche Google, futur grand méchant loup ?. Évalué à 2.

    Pas mieux. Je ne comprends pas vraiment le but de cet article, qui tourne autour d'une fumeuse théorie du complot teintée de paranoïa, avec en arrière plan une haine non dissimulée pour toute grande entreprise...

    Je vais encore me faire tapper dessus, mais je me sens tout de même visé...

    Mon propos n'est absolument pas de dénoncer un prétendu complot (les partisans de la théorie du complot ne sont que des mous du cerveau qui ne veulent pas accepter la complexité du monde) ou une haine dissimulée contre des grandes entreprises (Je suis fière d'Airbus, EDF, etc...).

    Mon propos consiste simplement à remarquer ce que je pense être une tendance de fond et une stratégie d'entreprise.
    J'imagine que tu as bêtement pris mon titre au premier degré.
    J'évite le premier degré tant que possible, c'est une faute de goût.

    Qu'il y ait ici pas mal de gens à qui on peut faire ce reproche est une chose, mais réfléchit à deux fois avant de te lancer dans ce genre de remarques.

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: ...

    Posté par  (site web personnel) . En réponse à la dépêche Erlang/OTP R11B supporte les architectures multiprocesseur. Évalué à 4.

    Sinon, ces optimisations post-génération de code exécutables sont quand même applicables aux machines physiques ?

    Soit tu met des primitives dans le processeur et j'ose pas imaginer les conséquences...

    Soit tu te débrouilles pour que le compilateur intègre les techniques que Kha citait plus haut. Et là ça devient assez chaud. Ca n'est possible à mon avis qu'avec :

    - Un compilateur utilisant massivement une analyse de flot
    - Un compilateur qui dispose de bonnes informations, à priori sur les statistiques d'utilisation du code (ie. distribution des valeurs les plus courantes en entrée des fonctions).

    De là, soit tu t'amuses à compiler ton programme, à lui balancer une batterie de tests - en espérant qu'ils soient représentatifs - et à recompiler celui-ci en connaissance de cause, ou soit tu lui colle une sémantique du type contrat, définition d'intervals/ensemble afin d'avoir de bonnes infos sur le comportement de ton code.

    Dans tous les cas c'est problématique, et faut bien analyser

    - Quels appels extérieurs cela implique pour optimiser leur appel (table de hashage, etc...) et le cas échant, il faut que l'OS soit optimisé pour ça
    - Les problèmes de mise à jour des données (table de hashage sur appels de fonction).

    Dans le compilateur, il faudrait que l'analyse de flot analyse les sous graphes potentiellement très consommateurs en calculant leur complexité ainsi que les possibilités de "distributions" des paramètres dans l'intervalle possible (typiquement , on peut déduire, dans certains cas, par un moteur logique, que le param appliqué à la fonction f, dans le contexte se trouvera dans l'interval [20;100]).
    Avec ça, le compilateur peut poser un système de table de hashage dessus, voire découper le code de la méthode en petit bout et la spécialiser aux seuls paramètres qui change.

    Merci pour l'idée Kha, ça serait sympa à intégrer au compilo...

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: Juste une petite question...

    Posté par  (site web personnel) . En réponse au journal Personne n'en a parlé ? Une interface driver intelligente bientôt sous Linux !. Évalué à 2.

    J'ai achete un XP (force certe mais bon ca c'est une autre histoire) c'est pas le meme soft en boite et celui fournit par l'OEM? Si non c'est quoi la difference?

    La différence c'est que dans une PME, par exemple, un XP boite peut être mis sur un autre poste au cas où on décide mettre un Linux ou autre sur le pc sur lequel il était initialement.

    Avec un OEM, si tu jette le pc, si tu installe autre chose définitivement, tu perd la licence.

    Dans une PME qui a un petit budgt informatique, c'est important, et faut danser avec, je sais de quoi je parle.

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: ...

    Posté par  (site web personnel) . En réponse à la dépêche Erlang/OTP R11B supporte les architectures multiprocesseur. Évalué à 4.

    T'as de la chance, si tout se passe bien on publie IsaacOS cette été (juste le temps de bien commenter le code, de faire une distrib propre, s'assurer que l'OS se compile bien avec la dernière version du compilo en cours d'écriture).

    Mais on réfléchi depuis quelques temps, surtout à l'instigation de nicO à des fonctionnalités massivement parralèles un peu comme Erlang. Mais faut spécifier tout cela et ensuite réfléchir si c'est intégrable et comment l'intégrer...

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: ...

    Posté par  (site web personnel) . En réponse à la dépêche Erlang/OTP R11B supporte les architectures multiprocesseur. Évalué à 1.

    Si, si !

    Lisaac. Et c'est le but (bon évidemment pour le fonctionnel par exemple, on fera jamais mieux que Caml, Lisp, etc...).

    Et s'il manque des choses a ton goût, c'est ici : http://wiki.loria.fr/wiki/Sp%C3%A9cifications_compilateur

    Bon j'ai fait ma prosel de la semaine, c'est bon...

    Ok, je --> []

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: Une nouvelle très importante

    Posté par  (site web personnel) . En réponse au journal Personne n'en a parlé ? Une interface driver intelligente bientôt sous Linux !. Évalué à 3.

    Il blasphème voyons !

    PbPg est un impie, un hérétique que la funeste liberté des moeurs de notre sombre époque laisse trop exprimer.

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: Légendaire ?

    Posté par  (site web personnel) . En réponse au journal mon mémoire sur les logiciels libres. Évalué à 2.

    C'est vrai que psychologiquement parlant, utiliser "légendaire" n'est pas tout fait faux dans certains milieux...

    Enfin, c'est ce que j'en pense...

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: borf.

    Posté par  (site web personnel) . En réponse à la dépêche Google, futur grand méchant loup ?. Évalué à 3.

    Je n'ai pas faites cette news pour unu quelconque histoire de combar, bien que je n'aime pas les monopoles. Je l'ai écrite car je pense que c'est une tendance plausible des 10 prochaines années.

    Je l'ai aussi écrite car j'ai trouvé un peu trop d'unanimité dans les analyses (du style de celle de Gassée, mais aussi un article de Marianne il y a quelques semaines, qui paraitra bientot en ligne) arguant que ce monopole va devenir inéluctable.

    Je me suis dis que c'était un sujet important, qui nous concerne, et qu'il était important que nous ayions cela à l'esprit, obnubilé que nous sommes souvent par le monopole de Microsoft.

    De plus, comme je m'y attendais, j'ai pu lire avec plaisir des bémols très fouillés. Je sentais bien qu'il ya avait plusieurs anguille sous roche, et elles ont été bien démonté dans les divers commentaires.

    Pour le reste, je suis assez d'accord avec toi.

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: ??

    Posté par  (site web personnel) . En réponse au journal Décidément "il" est partout.... Évalué à 3.

    Tu as du le raté.

    On entendais un discours de Sarkozy, entrecoupés de témoignages de jeunes banlieusards désabusés.

    Je pensais que je ne serais pas le seul.

    Ca a du être corrigé :(

    Dommage, c'était marrant

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: Quid de la diffusion?

    Posté par  (site web personnel) . En réponse à la dépêche BBC World : Documentaire sur les logiciels libres. Évalué à 3.

    J'ai essayé de trouver le streaming BBC World, mais ils imposent un abonnement à realplayer...

    Ca risque donc d'être difficile. Quelqu'un pour se dévouer (en ayant le matériel) ?

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: studio

    Posté par  (site web personnel) . En réponse au journal La PS3 en Novembre. Évalué à 3.

    Tu as raison. Issu d'une grande famille (j'ai 4 soeurs), j'ai un peu trop pensé à mon expérience. Je pensais principalement à un cadre familial aisé où les enfants ont une chambre chacun.

    Ce que tu dis relativise un peu mon modèle. Cela dit, même s'il est restraint, ce segment de marché existe, à mon sens.

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • # SCSI/IDE

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de QEMU 0.8.1. Évalué à 4.

    Comme je l'ai dit plus haut, et j'ai été fouetté pour avoir fauté, j'ai essayé Vmware. Je remarque un truc intéressant sur vmware, qui peut être jouer, c'est que le disque dur est vu comme un disque SCSI.

    Or le SCSI est beaucoup plus haut niveau que l'IDE et décharge pas mal l'OS de gérer pas mal de chose en lui offrant des fonctions haut niveau. Je me demande donc, si le fait de gérer le disque en SCSI sur un émulateur ne permet pas d'aller plus vite en se contentant de rediriger les fonction haut niveau du driver dans l'OS hébergé par le virtualiseur.

    J'ai tout faux, ou c'est une piste ?

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: Contrat

    Posté par  (site web personnel) . En réponse au journal La vengeance de Tanenbaum. Évalué à 4.

    Ontologia != Benoit

    On le mettra en place quand Benoit aura eu le temps de finir d'écrire le compilo (il arrive au bout l), le débugguer, virer les bouts de codes qui appartienent à ST, me le filer pour que je le nettoie et surtout le commante, qu'on le teste avec le nouveau compilo, qu'on créer un distrib qui marche (une image qemu ou un truc de ce genre).
    Bref qu'on ait le temps de faire un truc propre.

    Je pense que d'ici juillet/août, ça devrait être bon, tout dépendra des tuiles qui nous tomberons dessus.

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: Tuer le troll

    Posté par  (site web personnel) . En réponse au journal La vengeance de Tanenbaum. Évalué à 1.

    J'étais allé voir Tunes, ardemment conseillé par Nat Makarevitch et ej suis un peu resté sur ma faim....

    J'ai lu la "publi" de FR Rideau (le genre de type qui crie haut et fort que Pinochet est un gentil dictateur parce qu'il est néolibéral, voyez ? ), et franchement, malgré mes efforts, je n'ai rien pu en tirer d'autres que des désirs, mais rien de conceptuellement nouveau.

    Je pense personnelement que son but se réalisera grace à des langages ontologique à reconnaissance de forme.

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: Contrat

    Posté par  (site web personnel) . En réponse au journal La vengeance de Tanenbaum. Évalué à 3.

    Ouais, et il faudrait peut être voir ce qu'il y a à piquer comme idées...

    Ca fait deux ans que je connais Singularity et que j'y penses quelques-fois.

    Il faudrait dans l'idéal :

    1/ Preuve formel des contrats, voir pour cela http://why.lri.fr
    2/ Que l'OS ait une réfléxivité sur lui même au moyen d'une ontologie qui lui permettrai de structurer sémantiquement son organisation. On pourra alors concevoir des systèmes d'autoréparations, etc...
    3/ Un méta-langage de programmation

    Je travaille sur le 3/ de plus en plus, en commançant par le bas niveau.
    Ca donne :
    - Connaissance de la sémantique des données par le compilateur (sources XML, BDD, etc... par connaissances des grammaires, modèle de donnés respectifs (DTD, MLD,...))
    - Pré structuration des données en fonction de la structure de celle-ci
    - Généralisation du pattern matching

    Exemple, je récupère pour tous mes client l'ensemble des références achetées et voudrait savoir quels sont pour chacun d'entre les plus achetées. Je voudrai aussi savoir si ceux-ci on acheté mon nouveau produit dont la référence est du type "ZX80-xxxxx", et enfin repérer ceux qui m'achète pour plus de 10 000 ¤ par référence (pour leur faire un prix spécial).

    J'évite de demander au SGBD de faire le boulot.
    Ne faites pas attention à la syntaxe, elle est pourrie.

    Req := BDD.query "select nom_cli, ref_achetee, qte, prix_unit from commande_ligne";
    Req.group by nom_cli;
    // Req est une liste de struct où la struct contient un nom, une liste de ref, qte, prix
    Tri_cli := Req.for_each nom_cli do
    Req.select ref_achetee, sum(qte*prix_unit) as px_tot group by ref_achetee order by sum(qte*prix_unit);

    let rec f l =Tri_cli.for_each
    Règle1 : Match (e=(px_tot > 10 000))::[] -> Cli_special.add e |
    Règle2 : Match (e=(ref_achetee.match "ZX80-[\w]{5}"))::[] -> Cli_techno.add e |
    Règle3 : Match t::q and (not Règle1) and not (Règle2) -> f(t) ; f(q);;

    f(Tri_cli);

    L'idée c'est de mélanger le pattern matching de type avec le contenu des données en posant des contraintes. Idéal pour XML....

    Bon stop, j'arrête de délirer....

    En attendant, je cois beaucoup au concepts que j'ai conçu pour mettre dans Lisaac que sont les agents.
    On pourrait faire beaucoup de choses avec un OS entièrement constitués d'agent autonomes (des threads) à mémoire étanche (toute transmission de données se fait par copie) basé sur de l'évènementiel.
    http://wiki.loria.fr/wiki/0.5 (Outs, merci pour la remise en page ...)
    Je crois que le concept est encore à largement affiner, mais ça permettrait de se simplifier la vie... et de tomber dans de gros bordel (pas facile de gérer les effets de bords des logiciels émergeants...)


    IsaacOS va pour l'heure quand même beaucoup plus loin que Singularity qui reste un OS à micronoyau.
    Il n'y a tout simplement plus de noyau dans IsaacOS....

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: Et la fameuse rétribution ?

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de QEMU 0.8.1. Évalué à 0.

    Je me pose la question.

    Après avoir intensivement utilisé Qemu, j'ai voulu tenté WMWare afin de faire un tourner un Win2000 sous ma mandriva.

    Il n'y a pas photo... Même en ayant compilé avec les meilleurs options de compilation niveau performance, avec le KQemu bien installé, j'ai un facteur 5 à 10 entre VmWare et Qemu.

    Malgré toute l'admiration que j'ai pour son travail, je vois pas très bien le marché, même en vendant son produit 2 fois moins cher....

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: Ca a l'air chouette

    Posté par  (site web personnel) . En réponse à la dépêche Acceleo sort en version 1.0. Évalué à 2.

    Pour faire ça, à la limite tu as mieux : CodeWorker.

    CodeWorker est une sorte de compilateur de compilateur. Il peut faire plein de choses : manger une grammaire BNF et recracher du code à partir de l'arbre syntaxique, faire de l'injection de code, etc...

    Un tutoriel de son auteur aseez accessible.
    http://cedric-lemaire.developpez.com/DecouverteCW/index.php

    A la lmite, on pourrait faire marcher les deux : Avec CodeWorker on extrait un modèle (UML par exemple) du programme à migrer à partir du code et on se sert de Acceleo pour faire la migration.

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: Et beh...

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de TOM 2.3. Évalué à 1.

    Et pour Lisaac, j'imagine que tu en as déjà parlé avec Benoit (qui me parle de TOM depuis 1 ans), est-ce que ce serait long à implémenter ?

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: Inutile

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de TOM 2.3. Évalué à 2.

    Exactement, donc ayant oublié, je précise l'adresse :

    http://wiki.loria.fr/wiki/ProjetIsaac

    Je crois qu'il va falloir que je fasse un petit journal...

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: Inutile

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de TOM 2.3. Évalué à 2.

    Bah écoutes, si tu veux mettre des concepts à la Sather dans Lisaac, les spécifications des versions 0.3 mais surtout 0.4 et 0.5 (l'implémentation de la 0.2 est en train d'être finalisée) ne sont pas encore figée, tu es invité (ainsi que vous tous linuxfriens !) à t'exprimer sur le sujet.

    On vient de monter un embryon de wiki.

    Tout est là, j'ai mis un section par numéro de version de la spec.

    Bref, Lisaac n'est pas un langage figée, masi un langage évolutif à conditions que les idées soient bonnes et restent cohérentes avec le reste.

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: Vista // Linux

    Posté par  (site web personnel) . En réponse à la dépêche Virtualisation de Serveur : Linux sous Windows. Évalué à 5.

    Ensuite les problèmes de pointeurs tu les a aussi dans ces langages de haut niveau, la différence c'est que tu fait confiance au
    langage pour les relger pour toi ce qui dans le cas d'un OS est de la
    folie.


    L'existance d'IsaacOS prouve que ton assertion est fausse. Cet OS, très rapide a été écrit dans un langage objet à prototype sans pointeurs. Et avec les même perfs que C...

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: Vista // Linux

    Posté par  (site web personnel) . En réponse à la dépêche Virtualisation de Serveur : Linux sous Windows. Évalué à 3.

    Pour avoir pas mal étudié ce code qui se trouve facilement sur les P2P, il faut reconnaître que :

    - Je n'ai jamais vu un code aussi bien écrit
    - aussi clair
    - aussi bien commenté (tu as très souvent autant de commentaires que de lignes de codes, voires plus)
    - On sent que les types qui codent sont très fort.

    On sent une organisation très poussée derrière.

    A mon sens, c'est l'utopie de vouloir batir un système totalement intégré de plusieurs millions de lignes qui pèche, on voit bien que vouloir se lancer dans un truc pareil en C/C++ c'est de la folie pure, mais ils ont a peu près réussi...

    Maintenant, une bonne partie du code est parait-il écrite en C#, PbPg nous dira peut quelle proportion (à la louche), et C# étant un langage de haut niveau, je pense que ça doit justement être mieux écrit (langage haut niveau), mieux pensé (langage objet), sans les problèmes de pointeurs que certains systèmes d'exploitations trainent encore.

    Un OS écrit dans un langage sans pointeur, ça tournera à mon avis très bien , lentement certes (JIT), mais sans trop de bug.

    J'aime pas Krosoft, mais faut être objectif et fair-play.

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: enchaîner les left outer join

    Posté par  (site web personnel) . En réponse au message Problème de jointure multiple. Évalué à 2.

    Oui car il ya redondances.

    MAis je fais comment, quand mes jointures sont redondantes, je suis obligé de faire deux tables ?

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • [^] # Re: enchaîner les left outer join

    Posté par  (site web personnel) . En réponse au message Problème de jointure multiple. Évalué à 2.

    Ca me fait me poser une bonne question

    Est-ce que

    t1 left outer join t2 on (...)
    left outer join t3 on (...)

    est équivalent à

    t1 left outer join t2 on (...),
    t1 left outer join t3 on (...)

    Ou alors équivalent à

    t1 left outer join t2 on (...),
    t2 left outer join t3 on (...)

    ?

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker