Programmiersprache entwickeln

sFee

Mitglied
Entschuldigung! Ich wollte euch alle nicht Nerven.
Aber ich will eine eigene Sprache entwickeln und wenn ich dann Fragen habe, geben mir die Leute zu verstehen, das ich zu Jung bin.

Ist es denn nicht möglich eine Sprache wie Java einfach zu entwickeln?
Es gibt heute, so viele Hilfsmittel da sollte doch eine solche Aufgabe nicht mehr schwierig sein
 

JCODA

Top Contributor
Aber ich will eine eigene Sprache entwickeln und wenn ich dann Fragen habe, geben mir die Leute zu verstehen, das ich zu Jung bin.
Niemand sagst, dass du zu jung bist.
Jeder sagt, dass du dir nicht ein zu großes Projekt vornehmen sollst, welches am Ende vielleicht nicht deinen Ansprüchen genügt. (Vor allem wenn es benotet wird...)
Ich versteh schon, du hast dir ein Ziel gesetzt und die Leute aus dem Forum sagen dir, dass du das nicht umsetzen kannst. Aber unbestreitbar haben die Leute hier Wissen. Wenn du deren Wissen als nichtig einschätzt, wie etwa "Der Quellcode wirkt für mich nicht als hätten das besonders gute Programmierer gemacht" oder "Die Arbeit ist aber nicht so toll oder siehst du jemanden damit Entwicklen.", dann darfst du auch nicht böse sein, wenn dir nicht mehr in dem Maße geholfen wird, dein Wissen zu erweitern.
Achso und nur weil dein Lehrer etwas sagt, heißt das nicht, dass das außerhalb der Schule etwas zu bedeuten hat. Ich habe das leider selbst erfahren müssen ...

Jedenfalls, fang an! Du hast es in der Hand uns allen das Gegenteil zu beweisen.
 
X

Xyz1

Gast
Ich lenke mal mit einer eigenen Frage ab:

Hallo, ich möchte ein Operating System schreiben, weiß aber noch nicht wie. Könnt ihr mir ahnungslosen bitte erklären, wie man ein Operating System schreibt, damit ich das kann? Ich schätze den Zeitaufwand meinen bisherigen Erfahrungen nach sehr gering ein...

Edit: Beantworte doch einfach meine Fragen 1) bis 4), wenn dir wirklich etwas daran liegt. Gehört zur "Kommunikation" nämlich dazu.
 

Tobse

Top Contributor
[...] Aber unbestreitbar haben die Leute hier Wissen. Wenn du deren Wissen als nichtig einschätzt, wie etwa "Der Quellcode wirkt für mich nicht als hätten das besonders gute Programmierer gemacht" oder "Die Arbeit ist aber nicht so toll oder siehst du jemanden damit Entwicklen.", dann darfst du auch nicht böse sein, [...]
Den selben gedankten hatte ich auch.

@sFee: Wenn wir alle keine Ahnung haben dich fälschlicherweise als zu unerfahren einschätzen, dann verstehe ich nicht, warum du immernoch so viel Wert auf unsere Aussagen legst. Sagte mir ein Viertklässler sagt ich beherrschte die Integralrechnung nicht, ginge mir das auch mal sonst wo vorbei.

sFee hat gesagt.:
Aber ich will eine eigene Sprache entwickeln und wenn ich dann Fragen habe, geben mir die Leute zu verstehen, das ich zu Jung bin.
Wenn du auf einen Berg steigen willst und einen erfahrenen Bergsteiger um Hilfe fragst, bist du dann auch beleidigt wenn er dir sagt "Du bist zu unsprotlich, du hälst es nicht bis zur Spitze durch. Du musst noch XY Zeit trainieren."? Denn genau das passiert hier.
 

Flown

Administrator
Mitarbeiter
Ist es denn nicht möglich eine Sprache wie Java einfach zu entwickeln?
Möglich zu entwickeln ja, einfach nein.

Grundsätzlich ist es im Forum so, dass hier bei konkreten(!) Fragen gern mit Rat und Tat dir zur Seite gestanden wird. Aber eine so breite Fragen wie: Wie baue ich ein ganzes Projekt (Compiler, Parser, ...), wie glaubst du sollen wir dann helfen? Es gibt nun mal keinen einfachen Weg so etwas zu bauen, mal eben so.

Grundsätzlich: kannst du "simpel" Sprachen kreieren, die nur Rechnen können und Funktionen schon zur Compilezeit existieren ohne indirekte Rekursion, etc. Wenn jetzt dynamic dispatching, Vererbung, Threading, ... noch dazu kommen, dann wird es ein ausgewachsenes Projekt, dass sehr viel Wissen und Zeit benötigt es umzusetzen.
Versteh mich nicht falsch: Ich habe Compilerbau auf der Uni gehabt (da war aber auch schon sehr viel vorgegeben) und schon über 15 Jahre Erfahrung mit Programmierung (speziell Java) und könnte es trotzdem nicht von Grundauf "neu" schreiben, ohne mich ernsthaft in die Materie einzulesen.
 

cefour

Mitglied
@sFee deine Entschuldigung ist angenommen. Natürlich kannst du das alles lernen und du kannst durchaus innerhalb weniger Tage eine kleine Programmiersprache implementieren. Aber Sprachen wie Java oder C++ ist zuviel und ich erkläre dir auch warum:
Eine Programmiersprache würdest du normalerweise mit Antlr oder yacc und einen beliebigen Lexer. Dadurch musst du dich wirklich nur noch mit dem Sprache Design und der Code Generierung befassen.
Die Krux an Java oder C++ ist das die Sprachspezifikation sich mit diesen Parsergeneratoren nicht Parser lassen ( stand 2014,. Antlr hat beachtliche Fortschritte gemacht). Somit wird es fast unmöglich für dich eine Sprache in dem Umfang zu implementieren.
Entwerfe kleine Sprachen und Parser sie mit den vorgeschlagenen Tools. Ist das geschaft kannst du dich an die Code Erzeugung setzen. Wenn du soweit bist, hast du einiges mehr an Erfahrung und dann sollte es sich tatsächlich nur noch um <3 Jahre handeln.
Die größte Schwierigkeit ist, du musst bereit sein über einen sehr langen Zeitraum keine Ergebnisse deine Arbeit zu sehen und dies ist ein wirklicher Motivationskiller. Das muss du aushalten lernen.
Und für Fragen stehen wir alle bereit.
 

CSHW89

Bekanntes Mitglied
@sFee So jetzt muss ich aber auch noch meine bescheidene Meinung dazu geben und vielleicht ein paar Typs für dein Unterfangen geben. Doch zunächst mal, Schlag dir ausm Kopf eine Sprache wie Java komplett selbst zu entwickeln. Und glaub mir, ich weiß wovon ich rede. Ich habe selbst schon mehr als ein halbes dutzend Programmiersprachen geschrieben. Bspw. schreibe ich hobbymäßig eine Sprache mit ähnlichem Umfang wie Java seit Juni 2014 (hab gerade nochmal nachgeguckt). So langsam kommt tatsälich die Zeit, in der ich die Sprache wirklich benutzen könnte, nach 2 Jahren!
Ich möchte dich aber nicht entmutigen, denn es gibt durchaus Möglichkeiten eine Programmiersprache in deutlich weniger Zeit zu entwickeln. Unterklassen von Sprachen wie Haskell (ohne Typsystem zur Compilezeit) oder Python können mit sehr viel weniger Aufwand programmiert werden. Vor allem, wenn das Ziel ist, den Code "nur" zu interprietieren, und ihn nicht in Bytecode oder ähnliches umzuwandeln.
Aber selbst eine ähnliche Sprache wie Java kann man in ein paar Monaten entwickeln, wenn bspw. der Compiler von Java selbst einem vieles abnimmt. So könnte man eine Sprache entwickeln, dessen Code sehr ähnlich zu Java ist, und diesen in Java-Code umwandeln. Nun jagt man den Java-Compiler rüber, und gibt alle gefundenen Fehler weiter. So muss man kein Typsystem programmieren, was bei Java-änhlichen Sprachen mit das schwierigste und aufwändigste ist. Da lässt sich natürlich streiten, ob mans noch ein echten Compiler nennen kann, oder nicht eher ein Precompiler.

Die Krux an Java oder C++ ist das die Sprachspezifikation sich mit diesen Parsergeneratoren nicht Parser lassen
Welche Fälle meinst du da genau? Wenn ich mich recht erinnere, gibts bei C++ Fälle, bei denen die Syntax von der Semantik abhängt. Weiß aber nicht mehr genau, wo das war. Aber bei Java? Da fällt mir höchstens das Casten "'(' type ')' expression" ein, was ich nie hinbekommen habe. Man hat ja meistens immer noch eine Regel in expression mit "'(' expression ')'". Da kam es dann immer zu Konflikten. Ich dachte aber Java wäre eine LALR(1)-Sprache.

lg Kevin
 
Zuletzt bearbeitet:

cefour

Mitglied
Dein Beispiel des cast Problems ist so ein Problem. Ein Parser Generator kann nicht ohne weiteres entscheiden welche Regel produziert wird. Der Java 7 Compiler ist z.B ein von Hand geschriebener LALR Parser und das genau aus solchen gründen. Du kannst dir auch die Statement Regel von Java anschauen.
 

cefour

Mitglied
Wenn du die Java Grammatik anschauen möchtest im appendix der Teajay Arbeit ist sie vorhanden. Es ist kenntlich gemacht was teajay Part ist. Des Weiteren ist die Grammatik dort schon soweit es geht bearbeitet um mit einen LL Parser geparst zu werden.
 
X

Xyz1

Gast
Ich bin ehrlich gesagt noch nicht so weit in der Arbeit vorgedrungen, bis zu Grammatik. Das ist aber auch teilweise dem Wetter heute geschuldet. Ich hoffe, ihr sitzt alle in der Sonne. :mad:
 

Ähnliche Java Themen

Neue Themen


Oben