théorie des langages

théorie des langages - Algo - Programmation

Marsh Posté le 15-02-2003 à 14:13:51    

:hello:  
 
connaitriez vous un site ou un e-book expliquant la théorie des langages ?  :jap:


---------------
Bougredane et bougre d'andouille ne font qu'un !
Reply

Marsh Posté le 15-02-2003 à 14:13:51   

Reply

Marsh Posté le 15-02-2003 à 14:25:10    

keskecé ?

Reply

Marsh Posté le 15-02-2003 à 14:29:47    

automates, grammaires & compilation, en gros.
je connais pas de doc bien faite... y'avait un livre sur la compilation sur oopweb mais je l'ai pas trouvé terrible.
 
[:blueflag]

Reply

Marsh Posté le 15-02-2003 à 14:30:54    

Ah ok. trop compliqué pour moi, mais par curiosité, drapal.

Reply

Marsh Posté le 15-02-2003 à 14:31:12    

moi je crois qu'il s'agit plutot des differents paradigmes

Reply

Marsh Posté le 15-02-2003 à 14:36:32    

lorill a écrit :

automates, grammaires & compilation, en gros.
je connais pas de doc bien faite... y'avait un livre sur la compilation sur oopweb mais je l'ai pas trouvé terrible.
 
[:blueflag]


merci pour ton lien :jap:
 
le langage de ta signature, je suppose que tu en es l'auteur ! sur quelle doc t'es tu appuyée ? as tu une formation d'ingénieur ?


---------------
Bougredane et bougre d'andouille ne font qu'un !
Reply

Marsh Posté le 15-02-2003 à 14:40:16    

vic le viking a écrit :


le langage de ta signature, je suppose que tu en es l'auteur ! sur quelle doc t'es tu appuyée ?  


pas de doc précise, on va dire que j'ai pas mal regardé le fonctionnement d'autres langages comme python, ruby, ferite..., et que ca fait un bout de temps que je lis des articles & news dans ce domaine. Apres le reste c'est un peu de reflexion et pas mal de bon sens.
 
Mais cela dit, si quelqu'un a une bonne doc, je voudrais bien la lire, parce que je suis persuadé que mon implémentation a plein d'eccueils facilement evitables.
 

vic le viking a écrit :


as tu une formation d'ingénieur ?


pas tout a fait. DUT + licence, mais on n'a pas vraiment appris ca en cours. Juste les automates, dans une certaine mesure, mais je m'en suis même pas servi  [:sinclaire]

Reply

Marsh Posté le 15-02-2003 à 14:45:52    

lorill a écrit :


pas de doc précise, on va dire que j'ai pas mal regardé le fonctionnement d'autres langages comme python, ruby, ferite..., et que ca fait un bout de temps que je lis des articles & news dans ce domaine. Apres le reste c'est un peu de reflexion et pas mal de bon sens.  


tes articles & news, tu les lis ou généralement ?


---------------
Bougredane et bougre d'andouille ne font qu'un !
Reply

Marsh Posté le 15-02-2003 à 14:50:36    

vic le viking a écrit :


tes articles & news, tu les lis ou généralement ?


lambda.weblogs.com, et le reste un peu au hasard

Reply

Marsh Posté le 15-02-2003 à 15:16:50    

[:blueflag]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-02-2003 à 15:16:50   

Reply

Marsh Posté le 17-02-2003 à 20:59:15    

:bounce:


---------------
Bougredane et bougre d'andouille ne font qu'un !
Reply

Marsh Posté le 19-02-2003 à 13:11:16    

lorill a écrit :


pas de doc précise, on va dire que j'ai pas mal regardé le fonctionnement d'autres langages comme python, ruby, ferite..., et que ca fait un bout de temps que je lis des articles & news dans ce domaine. Apres le reste c'est un peu de reflexion et pas mal de bon sens.
 
Mais cela dit, si quelqu'un a une bonne doc, je voudrais bien la lire, parce que je suis persuadé que mon implémentation a plein d'eccueils facilement evitables.
 
 
pas tout a fait. DUT + licence, mais on n'a pas vraiment appris ca en cours. Juste les automates, dans une certaine mesure, mais je m'en suis même pas servi  [:sinclaire]  


 
J'ai regardé un peu.
Si tu utilises du prototypage, pompe sur Self (le langage de Sun).
 
J'ai l'impression que tu gardes des strings comme clef durant l'exécution, utilises plutôt le système des littéraux (une big table associative du système numéro=>chaîne et ne stocker que des entiers traffiqués dans les instances) de Smalltalk, c'est plus compact et efficace.  
Bien entendu, le GC conservatif est à gicler ; mais bon, je suppose que c'est prévu mais que face à l'ampleur de la tache, tu gardes celui-ci temporairement.
 
J'ai vu dans l'archive de la ML que tu voulais faire un système de copie profonde => utilises le système de marquage (enfin les bits) du GC pour la détection des cycles, si c'est possible (avec un marquage tricolore, c'est pas possible).
 
essaye de "déboxer" tes types primitifs unitaires (int, real) en utilisant un système de bits (comme O'caml et smalltalk par ex.).
 
j'ai une petite question, à quoi sert la fonction (enfin le pointeur) initAttributes dans http://www.lucane.org/cgi-bin/view [...] cvs-markup ?
 
En tout cas, je trouve ça marrant de concevoir un petit langage comme ça, surtout avec un paradigme super-rare.

Reply

Marsh Posté le 23-02-2003 à 10:35:23    

nraynaud a écrit :


Bien entendu, le GC conservatif est à gicler ; mais bon, je suppose que c'est prévu mais que face à l'ampleur de la tache, tu gardes celui-ci temporairement.
J'ai vu dans l'archive de la ML que tu voulais faire un système de copie profonde => utilises le système de marquage (enfin les bits) du GC pour la détection des cycles, si c'est possible (avec un marquage tricolore, c'est pas possible).


Le probleme, c'est que les deux points vont ensemble. Tant que j'ai un GC que je ne maitrise pas, je peux difficilement me baser dessus. C'est quoi l'inconvénient du conservatif au fait ?
 

nraynaud a écrit :


essaye de "déboxer" tes types primitifs unitaires (int, real) en utilisant un système de bits (comme O'caml et smalltalk par ex.).


Tu peux préciser ? je vois pas de quoi tu parles.
 
 

nraynaud a écrit :


j'ai une petite question, à quoi sert la fonction (enfin le pointeur) initAttributes dans http://www.lucane.org/cgi-bin/view [...] cvs-markup ?


C'est du au fait que j'utilise mes types directement dans Object. Par exemple, un object a la méthode clone. Donc si je mets cette méthode dans object, j'instancie un objet Method, un StringTable, et pas mal de String. L'objet Method a une méthode clone, donc on recommence, et ca s'arrete jamais. L'idée c'est donc d'instancier les attributs le plus tard possible, c'est a dire au moment ou on accède a la table des attributs.
 
 

nraynaud a écrit :


En tout cas, je trouve ça marrant de concevoir un petit langage comme ça, surtout avec un paradigme super-rare.


 
 :jap: et merci d'avoir passé du temps a regarder mon projet, ca fait toujours plaisir !

Reply

Marsh Posté le 23-02-2003 à 19:08:05    

lorill a écrit :


1) Le probleme, c'est que les deux points vont ensemble. Tant que j'ai un GC que je ne maitrise pas, je peux difficilement me baser dessus. C'est quoi l'inconvénient du conservatif au fait ?
 
 
2) Tu peux préciser ? je vois pas de quoi tu parles.
 
 
 
3) C'est du au fait que j'utilise mes types directement dans Object. Par exemple, un object a la méthode clone. Donc si je mets cette méthode dans object, j'instancie un objet Method, un StringTable, et pas mal de String. L'objet Method a une méthode clone, donc on recommence, et ca s'arrete jamais. L'idée c'est donc d'instancier les attributs le plus tard possible, c'est a dire au moment ou on accède a la table des attributs.
 
 
 
 
4) :jap: et merci d'avoir passé du temps a regarder mon projet, ca fait toujours plaisir !


Je pense qu'il faudrait soit ouvrir un thread soit passer par mail mais on est loin de la théorie là, on est dans le camboui.
 
J'ai numéroté tes paragraphes pour suivre.
 
 
1) Le conservatisme c'est le fait de ne pas déplacer un objet en mémoire, Il est dû dans ton cas au fait qu'en C rien ne ressemble plus à un pointeur qu'en mot de 32 bits. Comme tu ne peux pas déplacer tes objets, ta mémoire se fragmente, ton allocateur est plus complexe (genre un "first-fit" ), et tu consomes une tonne de mémoire.
 
2) boxer un type primitif, c'est lui mettre une "coquille" pour l'adapter au langage, ça vaut dire qu'au moment d'être utilisé par le proc, il faudra le "déboxer" (le sortir de sa coquille). Comme c'est sur des types primitifs, tu passes ta vie à boxer et à déboxer mais tu fais pas grand'chose d'utile dans ton programme. C'est pourquoi, il existe des techniques (bidouilles) pour éviter le boxing. Regarde O'Caml, il y a des entier 32 bits lents et des entiers 31 bits rapides, c'est toute la différence.
petite démo :
http://www.lucane.org/cgi-bin/view [...] cvs-markup

Code :
  1. LuInteger * LuInteger_abs(LuInteger * self)
  2. {
  3.   mpz_t absValue;
  4.   mpz_init(absValue);
  5.   mpz_abs(self->value, absValue);
  6.   return LuInteger_create(mpz_get_str(0, 0, absValue));
  7. }


Et le moins qu'on puisse dire c'est que LuInteger_create est coûteuse derrière. C'est la phase de Boxing.
 
3) J'ai pas tout compris mais ça a une tête de lazy. Quel est l'intérêt de copier l'attribut ?

Reply

Marsh Posté le 25-02-2003 à 15:44:37    

nraynaud a écrit :


Je pense qu'il faudrait soit ouvrir un thread soit passer par mail mais on est loin de la théorie là, on est dans le camboui.


ouais... je te file mon adresse par MP

Reply

Marsh Posté le 25-02-2003 à 16:09:22    

vic le viking a écrit :

:hello:  
 
connaitriez vous un site ou un e-book expliquant la théorie des langages ?  :jap:  


 
Y'a un e-book ici (http://inger.sourceforge.net/)sur la creation d'un compilo. G pas lu donc je peux pas dire de quoi ca retourne, si c bien ou non (g fais le mien en me basant sur les cours de la fac)
 

Reply

Marsh Posté le 28-02-2003 à 13:40:47    

sympa ton book chrisbk :jap:
 
lorill: tu peux m'expliquer brievemant l'algo que tu utilises pour creer ton langage ?


---------------
Bougredane et bougre d'andouille ne font qu'un !
Reply

Marsh Posté le 28-02-2003 à 13:48:29    

vic le viking a écrit :


lorill: tu peux m'expliquer brievemant l'algo que tu utilises pour creer ton langage ?


euuuh... déja c'est pas compilé, donc c'est beaucoup plus simple. ensuite c'est une implémentation extrèmement naive...
 
Bon, déja j'ai différents objets représentant le langage (bloc, chaine, tableau, instruction, methode, ...). Je lis le fichier source, et j'instancie mes objets en fonction de ce que je lis. C'est a peu près tout ce qu'il y a a dire.
 
L'interprétation se fait la :  
http://www.lucane.org/cgi-bin/view [...] cvs-markup
 

Reply

Marsh Posté le 28-02-2003 à 16:13:50    

c'te question, ca me rappelle mes cours de maitrise info...
 
par contre, il me reste rien sur "theorie de la compilation"...
 
il me reste peut etre des cours de lambda calcul (pour faire des langages fonctionnels comme Scheme, Lisp, Caml, ...)
 
si ca interresse kelkun je peux tenter des scans...
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed