Welche Scriptingsprache für C#

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
sychobob
Beiträge: 3
Registriert: 26.05.2010, 18:12

Welche Scriptingsprache für C#

Beitrag von sychobob »

Hallo,

ich habe für ein Projekt von mir bisher als Scripting-Sprache Lua verwendet und Lua über LuaBind (http://www.rasterbar.com/products/luabind.html) in C++ eingebettet. Ich möchte nun nach C# migrieren und bin auf der Suche nach einer vergleichbaren Funktionalität. Ich habe schon eine ganze Liste an Möglichkeiten zusammen, aber leider gehen die Beispiele nie soweit wie ich es benötige oder ich kapiers einfach nicht ;-) Jedenfalls reicht es mir nicht einfch ein Script aus C# heraus aufzurufen, das eine Funktion ausführt, sondern ich möchte:
- mein in C# definiertes Basisobjekt in der Scriptsprache verwenden, dort vererben und die C#-Methoden überladen
- den Objekten neue Methoden und Eigenschaften hinzufügen
- die verschiedenen vom Basisobjekt vererbten Objekte in einer Liste in C# verwalten und dort auf die in der Scriptsprache überschriebenen Methoden zugreifen
- vollwertige Implementierung einer Scriptkonsole

Danke schonmal und Grüße!
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Welche Scriptingsprache für C#

Beitrag von Aramis »

Was spricht gegen C# selber als Skript–Sprache?
Despotist
Establishment
Beiträge: 394
Registriert: 19.02.2008, 16:33

Re: Welche Scriptingsprache für C#

Beitrag von Despotist »

Aramis hat geschrieben: Was spricht gegen C# selber als Skript–Sprache?
Das wäre auch meine Frage gewesen. Ich habs aber noch nicht gemacht und weiß daher nicht ob es deine Bedinungen erfüllt. Und warum bleibst du nicht bei LUA?
sychobob
Beiträge: 3
Registriert: 26.05.2010, 18:12

Re: Welche Scriptingsprache für C#

Beitrag von sychobob »

Hui, das ging ja schnell mit Antworten, danke.

Viel spricht eigentlich nicht gegen C#. Nicht so schön ist die immer noch komplizierte Syntax für nicht-Programmierer, aber seis drum. Wie funktioniert das mit C# als Scripting-Sprache? Bin bisher nur über CS-Script gestolpert, hab aber keinerlei Beispiele bezüglich Polymorphie zwischen statischen und dynamischen Objekten gefunden. Mit VS2010 und NEt4.0 scheint es wohl möglich zu sein Objekte zwischen statisch und dynamisch zu konvertieren. Lasse ich in dem Fall einfach den Compiler während der Laufzeit über die entsprechenden Assemblies drüberlaufen? Hab auch gelesen, dass man Mono in C# einbetten kann.

Was Lua angeht, würde ich eigentlich gerne dabei bleiben, aber das normale Lua hat damals für mich unter C++ nicht gereicht, bin um LuaBind nicht drum herum gekommen. Was bietet sich da für C# an? Bin nur über LuaInterface gestolpert hab aber auch dort keinerlei Beispiele zu Polymorphie gefunden.

Mein eigentliches Problem ist einfach, dass ich immer nur Beispiele finde in denen aus C# irgendwelche Funktionen eines Scripts aufgerufen wurden. Maximal wird eine Klasse in die Scriptsprache übertragen und dann aus C# Funktionen dieser Klasse verwendet. Dass diese Klasse aber in der Scriptsprache weitervererbt und erweitert wird und diese Subklassen dann C# zur Verfügung gestellt werden hab ich einfach noch nicht entdeckt.

Meine Fragen klingen vielleicht etwas bescheuert, aber von C# hab ich einfach noch nicht viel Ahnung, vorallem was die DLR angeht.
zwergmulch
Beiträge: 91
Registriert: 07.12.2009, 16:42
Echter Name: Fabian R

Re: Welche Scriptingsprache für C#

Beitrag von zwergmulch »

Hallo sychobob, hast du dir schon Lua.NET angekuckt?
Damit solltest du auch (steht jedenfalls auf der Website, probiert habe ich es noch nicht) Polymorphie etc. nutzen können.
In dem Zusammenhang ist auch Lua2IL interessant, was Lua in ganz normalen IL-Code (wie auch bei C#) übersetzt.

Mfg zwergmulch
Bild
sychobob
Beiträge: 3
Registriert: 26.05.2010, 18:12

Re: Welche Scriptingsprache für C#

Beitrag von sychobob »

Hab mir mal LuaInterface angeschaut (das nutzt der von Lua.NET ja. Was dort wohl auf jeden Fall geht ist, Objekte aus C# nach Lua transferieren und dort inklusive Polymorphie zu vererben, das passt also schonmal. Ob man auf diese abgeleiteten Objekte dann wieder von C# aus zugreifen kann muss ich jetzt mal testen. Habe im dortigen Forum einen Eintrag diesbezüglich gefunden, jedoch hat dessen Ansatz wohl nicht funktioniert. Ich werd dann mal hier was zu schreiben, wenn ich schlauer bin.

Habe aber darüber hinaus auch weiter nach anderen Alternativen gestöbert und bin mittlerweile zu folgendem Schluss gekommen:

wenn man VS2010 nutzt und für Windows programmiert...
...ist "dynamic" das Wort der Stunde. Mit C# 4.0 und VS2010 ist es möglich C# komplett dynamisch zu verwenden und Klassen zwischen IronPhyton, IronRuby und C# wild hin und her zuschicken und während der Runtime frei zu verändern. Klingt richtig geil, was damit möglich ist.

wenn man XNA 3.1 nutzt und für Windows programmiert...
..kann man das leider noch nicht nutzen, jedoch ergibt sich immer noch die Möglichkeit LuaInterface oder sonstige Scriptimplementierungen zu verwenden, auch wenn diese wie es scheint nie zu 100% saubere Lösungen sind. Mehr in C# scripten und wirklich nur die simplen aber wirklich zwingend dynamischen Sachen in der eingebetteten Scriptsprache lösen, scheint der beste Weg zu sein.

wenn man XNA3.1 nutzt und für die XBOX programmiert...
...ist man der Dumme, weil durch das Compact Framework auf das man beschränkt ist, Reflection.Emit nicht nutzen kann, was die meisten Scriptimplementierungen wohl nutzen. Da jedoch eh keine Dateien auf der XBOX während der Runtime von aussen verändert werden können, kann man die Scripts eh gleich in C# schreiben.

Soviel mal zu meiner bisher gewonnen Erkenntnis. Vielleicht hilft sie ja dem ein oder anderen und vielleicht kann dem ja der ein oder andere was hinzufügen oder mich korrigieren, wenn ich bei mancher Annahme daneben liege.
Antworten