Intégration d’un langage de programmation dans un programme

J’aimerais append un certain degré de “scriptabilité” à une application que j’écris. En gros, j’aimerais un moyen d’intégrer une API de langage de programmation à mon programme. J’ai examiné TinyPy, mais je crains que, vu sa petite taille, il ne soit trompeur (c’est-à-dire qu’il ressemble à Python et qu’il ressemble à celui-ci, mais qu’il manque de nombreuses fonctionnalités de ce dernier).

Je ne cherche pas à écrire mon propre langage de programmation; Je voudrais simplement prendre un langage relativement bien connu dans lequel les utilisateurs peuvent écrire des fonctions, puis pouvoir appeler ces fonctions / transmettre les parameters de ces fonctions à partir de mon application, qui sera écrite en C.

J’aimerais également pouvoir accéder à tous les types de données que ces fonctions me renvoient, également à partir de C.

Quelqu’un a-t-il des suggestions quant à l’utilisation d’une API / bibliothèque, légère, relativement complète et dotée d’une bibliothèque C relativement facile à utiliser ou à comprendre?

Merci!

Vous voudrez peut-être consulter SpiderMonkey , qui vous permettra d’intégrer un moteur Javascript dans votre programme C.

Lua est un choix populaire.

La plupart des langages de script ont de bonnes interfaces avec C. Celles que j’ai consultées sont Perl, Python et Lua. Si vos utilisateurs ne sont pas des programmeurs sérieux, je vous conseillerais de laisser passer Perl. S’ils sont des joueurs sérieux de World of Warcraft, ils sont peut-être déjà familiarisés avec Lua et ont écrit du code Lua pour l’interface avec un programme compilé, ce qui en fait un bon choix.

Vous pouvez toujours utiliser ‘c’ avec la boîte à outils ch .
Comme vous l’avez dit, python est bon, surtout si vous pouvez utiliser le wrapper boost :: python.
Un autre choix populaire est Javascript, il est utilisé par le système de script de Qt

Lua et l’argot ont été inventés juste pour cela. Lua a quelques fonctionnalités intéressantes pour le code sandbox, donc si les utilisateurs peuvent fournir du code, vous pouvez essayer de limiter leur capacité à se tirer une balle dans le pied.

Des parfums de lis ont été utilisés pour cela (célèbre dans gnu emacs).

Vous devez vraiment réfléchir aux types d’utilisation du langage intégré, puis au type de langage dans lequel vous aimeriez écrire cette fonctionnalité, lire le code que d’autres personnes ont écrit et vous assurer facilement que le code était correct, ou au moins facilement le déboguer.

GUILE est le langage intelligent omniprésent pour l’extension de GNU. C’est un dialecte Scheme (dialecte LISP). Avant de crier sur LISP, considérez qu’AutoCAD utilisait LISP comme langage d’extension et qu’au moins un système de traitement de texte de secrétariat l’utilisait. Les secrétaires n’avaient aucune difficulté à écrire des extensions pour leurs tâches particulières. (Il semble que les gens ne réalisent pas que la programmation est supposée être difficile si vous ne leur dites pas qu’ils la font.)

Le langage bien connu le plus commun est javascript. Il y a quelques bonnes et simples (bien que pas vraiment aussi simples que possible si vous comparez avec Lua par exemple) pour intégrer des interprètes Javascript là-bas.

Vous n’avez rien dit sur les bibliothèques externes. Comme Lua, ces systèmes javascript sont nus. Il n’y a pas beaucoup prévu pour la communication avec le mot extérieur. Cela contraste avec ruby ​​et python où vous obtenez un système de stacks incluses avec les zillions de fonctions de la bibliothèque d’exécution

Commencez par lire ceci:

Pourquoi intégrer JavaScript?

Comment intégrer le moteur JavaScript