C# oder Java



  • Achje das ist jetzt ne Begriffsdefinitionsfrage.

    MMn. ist es voll OK zu sagen Bytecode wird interpretiert. Man kann argumentieren dass beim Bytecode das Parsen wegfällt und statt eines "Interpretieren" eines Textes einfach nur einfache, klar kodierte Instruktionen ausgeführt werden. Ich weiss aber nicht ob diese Unterscheidung sinnvoll ist.

    Ich kenne auch jeden Fall genug Leute die z.T. sehr viel mit Java zu tun haben und z.T. auch sehr "VM-nahe" (Instrumentierung von Bytecode etc.), und viele von denen sagen auch "interpretieren" bzw. "Interpreter" wenn sie klar hervorheben wollen dass es um Code geht der ohne JIT "ausgeführt" wird - "interpretiert" eben.



  • Ich würde sagen es ist eigentlich ganz einfach. Interpretieren ist, wenn das Programm (in welcher Form auch immer es vorliegen mag) von einem anderen Stück Software gelesen und direkt umgesetzt wird. Bytecode oder nicht spielt da keine Rolle. Bytecode kann interpretiert werden, wenn er aber z.B. erst durch einen JIT Compiler geschickt wird und dann direkt auf der Maschine ausgeführt wird, dann ist das kein Interpretieren mehr. Beides ist möglich, beides kommt vor und Hybride gibt's auch...



  • Ich habe ne bessere Definition:

    Interpretieren ist, wenn der auszuführende Code noch in seiner Programmiersprachenform vorliegt.

    Bei Bytecode ist das nicht mehr der Fall, der ist schon compiliert, auch ohne JIT Compiler. Nämlich compiliert für die VM.

    Der JIT Compiler macht ja dann nur noch nativen Maschinencode aus dem "Maschinencode" der VM. Javacode ist das zu dem Zeitpunkt schon längst nicht mehr.



  • Deiner Definition nach is CPython also kein Interpreter? Denn CPython übersetzt den Input in Bytecode welcher dann aber nicht durch einen JIT geht sondern von einer Softwareimplementierung einer VM ausgeführt wird... Was ist BOCHS? Was ist DosBox?



  • dot schrieb:

    von einer Softwareimplementierung [...] ausgeführt wird...

    und das nennt man dann interpreter. 🙄



  • computertrolls schrieb:

    Ich habe ne bessere Definition:

    Interpretieren ist, wenn der auszuführende Code noch in seiner Programmiersprachenform vorliegt.

    Wieso meinst du dass die Definition besser ist? Sie zieht eine schwammige unscharfe Grenze mit höchst fraglichem Nutzen. Was soll daran besser sein?



  • Wade1234 schrieb:

    dot schrieb:

    von einer Softwareimplementierung [...] ausgeführt wird...

    und das nennt man dann interpreter. 🙄

    eben...



  • Java ist Müll. Die Syntax, die IDE, einfach Minderwertig. Nimm C#, da bist du auf der sicheren Seite. Alternativ noch Kenntnisse in C++ und Python aneignen und passt.



  • Die WP hat eigentlich eine recht brauchbare Klassifizierung:
    https://de.wikipedia.org/wiki/Interpreter


Anmelden zum Antworten