Frage

Ich habe ein c ++ Server-Seite Projekt, das ich brauche eine Art von Scripting in einbetten. Es ist Teil eines Online-MMO Servertyp. Ich habe große Erfahrung mit TCL, und es scheint, wie die natürliche Passform. Ich habe in meinem Spiel dev Tagen eine minimale Menge an Lua getan, und ich frage mich, ob dies könnte eine bessere Sprache für eingebettetes Scripting sein. Es ist auch schön, eine neue Sprache zu lernen. Was sind die relativen Stärken und Schwächen von TCL vs Lua? Dank!

War es hilfreich?

Lösung

Ehrlich gesagt, sind sie beide sehr gut geeignet für die Aufgabe. Beide sind einfach eine ziemlich einfache Syntax in einer Anwendung und haben einzubetten. Ich weiß für eine Tatsache, dass es sehr einfach ist, neue Befehle hinzuzufügen, in Tcl (mit der Anwendung interagieren), und ich habe gehört, dass Lua auf dieser Art der Sache ist sehr gut, auch.

würde meine Empfehlung für eine Weile mit Lua zu spielen, um zu sehen, wie es Ihnen gefallen (da Sie bereits Tcl wissen) ... und dann die auswählen, die Sie am angenehmsten ist. Wenn Sie viel Code schreiben, werden Sie mit ihm viel aufzuwickeln arbeiten, so dass Sie etwas brauchen, können Sie auch nutzen. Am Ende sollte beide Sprachen zur Auswahl recht einfach sein für die Endbenutzer zu Skript in.

Meine persönliche Präferenz ist Tcl, beide, weil ich Lua nicht mag (ich eine angemessene Menge der Programmierung in der es für Warcraft addsons getan haben), und weil ich Tcl lieben (ich habe eine Menge Programmierung in es getan für berufliche und private Arbeit).

Edit: Hinzugefügt wurde die Notiz sowohl für den Endverbraucher einfach zu sein. Got 2 nach unten Stimmen und an nichts anderes denken kann, dass es für andere sein könnte als nicht, warum ein Teil meiner Aussage zu klären.

Andere Tipps

Ich glaube, ich bin das Gegenteil von RHSeeger dort. Ich habe sowohl Lua und TCL eingebettet in Spielen (Online-Spiele, nebenbei bemerkt) verwendet und ich würde nicht TCL berühren wieder mit einem 10' bargepole wenn ich die Wahl hätte. Meine sehr subjektive Meinung ist, dass Lua eine vernünftige Sprache ist und TCL nicht. Im Vergleich zu den anderen Optionen für Skriptsprachen, ist TCL Syntax sehr dunkel, die meisten Menschen mit dem ganzen Satz und ausdr und Dollar-Zeichen und viele Klammern etc. Das einzige Ziel Vorteil ist es eine einfache Einbettung hat - aber Lua ist nicht lumpen in diese Abteilung auch nicht.

Wenn diese Scripting-Schnittstelle rein ist für Sie, dann können Sie wie mit TCL gut gehen, da Lua wird nicht Sie etwas Neues anbieten (es sei denn, Objektorientierung ist Ihre Sache). In den Händen eines erfahrenen Benutzer ist TCL ein vernünftiges Werkzeug. Wenn jedoch erwarten, dass Sie weniger erfahrene Anwender das System dann mit Lua gehen zu verwenden, -. Die einfachere Syntax ihnen viel Produktivität kaufen

Ich vermute, dass Tcl mehr Bibliotheken, die Sie vielleicht auf dem Weg notwendig oder bequem finden.

Wie schon andere gesagt haben, würden beide Sprachen sehr gut funktionieren. Eine dritte Option, die etwa ebenso wahrscheinlich auch Arbeit würde JavaScript, da sie die gleiche Nische etwa die gleiche passt. Anstatt zu versuchen, Sie zu der einen oder anderen Woo (Da ich sehr viel, beide Sprachen mögen) Ich werde versuchen, auf einige der objektiven Unterschiede zu konzentrieren, und weisen darauf hin, wo ich denke, eine vor dem anderen ist.

Die wichtigste Frage in einem Game-Server ist wahrscheinlich rohe Leistung. Beide Sprachen sind ausgereift und gut optimiert, aber beide auch erkennen, dass einige Probleme am besten optimiert werden durch zu kompilierten Code aufzuschieben. Beide Sprachen verwenden grundsätzlich den gleichen Mechanismus, um dies durchzuführen. Aus der Sicht der Sprachen selbst, es ist wie Lua aussieht, ist nur ein bisschen schneller. Link

Aus der Sicht von Bibliotheken, die der nächste große Faktor ist, erfordert weder die Sprache, die Verwendung von Bibliotheken nützlich zu sein; dh beide Sprachen sind sehr kompakt, verglichen mit Sprachen wie Java, die großen Laufzeitbibliotheken erfordern, nützlich zu sein; Auch dies ist eine Folge ihrer ursprünglichen Entwürfe Anforderungen. Beiden Sprachen haben reichlich Add-on-Bibliotheken zur Auswahl, aber es ist mein Eindruck zumindest, dass TCL etwas mehr Abwechslung in dieser Kategorie hat. tcl :( Tcl Erweiterung Archiv / Tcl Extension Repository ) lua: ( LuaForge )

Ein weiterer Unterschied ist zwischen den Kernsprachen selbst. Beide Sprachen schätzen Einfachheit über Stil, aber das ist, wo endet die Ähnlichkeit. Lua verwendet, was bekannte Syntax für den meisten Programmierer sein könnte, mit einer sehr einfachen kontextfreien Grammatik. TCL Syntax ist auch einfach, aber nicht wirklich mit anderen existierenden Sprachen etwas gemeinsam hat, obwohl es wie Unix-Shell-Sprache oberflächlich ein wenig aussieht. Tcl ist wahrscheinlich nur einfacher, auf Nicht-Programmierer, weil seine Linie orientierte Befehlssyntax ist ziemlich klar, aber Programmierer in anderen Sprachen erfahren in der Regel auf seine obskure Syntax-Objekt. Keiner ist furchtbar nachsichtig in Bezug auf die Code-Generierung, aber beide haben eine starke metaprogramming Einrichtungen (vergleichbar, aber vielleicht nicht so robust wie CLISP Makros).

Der Lua-C-API ist extrem einfach in eine Anwendung zu integrieren. Von C Sie uneingeschränkten Zugriff auf den Lua Zustand haben, und zu seinen nativen Datentypen. Ich habe Lua empfohlen nur mit der Hash-Tabelle Implementierung zu erhalten, auch ohne die Notwendigkeit für Scripting, zum Beispiel.

Lua Funktionen in C geschrieben wird, können als globaler Name injiziert werden, in einer Tabelle gesammelt wie die meisten der Standardbibliothek Funktionen oder implementiert in DLLs und dynamisch zur Laufzeit geladen. Dies ermöglicht die Anwendung eine stabile API zur Verfügung zu stellen, sowie Plugins entweder Lua oder C geschrieben zu unterstützen.

Lua als Sprache ist überraschend leistungsstark, mit Unterstützung für sowohl funktional als auch objektorientierte Programmierstile. Es ist auch überraschend leicht. Die komplette Source-Kit und eine vollständige Dokumentation passen unter 1 MB gut und die ganze VM, Compiler und Standardbibliotheken in einer DLL ist nur 164KB unter Windows

Ich habe nicht ernsthaft geprüft TCL seit Version 2 oder so ... Ich werde nicht versuchen, sie auf konkrete Weise zu vergleichen. Ich glaube, dass sie beide die gleiche Nische passen erfunden wurden, und etwa zur gleichen Zeit. Sie sind sicherlich beide reifen Sprachen mit begeisterten User-Communities.

Lua hat luajit , das ein JIT-Compiler ist, die C Geschwindigkeiten auf engen Schleifen erreicht und wird für Projekte verwendet, wie Snabb Schalter , in denen die Leistung entscheidend ist (Snabb Gigabits pro Sekunde verarbeiten kann, die alle durch luajit verarbeitet). Luajit hat auch eine einfach zu bedienende FFI welche C-Funktionen zugreifen können, ohne C-Stub Code zu schreiben.

PUC-Lua (die Standard-Implementierung) unterstützt die Ausführung von aus dem Speicher zu erholen. Weder luajit noch TCL tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top