J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qu i
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qu i
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qu i
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
On 5 sep, 12:23, zwim wrote:J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
"utiliser du code C écrit par l'utilisateur"
En principe, las réponse est sans appel. C'est non. Un 'utilisateur'
ne connait pas le C !
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
Ca veut dire que l'utilisateur doit maitriser le C et qu'il a un
compilateur / linker sur sa machine pour produire une application à
partir de la formule... Il va falloir gérer les erreurs de syntaxe de
l'utilisateur... De plus, il va falloir écrire un mécanisme assez
compliqué pour passer les paramètres à l'application externe et
récupérer les résultats...
Un parseur d'expression mathématique n'est pas si complexe que ça.
L'usage d'outils comme Lex et Yacc (ou Flex et Bison en version GNU),
peut aider...
Je ne sais pas si ça vaut le coup...
On 5 sep, 12:23, zwim <zwim@f_ree.fr> wrote:
J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
"utiliser du code C écrit par l'utilisateur"
En principe, las réponse est sans appel. C'est non. Un 'utilisateur'
ne connait pas le C !
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
Ca veut dire que l'utilisateur doit maitriser le C et qu'il a un
compilateur / linker sur sa machine pour produire une application à
partir de la formule... Il va falloir gérer les erreurs de syntaxe de
l'utilisateur... De plus, il va falloir écrire un mécanisme assez
compliqué pour passer les paramètres à l'application externe et
récupérer les résultats...
Un parseur d'expression mathématique n'est pas si complexe que ça.
L'usage d'outils comme Lex et Yacc (ou Flex et Bison en version GNU),
peut aider...
Je ne sais pas si ça vaut le coup...
On 5 sep, 12:23, zwim wrote:J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
"utiliser du code C écrit par l'utilisateur"
En principe, las réponse est sans appel. C'est non. Un 'utilisateur'
ne connait pas le C !
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
Ca veut dire que l'utilisateur doit maitriser le C et qu'il a un
compilateur / linker sur sa machine pour produire une application à
partir de la formule... Il va falloir gérer les erreurs de syntaxe de
l'utilisateur... De plus, il va falloir écrire un mécanisme assez
compliqué pour passer les paramètres à l'application externe et
récupérer les résultats...
Un parseur d'expression mathématique n'est pas si complexe que ça.
L'usage d'outils comme Lex et Yacc (ou Flex et Bison en version GNU),
peut aider...
Je ne sais pas si ça vaut le coup...
Bonjour,
J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
Bonjour,
J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
Bonjour,
J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
Bonjour,
J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Votre opinion/retour d'expérience sur ce sujet ?
Est-ce que tcc est la bonne méthode, en connaissez vous d'autres ?
Quid de lib dynamique -vs- code relocatable en mémoire (i.e. tcc -o
-shared versus libtcc api) ?
Bonjour,
J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Votre opinion/retour d'expérience sur ce sujet ?
Est-ce que tcc est la bonne méthode, en connaissez vous d'autres ?
Quid de lib dynamique -vs- code relocatable en mémoire (i.e. tcc -o
-shared versus libtcc api) ?
Bonjour,
J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Votre opinion/retour d'expérience sur ce sujet ?
Est-ce que tcc est la bonne méthode, en connaissez vous d'autres ?
Quid de lib dynamique -vs- code relocatable en mémoire (i.e. tcc -o
-shared versus libtcc api) ?
Bonjour,
J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Votre opinion/retour d'expérience sur ce sujet ?
Est-ce que tcc est la bonne méthode, en connaissez vous d'autres ?
Quid de lib dynamique -vs- code relocatable en mémoire (i.e. tcc -o
-shared versus libtcc api) ?
Bonjour,
J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Votre opinion/retour d'expérience sur ce sujet ?
Est-ce que tcc est la bonne méthode, en connaissez vous d'autres ?
Quid de lib dynamique -vs- code relocatable en mémoire (i.e. tcc -o
-shared versus libtcc api) ?
Bonjour,
J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Votre opinion/retour d'expérience sur ce sujet ?
Est-ce que tcc est la bonne méthode, en connaissez vous d'autres ?
Quid de lib dynamique -vs- code relocatable en mémoire (i.e. tcc -o
-shared versus libtcc api) ?
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
On 05/09/2009 12:23, zwim wrote:Bonjour,
J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Votre opinion/retour d'expérience sur ce sujet ?
Est-ce que tcc est la bonne méthode, en connaissez vous d'autres ?
Quid de lib dynamique -vs- code relocatable en mémoire (i.e. tcc -o
-shared versus libtcc api) ?
inutile de faire coder du C ou rajouter une couche de langage de plus.
IL faut générer le code exécutable à la volée tout en en permettant
éventuellement la sauvegarde pour réutilisation ultérieuse.
Pour cela, il existe quatre façons de procéder. La première, c'est de
générer le code d'une machine virtuelle quelconque qui produit ensuite
du code exécutable, l'avantage est que l'appli est indépendante de la
plateforme d'exploitation. La deuxième est d'utiliser un générateur de
code à la volée tel que
http://www.gnu.org/software/lightning/manual/html_node/Overview.html.
La troisième façon, la plus sophistiquée consiste à utiliser un
générateur de code piloté par les spécification de la machine-cible tel
que celui-ci http://www.cs.tufts.edu/~nr/toolkit/
La quatrième façon, la plus simple est d'utiliser un interpréteur forth
embarqué muni d'un vocabulaire assembleur.
Pour ma part, après avoir essayé quasiment tout, j'ai utilisé un
générateur de code piloté avec insertion du code à la volée.
On 05/09/2009 12:23, zwim wrote:
Bonjour,
J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Votre opinion/retour d'expérience sur ce sujet ?
Est-ce que tcc est la bonne méthode, en connaissez vous d'autres ?
Quid de lib dynamique -vs- code relocatable en mémoire (i.e. tcc -o
-shared versus libtcc api) ?
inutile de faire coder du C ou rajouter une couche de langage de plus.
IL faut générer le code exécutable à la volée tout en en permettant
éventuellement la sauvegarde pour réutilisation ultérieuse.
Pour cela, il existe quatre façons de procéder. La première, c'est de
générer le code d'une machine virtuelle quelconque qui produit ensuite
du code exécutable, l'avantage est que l'appli est indépendante de la
plateforme d'exploitation. La deuxième est d'utiliser un générateur de
code à la volée tel que
http://www.gnu.org/software/lightning/manual/html_node/Overview.html.
La troisième façon, la plus sophistiquée consiste à utiliser un
générateur de code piloté par les spécification de la machine-cible tel
que celui-ci http://www.cs.tufts.edu/~nr/toolkit/
La quatrième façon, la plus simple est d'utiliser un interpréteur forth
embarqué muni d'un vocabulaire assembleur.
Pour ma part, après avoir essayé quasiment tout, j'ai utilisé un
générateur de code piloté avec insertion du code à la volée.
On 05/09/2009 12:23, zwim wrote:Bonjour,
J'aimerais pouvoir utiliser du code C écrit par l'utilisateur pendant
l'execution d'un programme, pour permettre par exemple la définition
de fonctions sans avoir recours à "yet another user language"...
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Votre opinion/retour d'expérience sur ce sujet ?
Est-ce que tcc est la bonne méthode, en connaissez vous d'autres ?
Quid de lib dynamique -vs- code relocatable en mémoire (i.e. tcc -o
-shared versus libtcc api) ?
inutile de faire coder du C ou rajouter une couche de langage de plus.
IL faut générer le code exécutable à la volée tout en en permettant
éventuellement la sauvegarde pour réutilisation ultérieuse.
Pour cela, il existe quatre façons de procéder. La première, c'est de
générer le code d'une machine virtuelle quelconque qui produit ensuite
du code exécutable, l'avantage est que l'appli est indépendante de la
plateforme d'exploitation. La deuxième est d'utiliser un générateur de
code à la volée tel que
http://www.gnu.org/software/lightning/manual/html_node/Overview.html.
La troisième façon, la plus sophistiquée consiste à utiliser un
générateur de code piloté par les spécification de la machine-cible tel
que celui-ci http://www.cs.tufts.edu/~nr/toolkit/
La quatrième façon, la plus simple est d'utiliser un interpréteur forth
embarqué muni d'un vocabulaire assembleur.
Pour ma part, après avoir essayé quasiment tout, j'ai utilisé un
générateur de code piloté avec insertion du code à la volée.
Le 05-09-2009, zwim a écrit :Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Ne peux tu pas sinon opter pour un modèle client/serveur
avec communication socket ? C'est moins sexy, mais ça marche bien
aussi.
L'utilisateur écrits toujours son code C, il se le compile,
il ajoute de #include qui lance le serveur, et voilà.
Aucune techno évoluée, mais pas long à faire.
Le 05-09-2009, zwim <zwim@f_ree.fr> a écrit :
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Ne peux tu pas sinon opter pour un modèle client/serveur
avec communication socket ? C'est moins sexy, mais ça marche bien
aussi.
L'utilisateur écrits toujours son code C, il se le compile,
il ajoute de #include qui lance le serveur, et voilà.
Aucune techno évoluée, mais pas long à faire.
Le 05-09-2009, zwim a écrit :Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Ne peux tu pas sinon opter pour un modèle client/serveur
avec communication socket ? C'est moins sexy, mais ça marche bien
aussi.
L'utilisateur écrits toujours son code C, il se le compile,
il ajoute de #include qui lance le serveur, et voilà.
Aucune techno évoluée, mais pas long à faire.
Le Mon, 7 Sep 2009 09:19:21 +0000 (UTC)
Marc Boyer a écritLe 05-09-2009, zwim a écrit :Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Ne peux tu pas sinon opter pour un modèle client/serveur
avec communication socket ? C'est moins sexy, mais ça marche bien
aussi.
L'utilisateur écrits toujours son code C, il se le compile,
il ajoute de #include qui lance le serveur, et voilà.
Aucune techno évoluée, mais pas long à faire.
yep, mais je voulais justement cacher cet aspect compilation à
l'utilisateur.
si l'utilisateur est capable de compiler facilement, autant qu'il
recompile directement l'appli finale avec ses modifs...
Le Mon, 7 Sep 2009 09:19:21 +0000 (UTC)
Marc Boyer a écrit
Le 05-09-2009, zwim <zwim@f_ree.fr> a écrit :
Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Ne peux tu pas sinon opter pour un modèle client/serveur
avec communication socket ? C'est moins sexy, mais ça marche bien
aussi.
L'utilisateur écrits toujours son code C, il se le compile,
il ajoute de #include qui lance le serveur, et voilà.
Aucune techno évoluée, mais pas long à faire.
yep, mais je voulais justement cacher cet aspect compilation à
l'utilisateur.
si l'utilisateur est capable de compiler facilement, autant qu'il
recompile directement l'appli finale avec ses modifs...
Le Mon, 7 Sep 2009 09:19:21 +0000 (UTC)
Marc Boyer a écritLe 05-09-2009, zwim a écrit :Prenons un usecase basique genre gnuplot.
L'utilisateur entre une fonction math, et le programme trace son
graphe.
Au lieu de faire appel à un langage utilisateur qui va conduire à
parser une chaine, et interpréter un arbre binaire arithmétique ce qui
peut être assez lent, la solution d'écrire la fonction directement en
C et de la compiler à la volée me semble plus pratique.
J'ai pour l'instant lu des examples avec TCC qui permet de générer une
lib dynamique, ou même LIBTCC qui permet de le faire en mémoire et de
récupérer les symboles via tcc_get_symbol( ), ça à l'air prometteur et
en plus c'est sous LGPL.
Ne peux tu pas sinon opter pour un modèle client/serveur
avec communication socket ? C'est moins sexy, mais ça marche bien
aussi.
L'utilisateur écrits toujours son code C, il se le compile,
il ajoute de #include qui lance le serveur, et voilà.
Aucune techno évoluée, mais pas long à faire.
yep, mais je voulais justement cacher cet aspect compilation à
l'utilisateur.
si l'utilisateur est capable de compiler facilement, autant qu'il
recompile directement l'appli finale avec ses modifs...