Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Derniers journaux de moqui :

Journal : j'ai un rêve ...

Posté par Miguel Moquillon (page perso, ) le 15 octobre 2004
J'ai un rêve d'utiliser un jour un véritable OS objet.
Mais qu'est-ce qu'un OS objet ?
Un système d'exploitation dans lequel tout serait objet, même les applications ; sur les systèmes classiques, une application est de toute manière orientée fonction, qu'elle soit codée ou non en objet : tout commence par une fonction principale !
En fait, dans un tel système, on ne pourrait pas parler d'applications mais tout simplement d'un objet qui utilise d'autres objets disponibles, notamment pour l'IHM.
Même les systèmes de fichier seraient représentés par des objets.
L'OS proposerait alors un catalogue d'objets dont il gérerait leur cycle de vie. Ces objets pourraient même se répartir sur un réseau de machines supportant le même OS (ou un autre OS objet).
Au boot, la machine lancerait une VM qui instancierait les objets correspondants au matériel détecté, qui se chargerait de l'initialisation du reste du système.
Dans une telle conception, il parait évident que les classes (le moule des objets) soient elles mêmes des objets.
Un tel système pourrait voir le jour avec Smalltalk.

J'avais aspiré à un tel système il y a quelques années ... Ce rêve m'est revenu plus fort après avoir essayé Squeak.
Mais je ne me fais pas d'illusion. Quand je tourne mon regard vers les entreprises, et quand je vois ce qu'elles ont fait depuis 20 ans, je me dis que finalement on n'a fait que réinventer la roue à chaque fois, de façon différente (entendez ici avec une techno différente) pour imiter la plupart du temps des choses existants (en avance sur leur temps) mais souvent en moins bien et en plus lourd, tout ça pour tirer la couverture vers soi.
Alors d'où pourrait venir un tel système ... de la communauté libre ? De la communauté Smalltalk ? Ou tout simplement nulle part ... ce n'est qu'un rêve ...

> Lire le journal (115 commentaires, moyenne: 2,7).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

...

Posté par Colin Leroy (page perso, ) le 15/10/2004 à 09:37. (lien). Évalué à 10.

Tu fais trop de Java^WSmalltalk :-P
Sérieusement, quels avantages ça présenterait ? Pour quels inconvénients ?

Ces objets pourraient même se répartir sur un réseau de machines supportant le même OS (ou un autre OS objet).

Quelle différence avec un cluster "normal" ?

Au boot, la machine lancerait une VM qui instancierait les objets correspondants au matériel détecté

Quelle différence avec des modules noyau ?

L'orienté objet c'est bien, mais ce n'est pas forcément la panacée, en particulier pour les couches basses (il y a quand même un certain overhead entre autres).

--
Claws Mail - it bites!
  • [^]Re: ...

    Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 10:22. (lien). Évalué à 6.

    Tu fais trop de Java^WSmalltalk :-P

    Hum ... trop de développement objet peut-ête ? :)

    Sérieusement, quels avantages ça présenterait ? Pour quels inconvénients ?

    Pourquoi un OS objet ? on a des serveurs d'applications objets qui font la même chose (ou presque) après tout. Oui, mais ça reste un serveur d'application au-dessus d'un OS classique sur lequel tourne des applications et non des objets. Que crois tu pourquoi, peu à peu, on se dirige vers des architectures de type serveur d'application ? Parce qu'il y a un véritable avantage et besoin : les composants sont faciles à coder, faciles à déployer, à maintenir, à intéragir ensemble, etc.
    Mais voilà, ça reste une serveur d'application ... une simple application elle-même ... avec tous les inconvénients que cela draine : difficulté dans son administration, grosse consommation des ressources, architecture qui doit s'adapter aux particularités de chaque système sur lequel il doit s'installer, etc.

    Quelle différence avec un cluster "normal" ?

    C'est inhérent à l'OS et à sa conception objet. Imagine que dans un environnement vraiment objet, tu ne fais pas d'appels indirect à une opération via une référence, mais tu envoie bien un message à un objet via sa référence. Donc, il est assez simple d'étendre de façon transparante ce mécanisme de messagerie pour qu'il soit distribué. La distribution étant gérée de façon transparante par l'OS.

    Quelle différence avec des modules noyau ?

    Ce sont en quelque sorte des modules noyaux ... excepté que ce sont tout simplement de simples objets ...

    L'orienté objet c'est bien, mais ce n'est pas forcément la panacée, en particulier pour les couches basses (il y a quand même un certain overhead entre autres).

    Ha les idée préconçues ! Elles ont la vie dure !
    Ce n'est pas parce qu'il y a des outils, pour faire de l'objet, mal foutus ou pas dédiés pour les couches basses, que des développeurs soit disant objet codent avec leur pied, que l'objet est pour autant pas adapté ou si limité que l'on se complait à dire (jusqu'à s'en convaincre).
    Connais tu le langage objet Eiffel ? Sais tu que de l'autre côté de l'altlantique ils l'apprécient dans certains cercles de l'embarqué !
    Après tout, on n'a pas besoin de l'objet pour faire des systèmes lourds : Windows par exemple :) Ou Solaris :)

    Je vois que tu ne vois pas l'avantage d'un système objet. Par ces concepts même et par une implémentation bien faite il simplifierait bcp de choses. Cela avait commencé avec Unix : tout est fichier ... cela pourrait continuer avec un tel système : tout est objet, les objets peuvent-être implicitement distribués, ils peuvent s'interchangés, etendus, la communication/interaction inter-application s'en trouverait simplifiée puisque ce serait tout simplement de la communication inter-objet (tel objet envoie tel message à tel objet ou j'appelle telle méthode de tel objet). Même les documents seraient des objets !

    Je pense que pour ce donner un apperçu d'un tel OS, il faudrait essayer squeak et l'imaginer en mieux et ce que cela pourrait donner en OS (ne pas se focaliser sur son interface graphique, mais plutôt sur les concepts qui s'y dessinent).

  • [^]Re: ...

    Posté par Larry Cow () le 15/10/2004 à 11:09. (lien). Évalué à 4.

    Quelle différence avec un cluster "normal" ?

    [...]

    Quelle différence avec des modules noyau ?

    La même qu'entre un langage impératif "classique" et un langage "objet" (oublions C++, à la limite): ça permet de faire la chose, donc pourquoi s'emmerder avec l'objet? Pourtant, on peut pas dire que l'objet soit un concept utopique, on pourrait même croire que c'est assez implanté dans les mentalités (même si pour beaucoup de gens, l'objet se limite à la version statique et gripée de l'objet C++ien)

  • [^]Jnode

    Posté par ginkyo (page perso, ) le 15/10/2004 à 17:55. (lien). Évalué à 5.

    http://jnode.sourceforge.net/index.html(...)
    a New Java Operating System

    --
    « Si quis scienter in tantum a vino abstineret ut naturam multum gravaret a culpa immunis non esset. »Saint Thomas d'Aquin, Somme théologique, II-II, 150, 1 ad 1.
    • [^]Object Operating System

      Posté par ginkyo (page perso, ) le 15/10/2004 à 17:57. (lien). Évalué à 3.

      Ah j'oubliais :
      http://www.isaacos.com/(...)

      --
      « Si quis scienter in tantum a vino abstineret ut naturam multum gravaret a culpa immunis non esset. »Saint Thomas d'Aquin, Somme théologique, II-II, 150, 1 ad 1.
      • [^]Re: Object Operating System

        Posté par ribwund () le 15/10/2004 à 20:48. (lien). Évalué à 2.

        Et il y a aussi http://www.plurix.de/(...)

de mémoire

Posté par deftones_chris () le 15/10/2004 à 09:52. (lien). Évalué à 7.

Cela serait un peu le principe d'un os basé sur un exonoyau (ça fait longtemps que j'ai lu le livre de Tannenbaum alors je me trompe peut être de dénomination :) ).
Principe qui est beau en théorie mais qui peut se révéler moins performant du fait d'utilisation incessant des messages entre objets.
En effet, une fonction a de grande chance d'être exécuté plus rapidement qu'une méthode. Cela explique qu'il y a encore beaucoup de personnes qui développent des routines devant être les plus rapides possibles en C au lieu du C++ par exemple (il y a bien sûr les développeur asm mais ceux là sont ils des êtres humains ? ;-) )

  • [^]Re: de mémoire

    Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 12:19. (lien). Évalué à 5.

    Cela serait un peu le principe d'un os basé sur un exonoyau

    Non, ce dont il parle c'est un microkernel.
    Le principe de l'exokernel est d'avoir une architecture modulaire comme le kernel et d'éviter les pb de perfs éventuels du type d'archi microkernel ou même monokernel.
    IBM fait de la recherche dans les exokernels. Dans une architectrure hexokernel, tu n'as plus de couche (HAL) entre le matériel et l'environnement utilisateur. Le principe de l'exokernel est de répartir dans des librairies le code du kernel/microkernel et chaque application est liée à ces librairies : au lieu de passer par le HAL avec des appels systèmes, chaque appli interroge directement le matériel au travel de la librairie, donc d'appels de fonctions.

    Le pb de performances des microkernels est un faux pb. En fait, à l'époque, tout le monde se focalisait sur March qui est une usine à gaz. L4ka est un autre microkernel et est très performant ; c'est pourquoi l'équipe de Hurd regarde aussi du côté de ce microkernel pour, peut-être, à terme remplacer GNU March.

    voir http://l4ka.org/(...)

    • [^]Re: de mémoire

      Posté par deftones_chris () le 15/10/2004 à 13:54. (lien). Évalué à 4.

      je me disais bien que je me trompais dans le nom du type de noyau.

      Le pb de performances des microkernels est un faux pb
      Mais cela risque d'être dur de faire un microkernels plus réactif qu'un kernel "standard".

      Et au fait, Mac OsX est ce un microkernel ou non ? il parait que c'est un noyau de "la famille March". Qu'en est il ?

      • [^]Re: de mémoire

        Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 14:03. (lien). Évalué à 3.

        Le noyau de MacOS X est Darwin. Darwin s'appuit sur le microkernel March 3 retouché par les ingénieurs d'Apple. Darwin, contrairement à Hurd, n'est qu'une couche monolitique (uni-serveur) au-dessus de March. Au-dessus de March est implémenté toutes les composants Unix provenant du monde BSD : NetBSD, FreeBSD, OpenBSD. Il y a peut-être aussi des composants provenant des système V.

    • [^]Re: de mémoire

      Posté par Axioplase Ashi (page perso, ) le 15/10/2004 à 14:22. (lien). Évalué à 4.

      GNU/MACH, pas March.
      J'avoue que je ne suis pas tellement son évolution, mais à la vitesse à laquelle il évolue (ie la frequence dont on parle de lui), je doute qu'il porte bien son nom :p

      D'ailleurs, personne n'a tenté un fork de Linux pour en faire un microkernel? Ou bien le monolithe est trop dense pour etre découpé désormais?

      --
      J'aime la liberté.
      J'aime BSD.
  • [^]Re: de mémoire

    Posté par doublehp (page perso, ) le 17/10/2004 à 00:08. (lien). Évalué à 1.

    En effet, une fonction a de grande chance d'être exécuté plus rapidement qu'une méthode.

    C est pour ca que Windows Longhorm a besoin de 1G de ram avec un P4 3G minimum pour l installation ?






    .............. -> [_]

    --
    www.doublehp.org
    le site qui sera toujours en construction ...

Zope!

Posté par Alexandre Boeglin (page perso, ) le 15/10/2004 à 10:33. (lien). Évalué à 3.

Zope se base sur ces concepts, avec du python en dessous.

  • [^]Re: Zope!

    Posté par Ramso (page perso, ) le 15/10/2004 à 11:46. (lien). Évalué à 6.

    Rhoo mais Python c'est codé en C, c'est pas objet !

    --
    Groar !
    • [^]Re: Zope!

      Posté par Larry Cow () le 15/10/2004 à 12:27. (lien). Évalué à 5.

      Dingue ça. Et la VM Java elle est codée en quoi, en REBOL? ;)

      • [^]Re: Zope!

        Posté par Ramso (page perso, ) le 15/10/2004 à 13:08. (lien). Évalué à 6.

        En Java !

        --
        Groar !
  • [^]Re: Zope!

    Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 12:26. (lien). Évalué à 5.

    Comme tous les serveurs d'appli, si ce n'est que ZOPE va plus loin.
    Comme je l'ai écrit en commentaire, on glisse peu à peu vers un modèle de type serveur d'applis. Mais les serveurs d'applis restent des applis qui tournent sur des systèmes dites classiques. Par ce fait, du fait qu'ils doivent s'adapter au système sous-jacent, entre autre, ils restent lourds en consommation ressource. De plus, tu ne peux pas construire avec tout un environnement ... du moins pas encore.

Hurd : orienté objet

Posté par _alex () le 15/10/2004 à 10:38. (lien). Évalué à 5.

cf http://www.lifl.fr/~boulet/formation/syst-dist/exposes2001-2002/hur(...)

Disposer d’une organisation orientée objet.

  • [^]Re: Hurd : orienté objet

    Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 12:43. (lien). Évalué à 3.

    Je connais Hurd. C'est un OS qui AMHA, encore aujourd'hui, est moderne et qui s'appuit sur les concepts auquels j'aspire.
    Toutefois, il s'arrête en route et ne va pas au-delà des schémas existants : les codeurs sont des développeurs d'OS habitués aux systèmes classiques. Je ne pense pas qu'ils aient vraiment une culture objet.

    Avec l'OS suscité au dessus, je vais encore plus loin puisque tout est objet. Cela veut dire quoi : que l'OS est un gros conteneur d'objets instanciés (les classes elles-mêmes sont des objets) qui gère leur cycle de vie et qui soit fortement multi-threadé (des pools de threads pour les opérations des objets ou un pool de threads pour chaque objet, différentes implémentations sont possibles), etc.
    En fait, je me suis apperçu, et ceci particulièrement au travers de Smalltalk, que finalement un environnement vraiment objet pourrait simplifier nombre de choses et peut apporter une grande souplesse et flexibilité sans rajouts d'artifices ou sans bricolages.

    Mais bon, faut pas rêver ... Ou alors je dois me mettre la main à la tâche ... pas facile qd on n'a pas les compétences adéquates, ni le temps.

AtheOS ?

Posté par THE_ALF_ () le 15/10/2004 à 11:54. (lien). Évalué à 3.

Est-ce que ce n'était pas le principal but du projet initial d'Atheos, de créer un OS totalement orienté objet ?

--
L'univers de propensions qui est le notre est intrinsèquement créatif (K. Popper).
  • [^]Re: AtheOS ?

    Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 12:23. (lien). Évalué à 2.

    Non. Atheos comme BeOS sont des systèmes classiques au-dessus lequel l'API et l'environnement graphique est objet. Ce sont donc des systèmes orientés applis, que celles-ci soient ou non écrites en objet

Un truc comme..

Posté par Romaric Guillier (page perso, ) le 15/10/2004 à 12:44. (lien). Évalué à 4.

sur http://cjos.sourceforge.net/(...) qui comprend entre autres JOS, qui tend à être un "portable, extensible, and open object oriented operating system".

Bon, après, j'aurais du mal à donner plus d'infos vu qu'on dirait que ça fait un petit moment que ça bouge plus trop..

je connais ton rêve !

Posté par vincent LECOQ (Jabber id, page perso, ) le 15/10/2004 à 13:16. (lien). Évalué à 4.

Mais il est mort ... c'était BeOS ...
Paix a son ame.

--
Ma signature ici
  • [^]Re: je connais ton rêve !

    Posté par Jerome Herman () le 15/10/2004 à 13:20. (lien). Évalué à 3.

    Non c'était Next. Mais il est mort quand même.
    BeOS n'était pas full object, Next non plus mais il essayais très fort (en tout cas plsu que BeOS)

    Kha

    --
    Kha
    root est un privilège, pas un droit !
    • [^]Re: je connais ton rêve !

      Posté par oops (page perso, ) le 15/10/2004 à 13:32. (lien). Évalué à 3.

      > Non c'était Next. Mais il est mort quand même.

      Oui mais Apple l'a ressuscité ...

    • [^]Re: je connais ton rêve !

      Posté par jjay () le 15/10/2004 à 17:17. (lien). Évalué à 5.

      Non, non Next n'est pas mort.
      Il a juste pris le nom de apple qui lui est bien mort ;)

J'en ai rèvé^Umarre

Posté par Ayrton () le 15/10/2004 à 13:41. (lien). Évalué à 6.

Dès que quelqu'un dit "objet", les gens pensent à moderne, dans le coup. Si on dit "procédurale" les gens pensent à vieux, "has been", pourri.

Des gens qui tendent de faire un bon OS uniquement en objet, ça ne manque pas et ça fini toujours de la même façon :
- trop lourd
- trop lent
- pas souple

Faut sortir de sa bulle "conceptuelle" et revenir sur terre.
Pour le bas niveau, l'objet a largement prouvé qu'il n'était pas adapté (surtout pour des problèmes de performance et souplesse).

J'ai pas envis d'un noyau Linux en C++/java/... lent et gros uniquement pour faire hype.

  • [^]Re: J'en ai rèvé^Umarre

    Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 14:00. (lien). Évalué à 4.

    Je crois que tu délires un peu.
    Quelques explications :
    - qd on parle de "procédurale", on pense à classique, pas nécessairement à vieux. Ce qui est vieux n'est pas nécessairement "has been". Seulement aujourd'hui, l'aspect procédurale ou fonctionnelle est quelque chose de classique, de commun. Même les langages objets comme C++, Java ou Eiffel utilisent les aspects "procédurales" pour implémenter des concepts objets ; CLOS ceux "fonctionnelles".

    - qd on parle d'objet, on pense à moderne parce que c'est encore nouveau et que bon nombres de technos ne sont pas encore complétement objet ou qu'en surface (ce qui ne veut pas dire que tout doit être en objet). Parce que c'est nouveau, oui, les premiers jets étaient lourds et manquaient de souplesse : il y eu donc des ratés comme dans les bases de données avec O2. Pourtant, l'approche objet évolue, les techniques d'implémentation de ces concepts aussi. Ce qui fait que, si hier ce n'était pas encore possible d'écrire une techno en objet sans contre-partie handicapant, aujourd'hui ça l'est bcp moins ... Et ceci grâce aussi en partie au fait que l'on s'est fait aussi la main hier sur les technos objets.

    Quant à trop lourd, trop lent et pas souple, essaie aujourd'hui un environnement Smalltalk de ce jour (squeak par exemple). Je pense que tu redéfiniras autrement ta perception de l'objet.

    Maintenant, à part les couches utilisateur, je n'ai pas connu de tentatives (à part, dans une certaine mesure, Smalltalk à ces débuts) à faire un bon OS uniquement en objet.

    • [^]Re: J'en ai rèvé^Umarre

      Posté par deftones_chris () le 15/10/2004 à 14:04. (lien). Évalué à 3.

      Quant à trop lourd, trop lent et pas souple, essaie aujourd'hui un environnement Smalltalk de ce jour (squeak par exemple). Je pense que tu redéfiniras autrement ta perception de l'objet.

      Mais Squeak n'est pas système d'exploitation. Est ce correct de se baser sur ses performances pour les transposer à celles d'un OS ?

      • [^]Re: J'en ai rèvé^Umarre

        Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 14:17. (lien). Évalué à 2.

        Ce n'est pas un système d'exploitation mais un environnement objet.
        Il illustre juste dans mon commentaire que l'objet n'est pas toujours synonyme de "lourd, lent et pas souple". Tout dépend des outils que l'on dispose. Fais par exemple la même chose que squeak mais en Java et effectivement, tu pourras par contre dire, AMHA, "lourd, lent et pas souple".
        Malheureusement, trop de personnes qualifient l'objet qu'au travers des outils limités qu'ils disposent.

        Par contre, je pense que Squeak donne un apperçu de ce que pourrait-être un OS objet pour l'utilisateur. Il suffit juste d'imaginer que c'est un OS complet (oublier son interface graphique si on n'aime pas) : tu ne joues plus avec des applications, mais avec des objets, uniquement avec des objets. Tu imagines alors ce que pourrait être un tel OS si les documents étaient aussi que des objets !

        • [^]Re: J'en ai rèvé^Umarre

          Posté par Ayrton () le 15/10/2004 à 14:23. (lien). Évalué à 1.

          PM Manageur (IBM, pour AIX et OS/2) était un superbe bureau objet. Écrit en C :-)

        • [^]Re: J'en ai rèvé^Umarre

          Posté par deftones_chris () le 15/10/2004 à 14:29. (lien). Évalué à 3.

          Par contre, je pense que Squeak donne un apperçu de ce que pourrait-être un OS objet pour l'utilisateur.
          Niveau possibilité peut être... mais niveau performance, je ne le pense pas. Mais bon, ce ne sont que des suppositions et on ne va pas se prendre le choux avec cela :)

          Et question un peu HS, ton apprentissage du smalltalk, tu l'as fait comment ?

          • [^]Re: J'en ai rèvé^Umarre

            Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 14:42. (lien). Évalué à 2.

            Pour Squeak, essais le. Tu sauras alors en terme de perfs.
            http://www.squeak.org/(...)

            Mon apprentissage Smalltalk je l'ai fait à l'université.
            Auparavant, j'avais un background C++ et une pauvre culture en objet :)

            • [^]Re: J'en ai rèvé^Umarre

              Posté par deftones_chris () le 15/10/2004 à 14:59. (lien). Évalué à 3.

              Pour Squeak, essais le.
              Why not... En plus il y a une version OsX et j'ai toujours été tenté par le smalltalk même si je pense avoir du mal à me défaire de l'objective C :)

    • [^]Re: J'en ai rèvé^Umarre

      Posté par Ayrton () le 15/10/2004 à 14:09. (lien). Évalué à 1.

      Pour le lent et gros, je parle du bas niveau (qui doit être très très rapide et très petit).

      > il y eu donc des ratés comme dans les bases de données avec O2

      Postgresql (écrit en C) est aussi orienté objet (à sa façon).

      Il y a 50 façons de faire de l'objet. Dès que tu utilises un descripteur dans une structure avec des pointeurs de fonction c'est un l'objet. As-tu pour autant fait un "vrai" programme objet ?
      Pas sûre. Cette programmation objet de "bas niveau" est _très_ répandue (même en développement C).

      • [^]Re: J'en ai rèvé^Umarre

        Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 14:33. (lien). Évalué à 1.

        Il y a autant de façon de faire de l'objet qu'il existe d'outils pour le faire :)
        En parlant de bas niveau, Eiffel semble être apprécié de l'autre côté de l'atlantique dans certain cercle de l'embarqué.
        Sais tu que dans tes décodeurs C+ il y a une JVM et des services Java qui tournent ? une JVM adaptée bien sûr.

        Pourquoi veux tu absolument que "L'objet n'est pas adapté au bas niveau !"
        Pourquoi veux tu rendre statique une idée dans un univers changeant et mouvant. Ce qui était vrai autrefois ne l'est pas nécessairement aujourd'hui et encore moins demain.
        Avant, oui, maintenant, avec les compétences et l'expérience actuelle, voyons ... modifions ... changeons
        De grands progès ont été réalisés dans les VM pour langages objets.
        De grands progrès ont été réalisés dans l'implémentation des concepts objets dans les langages pour les rendre plus performant.
        De grandes avancées ont été réalisées dans les conceptions d'OS.
        Même maintenant, les bases de données vraiment objet tirent leur épingle du jeu !

        Tu parles faire de l'objet de "bas niveau". Tiens donc, mais pourquoi : parce que l'approche objet évolue et par ses qualités les développeurs l'adoptent peu à peu. Pourquoi "bas niveau" : parce que ce ne sont pas des développeurs objets et qu'ils sont habitués à coder d'une certaine façon avec des outils donnés : l'habitude est notre plus grand ennemi (je ne sais plus qui a dis ça), mais elle est là. Bien sûr, dans le très bas niveau (en embarqué pure par exemple), l'objet "vrai" (s'il y a de l'objet "vrai") est probablement pas encore du tout adapté.

        • [^]Re: J'en ai rèvé^Umarre

          Posté par Ayrton () le 15/10/2004 à 15:20. (lien). Évalué à 1.

          > Avant, oui, maintenant, avec les compétences et l'expérience actuelle, voyons ... modifions ... changeons

          C'est très bien tout ça. Je code aussi en C++ (avec des _vrais_ objets) et j'aime ça.
          Oui on peut faire du bas niveau en objet. Aucun problème à ça. Sauf les performances (au minimum il faut de l'édition de lien dynamique en plus) et de mémoire. A ça il faut ajouter toutes les optimisations qui ne sont plus possible si on veut rester propre. Ces optimisations sont indispensables pour les performances.
          Pour un noyau et la libc la priorité c'est les performance et la taille.

          Peut-être qu'un jour le niveau de performance ne sera plus prioritaire. Mais actuellement c'est loin d'être le cas.

          Fais un lecteur video uniquement en java ou smalltalk ...
          Fais un codec en C++ object (avec fonctions virtuels etc). Ça va ramer.

          On est a une époque où le niveau de performance est important et c'est pour ça que des développeur s'arrache les cheveux avec MMX, SSE, l'assembleur, etc.

          > Pourquoi "bas niveau" : parce que ce ne sont pas des développeurs objets et qu'ils sont habitués à coder d'une certaine façon avec des outils donnés

          Désolé mais c'est une excuse à deux balles.

          > l'habitude est notre plus grand ennemi

          Nier les expériences passées est aussi un grave défaut. Prendre les développeurs du noyau pour des "vieux" qui ne veulent pas changer leur habitude n'est pas cool. Si Linux n'utilise pas le C++ ou java ..., c'est qu'il y a de bonnes raisons et je pense qui sont _beaucoup_ mieux placer pour chosir le bon language, la bonne technologie, que toi et moi. Si dans Linux il y a de l'assembleur, c'est aussi pour de bonnes raisons.
          Le monde n'est pas divisé en deux :
          - les vieux cons qui font du procédurale
          - les jeunes dans le vent qui font de l'objet

          • [^]Re: J'en ai rèvé^Umarre

            Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 18:02. (lien). Évalué à 3.

            Oui on peut faire du bas niveau en objet. Aucun problème à ça.
            ...
            Fais un codec en C++ object (avec fonctions virtuels etc). Ça va ramer.

            Comme je l'ai dis dans un commentaire, le résultat obtenu dans la conception d'un système objet dépend des outils que l'on dispose pour le faire.
            Le problème est que bcp n'ont de perception de l'objet qu'au travers de leur langage ou environnement objet et le plus souvent celà même qui sont assez limités.

            Tu parles de lecteur vidéo uniquement en Java ou en Smalltalk ? Je te prends au mot, télécharge Squeak par exemple
            http://www.squeak.org(...)
            (il incorpore un catalogue d'objets dont parmi eux un lecteur vidéo)
            et on en reparle. Je pense (et je l'espère) que ça va te faire reflechir.

            On est a une époque où le niveau de performance est important

            En es tu vraiment si sûr ? Ne vois tu pas qu'autour de nous de plus en plus d'applis "lourdent" qui sortent (OpenOffice.org, Mozilla par exemples) sous pretexte que les machines sont devenues suffisamment puissantes et le deviennent plus au fur et mesure. L'époque où seule les perfs étaient importantes disparait peu à peu ... pour tomber dans un autre excès :(
            Bien sûr, ce n'est pas vrai pour tout : des parties de codes sont opimisées (codecs, certaines parties des VM, etc.) mais ce n'est plus une grande partie voire la totalité des applications comme ce l'était encore il y a quelques années.

            Désolé mais c'est une excuse à deux balles.

            En es tu vraiment sûr. Ce que je dis pour ces développeurs l'est aussi pour chacun d'entre nous. Cela ne signifie pas pour autant que leur boulot n'est pas bien. Au contraire !
            Un jour, comme ceux de leur collègues qui se sont mis par exemple à Eiffel, ils passeront peut-être à écrire des systèmes objets comme il se sont mis à appliquer les principes de l'approche objet. N'oublions pas qu'à une certaine époque on disait qu'il était inconcevable d'appliquer le paradigme objet dans les couches basses.

            Nier les expériences passées est aussi un grave défaut.
            ...

            Quand je dis que l'habitude est notre plus grand ennemie ne signifie en aucune manière qu'il faut nier les expériences passées. On peut voir l'habitude comme régir en règles des choses passées qui pouvaient être vraies en leur temps.
            Je pense que je me suis très mal exprimé : je ne voulais pas dire que les concepteurs de noyaux étaient des vieux qui ne voulaient pas changer leurs habitudes.
            De toute façon, chacun d'entre nous à nos habitudes que l'on ne veut pas remettre en question.
            Les concepteurs de noyaux évoluent : ils se sont bien mis à appliquer les concepts du paradigme objet, ils ne sont peut-être pas encore prêt (parce qu'ils ne disposent pas encore des outils nécessaires ou qu'ils ne connaissent pas ceux là) à passer à l'étape suivante. Le domaine des noyaux d'OS est riche : la recherche dans les microkernels, celle dans les exokernels.
            Je ne demande qu'un pas de plus ... aller plus loin que nos conceptions classiques : un OS vraiment objet. Sans pour autant dire que ce qui est classique est ringard !


            Le monde n'est pas divisé en deux :
            - les vieux cons qui font du procédurale
            - les jeunes dans le vent qui font de l'objet

            Je n'ai jamais qualifié ni sous entendue que les concepteurs de noyaux d'OS actuels étaient des vieux. Ni non plus diviser le monde en deux : celui des
            vieux cons et celui des jeunes. Je te fairai remarquer que c'est ton appréciation de mes propos et en aucune manière mes propos. Que finalement cette perception vient de toi.

            Le monde est diversifié et changeant. J'aime GNU/Linux, FreeBSD, et j'aime leur travail. C'est très bien, mais allons encore plus loin comme Unix en son temps a posé une pierre dans la mare : un OS tout objet. Pourquoi pas ? Dans les débuts, on va sûrement avoir des difficultés, c'est propre à l'ampleur de la tâche. Mais posons le défis aux vues de ce que cela pourrait apporter.

            • [^]Re: J'en ai rèvé^Umarre

              Posté par Ayrton () le 15/10/2004 à 19:27. (lien). Évalué à 4.

              > (il incorpore un catalogue d'objets dont parmi eux un lecteur vidéo)

              Toujours pareil. Les codecs doivent être en C. On trouve aussi les lecteurs vidéo avec VB et mono/python ont aussi la video via gstreamer. Faut pas tout mélanger. Mais si tu veux recoder gstreamer/ffmpeg en smalltalk ou java, t'es libre.

              > En es tu vraiment si sûr ? Ne vois tu pas qu'autour de nous de plus en plus d'applis "lourdent" qui sortent

              Tu mélanges encore tout. Ce n'est pas car il y a quelques applis lourdes que les ordinateurs sont suffisament puissant dans tous les cas. D'ailleur OOo reste trop lourd. Mozilla, ça va maintenant.
              Si je regarde un DVD, ça me bouffe 50 % du cpu. C'est énorme pour une opération de "base". Si j'enregistre la tv, je bouffe 60 % de cpu en 384x288. C'est encore énorme. Et pourtant ce sont des opérations de base et en utilisant des applis optimser à mort. En java, j'ose pas imaginer l'horreur. Dans 5 ans ou 10 ans ces opérations de base seront peut-être possible.

              > L'époque où seule les perfs étaient importantes

              Je n'ai pas dis ça. J'ai dis que c'était important pour le bas niveau. Si le noyau ou la libc sont lents alors _TOUT_ le système est lent. Il ne sagit pas d'une ou deux applis.

              > je ne voulais pas dire que les concepteurs de noyaux étaient des vieux qui ne voulaient pas changer leurs habitudes.

              L'histoire montre que c'est faut (peut-être pas totalement). Linux n'a rien à voir avec un Unix classique même si c'est la même interface. Linux 2.6 n'a rien à voir avec Linux 1.2. Il y a plein de "jeune" et si tu veux bosser dessus et avancer quelles idées objets, ne te prive pas.
              Les noyaux """nouveaux""" ont eu et ont encore leur chance. Mais ça ne marche pas. Il y a hurd qui arrive très péniblement et rien d'autre. Et hurd n'est pas réellement orienté objet.

              > De toute façon, chacun d'entre nous à nos habitudes que l'on ne veut pas remettre en question.

              Je fais du C, du C++, du php et du python. Le C a d'énormes avantages et d'énormes défauts par rapport à python ou le C++ (en fesant de l'objet).
              Je répète, beaucoup de programmes C sont orientés objets. Les développeurs C ne sont pas des manches et comme moi connaissent souvent aussi des languages objets et les pratiques. Dans la pratique l'objet c'est très bien parfois et pas bien parfois. Pour en noyau, je n'en vois pas l'intérêt. Ça va ralentir pour rien ou presque.

              > ils se sont bien mis à appliquer les concepts du paradigme objet

              Pour Linux, c'est là ou c'est nécessaire et sans impacts sur la vitesse. Actuellement c'est pour gérer la liste des périphériques/modules/facilité. Mais tu ne trouveras pas l'objet packet IP que tu peux dériver par exemple.

              > aller plus loin que nos conceptions classiques

              Là ça m'énerve un peu. En quoi Linux est "classique" ?
              Seulement car il n'est pas objet ?
              Franchement un noyau c'est exceptionnellement complexe et doit répondre a d'énormes contraintes (performance, souplesse, nombreuse configuration, etc) Sa "modernité" ne se mesure pas à l'utilisateur de concept objet ou non.
              Prend un micro noyau, enrobe le d'objet ; c'est mignon mais actuellement ce n'est pas ce qu'il y a de mieux.

              > un OS vraiment objet

              Utilises libg++, t'as une interface objet vers la libc et donc le noyau.

              > un OS tout objet. Pourquoi pas ?

              Pourquoi faire un OS (partie bas niveau) orienté objet est la "vrai" question.
              Les parties basses d'un OS n'exposent pas énormément de choses. Tu peux faire une surcouche pour les fichiers, le réseau, les resources. Tu peux aussi unifier tout ça dans un objet (ala java c'est dans os.*).
              Faire un objet file (ou stream/data de plus au niveau) avec les méthodes read(), write(), seek(), close() etc n'a vraiment rien de révolutionnaire et c'est déjà fait.

              • [^]Je me pose une question

                Posté par Keph (page perso, ) le 15/10/2004 à 20:51. (lien). Évalué à 1.

                J'ai lu ici qu'il était possible de programmer "objet" en C. Mais comment appliquer ne serait-ce que le principe d'héritage dans un tel langage ??? (je ne suis ni expert en C, ni en POO, d'où ma question).

                • [^]Re: Je me pose une question

                  Posté par cedric () le 15/10/2004 à 21:39. (lien). Évalué à 2.

                  J'adores ta remarque. Juste comme ca et un peu a l'extreme, tu peux faire de l'objet en assembleur. Et oui, les principes objets ne demandent pas beaucoup d'aide de la part du langage. Une arrithmetique des pointeurs assez souple et c'est bon, tu peux faire de l'objet. D'accord, ce n'est pas ideal. Mais le noyau linux, voir meme les noyaux BSD en font usage massivement, avec des structures contenant des pointeurs sur fonctions et autres attributs.

                  L'objet se resume quasiment que a de la manipulation de tableaux de pointeurs sur fonctions. Le langage en lui meme rajoutant souvent un tas de protections pour faire semblant que certains champs sont en lecture seule par exemple (les machins private, public, const, tout ca).

                • [^]Re: Je me pose une question

                  Posté par golum () le 15/10/2004 à 22:27. (lien). Évalué à 1.

                  Essaye ca

                  http://ldeniau.home.cern.ch/ldeniau/html/oopc/oopc.html(...)

                  et ca

                  http://www.planetpdf.com/codecuts/pdfs/ooc.pdf(...)

                  • [^]Re: Je me pose une question

                    Posté par thecat () le 16/10/2004 à 10:42. (lien). Évalué à 4.

                    ARGH !!!
                    Mais arretez! (je répond au 2 post du dessu)
                    Les principes objet ne peuvent pas etres décrit par leur implémentation. Quel mal à réalisé C++ et surtout Stroustrup en décrivant son langage par l'implémentation !
                    Les principes objets ne se résument absolument pas àde la manipulation de tableaux de pointeurs sur fonctions. Et au contraire, les principes objet demandent une aide _enorme_ du langage.

                    Quand on parle de programmation objet en C c'est un _énorme_ abut de langage!

                    Dans le liens sur "oopc", rien que dans l'intro on apprend que le gars n'a rien compris au principes objet:
                    OOPC does not provide
                    -Pointer to virtual member function handling polymorphism (too complex or slow)


                    Ce que l'on appelle de la programmation objet en C n'est autre que de la programation modulaire (ou legerement plus).
                    Je le repette: dire que l'on fait de la programation objet en C c'est comme dire que l'on fait de la programation fonctionelle pure en assembleur; vous voyez le problème quand même!

                    Un langage fonctionel pur ce n'est pas la même chose que le langage C.
                    Un langage permettant la concurrence n'est pas la même chose que le langage C.
                    Un langage de programmation logique n'est pas la même chose que le langage C.
                    Un langage objet n'est pas la même chose que le langage C.
                    Et pourtant tous ces langage peuvent etres implémenté en langage C! N'ont-ils pourtant aucun interet?

                    Les langages objets souffrait d'une mauvaise implémentation qui donnait des perfs biens moindres que dans des langages plus "bas niveau" comme le C.
                    Or maintenant on à réalisé des compilos qui concurence grandement le C (Eiffel, OCaml entres autres). Donc révisez votre jugement sur "l'objet c'est lent".

                    Pour revenir sur l'idée d'un OS tout objet: oui ce serrait biens car par exemple cela permettrait de cacher la notion de mémoire à un soft et ca se serait une enorme avancée!

                    Un pas moins ambicieux (et non spécifiques aux objets) serait d'ajouter un module de "garbage collector" directement au noyaux. Ainsi le systeme est en charge des objets et chaque applis n'embarque plus son propre garbage collector (explicite ou automatique).

                    • [+] [^]Re: Je me pose une question

                      Posté par Ayrton () le 16/10/2004 à 11:36. (lien). Évalué à -1.

                      > Dans le liens sur "oopc", rien que dans l'intro on apprend que le gars n'a rien compris au principes objet :
                      > Pointer to virtual member function handling polymorphism (too complex or slow)

                      L'auteur n'a pas voulu couvrir ça. Ça le regarde et ça ne montre en rien qu'il n'a rien compris aux principes objet.

                      > Et au contraire, les principes objet demandent une aide _enorme_ du langage.

                      Pour que le language soit objet, oui. Tu défonce une porte ouverte...

                      > Ce que l'on appelle de la programmation objet en C n'est autre que de la programation modulaire (ou legerement plus).

                      Il y a programmation modulaire et objet. C'est deux choses différentes. Gobjet de glib te permet de faire de l'objet en C :
                      http://le-hacker.org/papers/gobject/index.html(...)

                      T'aimes ou t'aimes pas, mais ça existe, ça marche et c'est utilisé.
                      gobject montre que le C ne fait pas naturellement de l'objet.

                      > Un langage objet n'est pas la même chose que le langage C.

                      Personne n'a dit que le C était un langage objet. On dit que le C permet de faire de l'objet. Si l'objectif est de faire que de l'objet, le C est un très mauvais langage. Tout le monde est d'accord avec ça. Mais tous les développeurs C te diront qu'ils font parfois de l'objet même si ce n'est pas aussi "riche" et/ou confortable que d'utiliser directement le C++.

                      > Or maintenant on à réalisé des compilos qui concurence grandement le C (Eiffel, OCaml entres autres). Donc révisez votre jugement sur "l'objet c'est lent".

                      Trouves un benchmark qui montre ça. L'objet, si tu n'en a pas besoin (et souvent la programmation objet n'est pas nécessaire) est _forcément_ plus lent (il y a des indirections supplémentaires).
                      Si tu as besoin de programmer en objet, que le programme soit en C ou en C++, ça ira grosso-modo aussi vite.

                      > Pour revenir sur l'idée d'un OS tout objet: oui ce serrait biens car par exemple cela permettrait de cacher la notion de mémoire à un soft et ca se serait une enorme avancée!

                      Programmes en C++ ou python ou n'importe quoi qui t'évite d'utiliser malloc.
                      C'est n'importe quoi ton idée. Si l'objet est encapsulé/connu, tu n'as pas besoin de connaitre la notion de mémoire. Tu fais "new object" ou "object toto" et voilà. Si tu crées un nouvelle objet il faut bien allouer de la place dans la mémoire pour l'object qui par définition n'est pas connu par l'OS. Sinon tu demandes que l'OS connaisse a l'avance une liste d'objets prédéfinis et tu interdis la création de nouveau type d'objet. Très mauvaise idée.

                      > Un pas moins ambicieux (et non spécifiques aux objets) serait d'ajouter un module de "garbage collector" directement au noyaux. Ainsi le systeme est en charge des objets et chaque applis n'embarque plus son propre garbage collector (explicite ou automatique).

                      C'est ne pas connaitre l'architecture des OS que de dire ça ...
                      Linux a son "garbage collector" pour certaines resources (fichiers ouverts, modules, etc). En plus "garbage collector" est limite une connerie en vogue à cause de java. Tout ça car java a un thread séparé pour libérer la mémoire alors que les autres font ça sur le champs (si l'objet n'est plus utilisé, il est libéré tout de suite. Pas la peine d'attendre le "garbage collector").
                      Le "garbage collector" niveau appli est différent car l'OS pour des raisons de performance fourni des blocks de mémoire à l'appli (qui en fait ce quelle veut, par exemple pour l'utiliser pour 500 malloc de chaine de caractère). L'OS n'est pas au courrant des tous les malloc (fait par la librairie C). Sinon il faut un appel système par malloc et les performances chutes dramatiquement. Les appels systèmes coutent très cher en temps comparé à un simple malloc(10).

                    • [^]Re: Je me pose une question

                      Posté par Larry Cow () le 16/10/2004 à 17:51. (lien). Évalué à 3.

                      Or maintenant on à réalisé des compilos qui concurence grandement le C (Eiffel, OCaml entres autres). Donc révisez votre jugement sur "l'objet c'est lent".

                      Sauf que (au moins pour Caml, je connais pas Eiffel) ce qui "concurrence grandement le C", c'est pas l'aspect objet d'OCaml. Un programme en OCaml contre un programme en C, y'a pas photo.

                    • [^]Re: Je me pose une question

                      Posté par golum () le 18/10/2004 à 21:55. (lien). Évalué à 2.

                      Restons calme,

                      je répondais juste au môssieur qui se demandait comment faire de la POO avec du langage C et les liens précédents l'expliquent.

                      L'une des techniques pour implémenter l'héritage c'est de jouer à fond sur les cast de pointeurs sur des structures.
                      On peut même simuler le polymorphisme en incluant des beaux pointeurs de fonctions dans les structs.


                      Le fait est que ce qui fait l'attrait de l'OO, c'est pas les langages mais le paradigme. Avec l'OO, on emmène avec soi la conception OO, les méthodes de suivi de projets OO, la modelisation OO (UML :).

                      L'OO ca permet de faire le tri dans ses idées afin de construire une architecture solide et cohérente. (Le fameux principe de grady Booch: on décortique tout pendant l'analyse, on fait le tri dans ses idées et on réassemble de façon cohérente pendant la conception).
                      L'OO ca permet de maîtriser la complexité en la rendant à nouveau accessible à l'intelligence d'un seul être humain.
                      Et là ou je pense que Miguel a raison c'est qu'un OS basé sur une bonne architecture objet pourrait s'averer plus robuste qu'on ne le pense. Je ne sais pas combien représente le nb de ligne de codes de Linux mais je me demande s'il y a beaucoup de personnes au monde qui appréhendent son architecture en entier. Et si tel n'est pas le cas comment savoir si deux parties qui cohabitent le font en toute harmonie. Notez que je ne me suis jamais plongé dans la doc du kernel mais s'il y un modèle UML je suis preneur.


                      Pourquoi ne pas utiliser un véritable langage objet pour faire de l'objet ? Dans certaines situations, ce sont les performances qui priment alors avec du C orienté objet on peut prendre le meilleur des 2 mondes , un bon design et lorsqu'on a besoin d'implémenter un algorithme au ptit poil encapsulé dans une méthode le C y'a pas mieux.

                      Moi aussi, je rêve d'un OS où tout est objet, où l'on n'a plus besoin de savoir ce qu'est un pipe parce que les objets communiquent entre eux par message et quand je veux utiliser les services d'un objet j'invoque des messages. Et si y'a un pb je recois un bel objet sous forme d'exception sans ambiguité et pas un vieux code d'erreur qui veut rien dire et qui vaut presque tjs 1.
                      Je rêve d'un OS qui n'a pas la philosophie d'unix (Aie pas taper LinuxFr) où "chaque programme ne sait faire qu'une chose mais le fait bien" mais plutôt chaque objet ne réagit qu'aux messages qu'il comprend.
                      Je me prends à rever que lorsque j'edite mon code dans mon pauvre IDE, mon outil de refactoring communique avec mon compilo mais aussi mon module de test et que celui-ci m'informe que j'ai fait une cagade. Je rêve que je me fasse jeter quand je veux commiter parce que mon gestionnaire de sources demande l'autorisation à mon module de testing qui lui répond que c'est pas au point. Oui c'est vrai y'a ce bon vieux "aegis" qui peut s'interfacer avec n'importe quel outil en ligne de commande qui lui renverrait 1 comme message d'erreur.
                      Je rêve d'un OS où je ne serais pas obligé de me taper des wrapper au dessus de l'interface en ligne de commande jamais fiables parce que le stout change à la moindre fantaisie du developpeur,
                      mais plutôt d'un OS où le programme en question communique avec les autres sans ambiguité.


                      Tiens c'est marrant on dirait .net ou peut être bien dcop. Mais ca serait tellement mieux si c'etait l'OS qui prenait en charge cette communication et pas un runtime ou autre mécanisme.
                      Ainsi, on aurait moins de querelles de clocher et tous les programmes seraient non ambigus et pas seulement ceux qui veulent respecter les bons principes d'un Gnome d'un KDE , d'un Gnustep, d'un .net ou d'un J2EE. Cà allegerait sans doute le travail des developpeurs..

                      Mon petit doigt me dit que quand on aura bien peaufiné cette couche logicielle, on se dira que ca serait pas mal d'appliquer ca au niveau de l'OS et peut être même du hard. Mon petit doigt me dit qu'il faudra que les gens changent de philosophie (Unix vs Objet) pour que ca marche et que ca n'est pas demain la veille. Attention avant que Billou n'en ait l'idée. Mais qui sait dans le monde du libre "TOUT EST POSSIBLE"

                      ---

                      La vérité n'est pas dans un seul rêve, mais dans beaucoup de rêves.
                      [Pier Paolo Pasolini]

              • [^]Re: J'en ai rèvé^Umarre

                Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 21:36. (lien). Évalué à 3.

                Toujours pareil. Les codecs doivent être en C.

                Non, en Smalltalk.

                Tu mélanges encore tout.

                Je pense que l'on ne parlait pas de la même chose alors.
                Il semblerait que tu parlais encore du bas niveau alors que moi je pensais au niveau applicatif.
                En tout cas, la lourdeur des applis est loin d'être localisés comme tu le sous-entends.
                Quant à ton exemple de Java, le pb ne vient pas du langage mais de ses VM.

                L'histoire montre que c'est faut (peut-être pas totalement)

                Qu'est ce qui est faux ? Je ne vois pas. As tu vraiment lu ce que j'ai écrit ou as tu simplement interprété comme tu le désirais ce que j'ai écris ?
                Parce que là tu viens de dire, au travers d'un exemple, ce que j'ai écris : le changement, l'adaptation.

                Je répète, beaucoup de programmes C sont orientés objets. Les développeurs C ne sont pas des manches et comme moi connaissent souvent aussi des languages objets et les pratiques.

                Décidemment, j'ai la nette impréssion que tu ne m'as pas lu.
                Ou alors j'explique comme un manche :)

                Là ça m'énerve un peu. En quoi Linux est "classique" ?
                Seulement car il n'est pas objet ?

                Hum ...
                Je pense que tu n'a pas compris ou ne veux pas comprendre.
                Tu te fais un délire avec l'objet.
                Dire que quelque chose s'appuit sur une approche "classique" ne signifie pas que c'est mal ou moins bien ou qu'il faut absolument changer !
                En tout cas, je n'ai jamais voulu dire ça.

                Utilises libg++, t'as une interface objet vers la libc et donc le noyau.

                N'importe quoi ! Décidemment tu n'as pas compris mon rêve !


                prend un micro noyau, enrobe le d'objet ; c'est mignon mais actuellement ce n'est pas ce qu'il y a de mieux.
                ...
                Les parties basses d'un OS n'exposent pas énormément de choses.

                Ha, ca y est, j'ai compris : je me suis mal exprimé.
                Je ne parle pas du noyau/micronoyau à écrire en objet. Je ne parle pas de cette partie entre le matériel et les autres couches systèmes (mémoire, système de fichiers, etc.). Je parlais d'au dessus dans l'OS. Effectivement, je suis d'accord qu'en l'état des choses et par rapport aux matériels actuels, il vaut mieux ne pas coder le noyau en objet ; utiliser les principes du paradigme objet pourquoi pas, mais pas en objet.

                • [^]Re: J'en ai rèvé^Umarre

                  Posté par CoinKoin () le 16/10/2004 à 12:07. (lien). Évalué à 2.

                  Ha, ca y est, j'ai compris : je me suis mal exprimé.
                  Je ne parle pas du noyau/micronoyau à écrire en objet. Je ne parle pas de cette partie entre le matériel et les autres couches systèmes (mémoire, système de fichiers, etc.). Je parlais d'au dessus dans l'OS. Effectivement, je suis d'accord qu'en l'état des choses et par rapport aux matériels actuels, il vaut mieux ne pas coder le noyau en objet ; utiliser les principes du paradigme objet pourquoi pas, mais pas en objet.


                  Dans ce cas, ce qui correspondrait le mieux à ton objectif, ce serait une bibliothèque complète permettant d'effectuer des appels-systèmes depuis un langage objet, non?

                  Les bibliothèques Java me semblent répondre à peu près a cette définition...

                  • [^]Re: J'en ai rèvé^Umarre

                    Posté par Miguel Moquillon (page perso, ) le 16/10/2004 à 15:57. (lien). Évalué à 1.

                    Non. Je ne parle pas de bibliothèque encapsulant les appels systèmes pour un langage objet. Comme ePOSIX pour Eiffel.
                    Non, ce dont je parle est d'un véritable environnement objet au sens ou tout ce qui vie dans cet environnement sont des objets. Rien de plus. Il n'y a plus de notion d'applications. S'il y a application, il y en a qu'une : la VM (par exemple) qui tourne au dessus d'un micro-noyau (par exemple). Elle supporte tout ce les mécanisme nécessaires à la gestion du cycle de vie des objets, à l'allocation de ressources pour ceux-ci, à la distribution, à la persistance, etc.

    • [+] [^]Re: J'en ai rèvé^Umarre

      Posté par Ayrton () le 15/10/2004 à 14:19. (lien). Évalué à -2.

      > Maintenant, à part les couches utilisateur, je n'ai pas connu de tentatives

      Il y a JavaOS (qui doit tourner sur un "vrai" OS).
      En fesant des recherches sur le web, tu trouveras rapidement des noyaux orienté objet et développés en C++. Le problème est que c'est lent et donc ça ne motive pas l'arrivée de nouveaux développeurs.

      Ta remarque, c'est un peu comme si tu me disait que je ne peux pas affirmer qu'un noyau en VB serait lent car il n'y a pas de noyau en VB :-)

      • [^]Re: J'en ai rèvé^Umarre

        Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 14:38. (lien). Évalué à 2.

        Ce n'est pas parce que le noyau est écrit en C++ que l'OS est pour autant objet.
        Ce n'est pas parce que tu écris un programme en C++ (ou autre langage objet) que tu fais de l'objet et que ton programme soit objet.

        A part ceci, si mes souvenirs sont bon, le kernel de BeOS était codé en C++ et pour autant n'était pas plus lent.

[ /!\ ] =D

Posté par Moun's (page perso, ) le 15/10/2004 à 13:46. (lien). Évalué à 2.

MS Windows et IE avec plein d'Active X ?

pas taper ... pas taper ... :)

Troll inside

Posté par TemPi () le 15/10/2004 à 13:52. (lien). Évalué à 1.

Ca existe, c'est java !

  • [^]Re: Troll inside

    Posté par deftones_chris () le 15/10/2004 à 13:56. (lien). Évalué à 3.

    Tiens ça me rappelle la volonté de Sun de faire des machines avec comme os une VM Java. C'est tombé au fond du puit ?

C'est amusant ....

Posté par √λιi () le 15/10/2004 à 14:16. (lien). Évalué à 3.

... Mais cela fait quelques mois que je pense régulièrement à la conception d'un OS objet (Pur).
Plus de fichiers, plus d'applis à lancer (et a chercher), cohéxistance d'implémentations (les objets reconnaissent eux même l'objet qui peu les manipuler), warp de partitions nécessitant un SGF (fichier assimilé à un objet d'un certain type dont on connait les méthodes), une méga base de donnée Objet gérant la hiérachie, les classes, et les objets.
Plus d'allocation mémoire, la RAM n'est uniquement que du tampon de la base de donnée du système.

Mais il est clair que l'utilisation massive de la pile et l'utilisation de tables virtuelles dans la prog objet rend tout cela bien hypothétique. Mais sur le papier, c'est le top de ce que l'on puisse imaginer.
A tel point que je voulais monter un projet de spécification d'un OS objet, pour qu'un modèle soit prèt à être implémenté, au cas ou ...

  • [^]Re: C'est amusant ....

    Posté par imalip (page perso, ) le 15/10/2004 à 14:34. (lien). Évalué à 4.

    Vas-y, ca a l'air d'etre de la bonne... Fais tourneeeeeeeeeeerrrrrrr !!!!

    OK, poussez pas, poussez pas... []

    --
    "While a monkey can be a manager, it takes a human to be an engineer" Erik Zapletal
  • [^]Re: Obéron

    Posté par Eric Streit () le 15/10/2004 à 15:19. (lien). Évalué à 5.

    Bonjour,

    il y a Oberon créé par le concepteur de pascal et modula II.

    C'est un langage, un OS , unne interface utilisateur,
    des programmes dispo gratis, entièrement objet .

    J'ai "joué" avec il y a quelques années et c'était bluffant...


    http://www.oberon.ethz.ch/(...)

    Eric!
    -----

Pourquoi se contenter seulement de l'OS ?

Posté par LeMagicien Garcimore () le 15/10/2004 à 14:30. (lien). Évalué à 3.

Construisons une archi prévue pour executer des programmes en POO!

Y'a pas mal de papiers sur le sujet. Le modèle le plus marrant, et le plus proche de ta vision, c'est celui de Ramesh K. Karne. Expliqué dans l'article "Object-oriented computer architectures for new generation of applications". L'idée est de supprimer la couche OS pour executer directement les appli. Franchement utopique pour le moment, mais marrant à envisager :)

L'article est pas gratuit, un résumé est cependant dispo ici : http://portal.acm.org/citation.cfm?id=218332&jmp=abstract&d(...)

J'ai le pdf complet, si ça intéresse du monde...

Dans les autres projets sympa, voir jHISC et A-NET.

  • [^]Re: Pourquoi se contenter seulement de l'OS ?

    Posté par Miguel Moquillon (page perso, ) le 16/10/2004 à 16:01. (lien). Évalué à 2.

    Le PDF m'intéresserait.
    Fournir une archi pour supporter le modèle objet est intéressant et simplifierait peut-être bcp de choses.

Python

Posté par Pinaraf (Jabber id, ) le 15/10/2004 à 15:56. (lien). Évalué à 3.

Moi personnellement je rêve aussi d'un OS objet, mais c'est complètement irréalisable (pbs de perfs)
En gros, l'idée est la suivante : le noyau inclue un interpréteur Python codé donc en C+asm, avec des fonctions python pour accéder en brut au matériel. Au dessus de ce noyau minimal, du python uniquement : drivers (!), shell, init... Le tout interprété par le noyau.
Bien sûr, ce modèle est pas terrible :
1- performances désastreuses
2- est-ce réalisable humainement ?
3- Sécurité
Peut être que ça sera faisable dans quinze ans...

  • [^]Re: Python

    Posté par Larry Cow () le 15/10/2004 à 17:00. (lien). Évalué à 7.

    Y'a déjà (au moins) une tentative en ce sens, c'est Unununium. A part le fait que ça démarre à peine et que le nom est particulièrement pas cool à prononcer, ça peut être intéressant.

    http://unununium.org/(...)

    • [^]Re: Python

      Posté par Narishma Jahar () le 15/10/2004 à 20:22. (lien). Évalué à 4.

      Unununium va même plus loin que ça, car la notion de fichier n'existe plus que pour assurer la compatibilité avec les systèmes existants (c'est ce qu'ils appellent "orthogonal persistance").

      • [^]Re: Python

        Posté par Larry Cow () le 15/10/2004 à 20:37. (lien). Évalué à 3.

        Oui, il est excessivement prometteur, je trouve. J'ai pas trop de temps à y consacrer en ce moment, mais je compte bien garder un oeil là-dessus ;)

    • [^]Re: Python

      Posté par Miguel Moquillon (page perso, ) le 16/10/2004 à 16:02. (lien). Évalué à 2.

      J'ai commencé à lire leur doc et effectivement ununumium semble très intéressant. Merci pour le lien.

Hmhm

Posté par Guillaume Knispel () le 15/10/2004 à 17:02. (lien). Évalué à 6.

Quelques remarques :
1) ne pas confondre l'approche objet et les langages objets
2) a quoi ca sert concretement, et à quel prix ?
3) c'est bien beaux de vouloir faire table rase de l'existant mais il ne faut pas sous evaluer les problèmes suceptibles d'être ainsi créés.
4) interet d'une VM dans ton modèle ? (a part permettre la portabilite binaire dans le monde proprio, ce qu'il serait ton droit de vouloir mais ya pas mal de monde qui s'en foutent completement dans le monde du LL...)
5)"Un système d'exploitation dans lequel tout serait objet, même les applications ; sur les systèmes classiques, une application est de toute manière orientée fonction, qu'elle soit codée ou non en objet : tout commence par une fonction principale !" Tu veux des applications qui commencent par ou toi ? Qu'il soit explicite ou implicite, internalisé ou externalisé, il y aura toujours un point d'entré qui signera le début d'une execution. Faut pas confondre ce que fout le processeur et la méthodologie de devel. C'est pas pcq'un truc est "objet" qu'il ne peut jamais etre imperatif... (autrement on aurait de gros pb).


Ceci étant dit l'idée n'est pas ininterressante (bien que vu toutes les rq que je fais, il semble qu'il reste un boulot important de définitions rigoureuses à faire), quand est ce que tu codes cet OS :p ?

  • [^]Re: Hmhm

    Posté par deftones_chris () le 15/10/2004 à 17:25. (lien). Évalué à 5.

    En fait avant d'avoir un OS objet, il faudrait peut être avoir des machines avec une architecture objet. C'est un peu gros et cela ne doit pas être évident à imaginer mais c'est le minimum pour un os purement objet sans qu'il y ait trop de problème de perf.

    Mais bon, je balance ça en l'air et peut être que cela va retomber comme une merde :) C'est ma pensée de 19h25 :)

  • [^]Re: Hmhm

    Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 18:33. (lien). Évalué à 4.

    1) ne pas confondre l'approche objet et les langages objets

    Tout à fait d'accord

    2) a quoi ca sert concretement, et à quel prix ?

    Unix en son temps avec ses préceptes (tout est fichier, des outils qui font qu'une et une seule chose et le font bien, etc.) a simplifié bcp de choses.
    Hurd tente de pousser plus loin cette approche.
    Un OS tout objet simplifierait encore plus de choses. Il permettrait de ne plus se préoccuper de la persistance, de la distribution, si ce n'est en terme d'administration, etc. En fait, il faut s'imaginer Squeak par exemple en OS avec les préceptes de Smalltalk (en tant qu'environnement objet) en plus loin.

    3) c'est bien beaux de vouloir faire table rase de l'existant mais il ne faut pas sous evaluer les problèmes suceptibles d'être ainsi créés.

    Pourquoi pas ? Il y aura toujours l'existant ... et autre chose qui peu à peu prendra forme. Dans le LL, on peut se le permettre, donc d'innover plus facilement.

    4) interet d'une VM dans ton modèle ?

    En fait c'est juste une idée. La VM serait le programme sur lequel la machine booterait. Il serait l'interface entre la machine et l'OS et proposerait tout ce qui est nécessaire pour construire un véritable environnement objet. Pour des raisons de perfs, certaines parties de la VM devront peut-être être codées en langage C ou assembleur.
    En fait, pour se donner une idée, il faut s'imaginer une VM Smalltalk sur laquelle tu booterais !

    5)...

    Il n'y aurait, par exemple, qu'un programme principal : le noyau ou la VM.
    Tout le reste ne serait qu'objets. Même les drivers. Tout. La VM ou le noyau serait l'environnement virtuel dans lequel les objets vivent. Ils communiquent au travers de lui au même titre qu'avec lui.
    Par exemple, pour un lecteur vidéo : tu ne lances pas l'application. Tu le prends des catalogues objets (il est déjà instancié). Tu peux le cloner si tu veux. et tu lui envois des messages : ouvrir un fichier vidéo (un objet aussi), lire ledit fichier vidéo. Tu peux même l'incorporer dans ton programme.
    Pour se donner un aperçu de cela, il suffit juste d'essayer par exemple Squeak.
    http://www.squeak.org(...)

    il semble qu'il reste un boulot important de définitions rigoureuses à faire), quand est ce que tu codes cet OS :p ?

    Je suis tout à fait d'accord.
    Quand vais je coder cet OS ? hum ... qd j'aurais plus de temps pour moi, que je me serais former dans la conception d'un noyau ou d'une VM et que j'aurais avec moi un certain nombres de volontaires enthousiastes :)

    • [^]Re: Hmhm

      Posté par Ayrton () le 15/10/2004 à 19:40. (lien). Évalué à 1.

      > Par exemple, pour un lecteur vidéo : tu ne lances pas l'application. Tu le prends des catalogues objets

      C'est bourré de problème cette approche.
      L'objet doit donc contenir le décodeur, l'interface, etc...
      Où tu stokes ce "truc" ? Comme se passe les mises à jour du lecteur ? Que se passe-t-il si tu changes de lecteur par défaut ? Que se passe-t-il lorsque tu copies l'objet ? Tu copies aussi le lecteur associé à l'objet ? Et si le lecteur est buggé ?
      Comment rendre ça multi-plateforme ?

      Cette approche doit être faite par le desktop (Gnome/KDE). Pas par l'OS.
      Ne présenter que des "objets" a l'utilisateur final est très bien. Faire ça dans l'OS, non.

      • [^]Re: Hmhm

        Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 21:08. (lien). Évalué à 3.

        Non, le décodeur, les élements de l'interface sont des objets autres avec qui le lecteur communiquent.
        L'objet est stocké dans un catalogue.
        Les mises à jour sont des mises à jour de l'image de l'objet.
        ...
        Un exemple : le lecteur vidéo dans squeak.
        Il ne reste plus qu'à rendre la VM de squeak bootable et implémenter les couches systèmes sous forme d'objet par exemple :)

    • [^]Re: Hmhm

      Posté par pasBill pasGates () le 15/10/2004 à 19:48. (lien). Évalué à 4.

      qd j'aurais plus de temps pour moi, que je me serais former dans la conception d'un noyau ou d'une VM et que j'aurais avec moi un certain nombres de volontaires enthousiastes :)

      Ben justement, une fois que t'auras ete forme a la conception d'un noyau, t'auras plus envie de le faire en oriente objet, tu te rendras compte a quel point les besoins en perfs, taille,... d'un noyau sont incompatibles avec l'approche objet.
      Tu pourrais faire un noyau "concept" qui marcherait et serait tres joli, mais il serait tres tres loin de ce qui existe aujourd'hui niveau perfs et personne ne l'utiliserait.

      • [^]Re: Hmhm

        Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 21:04. (lien). Évalué à 4.

        Hum ... Je crois que je me suis mal exprimé.
        Je ne confonds pas l'OS et le noyau. Ce dernier fait partie de l'OS mais n'est pas l'OS. Je parlais d'OS objet, pas de noyau objet.
        Le noyau ou peut-être simplement une VM peut-être implémentée en C avec des endroits en assembleur. Mais tout au-dessus en objet.

Mark Twain

Posté par jmfayard () le 15/10/2004 à 18:26. (lien). Évalué à 9.

"Lorsque le seul outil que vous avez est un marteau, tous vos problemes ressemblent a des clous"

Ton reve m´a l´air typique de cette facon de penser. Tu as un joli marteau (l´Objet) et tu cherches des problemes que tu pourrais resoudre avec. Pis, si on ne trouve pas de problemes, on peut toujours en inventer ...

  • [^]Re: Mark Twain

    Posté par Miguel Moquillon (page perso, ) le 15/10/2004 à 18:43. (lien). Évalué à 1.

    Je ne pense pas.
    Je ne cherche pas les problèmes. Ceux là existent déjà. Ce que je propose est une autre solution. Au lieu de s'acharner à réinventer la poudre à chaque nouvelle techno pour solutionner ces problèmes, penchons nous pour voir si en créant un OS vraiment objet, on ne redéfini pas différemment le problème de telle façon que les solutions apparaissent plus simples, que l'on ouvre la voie à de nouveaux chemins qui permettrait de pouvoir accomplir de choses encore plus complexes et de manière plus simple.

    Ce n'est peut-être qu'un rêve ...

hmm

Posté par Erwan (page perso, ) le 16/10/2004 à 05:52. (lien). Évalué à 5.

Je crois qu'il y a pas mal de confusion autour de l'objet. Deja, l'objet c'est une facon de penser, et pas une "classe" de langages. Il n'y a que deux classes de langages: fonctionnel (a la lisp) et imperatif (a la fortran). On peut avoir des langages fonctionnels a objets (smalltalk) ou des langages imperatifs a objets (C++).

Comme ca a ete dit tu peux faire de l'objet en C.

Concretement, l'objet apporte trois choses:
* encapsulation
* heritage
* polymorphisme
Tout le reste c'est juste un confort d'ecriture, comme ecrire ecran.afficher("hello") au lieu de afficher(ecran, "hello").

Dans la pratique, a part dans les IHM ou il se trouve que l'objet est particulierement adapte, on utilise principalement l'encapsulation. Generalement l'heritage et le polymorphisme sont assez peu utilises, ou alors par des mordus de l'objets qui veulent a tout prix exploiter la conception objet a fond.

En effet, l'heritage est assez proche de l'aggregation, seule la semantique est differente.


Attention, j'aime beaucoup la conception objet et je l'utilise presque tout le temps. Ca aide surtout a mieux structurer le code. Mais ce n'etait finalement pas si revolutionnaire, et contrairement a ce qu'on en pensait au debut ca ne permet pas plus de reutiliser le code que les bonnes vieilles bibliotheques.

  • [^]Re: hmm

    Posté par Narmer () le 16/10/2004 à 10:29. (lien). Évalué à 6.

    Ca aide surtout a mieux structurer le code.

    Le fait que cela aide à structurer le code n'est pas le plus important. Effectivement au niveau de l'écriture de ton code, c'est structurant. Mais si on regarde ADA 83 (Ada alsys pour les intimes) son organisation en paquetage, sa syntaxe aide beaucoup à structurer mais ce n'est pas un langage objet.
    Concretement, l'objet apporte trois choses:
    * encapsulation
    * heritage
    * polymorphisme

    Tu as oublié de rajouter qu'un objet est caractérisé par
    * ses attributs
    * ses methodes
    * et son identité

    Le fait qu'un langage objet gère par défaut ce dernier outil (identité), cela te procure beaucoup plus d'aisance pour rapprocher tes développement du monde réel. En conception on est sur deux planètes differentes ! En conception classique t'es obligé à chaque fois de concevoir le concept d'objet (struct en c/c++, paquetage en ada, etc). Si tu réfléchis bien c'est une gymnastique que tu fais à chaque fois. Les langages objets te permettent d'aller directement au coeur du vrai problème fonctionnel en te prenant moins la tête sur les aspects purement techniques : structure de données pour représenter le réel par exemple. Ensuite cette structure que tu auras été content de créer et bien tu ne pourras la partager facilement (voire pas du tout ) avec d'autres projets.

    Je ne parle même pas des mécanismes et outils introduits par défaut présent dans les principaux langages objets et aussi induit par leur nature : Serialisation, Exception, Introspection, Design Pattern etc ...

    Et "Cherry on the cake", l'étape d'après c est la programmation orienté aspects.

    Mais ce n'etait finalement pas si revolutionnaire, et contrairement a ce qu'on en pensait au debut ca ne permet pas plus de reutiliser le code que les bonnes vieilles bibliotheques.

    Le fait que les langages objet permettent une meilleure abstraction du réel de par leur structure permet d'avoir des bibliothèques beaucoup plus réutilisables.

    L'objet ce n'est pas seulement la programmation !!
    Je ne parle même pas ce que l'objet à apporter en terme de conception d'application (on passe de MERISE au RUP, XP avec UML comme support ).

    Conclusion : L'objet comme tu disais c'est vraiment une autre façon de voir les choses qui facilite la vie des concepteurs et programmeurs. C'est pas pour rien qu'une société comme microsoft est passé à l'objet (C# , les choses d'avant c'était pas de l'objet pour moi).

    vala bon week-end

  • [^]Re: hmm

    Posté par Miguel Moquillon (page perso, ) le 16/10/2004 à 11:30. (lien). Évalué à 3.

    Tu fais bien de rappeler ces choses là.
    Les langages fonctionnelles et procédurales sont les deux plus grandes mais pas les seules. Les langages à inférence en sont d'autres.
    Contrairement à ce que tu as écris, Smalltalk ne fait pas partie des langages fonctionnelles, ni non plus de ceux dits porcédurales. On pourrait dire, en tirant un peu sur la corde, que c'est à un langage à part qui exploite ces deux familles.

    Tu dis que l'objet n'est pas si révolutionnaire que ça et ne permet pas plus de réutilisation que d'autres approches (modulaires par exemple). Tu tombes dans l'erreur même pour laquelle tu mes en garde les gens : l'objet n'est pas seulement une application des préceptes de son paradigme avec des outils le plus souvent limité.
    Pourquoi l'objet ne parait pas si réutilisable ou révolutionnaire que ça ? Parce que l'on doit compter sur l'existant. Smalltalk a essayé de ne pas tenir compte de ce dernier et il en a payé les frais. Qu'est ce que c'est que cet existant ? C'est ce je j'ai appellé l'approche "classique" : des environnements découpés sous forme d'applications bien compartimentées. Finalement, l'objet ne s'applique quotidiennement qu'à contruire telle appli ou telle autre en objet. Mais les objets entre ces applis sont bien séparées et ne se connaissent pas. Pour palier à ce problème, on met en place nombre technos de communication inter-applications ou distribués.
    L'objet c'est plus que ça. Sans parler de révolution, si on veut vraiment compter sur les avantages de l'objet : vraie réutilisation, extensibilité, etc. les objets ne doivent plus être enfermées dans des applis, mais doivent vivrent dans un environnement virtuel objet (ce qui ne signifie pas pour autant que cet environnement a été construit totallement de façon objet) distribué lui-même !
    Cet environnement peut très bien être un ensemble matériel/VM ou une VM contruite sur un noyau d'OS ou tout autre chose. Dans cet environnement, la notion d'application n'existent pas. Seuls les objets existent. Cet environnement matient des catalogues d'objets, gèrent de façon transparente leur cycle de vie, leur répartition, leur persistance, etc.
    Tu souhaites voir un film : de tel catalogue d'objet, tu prends l'objet "lecteur de vidéo". Cet objet utilise les services d'autres objets comme le codec MPEG par exemple et le driver vidéo correspondant à la carte vidéo de ta machine. Tu veux voir plusieurs films en même temps, tu clone l'objet et sur chacun tu visualises un film différent. Le lecteur vidéo t'interesse pour un un de tes programmes : très bien, dans spécifies que tel ou tel de tes objets communiquent avec lui. Etc.

    Les environnements Smalltalk, sans pour autant aller très loin, implémentent ces idées. Pour te faire une idée, essaies Squeak par exemple :
    http://www.squeak.org(...)

    • [^]Re: hmm

      Posté par Ayrton () le 16/10/2004 à 12:58. (lien). Évalué à 1.

      > Tu souhaites voir un film : de tel catalogue d'objet, tu prends l'objet "lecteur de vidéo". Cet objet utilise les services d'autres objets comme le codec MPEG par exemple et le driver vidéo correspondant à la carte vidéo de ta machine. Tu veux voir plusieurs films en même temps, tu clone l'objet et sur chacun tu visualises un film différent. Le lecteur vidéo t'interesse pour un un de tes programmes : très bien, dans spécifies que tel ou tel de tes objets communiquent avec lui. Etc.

      C'est très bien tout ça, mais pourquoi au niveau OS ?
      Prends gstreamer avec les types mimes dans gnome et t'as exactement ce que tu viens de dire.

      > de tel catalogue d'objet

      Un répertoire avec des fichiers (qui peuvent être des videos)

      > tu prends l'objet "lecteur de vidéo"

      Un programme

      > Cet objet utilise les services d'autres objets

      gstreamer

      > comme le codec MPEG par exemple

      plugin gstreamer

      > le driver vidéo correspondant à la carte vidéo de ta machine.

      plugin gstreamer (pour alas, oss, x11, xv, etc). pour la carte vidéo ça doit rester du ressort de l'OS ou X11 (très bas niveau) .

      > Tu veux voir plusieurs films en même temps, tu clone l'objet

      Tu lances plusieurs fois gstreamer (totem qui utilise gstreamer). Ou tu double-cliques sur tes deux videos. Ou clique droit "ouvrir avec lecteur video totem". ou ... C'est une histoire d'interface.
      Faut avoir en tête que l'utilisateur comprend parfaitement qu'une video et un lecteur video sont deux choses.
      Lorsque tu achètes un DVD il n'y a pas de lecteur avec. Un lecteur DVD n'est pas une video. Pour voir un DVD, tu le mets dans ton lecteur DVD. Une video n'est pas une boite à image. Une video peut être lu par plusieur lecteurs video et en même temps (cas d'un serveur video).

      > Le lecteur vidéo t'interesse pour un un de tes programmes : très bien, dans spécifies que tel ou tel de tes objets communiquent avec lui. Etc.

      Je ne comprend pas bien mais gstreamer est hautement réutilisable (même s'il n'est pas encore assez utilisé :-)).
      Mais ça c'est plus du domaine du modulaire que de l'objet.

      • [^]Re: hmm

        Posté par Miguel Moquillon (page perso, ) le 16/10/2004 à 16:27. (lien). Évalué à 3.

        Effectivement, tout ce que j'ai dit peut-être réalisé par les outils quotidiens des desktops (GNOME, KDE, XFCE, ...)
        Seulement voilà, tout ça sont des applications dans lesquels les objets (s'il y a) sont bien compartimentés et sans relation avec ceux des autres objets.
        Pour satisfaire la communcation inter-application (he oui, toutjours cette notion d'application), chaque desktop par exemple implémente un mécanisme. GNOME utilise CORBA, KDE DCOP. Pour intégrer des parties d'applications dans une autre, chacun implémente un mécanisme nécessaire : KPART pour KDE, toujours CORBA pour GNOME (si je ne m'abuse).

        Je n'ai rien contre cette approche, seulement je me suis dis : et si on remplaçait cette notion d'application par celle d'objets. Finalement, la seule application qui existerait serait la VM par exemple. Et pour une cohérence et une meilleure intégrité de l'ensemble, au lieu que cette VM soit juste une application comme toute les autres au-dessus d'un desktop ou window manager avec très peu (voir pas du tout) d'intéraction possible avec les autres applications, pourquoi cette VM ne tournerait pas au-dessus d'un noyau ou micro-noyau. Avec cette dernière solution, les couches systèmes (drivers, réseau, etc.) pourraient être codés aussi en objet ; ceci permettrait aux concepteurs de drivers, de couches systèmes de pouvoir remplacer les objets par d'autres, de pouvoir déboguer peut-être plus facilement (un voeux pieux ?)
        Parce que tout est objet, les mécanismes de communication inter-applications seraient remplacés par celle inter-objets. Parce que tout serait objet, les mécanismes d'intégration entre applications ou parties d'applications seraient toujours remplacés par la communication inter-objets (mais dans l'espace de l'objet conteneur).
        Un tel environnement pourrait finalement remplacer nos technos de conteneurs d'applications ou de services web (la mode en ce moment) : pas besoin d'ajouter toujours des couches supplémentaires, de trouver des technos pour pallier aux pbs de communication et de distribution, etc.

        Un rêve peut-être finalement qui ne verra jamais le jour.

        • [^]Re: hmm

          Posté par Ayrton () le 16/10/2004 à 18:06. (lien). Évalué à 1.

          >Seulement voilà, tout ça sont des applications dans lesquels les objets (s'il y a) sont bien compartimentés et sans relation avec ceux des autres objets.

          Que ça manque de standards est une chose (mais ça change). Que les applis soit "compartimentés" je ne suis pas d'accord.
          Dans un bureau Gnome, les applis partagent les mêmes librairies, la configuration est centrale. Si tu changes le proxy dans le paneau de configuration, epiphany est au courrant et utilise le nouveau proxy. Si tu changes le thème, toutes les applis en sont informées et applique le nouveau thème, si t'ajoute un codec à gstreamer tous les programmes qui utilise gstreamer peuvent utiliser ce nouveau codec, si tu étends gnome-vfs toutes les applications qui utilise gnome-vfs en profite, etc.

          J'ai l'impression que tu fais une fixation sur les termes. Appèle Gconf l'"objet configuration" si "ça passe mieux" pour toi. Appèles gnome-vfs "objet stream", gstreamer "objet multi-media" qui utilise l'"object stream". L'"objet multi-media" est un membre "objet codec" qui a les méthode play(), seek(), record(), un fichier .avi est une objet video_data, un fichier .avi dans nautilus est l'objet video qui regroupe l'objet video_data et multi-media.

          > Pour satisfaire la communcation inter-application

          Ça ne manque pas de moyen de communication qui sont _standardisés_ (pour gnome):
          - dbus (bus système, session ou application). Dédié circulation de donnée et limité à la machine (pas de réseau).
          - bonobo (plus lourd que dbus, ne transporte pas que des donnés. Peux aussi transporter des "objets")
          - corba/orbit. Plus bas niveau que bonobo. Permet de diffuser des "vrais" objets, de faire des requêtes sur les objets disponibles, de communiquer à distance.

          > he oui, toutjours cette notion d'application

          En quoi c'est un problème ?
          Il y a des donnés et les applications. Il est impossible d'ignorer la notion d'application même si ça peut être vaguement caché. Notes que tu n'y arrives pas toi même. Pour des raisons "pédagogique" il est bon d'avoir la notion d'application. Si quelqu'un me demande "c'est quoi qui affiche le DVD ?", je peux lui répondre "c'est Totem". S'il n'y a pas d'application, je dis quoi ? Que la vidéo n'est pas que la video mais aussi ce qui fait l'affichage qui est un truc qu'il n'est pas connu.
          Franchement aucun intérêt. Par contre l'aides à l'association de fichier (donné) à des applications (ce qui utilisent les donnés) est un plus indéniable.

          > chaque desktop par exemple implémente un mécanisme

          C'est un problème de standardisation. Tu peux aussi dire que Linux communique mal avec Windows. A qui la faute ?

          > et si on remplaçait cette notion d'application par celle d'objets. Finalement, la seule application qui existerait serait la VM par exemple. .... .... ....

          Tout ça c'est bien beau mais a 100 000 lieux des exigences _réelles_ d'un OS.
          Plus tu mets de choses dans l'OS, plus tu exiges des applications et de l'OS (coût en performance).
          Que doit faire tar si il tombe sur l'objet "video" ? copier tout l'objet avec le visualisateur et les préférences de l'utilisateur ? copier que les données en utilisant la méthode video::dump_stream() ? Si tar tombe sur l'objet flux_réseau, que doit faire tar ? utiliser flux_réseau::dump_stream() ?
          La fonction de tar est simple. Lire des fichiers (donnés) en se balladant sur les systèmes de fichiers et les stocker. Que les donnés soit une video ou une application, il s'en fout du moment que c'est un fichier.
          Certe, tar pourrait utiliser objet.is_file() . Mais tar se retrouve a tout fouiller alors qu'actuellement il ne fouille _que_ les systèmes de fichiers.

          Tu ne veux pas de sur-couches mais t'arrêtes pas d'emboiter les objets. C'est la même chose.
          De plus tu rends le noyau extrême fragile. Actue