Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

31

22.02.2011, 10:41

Der letzte Absatz sagt mir überhaupt nichts, vermutlich weil ich zu wenig über deine Interna weiß.
Der Rest klingt aber vernünftig, wobei ich selbst nicht das Rendering von Referenzen erlauben würde, sondern nur die Erstellung kompletter Objekte, welche durch die Engine selbst verwaltet und gerendert werden. Hängt vermutlich aber von Deinem Zweck ab und ob es diesem dienen kann.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

daG

Treue Seele

Beiträge: 130

Wohnort: Hamburg

  • Private Nachricht senden

32

26.02.2011, 19:27

Ich hab letztens IronJS gefunden. Das ist eine auf der "Dynamic Language Runtime" (von .NET, es geht ja um C#) aufbauende JavaScript Implementierung. IronPython und IronRuby laufen auch auf Basis der DLR.

Was ich bei IronJS echt super finde, ist die Möglichkeit die Schnittstellen selbst anzugeben. Es ist also nicht möglich innerhalb des Scripts z.B. System.IO zu importieren und aufs Dateisystem zuzugreifen.

Hier mal ein kleines Beispiel mit einer Implementierung einer "print" Funktion. Math ist standardmäßig verfügbar (genauso wie Array, String, Object, etc)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System;
using IronJS;

namespace JavaScriptTest
{
    class Program
    {
        static void print(string value)
        {
            Console.WriteLine(value);
        }

        static void Main(string[] args)
        {
            var context = Hosting.Context.Create();

            context.PutGlobal("print", IronJS.Native.Utils.createHostFunction(context.Environment, new Action<string>(print)));

            context.InvokeCompiled(context.CompileSource("print(Math.PI);"));

            Console.ReadLine();
        }
    }
}


Ich hab die DLL mit angefügt die braucht da ihr sonst IronJS selbst kompilieren müsstet, was eventuell etwas umständlicher ist, da es in F# geschrieben ist ^^
»daG« hat folgende Datei angehängt:
  • IronJS.7z (138,83 kB - 34 mal heruntergeladen - zuletzt: 06.04.2024, 14:16)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

33

26.02.2011, 21:54

Für mich ist bei diesem kurzen Beispiel klar, dass ein wichtiger Punkt für eine Skriptspracheneinsatz bei der Sprache nicht erfüllt ist: beschleunigen der Entwicklung durch kurzen, knappen, klaren Syntax; aber das ist nur meine persönliche Meinung.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

daG

Treue Seele

Beiträge: 130

Wohnort: Hamburg

  • Private Nachricht senden

34

26.02.2011, 21:59

Ähm, das versteh ich jetzt nicht. Es sind 3 Zeilen Code um eine eigene Funktion in JavaqScript zur Verfügung zu stellen. Man müsste natürlich einmal alle seine Objekte zur Verfügung stellen. Aber dadurch kannst du dir dann ja deine eigene DSL erstellen. Und dadurch, dass das JavaScript direkt in der DLR läuft, läuft es auch mit sehr hoher Geschwindigkeit (für eine Skriptsprache)

Ich behaupte einfach mal, dass du das Beispiel nicht verstanden hast, ansonsten hab ich dich nicht verstanden ^^

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

35

26.02.2011, 22:25

Na deine Behauptung trifft zu. Habe hier JS mit dem C#(?) ansich verwechselt, wobei ich auch kein Freund von JS bin ;) .
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

daG

Treue Seele

Beiträge: 130

Wohnort: Hamburg

  • Private Nachricht senden

36

26.02.2011, 22:29

Ich bin auch kein Freund von JS aber ich bin auch kein Freund davon andauern eine neue Skriptsprache zu lernen ^^

Ich würde es echt gut finden, wenn es eine Skriptsprache gibt, die nur dafür gedacht ist in anderen Sprachen eingebettet zu werden und daher sehr schlank, einfach und elegant ist. Eine die auch sehr gut geeignet ist um DSLs zu schreiben. Ruby mit C-Syntax fänd ich cool :)

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

37

26.02.2011, 22:40

Lua soll dafür geradezu prädestiniert sein.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

daG

Treue Seele

Beiträge: 130

Wohnort: Hamburg

  • Private Nachricht senden

38

26.02.2011, 23:18

Ja, das benutzt botlin ja auch. Ich find die Syntax von Lua ein bisschen gewöhnungsbedürftig :-/

IronJS ist halt eine Alternative ;)

39

26.02.2011, 23:20

@Implementierung von Funktionen etc. für IronJS:
Kann man das nicht besser mit Attributen und Reflexion lösen? Für einen Einstieg siehe: http://www.codeguru.com/csharp/.net/net_…ticle.php/c7009 Ich persönlich würde eher zu JS oder so greifen, weil man damit auch noch in anderen Domänen (Webentwicklung) was anfangen kann (kann man mit LUA natürlich auch, aber JS ist schon eine andere Kategorie).

@daG: Wenn dein Profilbild ein Warnsymbol für Radioaktivität darstellen soll, steht es übrigens auf dem Kopf... :) hier mal ein post von mir dazu :) bei extrem vielen abbildungen ist das übrigens falsch rum sogar bei duke nukem im logo... (edit: profilbild wurde inzwischen angepasst ;))

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Chromanoid« (26.02.2011, 23:39)


daG

Treue Seele

Beiträge: 130

Wohnort: Hamburg

  • Private Nachricht senden

40

26.02.2011, 23:23

@daG: Wenn dein Profilbild ein Warnsymbol für Radioaktivität darstellen soll, steht es übrigens auf dem Kopf... :)


Ich glaube nicht, dass hier im Forum etwas radioaktiv verseucht ist, von daher macht es nichts ;)

EDIT:
Äh, und ja man könnte sich mit Reflections und [Attributes] sich seine Klassen für die Scriptsprache (IronJS sowie Lua) automatisch "registrieren", das wäre dann halt eine Frage der Implementierung.

Werbeanzeige