Programmiersprache entwickeln

sFee

Mitglied
Hallo Liebe Leute,

ich möchte gerne eine eigene Programmiersprache für die JVM entwickeln.
Ich habe zum Thema Compilerbau viel gefunden aber nur eine eine Abschlussarbeit
die sich konkret mit der compilierung zur JVM beschäftigt und zwar diese hier:
http://teajay.org/TeaJay.pdf

Mein Problem ist ich verstehe diese Arbeit nicht.
Mir ist völlig unklar was man tun muss!

Kann mir jemand helfen ?
 

Thallius

Top Contributor
Hä? Du willst eine Programmiersprache entwickeln die von einer JVM benutzt wird? Wie soll das denn gehen? Da kannst du maximal einen eigenen Crosscompiler in Java schreiben oder sowas.
 

sFee

Mitglied
Ich will eine Programmiersprache für die JVM entwickeln, ähnlich wie oben. Was ich nicht verstehe wie man Bytecode erzeugt, dass verstehe ich nicht !
 

Nuiton

Bekanntes Mitglied
Das ist kein Projekt, dass man mal so aus Spass macht. Eine Programmiersprache hat sehr viele Komponenten. Zu diesen Komponenten gehoeren z.B. die "Grammatik" (grammar) und ein Parser. Wie gesagt, einen Compiler baut man nicht mal so spontan am Wochenende - das waere schon viel eher eine Diplomarbeit (musste ich jedoch in einer meiner Kurse in der Uni schreiben).

Um einen Compiler zu schreiben ist es viel wichtiger dass du verstehst, was Automatentheorie ist, und wie man es in der Praxis anwendet.
 

Tobse

Top Contributor
In der Theorie ist es simpel:

1. Arbeite dich in den Java-Bytecode ein; du musst dich gut damit auskennen
2. Designe deine Sprache und achte bei jedem Element darauf, dass man es auf der JVM ausführen kann.
2.1. Wenn du Kompatibilität mit Java und anderen JVM-Sprachen willst bleibt dir jediglich, eine andere Syntax für Java zu schreiben. Alles darüber hinaus versaut die Kompatibilität.
3. Schreibe einen Kompiler der deine Sprache parsed und JVM Bytecode ausspuckt.

Die Praxis ist höllisch kompliziert und ich kann nur davon abraten. Es braucht eine Menge Experten um so ein Projekt sauber umzusetzen. Ich prophezie dir: du wirst nach vielen verschwendeten Stunden frustriert aufgeben.

EDIT:
Was ich nicht verstehe wie man Bytecode erzeugt, dass verstehe ich nicht !
Offensichtlich mangelt es dir an Basics. Wie oben schon geschrieben: wenn du das wirklich! angehen willst, fange damit an, Bytecode zu verstehen. Das Internet bietet genug Infos und es gibt eine Reihe an Java-Libraries dafür.
 

sFee

Mitglied
Ich kann nicht glauben, dass dies so schwierig ist. An der Sprache in dem Artikel haben nur 2 Leute gearbeitet. Dann kann es doch nicht sein, dass man im Jahr 2016 noch viele Experten benötigt, um eine vernünftige Sprache zu entwerfen und diese auf der JVM zu laufen zu kriegen.
 

Thallius

Top Contributor
Ninja, diese zwei Leute dürften so ca. 1000x mehr Wissen und Können haben als du. Macht alles in allem 2000x Wissen und Können...... Alles ist einfach wenn man es weis und kann aber du weist und kannst nichts. Fängst also bei 0 an..... Dementsprechend würde ich sagen brauchst du ca. 5 Jahr um ein erstes Ergebnis zu bekommen.....
 

sFee

Mitglied
Woher willst du eigentlich wissen, was ich kann oder nicht. Ich wollte nur wissen wie man zu Bytecode compiliert. Denn die Autoren haben, einfach geschrieben sie haben einen Bytecode Generator auf Basis der JVM Spezifikation geschrieben. Das verstehe ich nicht...! Aus dem Sourcecode werde ich nicht schlau.
 
X

Xyz1

Gast
Guten Tag,
das kommt erst spät im Studium dran, wenn man das möchte, du sagst selber, dass du noch am Anfang bist. Java wird compiliert, interpretiert, usw. Man würd mit einem 'Hello, World'-Beispiel anfangen, das ist von Compilerbau ziemlich weit entfernt. Sagen wir, dein 'Kenntnisstand' wäre ein Vorort oder eine Kleinstadt, dann ist der Compiler in der Mitte der Galaxie. :/ Also es liegen einige Lichtjahre dazwischen.

Soll aber nicht heißen, das alles unmöglich erscheint. Vielleicht schätzen wir dich auch falsch ein. Weiß ich nicht.
Nimms mit Humor. :rolleyes:
 

Dompteur

Top Contributor
Denn die Autoren haben, einfach geschrieben sie haben einen Bytecode Generator auf Basis der JVM Spezifikation geschrieben. Das verstehe ich nicht...!
Nun der Bytecode ist vergleichbar mit einer Assemblersprache. Damit man nun nicht jede zu übersetzende Struktur direkt in diesen Assembler übersetzen muss, haben die Autoren eine Abstraktionsschicht darüber gelegt. Soweit ich nach einem kurzen Blick in das Dokument sagen kann, übernimmt diese Schicht auch solche Sachen wie Sprungadressen-Berechnung und ähnliches Kleinzeug.
Die Autoren schreiben, dass sie diesen Bytecode Generator selbst geschrieben haben, weil es zur damaligen Zeit keinen gab, der Java 7 unterstützt hat. Eine eigene Lösung hat aber den Nachteil, dass die Doku und vor allem Tutorials zu kurz kommen.
Eine Alternative wäre beispielsweise ASM (http://asm.ow2.org/). Da dieses eine größere Anwenderbasis hat, wirst du hier eher auch Einführungsliteratur finden.
Es wird dir aber nicht erspart bleiben, dich mit dem Assembler der JVM zu beschäftigen. Siehe dazu: https://docs.oracle.com/javase/specs/jvms/se7/html/
 
X

Xyz1

Gast
Naja du hast ein Stück Text. Was jetzt alles damit zu tun ist, das macht der Compiler (in Java) alles und ist sehr kompliziert. Nun glaub mir das doch einfach mal.
 

Flown

Administrator
Mitarbeiter
Also ich habe an der Uni Compilerbau 1 und 2 belegt und auch eine "abgespeckte" Version von Java, im Rahmen des Kurses, geschrieben. Daher kann ich dir nur raten: Les dich mal in Compilergeneratoren ein wie z.B. einen von meiner Uni: Coco/R. Dann brauchst du noch wissen über Bytecodegenerierung und diese Themen sind so groß, dass man damit Bücher füllt und nicht einfach hier in einem kleinen Post erläutert.
 

BRoll

Bekanntes Mitglied
Wenns dir nur um die "eigene" Java Sprache geht, und du kein Bytecode direkt selber machen willst,
dann schau dir einfach mal Xtext an. https://eclipse.org/Xtext/
Damit kannst du eigene DSL schreiben, die mit Java interagieren oder in jede beliebige andere Sprache compiliert werden können (theoretisch kannst du auch einen Bytecode compiler dafür schreiben). Zumindest hat man so eine IDE+Parser geschenkt und muss sich nur um Grammatik + Compiler kümmern.
 

InfectedBytes

Top Contributor
Da du scheinbar (noch) nicht wirklich Ahnung von Compiler Entwicklung hast, würde ich dir eher empfehlen einen kleinen Interpreter zu schreiben. Mit Hilfe von Coco/R kann man dies sehr gut tun.
 

lam_tr

Top Contributor
Hi wenn du eine Sprache für die JVM schreiben willst, sage ich wie BRoll auch nur Xtext angucken. Dieses Frankework ist so mächtig. Die definierst die Grammatik in EBNF Style und generierst daraus deine IDE.

Ist wirklich eine coole Sache.
 

sFee

Mitglied
Hallo Liebe Leute,
also, wenn ich das richtig verstanden habe muss man um eine eigene Programmiersprache für die JVM zu schreiben einen Parser entwickeln und Bytecode verstehen. Und das soll so schwierig sein? Ich denke ein Parser für eine Sprache wie Java lässt sich innerhalb von zwei Wochen schreiben.
Beim Bytecode, wenn ich mir den link von Dompteur anschaue, weiß ich nicht was das soll. Warum sollte ich die ganze Spezifikation der JVM verstehen.
Das Buch welches Meniskusschaden empfohlen hat, stellt irgendwie 5 Sprachen vor die allesamt einfach mal so entwickelt worden sind. Und wenn ich mir den oben genannten Artikel anschaue von den zwei Typen, sieht es für mich so aus, als hätten sie auch nicht so viel Zeit für die Entwicklung benötigt, wie ihr mir erklären wollt.
 

InfectedBytes

Top Contributor
Java wird seit 20 Jahren von einem Team aus zig Leuten entwickelt, von denen sich jeder einzelne mit der Compiler Entwicklung auskennt. Wieso glaubst du, dass du es alleine in zwei Wochen hinbekommen könntest, obwohl du bisher noch keinerlei Ahnung davon hast?

Bei dem Buch das gleiche, das sind Leute die sich tiefgreifend mit der Materie auskennen und daher auch "schnell" zu Ergebnissen kommen und trotzdem haben die das ganze nicht mal eben in zwei Wochen gemacht, dazu kommt noch, dass die keine vollwertige Sprache auf dem Niveau von Java entwickelt haben, sondern einfach nur eine kleine Sprache, welche zur Anschauung dienen.

Es will dich hier niemand davon abhalten deine eigene Sprache zu entwickeln, aber es ist eben nicht so einfach wie du glaubst. Kannst dir ja mal Groovy anschauen, das ist auch eine Sprache welche zu Java Bytecode kompiliert und netterweise ist sie auch open source.

Hier will niemand gemein sein oder so, aber allein das du selbst sagst, das du die Arbeit TeaJay nicht verstehst, zeigt halt schon das du leider noch längst nicht bereit bist so ein Projekt aufzunehmen.
 

Dompteur

Top Contributor
Beim Bytecode, wenn ich mir den link von Dompteur anschaue, weiß ich nicht was das soll. Warum sollte ich die ganze Spezifikation der JVM verstehen.
Eine Anweisung in Java wird in eine Folge von Anweisungen in JVN Bytecode umgewandelt. Du schreibst also eine Menge kleinerer JVN Bytecode Routinen/Snippets. Diese musst du testen und debuggen können. Damit das einigermaßen zügig vor sich geht, musst du den Befehlssatz des JVN Bytecodes praktisch auswendig können. Wenn du immer wieder nachlesen musst, ist das so, wie wenn du einen Artikel in einer Fremdsprache liest und für jedes 2. Wort das Wörterbuch zu rate ziehen musst.
Du lernst also mit dem JVN Bytecode eine eigene, neue Programmiersprache.
Natürlich kann man das alles lernen, aber das benötigt dennoch einiges an Zeit.
 

sFee

Mitglied
Ich Programmiere seit 1 Jahr in Java und habe bis jetzt nicht feststellen können warum eine eigen Programmiersprache entwickeln so schwierig sein soll. Wenn das ein Unterfangen von mehreren Jahren sein sollte, dann hätte es weder das dieses Buch noch TeaJay geben können. Denn dann wäre es für ein bis zwei Typen nicht in endlicher Zeit machbar.

Ich meine nah klar. Mir fehlt einiges an Basics und ja ich habe keine Ahnung von EBNF habe mich gefragt was diese komischen Definitionen bedeuten sollen. Also ich muss zuerst meine Sprache in EBNF definieren, und dann kann ich Bytecode erzeugen.
Du lernst also mit dem JVN Bytecode eine eigene, neue Programmiersprache.
Natürlich kann man das alles lernen, aber das benötigt dennoch einiges an Zeit.
Ich dachte das könnte man über ein Bytecode Framework regeln.
 

InfectedBytes

Top Contributor
Also ich muss zuerst meine Sprache in EBNF definieren, und dann kann ich Bytecode erzeugen.
Nein, da fehlen noch einige Zwischenschritte.
Ganz ganz grob macht ein Compiler folgendes:
1. Lexikalische Analyse
Hier musst du den Eingabe stream in konkrete Tokens (Schlüsselwörter, Bezeichner, Literale, Sonderzeichen) zerlegen.
2. Syntaktische Analyse
Hier muss geprüft werden ob zumindest die Syntax richtig ist. Wenn nicht sollte nach Möglichkeit zumindest versucht werden sich so schnell es geht zu recovern, damit der Rest vom Programm weiter syntaktisch geprüft werden kann
3. Semantische Analyse
Hier muss geprüft werden ob der Code semantisch richtig ist. Also z.b. ob eine Zuweisung wie a = b erlaubt ist. Hier muss beispielswiese die Vererbungshierarchie beachtet werden, implizite Typecasts etc.
4. Codegenerierung
Hier wird dann schließlich der Bytecode generiert, sodass z.B. folgendes erzeugt wird:
Java:
float x = a + b;// mit a int und b float
// -----
iload_1
i2f
fload_2
fadd
fstore_3
Das ist nur ein kleiner Ausschnitt, da noch die ganze Methoden und Klassendeklaration fehlt. Außerdem muss die JVM wissen wie groß der Stack maximal wird, wieviele lokale Variable genutzt werden etc.

Jeder einzelne dieser Schritte besteht natürlich aus zig Unterschritten, welche eben auch sehr kompliziert werden, wie z.B. das Prüfen der Korrektheit der Vererbungshierarchie.
 

sFee

Mitglied
Ok, liebe Leute. Lasst mich das ganze hier mal ordnen.
Im Artikel sind die folgt vorgegangen:
  1. Sie haben eine Bytecode API entwickelt. Die bräuchte ich aber nicht wenn ich ASM verwende. Richtig?
  2. Sie haben einen Lexer geschrieben um einen Eingabe stream in konkrete Tokens umzuwandeln. Richtig?
  3. Sie haben einen Parser geschrieben, um EBNF zu parsen???
  4. Sie haben viele kleinere Dinge getan aber meines Erachtens nichts weltbewegendes um mit ihrer Bytecode API zu sprechen.
Also alles im allen nichts schwieriges und doch bin ich keine Lichtjahre entfernt.
 

InfectedBytes

Top Contributor
Also alles im allen nichts schwieriges und doch bin ich keine Lichtjahre entfernt.
Sorry wenn es hart klingt, aber wenn man selbst noch keine Ahnung von einem Gebiet hat, kann man die Komplexität davon nunmal nicht einschätzen und dies ist bei dir leider der Fall. Ich muss @thecain da wirklich zustimmen, wenn du es so einfach findest, dann fang doch einfach damit an.

[Ironie]
Und wenn du dann in zwei Wochen damit fertig bist, kannst du ja auch schnell in einem Monat Windows 11 programmieren ;)
[/Ironie]
 

Meniskusschaden

Top Contributor
Ich würde dir auch raten, einfach zu beginnen. Es kann ja für die ersten Versuche eine ganz minimale Programmiersprache sein. Der Befehlssatz des Streichholzcomputers umfasst nur fünf oder sechs Befehle, die auch ziemlich einfach sind. Versuche doch, einen Compiler zu schreiben, der Streichholzcomputerprogramme in JVM-Bytecode übersetzt. Da brauchst du für den Parser wahrscheinlich wirklich nicht viel Zeit und kannst dich relativ schnell mit einem der Tools zur Bytecodegenerierung beschäftigen oder sogar die class-Dateien selbst schreiben.

Woher willst du eigentlich wissen, was ich kann oder nicht.
Ich kann es zwar verstehen, wenn dich das empört, aber ich glaube, die Einschätzung ist nicht ganz unbegründet. Meines Erachtens triffst du aber auch selbst einige unbegründete Annahmen. Es folgen drei Beispiele dazu:

Und das soll so schwierig sein? Ich denke ein Parser für eine Sprache wie Java lässt sich innerhalb von zwei Wochen schreiben.
Woraus leitest du das ab? Ich kann den Aufwand auch nicht seriös abschätzen, traue es mir aber nicht zu, das in so kurzer Zeit zu schaffen.
Das Buch welches Meniskusschaden empfohlen hat, stellt irgendwie 5 Sprachen vor die allesamt einfach mal so entwickelt worden sind.
Wieso glaubst du denn, dass die das "einfach mal so" gemacht haben? Der Autor ist immerhin Informatik-Professor und - wie ich jetzt erst bemerkt habe - der Gutachter für die Arbeit der TeaJay-Autoren. Der wird in dem Fachgebiet also schon einiges KnowHow aufgebaut haben, bevor überhaupt eine Zeile des Buchs geschrieben wurde. Es ist auch durchaus möglich, dass ein großer Teil der Implementierung bereits im Rahmen seiner Lehr- und/oder Forschungstätigkeit von mehreren Personen erstellt wurde.
Und wenn ich mir den oben genannten Artikel anschaue von den zwei Typen, sieht es für mich so aus, als hätten sie auch nicht so viel Zeit für die Entwicklung benötigt, wie ihr mir erklären wollt.
Der "Artikel" scheint eine Master- bzw. Diplomarbeit zu sein. Dafür müßte man ja ca. sechs Monate Zeit haben, was bei zwei Personen einem Aufwand von einem Personenjahr entspricht. Vielleicht haben sie es locker angehen lassen und nur ein halbes Personenjahr investiert. Nach oberflächlicher Betrachtung habe ich aber den Eindruck, dass das nicht irgendeine Abschlussarbeit ist, sondern eine wirklich gute. Die Autoren werden nicht bei Null begonnen haben.
 

sFee

Mitglied
Hm. Bin ich so auf dem Holzweg?
Ich meine ich habe bis heute jede Aufgabe im Informatik Unterricht geschafft. Ohne das ich Hilfe dazu benötigt hätte. Jetzt wo ich mich mit dem Thema Eigene Programmiersprache befassen möchte, heißt es lass es! Das schaffst du nicht! Ich habe source code gefunden, der LISP in weniger als 150 Zeilen implementiert. Deshalb denke ich das T.Lisp ja nicht so schwierig sein kann.

Zum Thema TeaJay : Ich habe sie seit ca. 2 Wochen auch den Quellcode und mir macht es nicht den Eindruck als hätten die wirklich viel Zeit investiert. Es liest sich so als wäre alles ziemlich Einfach wenn man nur ein paar Dinge versteht... .

Der Quellcode wirkt für mich nicht als hätten das besonders gute Programmierer gemacht. Mein Lehrer meint, dass einige meiner Lösungen für die Aufgaben von ihm, nur von wenigen Leuten verstanden werden kann. Deren Quellcode, kann ich verstehen.

Deshalb komme ich zu dem Schluss, dass das Thema Eigene Programmiersprache nicht schwierig sein kann.
 

Meniskusschaden

Top Contributor
Jetzt wo ich mich mit dem Thema Eigene Programmiersprache befassen möchte, heißt es lass es! Das schaffst du nicht!
Ich - und ich glaube, auch ein paar andere - habe das nicht gesagt, sondern vorgeschlagen, einfach zu beginnen. Wenn man darauf hinweist, dass das Projekt vielleicht größer wird, als du denkst, heisst es ja nicht zwangsläufig, dass du es nicht machen sollst.
Du hast doch geschrieben, dass du nicht weißt, wie du anfangen kannst. Meines Erachtens sollte man dann mit dem Problem herum spielen, Framework-Doku ansehen, etwas Testcode schreiben und ein Gefühl dafür entwickeln. Vorher kann man ohnehin kein Konzept erarbeiten. Danach kann man vielleicht schon etwas besser einschätzen, wie umfangreich es wird und macht entweder weiter oder lässt es sein. In beiden Fällen ist man danach schlauer als vorher. Bei Hobbyprojekten kann man den Erfolgsdruck ja glücklicherweise ignorieren.
Mein Lehrer meint, dass einige meiner Lösungen für die Aufgaben von ihm, nur von wenigen Leuten verstanden werden kann.
Hm, das hört sich für mich eher nach einer Kritik an, aber vielleicht hat er es nicht so gemeint. Ich sehe es so: Je weniger Ahnung man haben muß, um einen gegebenen Code zu verstehen, desto besser ist der Code.
 

InfectedBytes

Top Contributor
Hm, das hört sich für mich eher nach einer Kritik an, aber vielleicht hat er es nicht so gemeint. Ich sehe es so: Je weniger Ahnung man haben muß, um einen gegebenen Code zu verstehen, desto besser ist der Code.
Kann ich nur bestätigen. Ich habe mehrere Jahre an der Uni gearbeitet und dort u.a. auch für Programmiervorlesungen die Übungen betreut, sowie Klausuren korrigiert. Und die "schwer verständlichen" Programme waren eben die schlechten, da diese unnötig durcheinander waren, sowie vieles falsch gemacht haben und erst durch unnötig komplizierte Umwege dann zum richtigen Ergebnis kamen.
Muss natürlich nicht zwangsweise auch bei dir der Fall sein, aber die Erfahrung zeigt eben, dass die "komplizierten Lösungen" häufig eher die schlechten Lösungen sind.
 
X

Xyz1

Gast
Lehrer???? Nicht 'Dozent' oder sonst ein Ungetüm? Das scheint mir immer schlimmer zu werden, mit deiner Selbsteinschätzung.

Wenn du 20 Jahre Programmierung Skillz gesammelt hast, können wir noch mal diskutieren. Obwohl ich das auch nicht von mir behaupte.

Und hier spricht jemand, der zu Zeiten, als es noch Lehrer gab, durchweg 1s hatte. :mad:
 

Thallius

Top Contributor
Das oben geschrieben gilt übrigens genauso für unseren Wissenden.

Was wird das jetzt hier? Ein "wer ist das intelligenteste Kiddy" Wettkampf...

Oh mannn
 

Thallius

Top Contributor
Naja selbst einschätzen ist nicht so schwierig...

Du bist Wert was der Markt für dich bezahlt.

Wer gute Arbeit leistet wird auch entsprechend umworben und bezahlt. Als ich vor über 30 Jahren angefangen habe musste ich um jeden Auftraggeber kämpfen. Heute rufen täglich irgendwelche Headhunter aus aller Welt an, die ich alle vertrösten muss, da ich bis Ende nächsten Jahres schon wieder komplett ausgebucht bin. Und ja, darauf bin ich stolz und ich denke das kann ich auch sein. Denn das ist was handfestes das man vorzeigen kann und nicht irgendwelche leeren Sprüche....
 
X

Xyz1

Gast
Hm, machen wir doch eine Reihung draus:

Erfahrungen/Kenntnisse von sFee < (alle anderen) < DerWissende < Thallius :D

Mir geht's gar nicht darum, wer "besser" ist - sondern ich muss hier falsche Fremd- und Eigeneinschätzung und Unterschätzung des Aufwands dessen etwas berichtigen. :D
 

cefour

Mitglied
@sFee Das was du schreibst entbehrt jeglicher Logik. Mit einem Jahr Info willst du bewerten was guter Quellcode ist.
Dann schönen dank.
Compilerbau ist einfach, wenn du eine Sprache hast die hinreichend einfach ist.
Compilerbaut ist schwer, wenn die Anforderungen hoch sind. Teajay ist so eine Sprache und wenn du Autoren in dieser Form angehst solltest du denen auch nicht schreiben. Ich denke du bist der Kerl der für seine Facharbeit gefragt hat. Ich habe dir auch gesagt, dass im Rahmen einer Facharbeit das was du willst nicht geleistet werden kann.
Du hast hier auch tolle Vorschläge erhalten, wie den Streichholzcomputer. Das gefällt mir und mit einer netten GUI ist das auch ne nette Facharbeit.

Solltest du das nicht sein. Dann tut es mir leid und sage uns mal was du realisieren möchtest.

P.S google alert ist cool.
 
X

Xyz1

Gast
Hmmm, wer ist wer??? Ich dachte, sFee sei eine Frau... Habt ihr jetzt schnell die Geschlechter getauscht?

Kann meinem Vorredner(n) nur zustimmen, für Schule- Facharbeit kann das Thema nicht geleistet werden und ist falsch. ;)
 

Tobse

Top Contributor
Bytecode zu erzeugen gehört für dich zu den Basics? Alle Achtung! ;)
Nein, natürlich nicht :D Basics sind für mich:

1. Verstehen, dass Java Quellcode zu Bytecode compiliert wird
2. Den JVM Bytecode recherchieren können und dabei herausfinden, dass:
2.1. Die Struktur vom Bytecode kein Hexenwerk ist und das erzeugen einer .class Datei mit statischem Inhalt auch für einen Anfänger schnell gemacht ist
2.2. Daraus Schlussfolgern, dass die Schwierigkeit darin liegt, die JVM Opcodes in der richtigen Reihenfolge und mit den richtigen Parametern in die .class zu schreiben

Theoretisch kann man dem Problem ja ausweichen, indem man den Compiler keinen Bytecode erzeugen lässt, sondern Java-Quellcode.
Das vereinfacht die Sache und das Ergebnis kann 100% funktional sein. Ich möchte dann aber keinen Stacktrace von so einer Sprache auswerten müssen...
 

cefour

Mitglied
Es wäre schon ein ziemlicher Zufall, wenn jemand mich vor 2 Wochen anschreibt zu diese Thema und heute die Frage dazu stellt, ob man ihm die Arbeit erkläre könnte. Das wäre zuviel die Arbeit ist zu Unbekannt ähnlich wie das Buch von Clausing was er erwähnt hat.
 

Meniskusschaden

Top Contributor
@cefour: Du bist einer der TeaJay-Autoren, oder habe ich das falsch verstanden? Dann würde mich interessieren, ob du nachträglich abschätzen kannst, wieviel Zeit ihr in die Abschlussarbeit investiert habt.
 

Nuiton

Bekanntes Mitglied
[...]wenn ich das richtig verstanden habe muss man um eine eigene Programmiersprache für die JVM zu schreiben einen Parser entwickeln und Bytecode verstehen. Und das soll so schwierig sein? Ich denke ein Parser für eine Sprache wie Java lässt sich innerhalb von zwei Wochen schreiben.

Deshalb komme ich zu dem Schluss, dass das Thema Eigene Programmiersprache nicht schwierig sein kann.
Schreibe eine Grammatik. Schreibe einen Parser. Mach das in ein paar Wochen, und wenn alles richtig ist, werde ich dich bei dem Department of Computer Science von UCLA vorschlagen.
 
X

Xyz1

Gast
@sFee : Könnte ja die Fehler "beheben", die Java noch hat, und erst in kommenden Versionen berichtigt werden. :D

Also Klartext: Java 7 oder 8 verbessern. :D
 
X

Xyz1

Gast
Also sFee, nun mal Prompt, 1) wie alt bist du, 2) in welcher Klasse/Schule bist du, 3) wie lange hast du schon Erfahrungen in Programmierung und 4) in welchen Programmierungen? Zusätzlich, aber nicht wichtig: Wer wo wann und warum hat dir diese Aufgabe gegeben? Was hast du bisher versucht? Wie ist der aktuelle und erwartete Stand? Wie sind deine Noten so? Geht's dir gut? Ist das Wetter schön? Wird Bayern "gewinnen"? :D
 

Meniskusschaden

Top Contributor
Ich habe mir jetzt die Einleitung zu Achim Clausings Buch durchgelesen und festgestellt, dass meine ursprüngliche Annahme falsch ist. Hier hatte ich vermutet, dass die Beispiel-Programmiersprachen Java-Quellcode erzeugen:
Theoretisch kann man dem Problem ja ausweichen, indem man den Compiler keinen Bytecode erzeugen lässt, sondern Java-Quellcode. Vielleicht ist dieses Buch ein guter Einstieg dafür. Der Autor scheint es so gemacht zu haben.
Aus der Einleitung geht hervor, dass es sich um Interpretersprachen handelt, deren Interpreter in Java realisiert sind. Das scheint mir für die Zielsetzung des Buches auch ein viel naheliegenderer Ansatz zu sein. Im Nachhinein weiß ich gar nicht mehr, warum ich zunächst etwas anderes vermutet hatte.
 

sFee

Mitglied
Deine Antworten auf meine Fragen waren arrogant, Cefour!
Du hast geschrieben: Wenn du eine eigene Sprache entwickeln möchtest, sollte ich den Willen haben mir ins Knie schießen zu wollen, 5 Bücher empfohlen und das meine Erfahrung und Können nicht ausreichen um eine Programmiersprache zu entwicklen.

Die Arbeit ist aber nicht so toll oder siehst du jemanden damit Entwicklen. Das was ihr geschrieben habt, ist alles Simpel und besondere Fähigkeiten im Programmieren sehe ich nicht an eurem Quellcode.
 

Ähnliche Java Themen

Neue Themen


Oben