59 votes

Des Alternatives à Lua comme langage intégré?

Je suis en train de travailler sur un système embarqué Linux en cours d'exécution sur un DSP. Maintenant, nous voulons faire quelques parties scriptable, et nous sommes à la recherche d'une belle intégrable langage de script. Ces scripts doivent intégrer parfaitement avec notre code C++ de base, être petit et rapide.

Je comprends que Lua est le choix de l'industrie pour ce type de problèmes. Nous allons probablement aller avec Lua, car il est essayé-et-vrai et prouvé pour être stable et ainsi de suite. Cependant, en tant que langage de programmation, il a une certaine assez bizarre coins.

Alors, quelles sont les alternatives sont là pour intégrable langues?

EDIT:

C'est environ un an plus tard.

Nous avons en fait utilisé Lua sur notre système embarqué et il fonctionne merveilleusement bien. Au fil du temps, nous avons ajouté plus et plus de prise en charge des scripts de plus en plus de parties du projet et qui m'a vraiment aidé à emporter.

La Performance est remarquable, vraiment. Même plutôt d'opérations complexes qui nécessitent la recherche par le biais long de tableaux ou de fantaisie opérations de la chaîne d'effectuer étonnamment bien. Essentiellement, nous n'a jamais couru en Lua liées à des problèmes de performance à tous.

L'interfaçage avec les fonctions C est très simple et fonctionne très bien. Cela nous a permis de pousser le système de script sans douleur.

Enfin, nous avons été étonné de la façon dont flexible Lua s'est avéré être. Notre interpréteur Lua doit s'exécuter sur un système avec un autre allocateur de mémoire et sans support pour le type de données double. Il y a deux bien documenté lieux dans un fichier d'en-tête que nous avons dû modifier pour faire Lua travail sur ce système. Il est vraiment bien adapté pour l'incorporation de la!

39voto

AndersH Points 520

Puisque vous dites "systèmes embarqués" et "petit et rapide" et "intégrer joliment" je dirais que vous avez raison que Lua est le numéro un, si pas le seul choix. Mais je n'accepte plus que le langage de programmation est "bizarre coins". Tout d'abord, le livre Programmation en Lua est tout simplement splendide, un des meilleurs livres que j'ai jamais lu. Deuxièmement, certains des "excentriques coins" viennent du fait que la langue est très orthogonale et nettoyer, ce qui à long terme est un atout, pas un inconvénient. Je trouve par exemple JavaScript bien pire. Si vous lisez "Javascript les bonnes parties", l'auteur explique en longueur pourquoi certaines constructions dans la langue sont des erreurs de conception et pourquoi on devrait éviter de l'opérateur new. Pas si en Lua, les mauvaises parties ont été supprimées, par exemple l'étrange amont des trucs a remplacé la norme syntaxique de délimitation de l'étendue de la version 5.x.

De mon point de vue est en fait que le Lua est un langage beaucoup moins excentrique coins que la plupart des autres langues! Nous l'utilisons dans un projet commercial et nous sommes plus qu'heureux avec elle.

14voto

Judge Maygarden Points 14964

Je recommande de tout cœur Lua pour votre cas d'utilisation. Cependant, la Suite est une solution de rechange-en particulier pour les ressources limitées des périphériques embarqués--qui n'a pas encore été mentionné.

12voto

Mud Points 12084

Il y a toujours Lisp. :) Mais qui met en évidence le fait que Lua est en fait de moins en moins "bizarre" que la plupart des langues. Il a été conçu pour les non-programmeurs et se lit comme le pseudo-code. Il est propre, uniforme de la sémantique (la première classe de fonctions imbriquées avec une portée lexicale; l'affectation multiple; plusieurs valeurs de retour; un seul de données flexible structuration mécanisme propre constructeur de syntaxe, etc). qui font qu'il est très facile à apprendre, lire, écrire, etc. Il arrive aussi d'être inattendue, puissante et expressive (une bonne queue appels, les continuations, la métaprogrammation, etc.)

Le seul vraiment "bizarre" aspect de Lua est que les tableaux d'index de 1, et que le fait qu'il n'est pas prêt C de conventions comme tout le monde (~= plutôt que d' !=, -- plutôt que d' //, etc.), mais ce sont surtout décalé à travers les yeux des programmeurs habitués à C-comme les langues.

Une autre solution pourrait être de l'Écureuil, qui est inspiré par Lua, a des objectifs similaires, mais C comme syntaxe. Je ne l'ai pas utilisé, donc je ne sais pas bien il il répond aux objectifs à atteindre.

4voto

Bryan Oakley Points 63365

Tcl a été conçu dès le départ pour être un langage intégré, et a été autour depuis des décennies. De Plus, il est un choix parfait pour le développement d'un domaine spécifique de la langue en raison de la nature extensible.

Je ne sais pas beaucoup au sujet de la DSP monde, mais quand vous faites une recherche google "dsp lua" et "dsp tcl", vous obtenez deux fois plus de coups pour Tcl.

4voto

kikito Points 23229

Avec vos exigences (faible encombrement, les bizarreries et l'intégration avec le C++), la seule option que je peux penser est de Common Lisp.

Certaines personnes dans cette autre DONC, la question recommandons CFFI pour l'intégrer avec C.

Mais je collerais avec Lua si je où vous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X