Question

Je cherche à ajouter des fonctionnalités de script à une base de code existante et j'évalue les avantages/inconvénients de différents packages.Lua est probablement le choix le plus évident, mais je me demandais si les gens avaient d'autres suggestions basées sur leur expérience.

Les scripts seront déclenchés lors de certains événements et peuvent rester résidents pendant un certain temps.Par exemple, au démarrage, un script peut définir plusieurs options que le programme présente à l'utilisateur sous la forme d'un certain nombre de boutons.Lors de la sélection de l'un de ces boutons, le programme informera le script lorsque d'autres événements peuvent se produire.

Ce sont les seules véritables exigences ;

  1. Doit être une bibliothèque multiplateforme compilable à partir des sources
  2. Les scripts doivent être capables d'appeler des fonctions côté code enregistrées
  3. Le code doit être capable d'appeler des fonctions côté script
  4. Être utilisé dans une base de code C/C++.
Était-ce utile?

La solution

D'après ma propre expérience :

  • Python.À mon humble avis, c'est un bon choix.Nous avons une base de code assez importante avec de nombreux utilisateurs et ils l'aiment beaucoup.
  • Rubis.Il existe de très bonnes applications telles que Google Sketchup qui l'utilisent.J'ai écrit un plugin Sketchup et j'ai trouvé que c'était plutôt sympa.
  • Tcl.Il s’agit du langage de script intégrable à l’ancienne de choix, mais il n’a pas beaucoup d’essor de nos jours.Mais c'est de haute qualité, ils l'utilisent sur le télescope spatial Hubble !
  • Lua.Je n'ai fait que des trucs pour bébés avec, mais IIRC n'a qu'un type numérique à virgule flottante, alors assurez-vous que ce n'est pas un problème pour les données avec lesquelles vous allez travailler.

Nous avons la chance de vivre à l’âge d’or des scripts, il est donc difficile de faire un mauvais choix si vous choisissez parmi les plus populaires.

Autres conseils

J'ai joué un peu avec Singe-araignée.Il semble que cela vaudrait au moins la peine d'être examiné dans votre situation.J'ai aussi entendu de bonnes choses à propos de Lua.Le principal argument en faveur de l'utilisation d'un langage de script javascript est que de nombreux développeurs le connaissent déjà et seraient probablement plus à l'aise dès le départ, alors que Lua aurait probablement une certaine courbe d'apprentissage.

Je ne suis pas complètement positif mais je pense que Spidermonkey répond à vos 4 exigences.

J'ai beaucoup utilisé Python à cette fin et je ne l'ai jamais regretté.

Lua possède l'API C la plus simple que j'ai jamais utilisée pour la liaison à une base de code.En fait, j’enroule généralement rapidement les fixations à la main.Alors que souvent, vous n'envisageriez pas de le faire sans un générateur comme lampée pour les autres.De plus, il est généralement plus rapide et plus léger que les alternatives, et coroutines sont une fonctionnalité très utile que peu d’autres langages proposent.

AngeScript

vous permet d'appeler des fonctions C standard et des méthodes C++ sans avoir besoin de fonctions proxy.L'application enregistre simplement les fonctions, objets et méthodes avec lesquels les scripts doivent pouvoir fonctionner et rien d'autre n'a à être fait avec votre code.Les mêmes fonctions utilisées par l'application en interne peuvent également être utilisées par le moteur de script, ce qui élimine le besoin de dupliquer les fonctionnalités.

Pour le scénariste, le langage de script suit la syntaxe largement connue du C/C++ (avec des modifications mineures), mais sans avoir à se soucier des pointeurs et des fuites de mémoire.

La question initiale décrivait Tcl par un "T".

Tcl a été conçu dès le départ pour être un langage de script embarqué.Il a évolué pour devenir un langage dynamique de première classe à part entière, mais il est toujours utilisé partout dans le monde comme langage intégré.Il est disponible sous licence BSD, il est donc aussi gratuit que possible.Il compile également sur à peu près toutes les plates-formes modernes, ainsi que sur de nombreuses plates-formes moins modernes.Et non seulement cela fonctionne sur les systèmes de bureau, mais il existe des variantes disponibles pour les plates-formes mobiles.

Tcl excelle en tant que langage « colle », dans lequel vous pouvez écrire des fonctions gourmandes en performances en C tout en bénéficiant des avantages d'un langage de script pour les parties moins critiques en termes de performances de l'application.

Tcl est également livré avec une boîte à outils GUI de première classe (Tk) qui est sans doute l'une des boîtes à outils GUI multiplateformes les plus simples disponibles.Il s'interface également très bien avec SQLite et d'autres bases de données, et prend en charge Unicode depuis un certain temps.

Si l'interface de script est mise à la disposition de vos clients (au lieu de simplement permettre à vos propres ingénieurs de travailler au niveau du script), Tcl est extrêmement facile à apprendre car il n'y a au total que 12 règles qui régissent l'ensemble du langage (comme de TCL 8.6).En fait, Tcl brille comme un moyen d'inventer des langages spécifiques à un domaine, ce qui est souvent la manière dont il est utilisé comme solution de script pour l'utilisateur final.

Il y a déjà eu d'excellentes suggestions, mais je voulais juste mentionner que Perl peut également être appelé/peut appeler en C/C++.

Vous pourriez probablement utiliser n’importe quel langage de script/bytecode moderne.

Si vous êtes prêt à supporter les difficultés de croissance liées à un nouveau produit, vous pouvez utiliser le Perroquet Machine virtuelle.Qui prend en charge de nombreuses, sinon toutes les langues répertoriées sur cette page.Malheureusement, ce n'est pas encore fait, mais cela n'a pas empêché certaines personnes de l'utiliser dans un environnement de production.

Je pense que la plupart des gens mentionnent probablement le langage de script qu’ils connaissent le mieux.De mon point de vue, Tcl a été conçu spécifiquement pour s'interfacer avec C, votre domaine problématique est donc conçu sur mesure pour le langage.Cependant, je suis sûr que Python, Perl ou Lua conviendraient.Vous devriez probablement choisir la langue la plus familière à votre équipe actuelle, car cela réduira le temps d'apprentissage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top