Lua vs Python



  • Du hast schon recht, Lua hat eine etwas beschränkte Standardbibliothek. Dateizugriff und parallele Programmierung ist möglich aber solche Spielerein wie Netzwerk, HTTP, XML usw. fehlt. Oftmals will man das aber auch gar nicht. Warum sollte mein Konfigurationsskript irgendwelche Dateien aus dem Internet laden und diese am besten noch ausführen können? Und wenn es das können soll, dass stelle ich dafür eine kontrollierte Funktion bereit.

    Dass Lua oft in Spielen eingesetzt wird, heißt nicht, dass Lua eine typische "Game-Spache" ist. Der Hauptgrund wird die Geschwindigkeit sein, andere Gründe sind zum Beispiel die Kompaktheit und die einfache Interaktion mit dem Anwendungscode. Deswegen wird es aber auch in anderen Anwendungen benutzt, z.B. Adobe Photoshop Lightroom.

    Darüber hinaus finde ich die Ideen in Lua genial, gerade z.B. die Möglichkeiten, die man mit den Tables hat. Aber das ist wieder ein anderes Thema.



  • </Exit> schrieb:

    welche bringt mir für die Zukunft mehr?

    Hängt davon ab, wo du hinwillst. Python hat das ganze Zeug eingebaut, das man als Ersatz für Shellscripts haben will. Das ist nützlich. Lua ist dafür eine ordentliche Sprache.

    Meine Meinung: immer Lua, wenn's nicht unbedingt Python sein muss. Python hat ein paar Macken, die einfach nicht aussterben wollen; so wie die:
    http://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html
    (Der ist doch verrückt)

    Lua dagegen ist recht stimmig.

    </Exit> schrieb:

    Auf diversen Seiten (siehe auch wikipedia) klang es so, als wäre Lua da deutlich beschränkt. Stimmt das?

    Lua kann das, was Standard-C kann, Entwurfsprinzip. Den Rest musst du selbst schreiben oder runterladen. Das kann ärgerlich werden, wenn du einen Shellscript-Ersatz haben willst. Sonst nützt das mehr als es stört.
    🙂



  • Ist das nicht gerade wieder eine "Was ist Besser C oder Java" Diskussion. Ich würde mir nicht so gedanken drüber machen welche Sprache du lernen sollst, sondern diese zweckgebunden einsetzen:

    Z.b. für reines Scripting habe ich schon Perl eingesetzt (Code Generierung). Ist ziemlich schnell zu lernen und man kann schon recht viel machen. Aber Prinzipiell ist Perl vor allem Regular Expression mit Programmierkonstrukten.

    LUA: Ist recht fix in C/C++ einzubinden, vor allem LUA-Bind ist da sehr schick einzusetzen. Offiziell unterstützt es aber keine OOP aber man kann da mit den Sprachmitteln enorm viel in die richtung machen.

    Zu dem Rest kann ich nicht viel sagen. Es bringt meist weniger wenn man sich zu sehr auf eine Sprache spezialisiert, als wenn man schaut welche Sprache für die Aufgabe am besten geeignet ist. In der Wirtschaft kann man sich das dann meist auch nicht aussuchen.



  • Thx!

    Ich wollte eigentlich nicht auf "was ist besser" raus, sondern eher einen Vergleich, so dass ich für mich selbst dann entscheiden kann, was ich brauche.

    Und genau dafür war der Thread ja auch gut:
    Lua ist nicht nur für Games zu gebrauchen, schnell mit C/C++ in Verbindung zu bringen und Python gibt's auch ohne boost.
    Außerdem wäre ein Blick auf Perl ganz gut. 🕶

    Zum Thema mit den 5 Schleifen:

    [label:] while (<Bedingung>)
                  {<Anweisungen>} [continue {<Anweisungen>}]
    
     [label:] until (<Bedingung>)
                  {<Anweisungen>} [continue {<Anweisungen>}]
    
     [label:] for ([<Startanweisung>]; [<Bedingung>]; [<Updateanweisung>])
                  {<Anweisungen>} [continue {<Anweisungen>}]
    
     [label:] for[each] [[my] $element] (<Liste>)
                  {<Anweisungen>} [continue {<Anweisungen>}]
    
    do {<Anweisungen>} while <Bedingung>; # Spezialfall: in dieser Form
    do {<Anweisungen>} until <Bedingung>; # mindestens eine Ausführung
    

    Aus wikipdeia 😃

    Aber nach allem was ich hier gehört habe, sollte man sich davon nicht abschrecken lassen
    Wobei ich mir jetzt mal Lua ansehen werde, weil's schnell ist UND weil's so einfach in C/C++ einzubinden ist.

    Vielen Dank nochmal an alle 😉



  • </Exit> schrieb:

    Zum Thema mit den 5 Schleifen:

    [label:] while (<Bedingung>)
                  {<Anweisungen>} [continue {<Anweisungen>}]
    
     [label:] until (<Bedingung>)
                  {<Anweisungen>} [continue {<Anweisungen>}]
    
     [label:] for ([<Startanweisung>]; [<Bedingung>]; [<Updateanweisung>])
                  {<Anweisungen>} [continue {<Anweisungen>}]
    
     [label:] for[each] [[my] $element] (<Liste>)
                  {<Anweisungen>} [continue {<Anweisungen>}]
    
    do {<Anweisungen>} while <Bedingung>; # Spezialfall: in dieser Form
    do {<Anweisungen>} until <Bedingung>; # mindestens eine Ausführung
    

    was hat das jettz im speziellen mit perl zu tun



  • Ganz wichtig zu bemerken ist, dass Lua sich im Vergleich zu Python deutlich besser "einsperren" lässt. Wenn man will kommt man mit Python immer an alle möglichen Ressourcen heran (z.B. indem man lustige C-Erweiterungen importiert, in Lua kann man derartiges komplett (und wirkungsvoll) abschalten. Das verhindert zum Beispiel, dass, falls die Luaskripte nicht nur vom Entwickler geschrieben werden, nicht plötzlich irgendein Addon oder Spielstand für dein Spiel die Festplatte formatiert.



  • Aah 😃 schöne Sache...

    @Preist: war nur das, was ich auf wikipedia gefunden haben... Aber egal 😉



  • </Exit> schrieb:

    Zum Thema mit den 5 Schleifen:

    Sorry, du hast for-Schleifen geschrieben. In C oder C++ gibt es auch viele Konstrukte fuer Schleifen. Und in C++ gibt es ein for und die Standardbibliothek bringt ebenfalls ein foreach mit. Also kein grosser Unterschied.



  • AngelScript Anwender: http://www.angelcode.com/angelscript/users.asp
    Lua Anwender: http://lua-users.org/wiki/LuaUses

    Mich wundert, das hier einige die kleine Std-Lib von Lua bemängeln. Lua ist eine Scriptsprache, und keine allgemeine Programmiersprache. Ist Python eine Scriptsprache? Eigentlich nicht. Python ist dynamisch. Aber dynamisch macht es nicht unbedingt zu einer Scriptsprache!

    Scriptsprachen "steuern" andere Programme. Und genau das erfüllt Lua. Mit Lua will man keine Anwendungen programmieren. Man soll mit Lua die Funtionen in seinen Programmen scripten, also Anweisungen geben.

    Scripte sind für "Was ist zu tun" zuständig.
    Allgemeinen Programmiersprachen sind für "Wie ist etwas zu tun".

    Python ist meiner Ansicht nach nicht wirklich zum Einbetten in C++ geeignet, da es praktisch C++ ersetzen kann (bis auf wenige Ausnahmen). Wenn ich mein C++-Programm etwas flexibel halten will, nutze ich dafür Lua oder AngelScript. Ich will schließlich meinen C++ Code nicht ersetzen.



  • wens interessiert: man kann v8 (die JS engine von Google Chrome) inzwischen auch recht gut embedden: http://code.google.com/p/v8-juice/


Anmelden zum Antworten