- SmallTalk est relativement lent
- il necessite une VM car SmallTalk n'est pas fait pour le système et ne possède en particulier pas de mécanisme de protections.
- Smalltalk et compagnie sont des langages à Classe, et l'objet à prototypes c'est mieux, ne serait-ce que parce que l'on clone des objets et l'on n'instancie pas de classes, de plus (et surtout !) ces objets peuvent changer de parents à l'exécution.
Le système dont tu rêves s'appelle IsaacOS, il a été développé au laboratoire Design du Loria (INRIA, (institut national de l'info et de l'automatique pour ceux qui ne verraient pas), Loraine).
Il a été développé depuis 1999 par Benoit Sonntag sous la férule (entre autre) de Dominique Colnet qui n'est autre que l'auteur de GNU/Eiffel.
Cet OS est entièrement contruit sur l'objet à prototype, il est autonome et n'est basé sur aucune VM, ni kit hardware comme Flux.
Cet OS est entièrement basé sur des objets connectés entre eux de manière dynamique : un objet fichier peut changer de parents en fonction du type de fichier. Si c'est du HTML, il choisira HTMLObject comme parent, de même pour du mpeg ou quoi que ce soit d'autre.
Le concept d'application n'existe plus dans cet OS : Une application n'est qu'un rassemblement d'objets à un instant donné.
Bien évidemment, un fichier est un objet, comme un entier, comme un périphérique quelconque.
Avec l'héritage dynamique tout le système est entièrement constitué d'objets physiquement autonome en mémoire, modifiant leur héritage en fonction des besoins : L'objet File a pour parent l'objet Inode qui changera de parent entre ControleurDisquette ou ControleurMémoireUSB en fonction de l'affectation du fichier..
Un langage et son compilateur ont spécialement été écrit pour concevoir cet OS : Lisaac.
Lisaac est le premier langage objet à prototype compilé, il est fortement inspiré de Self et de Eiffel. A la différence de l'objet à classe, un objet à prototype est vivant dès le départ et se clone. Chaque objet peut changer de parent en pleine exécution, n'importe quand.
Par exemple, dans la section INHERIT on peut définir soit un parent statique
section INHERIT
+ parent : BITMAP
soit la possibilité de choisir son parent en fonction des besoins :
soit l'objet MPEG_VIDEO_DECODE_VIDEO_OUT et sa :
section INHERIT
+ set_parent sortietv_ou_vga : BOOLEAN : OBJECT <-
(
+ result : OBJECT; // result est l'objet qui rendra le parent
(sortietv_ou_vga).if { result := VIDEOTV;} else
{ result := VIDEOVGA;};
result // renvoi l'objet devenant le parent de l'objet courant
);
section PRIVATE
.... // on pourra appeler ici set_parent...
section PUBLIC
.... // ou là
dans notre exemple : VIDEOTV et VIDEOVGA possèdent les mêmes méthodes (init_mode_video, line_hard, line_bitmap_hard, putpixel).
A l'heure actuel VIDEOVGA se nomme VIDEO est reste basé sur le standard VESA.
Par changement de parents, un appel vers une de ces méthodes implique automatiquement que l'output de la vidéo sort vers la sortie télé ou la sortie vga en fonction de quel parent est, à l'instant t, choisi.
--------
Autres facultés du compilateur
- Lisaac est autant bas niveau, moyen que haut niveau, il a aussi bien été conçu pour faciliter l'écriture de drivers comme l'écriture de joyeuseuté plus complexe comme le compilateur Lisaac dorénavent écrit en Lisaac.
- Lisaac génère du C AINSI, donc portable.
========
- Lisaac, à la différence de la plupart des langages orienté objet actuel ne gère pas sa généalogie avec des VFT (Virtual Function Table) : une VFT est une table de pointeurs sur fonctions (c++, java, c# compile du code avec VFTs), ainsi le processeur n'optimise pas ce code non statique dont il ne peut connaitre le contenu.
Le compilateur lisaac intègre un algorithme totalement novateur d'analyse du code vivant afin de déterminer les schémas possibles d'héritages en fonction du code source, il génère ainsi du code statique pour chaque possibilités et les réduit en cas de besoins (84 % des cas).
Le code en est ainsi très performant.
Le compilateur lisaac inline le code quasiment au maximum permettant d'atteindre des performances dignes d'un programmes similaire en C (test sur un tri quicksort à égalité avec gcc (82 secondes, 17mn en JAVA, ;o)))).
==========
- Lisaac est un compilateur minimaliste : le compilateur ne connait que 7 primitives de base. Par exemple la conditionnelle n'est pas implémentée dans le compilateur lisaac, elle est défini dans les objets Boolean, True, False :
true.li
if true_block else false_block <-
(
true_block;
);
false.li
if true_block else false_block <-
(
false_block;
);
Grace à un pattern matching, on retombe sur la conditionnel classique du C.
- Lisaac a été écrite par un ancien DemoMaker (Ben ;o) qui s'est amusé en son temps aux fameux concours 4k voire 32 octets ;o)
Spécialiste de l'otpimisation du code en assembleur et langages plus haut niveau. Nombreuses de ses astuces ont été intégré au compilateur.
- Lisaac est donc intrinsèquement un compilateur fait pour l'open source ;o)) car il nécessite de recenser tout le code vivant afin de compiler.
- Lisaac possède des bibliothèques performantes et haut niveau, comme l'objet chaîne avec beaucoup d'opérations assez haut niveau, des tables de hashages, dictionnaires, listes_chainées, ensemble, etc...
Je pense que le Logiciel Libre a (aura) beaucoup à gagner avec ce langage.
C'est l'avenir.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
# Le système dont tu rêves existe...
Posté par Ontologia (site web personnel) . En réponse au journal j'ai un rêve .... Évalué à 3.
- SmallTalk est relativement lent
- il necessite une VM car SmallTalk n'est pas fait pour le système et ne possède en particulier pas de mécanisme de protections.
- Smalltalk et compagnie sont des langages à Classe, et l'objet à prototypes c'est mieux, ne serait-ce que parce que l'on clone des objets et l'on n'instancie pas de classes, de plus (et surtout !) ces objets peuvent changer de parents à l'exécution.
Le système dont tu rêves s'appelle IsaacOS, il a été développé au laboratoire Design du Loria (INRIA, (institut national de l'info et de l'automatique pour ceux qui ne verraient pas), Loraine).
Il a été développé depuis 1999 par Benoit Sonntag sous la férule (entre autre) de Dominique Colnet qui n'est autre que l'auteur de GNU/Eiffel.
Cet OS est entièrement contruit sur l'objet à prototype, il est autonome et n'est basé sur aucune VM, ni kit hardware comme Flux.
Cet OS est entièrement basé sur des objets connectés entre eux de manière dynamique : un objet fichier peut changer de parents en fonction du type de fichier. Si c'est du HTML, il choisira HTMLObject comme parent, de même pour du mpeg ou quoi que ce soit d'autre.
Le concept d'application n'existe plus dans cet OS : Une application n'est qu'un rassemblement d'objets à un instant donné.
Bien évidemment, un fichier est un objet, comme un entier, comme un périphérique quelconque.
Avec l'héritage dynamique tout le système est entièrement constitué d'objets physiquement autonome en mémoire, modifiant leur héritage en fonction des besoins : L'objet File a pour parent l'objet Inode qui changera de parent entre ControleurDisquette ou ControleurMémoireUSB en fonction de l'affectation du fichier..
Un langage et son compilateur ont spécialement été écrit pour concevoir cet OS : Lisaac.
Lisaac est le premier langage objet à prototype compilé, il est fortement inspiré de Self et de Eiffel. A la différence de l'objet à classe, un objet à prototype est vivant dès le départ et se clone. Chaque objet peut changer de parent en pleine exécution, n'importe quand.
Par exemple, dans la section INHERIT on peut définir soit un parent statique
section INHERIT
+ parent : BITMAP
soit la possibilité de choisir son parent en fonction des besoins :
soit l'objet MPEG_VIDEO_DECODE_VIDEO_OUT et sa :
section INHERIT
+ set_parent sortietv_ou_vga : BOOLEAN : OBJECT <-
(
+ result : OBJECT; // result est l'objet qui rendra le parent
(sortietv_ou_vga).if { result := VIDEOTV;} else
{ result := VIDEOVGA;};
result // renvoi l'objet devenant le parent de l'objet courant
);
section PRIVATE
.... // on pourra appeler ici set_parent...
section PUBLIC
.... // ou là
dans notre exemple : VIDEOTV et VIDEOVGA possèdent les mêmes méthodes (init_mode_video, line_hard, line_bitmap_hard, putpixel).
A l'heure actuel VIDEOVGA se nomme VIDEO est reste basé sur le standard VESA.
Par changement de parents, un appel vers une de ces méthodes implique automatiquement que l'output de la vidéo sort vers la sortie télé ou la sortie vga en fonction de quel parent est, à l'instant t, choisi.
--------
Autres facultés du compilateur
- Lisaac est autant bas niveau, moyen que haut niveau, il a aussi bien été conçu pour faciliter l'écriture de drivers comme l'écriture de joyeuseuté plus complexe comme le compilateur Lisaac dorénavent écrit en Lisaac.
- Lisaac génère du C AINSI, donc portable.
========
- Lisaac, à la différence de la plupart des langages orienté objet actuel ne gère pas sa généalogie avec des VFT (Virtual Function Table) : une VFT est une table de pointeurs sur fonctions (c++, java, c# compile du code avec VFTs), ainsi le processeur n'optimise pas ce code non statique dont il ne peut connaitre le contenu.
Le compilateur lisaac intègre un algorithme totalement novateur d'analyse du code vivant afin de déterminer les schémas possibles d'héritages en fonction du code source, il génère ainsi du code statique pour chaque possibilités et les réduit en cas de besoins (84 % des cas).
Le code en est ainsi très performant.
Le compilateur lisaac inline le code quasiment au maximum permettant d'atteindre des performances dignes d'un programmes similaire en C (test sur un tri quicksort à égalité avec gcc (82 secondes, 17mn en JAVA, ;o)))).
==========
- Lisaac est un compilateur minimaliste : le compilateur ne connait que 7 primitives de base. Par exemple la conditionnelle n'est pas implémentée dans le compilateur lisaac, elle est défini dans les objets Boolean, True, False :
true.li
if true_block else false_block <-
(
true_block;
);
false.li
if true_block else false_block <-
(
false_block;
);
Grace à un pattern matching, on retombe sur la conditionnel classique du C.
- Lisaac a été écrite par un ancien DemoMaker (Ben ;o) qui s'est amusé en son temps aux fameux concours 4k voire 32 octets ;o)
Spécialiste de l'otpimisation du code en assembleur et langages plus haut niveau. Nombreuses de ses astuces ont été intégré au compilateur.
- Lisaac est donc intrinsèquement un compilateur fait pour l'open source ;o)) car il nécessite de recenser tout le code vivant afin de compiler.
- Lisaac possède des bibliothèques performantes et haut niveau, comme l'objet chaîne avec beaucoup d'opérations assez haut niveau, des tables de hashages, dictionnaires, listes_chainées, ensemble, etc...
Je pense que le Logiciel Libre a (aura) beaucoup à gagner avec ce langage.
C'est l'avenir.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker