Le but est de centraliser le code source en évitant quelques boucles
(ou plus généralement des tests) mal placées. Il est clair que je
n'utiliserai un truc tordu comme ça uniquement si les performances le
justifient. En revanche, je ne veux pas dupliquer le code source.
En regardant ce que VC8 générait, il m'a semblé constater que sur des
fonctions de cette forme (mais plus complexes):
void func(int* tab, int commutateur)
{
printf("%d\n", tab[0]);
if(commutateur)printf("%d\n", tab[1]);
/* etc. */
}
avec les bonnes options d'optimisation, il pouvait générer deux
fonctions, ou au moins deux blocs avec duplication de certaines parties
du code.
| On Tue, 19 Jun 2007 11:44:44 +0000, Marc Boyer wrote: | | > Mais, si c'est possible, je préfère pour ma part utiliser des | > moulinettes autres que cpp. | | Pensez-vous que ce puisse être intéressant d'écrire un pré-processeur | puissant pour le C ?
Je ne sais pas. Mais les inventeurs du C ont invente m4.
Je croyait (de memoire) que m4 avait ete developpe pour Fortran?
a+, ld.
Gabriel Dos Reis wrote:
Harpo <invalid@invalid.invalid> writes:
| On Tue, 19 Jun 2007 11:44:44 +0000, Marc Boyer wrote:
|
| > Mais, si c'est possible, je préfère pour ma part utiliser des
| > moulinettes autres que cpp.
|
| Pensez-vous que ce puisse être intéressant d'écrire un pré-processeur
| puissant pour le C ?
Je ne sais pas. Mais les inventeurs du C ont invente m4.
Je croyait (de memoire) que m4 avait ete developpe pour Fortran?
| On Tue, 19 Jun 2007 11:44:44 +0000, Marc Boyer wrote: | | > Mais, si c'est possible, je préfère pour ma part utiliser des | > moulinettes autres que cpp. | | Pensez-vous que ce puisse être intéressant d'écrire un pré-processeur | puissant pour le C ?
Je ne sais pas. Mais les inventeurs du C ont invente m4.
Je croyait (de memoire) que m4 avait ete developpe pour Fortran?
a+, ld.
Laurent Deniau
Harpo wrote:
On Tue, 19 Jun 2007 11:44:44 +0000, Marc Boyer wrote:
Mais, si c'est possible, je préfère pour ma part utiliser des moulinettes autres que cpp.
Pensez-vous que ce puisse être intéressant d'écrire un pré-processeur puissant pour le C ?
Ca depend de ce que tu veux faire. Pour tout ce qui est hors typage, cpp est deja puissant, mais souvent mal maitrise. Tu peux regarder Chaos (de Paul Mensonide le guru de cpp) sur sourceforge pour voir ce qu'on peut faire avec cpp, c'est edifiant. COS utilise aussi exclusivement cpp pour generer son code et cela contient pleins de boucles (MAP, MAP2, FOLDR, etc) sur les arguments des macros. Si tu veux qqchose d'avantage oriente pre-compilateur, il y a deja "eXtensible C" qui existe:
http://cs.nyu.edu/rgrimm/xtc/
Je ne l'ai jamais teste mais l'approche est interessante a mon avis.
Le probleme avec les preprocesseurs, c'est que le code devient rapidement tres difficile a lire et a comprendre. Mais ils offrent une flexibilite indispensable dans certains cas.
L'avantage avec les preprocesseurs, c'est que modifier les macros qui generent le code est plus rapide que de modifier le compilateur.
a+, ld.
Harpo wrote:
On Tue, 19 Jun 2007 11:44:44 +0000, Marc Boyer wrote:
Mais, si c'est possible, je préfère pour ma part utiliser des
moulinettes autres que cpp.
Pensez-vous que ce puisse être intéressant d'écrire un pré-processeur
puissant pour le C ?
Ca depend de ce que tu veux faire. Pour tout ce qui est hors typage, cpp
est deja puissant, mais souvent mal maitrise. Tu peux regarder Chaos (de
Paul Mensonide le guru de cpp) sur sourceforge pour voir ce qu'on peut
faire avec cpp, c'est edifiant. COS utilise aussi exclusivement cpp pour
generer son code et cela contient pleins de boucles (MAP, MAP2, FOLDR,
etc) sur les arguments des macros. Si tu veux qqchose d'avantage oriente
pre-compilateur, il y a deja "eXtensible C" qui existe:
http://cs.nyu.edu/rgrimm/xtc/
Je ne l'ai jamais teste mais l'approche est interessante a mon avis.
Le probleme avec les preprocesseurs, c'est que le code devient
rapidement tres difficile a lire et a comprendre. Mais ils offrent une
flexibilite indispensable dans certains cas.
L'avantage avec les preprocesseurs, c'est que modifier les macros qui
generent le code est plus rapide que de modifier le compilateur.
On Tue, 19 Jun 2007 11:44:44 +0000, Marc Boyer wrote:
Mais, si c'est possible, je préfère pour ma part utiliser des moulinettes autres que cpp.
Pensez-vous que ce puisse être intéressant d'écrire un pré-processeur puissant pour le C ?
Ca depend de ce que tu veux faire. Pour tout ce qui est hors typage, cpp est deja puissant, mais souvent mal maitrise. Tu peux regarder Chaos (de Paul Mensonide le guru de cpp) sur sourceforge pour voir ce qu'on peut faire avec cpp, c'est edifiant. COS utilise aussi exclusivement cpp pour generer son code et cela contient pleins de boucles (MAP, MAP2, FOLDR, etc) sur les arguments des macros. Si tu veux qqchose d'avantage oriente pre-compilateur, il y a deja "eXtensible C" qui existe:
http://cs.nyu.edu/rgrimm/xtc/
Je ne l'ai jamais teste mais l'approche est interessante a mon avis.
Le probleme avec les preprocesseurs, c'est que le code devient rapidement tres difficile a lire et a comprendre. Mais ils offrent une flexibilite indispensable dans certains cas.
L'avantage avec les preprocesseurs, c'est que modifier les macros qui generent le code est plus rapide que de modifier le compilateur.
a+, ld.
Thierry B.
--{ Harpo a plopé ceci: }--
Je ne sais pas. Mais les inventeurs du C ont invente m4.
Je croyait (de memoire) que m4 avait ete developpe pour Fortran?
D'où son nom, M FO(u)R,
Mmmmm, tu es sur de toi, là ? Parce que je crois qu'il y a eu un m1 ou m2 avant...
Il semble cependant que ce soient Kernigham et Ritchie qui aient développé M4 : http://wolfram.schneider.org/bsd/7thEdManVol2/m4/m4.pdf
Et on parle de "frontend pour ratfor". et on trouve aussi ça:
The M4 macro processor is an extension of a macro processor called M3 which was written by D. M. Ritchie for the AP-3 minicomputer; M3 was in turn based on a macro processor imple- mented for [1]. Readers unfamiliar with the basic
Donc non, le 4 de m4 n'a rien à voir avec le Fortran, tout comme les cinq lettres de Forth.
Par contre, pour les curieux des pré-processeurs, je vous conseille de lire l'histoire de ratfor, et eventuellement de l'essayer. C'est assez étonnant...
-- L'attaque d'Usenet par UTF-8 (film à 22h30)
--{ Harpo a plopé ceci: }--
Je ne sais pas. Mais les inventeurs du C ont invente m4.
Je croyait (de memoire) que m4 avait ete developpe pour Fortran?
D'où son nom, M FO(u)R,
Mmmmm, tu es sur de toi, là ? Parce que je crois qu'il y a eu
un m1 ou m2 avant...
Il semble cependant que ce soient Kernigham et Ritchie qui aient
développé M4 : http://wolfram.schneider.org/bsd/7thEdManVol2/m4/m4.pdf
Et on parle de "frontend pour ratfor". et on trouve aussi ça:
The M4 macro processor is an extension of a
macro processor called M3 which was written by
D. M. Ritchie for the AP-3 minicomputer; M3
was in turn based on a macro processor imple-
mented for [1]. Readers unfamiliar with the basic
Donc non, le 4 de m4 n'a rien à voir avec le Fortran,
tout comme les cinq lettres de Forth.
Par contre, pour les curieux des pré-processeurs, je vous conseille
de lire l'histoire de ratfor, et eventuellement de l'essayer.
C'est assez étonnant...
Je ne sais pas. Mais les inventeurs du C ont invente m4.
Je croyait (de memoire) que m4 avait ete developpe pour Fortran?
D'où son nom, M FO(u)R,
Mmmmm, tu es sur de toi, là ? Parce que je crois qu'il y a eu un m1 ou m2 avant...
Il semble cependant que ce soient Kernigham et Ritchie qui aient développé M4 : http://wolfram.schneider.org/bsd/7thEdManVol2/m4/m4.pdf
Et on parle de "frontend pour ratfor". et on trouve aussi ça:
The M4 macro processor is an extension of a macro processor called M3 which was written by D. M. Ritchie for the AP-3 minicomputer; M3 was in turn based on a macro processor imple- mented for [1]. Readers unfamiliar with the basic
Donc non, le 4 de m4 n'a rien à voir avec le Fortran, tout comme les cinq lettres de Forth.
Par contre, pour les curieux des pré-processeurs, je vous conseille de lire l'histoire de ratfor, et eventuellement de l'essayer. C'est assez étonnant...
-- L'attaque d'Usenet par UTF-8 (film à 22h30)
Laurent Deniau
Harpo wrote:
On Wed, 27 Jun 2007 11:40:16 +0200, Laurent Deniau wrote:
Harpo wrote:
Pensez-vous que ce puisse être intéressant d'écrire un pré-processeur puissant pour le C ? Ca depend de ce que tu veux faire.
Pour l'instant je n'en sais rien. Quand j'ai appris le C j'ai été déçu par le macro-processeur que j'ai trouvé en deça de celui que j'utilisais en assembleur IBM. MASM que proposait Pierre Maurette correspond à ses fonctionnalités de manière plus structurée, il faudrait voir ce que cela fait mélangé avec du C.
Pour tout ce qui est hors typage, cpp est deja puissant, mais souvent mal maitrise. Tu peux regarder Chaos (de Paul Mensonide le guru de cpp) sur sourceforge pour voir ce qu'on peut faire avec cpp, c'est edifiant. COS utilise aussi exclusivement cpp pour generer son code et cela contient pleins de boucles (MAP, MAP2, FOLDR, etc) sur les arguments des macros.
Je veux bien te croire, le problème est que je suis un programmeur 'normal', j'ai essayé de faire des boucles avec cpp, d'utiliser la récursion, ça marche bien, le problème c'est l'arrêt, je n'y suis jamais arrivé et les solutions que j'ai imaginées étaient pour la plupart trop tordues pour mériter d'être essayées. Il faudrait quelque chose utilisable par un programmeur 'normal', pas seulement par Laurent Deniau et quelques autres sur cette planète. Que ce que tu proposes et qui utilise cpp soit très bon est une chose, que cpp soit l'outil le meilleur pour faire ce genre de choses en est une autre.
Les macros de COS sont utilisables par un programmeur normal, du moins j'ose l'esperer puisque j'en suis un (et encore, je pratique de moins en moins). Le fait que defmethod soit un peu compliquee est une autre autre (je suis d'ailleurs entrain de la simplifier a meme heures perdues).
Dans COS, les macros ne sont pas reentrantes ce qui simplifie grandement leur programmation et leur utilisation (leur comprehension) mais limite beaucoup leurs utilisations conjointes qui doivent systematiquement etre organisees en "poupees-russes". Dans Chaos, par contre, la recursion est quasi illimite (limitee a 64 dans COS) et les algos peuvent etre utilises conjointement, notament pour construire d'autres algos de complexite superieure O(n) x O(n) -> O(n^2) ce qui n'est pas (ou tres rarement) possible avec les macros de COS. Par contre je suis d'accord qu'utiliser Chaos demande de bien comprendre cpp. Comme d'hab, ce qu'on ne comprend pas par ignorance est toujours complique, et quand on s'y interesse, ca se simplifie. Donc il n'y a pas de raison que tout ceux qui veulent s'y interesser n'y arrive pas. Reste que pour utiliser COS, il n'est nullement necessaire d'en comprendre les macros.
a+, ld.
Harpo wrote:
On Wed, 27 Jun 2007 11:40:16 +0200, Laurent Deniau wrote:
Harpo wrote:
Pensez-vous que ce puisse être intéressant d'écrire un pré-processeur
puissant pour le C ?
Ca depend de ce que tu veux faire.
Pour l'instant je n'en sais rien. Quand j'ai appris le C j'ai été déçu
par le macro-processeur que j'ai trouvé en deça de celui que j'utilisais
en assembleur IBM.
MASM que proposait Pierre Maurette correspond à ses fonctionnalités de
manière plus structurée, il faudrait voir ce que cela fait mélangé
avec du C.
Pour tout ce qui est hors typage, cpp
est deja puissant, mais souvent mal maitrise. Tu peux regarder Chaos (de
Paul Mensonide le guru de cpp) sur sourceforge pour voir ce qu'on peut
faire avec cpp, c'est edifiant. COS utilise aussi exclusivement cpp pour
generer son code et cela contient pleins de boucles (MAP, MAP2, FOLDR,
etc) sur les arguments des macros.
Je veux bien te croire, le problème est que je suis un programmeur
'normal', j'ai essayé de faire des boucles avec cpp, d'utiliser la
récursion, ça marche bien, le problème c'est l'arrêt, je n'y suis
jamais arrivé et les solutions que j'ai imaginées étaient pour la
plupart trop tordues pour mériter d'être essayées.
Il faudrait quelque chose utilisable par un programmeur 'normal', pas
seulement par Laurent Deniau et quelques autres sur cette planète. Que ce
que tu proposes et qui utilise cpp soit très bon est une chose, que cpp
soit l'outil le meilleur pour faire ce genre de choses en est une autre.
Les macros de COS sont utilisables par un programmeur normal, du moins
j'ose l'esperer puisque j'en suis un (et encore, je pratique de moins en
moins). Le fait que defmethod soit un peu compliquee est une autre autre
(je suis d'ailleurs entrain de la simplifier a meme heures perdues).
Dans COS, les macros ne sont pas reentrantes ce qui simplifie grandement
leur programmation et leur utilisation (leur comprehension) mais limite
beaucoup leurs utilisations conjointes qui doivent systematiquement etre
organisees en "poupees-russes". Dans Chaos, par contre, la recursion est
quasi illimite (limitee a 64 dans COS) et les algos peuvent etre
utilises conjointement, notament pour construire d'autres algos de
complexite superieure O(n) x O(n) -> O(n^2) ce qui n'est pas (ou tres
rarement) possible avec les macros de COS. Par contre je suis d'accord
qu'utiliser Chaos demande de bien comprendre cpp. Comme d'hab, ce qu'on
ne comprend pas par ignorance est toujours complique, et quand on s'y
interesse, ca se simplifie. Donc il n'y a pas de raison que tout ceux
qui veulent s'y interesser n'y arrive pas. Reste que pour utiliser COS,
il n'est nullement necessaire d'en comprendre les macros.
On Wed, 27 Jun 2007 11:40:16 +0200, Laurent Deniau wrote:
Harpo wrote:
Pensez-vous que ce puisse être intéressant d'écrire un pré-processeur puissant pour le C ? Ca depend de ce que tu veux faire.
Pour l'instant je n'en sais rien. Quand j'ai appris le C j'ai été déçu par le macro-processeur que j'ai trouvé en deça de celui que j'utilisais en assembleur IBM. MASM que proposait Pierre Maurette correspond à ses fonctionnalités de manière plus structurée, il faudrait voir ce que cela fait mélangé avec du C.
Pour tout ce qui est hors typage, cpp est deja puissant, mais souvent mal maitrise. Tu peux regarder Chaos (de Paul Mensonide le guru de cpp) sur sourceforge pour voir ce qu'on peut faire avec cpp, c'est edifiant. COS utilise aussi exclusivement cpp pour generer son code et cela contient pleins de boucles (MAP, MAP2, FOLDR, etc) sur les arguments des macros.
Je veux bien te croire, le problème est que je suis un programmeur 'normal', j'ai essayé de faire des boucles avec cpp, d'utiliser la récursion, ça marche bien, le problème c'est l'arrêt, je n'y suis jamais arrivé et les solutions que j'ai imaginées étaient pour la plupart trop tordues pour mériter d'être essayées. Il faudrait quelque chose utilisable par un programmeur 'normal', pas seulement par Laurent Deniau et quelques autres sur cette planète. Que ce que tu proposes et qui utilise cpp soit très bon est une chose, que cpp soit l'outil le meilleur pour faire ce genre de choses en est une autre.
Les macros de COS sont utilisables par un programmeur normal, du moins j'ose l'esperer puisque j'en suis un (et encore, je pratique de moins en moins). Le fait que defmethod soit un peu compliquee est une autre autre (je suis d'ailleurs entrain de la simplifier a meme heures perdues).
Dans COS, les macros ne sont pas reentrantes ce qui simplifie grandement leur programmation et leur utilisation (leur comprehension) mais limite beaucoup leurs utilisations conjointes qui doivent systematiquement etre organisees en "poupees-russes". Dans Chaos, par contre, la recursion est quasi illimite (limitee a 64 dans COS) et les algos peuvent etre utilises conjointement, notament pour construire d'autres algos de complexite superieure O(n) x O(n) -> O(n^2) ce qui n'est pas (ou tres rarement) possible avec les macros de COS. Par contre je suis d'accord qu'utiliser Chaos demande de bien comprendre cpp. Comme d'hab, ce qu'on ne comprend pas par ignorance est toujours complique, et quand on s'y interesse, ca se simplifie. Donc il n'y a pas de raison que tout ceux qui veulent s'y interesser n'y arrive pas. Reste que pour utiliser COS, il n'est nullement necessaire d'en comprendre les macros.
a+, ld.
Antoine Leca
En news:f5tao9$gf4$, Laurent Deniau va escriure:
Gabriel Dos Reis wrote:
Je ne sais pas. Mais les inventeurs du C ont invente m4.
Je croyait (de memoire) que m4 avait ete developpe pour Fortran?
Ce n'est pas incompatible. Ken Thomson et Dennis Ritchie pratiquaient aussi Fortran (et à l'époque, cela n'était pas franchement un exploit ; en fait, cela devait même être plutôt obligatoire pour eux, à en juger par les efforts de K. Thomson pour f77).
Accessoirement, ils touchaient aussi leurs billes en assembleur :-) ; à la différence (selon la préface du K&R) de Brian Kernighan.
Qui lui connaissait bien Pascal (et ne l'aimait pas.)
Bref, il n'y a pas qu'un seul langage de programmation dans la vie.
Antoine
PS: il y a bien des gens qui programment (aussi) en C++ :-D
En news:f5tao9$gf4$1@cernne03.cern.ch,
Laurent Deniau va escriure:
Gabriel Dos Reis wrote:
Je ne sais pas. Mais les inventeurs du C ont invente m4.
Je croyait (de memoire) que m4 avait ete developpe pour Fortran?
Ce n'est pas incompatible. Ken Thomson et Dennis Ritchie pratiquaient aussi
Fortran (et à l'époque, cela n'était pas franchement un exploit ; en fait,
cela devait même être plutôt obligatoire pour eux, à en juger par les
efforts de K. Thomson pour f77).
Accessoirement, ils touchaient aussi leurs billes en assembleur :-) ; à la
différence (selon la préface du K&R) de Brian Kernighan.
Qui lui connaissait bien Pascal (et ne l'aimait pas.)
Bref, il n'y a pas qu'un seul langage de programmation dans la vie.
Antoine
PS: il y a bien des gens qui programment (aussi) en C++ :-D
Je ne sais pas. Mais les inventeurs du C ont invente m4.
Je croyait (de memoire) que m4 avait ete developpe pour Fortran?
Ce n'est pas incompatible. Ken Thomson et Dennis Ritchie pratiquaient aussi Fortran (et à l'époque, cela n'était pas franchement un exploit ; en fait, cela devait même être plutôt obligatoire pour eux, à en juger par les efforts de K. Thomson pour f77).
Accessoirement, ils touchaient aussi leurs billes en assembleur :-) ; à la différence (selon la préface du K&R) de Brian Kernighan.
Qui lui connaissait bien Pascal (et ne l'aimait pas.)
Bref, il n'y a pas qu'un seul langage de programmation dans la vie.
Antoine
PS: il y a bien des gens qui programment (aussi) en C++ :-D
Stéphane Goujet
Le Thu, 28 Jun 2007 12:35:00 +0200 "Antoine Leca" a écrit:
PS: il y a bien des gens qui programment (aussi) en C++ :-D
D'accord tant que vous n'écrivez pas "il y a des gens biens qui programment (aussi) en C++". :->
-- Stéphane Goujet.
Le Thu, 28 Jun 2007 12:35:00 +0200
"Antoine Leca" <root@localhost.invalid> a écrit:
PS: il y a bien des gens qui programment (aussi) en C++ :-D
D'accord tant que vous n'écrivez pas "il y a des gens biens qui
programment (aussi) en C++". :->