eigene Programmiersprache
Hallo,
weiss jemand, wie man seine eigene Programmiersprache entwickeln kann? Ich würd gern eine esoterische entwickeln. Braucht man vorraussetzung in anderen Sprachen? Was muss man dafür können?
Gibs dafür eigene Sprachen?
Bitte um Rat!
MfG
TByte
Antwort schreiben
Antwort 1 von Ambulanz vom 12.01.2020, 17:49 Options
Schau dir die einer CPU zugrunde liegende Architektur an, mach dich kundig über "Boolesche Algebra", vielleicht auch über das Werk der Tochter Lord Byrons, Lady Ada, sowie über die Bedeutung von "mnemonics" in der Programmiersprache Assembler.
Dann könntest du noch "The C Programming Language, Second Edition" lesen.
Antwort 2 von der-bettler vom 12.01.2020, 17:52 Options
warum so hoch stapeln?
lerne doch erst mal vorhandene sprachen und setze dich mit der technik auseinander
wenn ich mich nun aber irre, du weißt wie du speicherbereiche ansteuerst, befehlssätze von cpu`s kennst und maschienen sprachen und höhere sprachen auswendig kennst und du ein team und viele finanzielle mittel hast kannst du dir natürlich auch eine eigene sprache entwickeln
nur müsstest du dann hier wohl nicht fragen.
mfg der-bettler
Antwort 3 von TByte vom 12.01.2020, 18:07 Options
Zitat:
du weißt wie du speicherbereiche ansteuerst
Jop, weiss ich,
Zitat:
befehlssätze von cpu`s kennst und maschienen sprachen
Kann man noch lernen
Zitat:
höhere sprachen auswendig kennst
Naja, nicht das ganze, aber ich glaube genug c++, und wie gesagt: Kann man noch lernen
Zitat:
höhere sprachen auswendig kennst
Ich kenn ein paar Leute mit den entsprechenden Vorraussetzungen, Und wozu gibt es Bankkredite?
Also, mal angenommen, ich kann sowas und hab die entsprechenden mittel, wie stell ich das jetzt an?
@ Ambulanz:
muss man alles wissen? Also gibt es denn keine besondere Progeamme dazu?
Ps:
So wie ihr das beschreibt, könnt ihr das anscheinend!
Antwort 4 von TByte vom 12.01.2020, 18:09 Options
Sorry, ich meinte:
Zitat:
ein team und viele finanzielle mittel hast
Antwort 5 von Ambulanz vom 12.01.2020, 18:16 Options
Tja,
ich kenne niemanden, der ein derartiges Unterfangen starten würde, ohne die Grundvoraussetzungen" von der Pieke auf gelernt" zu haben.
Keine Grundlagen == Kein Erfolg.
Antwort 6 von TByte vom 12.01.2020, 18:23 Options
Was vertehst du den unter Grundlage und unter von der Pieke auf?
Antwort 7 von Ambulanz vom 12.01.2020, 18:38 Options
Du könnest dir natürlich möglicherweise jede Programmiersprache auf z.B. "Esoteric" trimmen, in dem du bspw. in C simple #define-Präprozessordirektiven verwendest.
Dann ersparst du dir womöglich die Beschäftigung mit Binärcode. Und das "sich damit beschäftigen" meine ich mit "von der Pieke auf".
Antwort 8 von TByte vom 12.01.2020, 18:44 Options
Irgensein Typ auf der Welt muss doch ein Programm geschrieben haben, womit man Programmiersprachen programmiert.
Aber wenn man einen Compiler programmieren kann, kann man doch auch die Sprache programieren, die compiliert werden soll.
Und somit meine nächste Frage: Wie programmiert man einen Compiler?
Antwort 9 von Ambulanz vom 12.01.2020, 18:55 Options
Der Binärcode (auch Maschinensprache genannt) ist die Grundlage.
Aus diesem entwickelten sich Assembler- und Compilersprachen.
Vielleicht fängst du mit
AOA von Randy Hyde an. Sehr empfehlenswert.
Antwort 10 von Friedel vom 12.01.2020, 19:00 Options
Du solltest dir erst mal überlegen, was du machen willst. Was soll denn eine esoterische Programmiersprache sein und wozu soll sie brauchbar sein?
Eine Programmiersprache zu entwickeln ist nicht schwer. Schwer wird es erst, dieser Programmiersprache irgendwelche praktischen Eigenschaften zu geben und einen Interpreter zu entwickeln, der das auch alles umsetzt. Ob das ganze dann irgendwie sinnvoll oder erfolgversprechend ist, hängt u.a. davon ab, ob es irgend was besser oder einfacher kann, als bekannte Programmiersprachen und die dazugehörigen Interpreter.
Antwort 11 von Doc-Jay vom 13.01.2020, 10:31 Options
Weißt du eigentlich was eine esotherische Programmiersprache ist?
Was du machen kannst: lerne eine der üblichen Programmiersprachen, z.B. C++ oder Java, und schreibe in dieser Programmiersprache einen Interpreter für deine Programmiersprache.
Aber zu allererst befasse dich mal mit den Grundlagen der Informatik. Nur weil du einen Rechner einschalten kannst bist du noch lange kein Informatiker.
Ich mußte erst Informatik studieren um überhaut wirklich verstehen zu können was eine esotherische Programmiersprache ist...
Der Doc
Antwort 12 von TByte vom 13.01.2020, 12:21 Options
1. Ich weiss flüchtig was eine esoterische ist, nähmlich eine exoische, eine etwas seltsame eben.(Die seltsamste sollte ja wohl Brainfuck2D sein).
2. Noch ne Frage: Was ist denn der Unterschied zwischen Assembler und Compilersprachen?
3.: Ich wederhol meine alte Frage: Kann ich denn in einem C++ buch lernen, wie ich eine Interpreter programmiere?
Antwort 13 von Doc-Jay vom 13.01.2020, 14:52 Options
Kann nur wiederholen: Lern erstmal eine normale Programmiersprache! Und die Grundlagen der modernen Informatik.
DANN Kannst du daran denken eine eigene Programmiersprachen zu erfinden.
Brainfuck IST eine sehr seltsame Programmiersprache, das stimmt, die aber zu allem erstaunen alle Anforderungen an eine Programmiersprache erfüllt. Vollständigkeit, Abgeschlossenheit,, ... sind nur zwei der Anforderungen. Und bevor du nicht weißt was das ist vergiss es besser.
Und der Begriff "esotherische Programmiersprache" hat nix mit "seltsam" zu tun. Einige Befehle in C++ sind auch sehr seltsam!
Mal zur allgemeinen Erklärung zum Thema Programmiersprachen
Ein Prozessor selbst versteht nur eine Folge von Nullen und Einsen als Befehle, logisch. Das ganze nennt man "Maschinensprache".
Da sich kein Mensch die zigtausend Kombinationen von Nullen und Einsen merken kann hat man diesen Kombinationen sog. Mnemonics gegeben, zu Deutsch Gedächtnisstützen. Aus "00101001010..." wird dann zum Beispiel "LDA $ff76".
Und diese Mnemonics werden heute allgemein als "Assembler" bezeichnet.
Um jetzt zum Beispiel eine einzelne Textzeile auf dem Bildschirm auszugeben ist eine ganze Reihe von Assemblerbefehlen notwendig. Mal abgesehen von den ganzen Umgebungsparametern. Auch eine einfache Adition benötigt eine ganze Reihe von Assemblerbefehlen.
Aus diesem Grunde hat man die sog. Hochsprachen wie C, C++, Pascal, Basic, Prolog, Lisp, Fortran, und die tausend anderen Sprachen entwickelt. In diesem Programmiersprachen kann man nun eine Textzeile mit einem einzigen Befehl auf den Bildschirm zaubern, z.B. cout << "ich bin ein Programmieranfänger"
Da der Prozessor aber nur nullen und einsen versteht müssen die Befehle der Hochsprache in die Maschinensprache übersetzt werden, und das macht der Compiler. Der macht also aus einem "Cout" eine Folge von zig Assemblerbefehlen. Wobei er sich auch gleichzeitig um so komplizierte Sachen wie dynamische Adressbereiche, Anpassung auf einen speziellen Prozessor, Anpassung an das Betriebssystem, Optimierungen im Befehlsablauf, Einbindung grafischer Bibliotheken und so weiter kümmert.
Was am Ende aus dem Compiler rauskommt ist eine ausführbare Datei, die direkt auf einem Computer läuft.
Es gibt auch noch Interpreter, die ein Programm Zeile für Zeile übersetzen und direkt ausführen.
Das war das ganze in absoluter Kürze erklärt. Viel Spaß beim Programmieren eines Compilers für eine esotherische Programmiersprache. Ich bin auf das Ergebnis gespannt.
In diesem Sinne
Der Doc
Antwort 14 von 0-1 vom 13.01.2020, 18:44 Options
Hi,
Um die Frage nach den Compiler-Generatoren zu beantworten: google mal nach "lex" und "yacc", ich glaube in der Wikipedia findet sich auch was brauchbares. Open-Source wären dann flex + bison.
CU
Gehe ich eigentlich recht in der Annahme, dass die diesem Thread zugrundeliegende Frage (auch?) ein schlechter Scherz ist?
Antwort 16 von Doc-Jay vom 14.01.2020, 07:52 Options
Glaub ich weniger! Es gibt Menschen die wirklich glauben, sie seien Computerprofis, nur weil sie einen Computer einschalten können.
Genauso wie es Leute gibt die auf einer Konsole tolle Rennfahrer sind und glauben sie könnten in Realität AUto fahren, dann aber nicht wissen wo die Kupplung ist.. ;-)
In diesem Sinne
Der Doc
Wenn einer, der mit Mühe kaum
verstanden hat des Programmes Baum,
glaubt dass er Programmierer wär,
der irrt sich SEHR!
Antwort 17 von kicia vom 15.01.2020, 06:55 Options
Hallo TByte,
vielleicht war Dein Vorhaben so wie Du es formuliert hast tatsächlich etwas zu ehrgeizig, aber Du kannst ja zumindest ein Programm schreiben, daß eine Textdatei ausliest und dort Anweisungen erkennt und umsetzt.
Vielleicht kann man das dann Scriptsprache nennen und Dein Programm einen Interpreter. Das ist auf jeden Fall machbar und macht Spaß.
Ich empfehle einfach mal in Wikipedia mit dem Wort "Compiler" anzufangen und dann ggf. den Links zu folgen. Bei Bedarf kannst Du dann ja auch noch nach Details googlen.
Es gibt natürlich auch etliche Bücher, die man dazu durcharbeiten kann, (wenn man Lust hat, sich mehrere Jahre mit der Theorie zu befassen), aber das macht nicht soviel Spaß und führt nicht sehr bald zu einem Erfolg.
Gruß und viel Spaß,
kca
Antwort 18 von TByte vom 15.01.2020, 21:02 Options
Hallo kicia, ih glaube du bist der einzige der mich versteht! Kann man das mit C++?
Antwort 19 von 0-1 vom 15.01.2020, 21:12 Options
auch auf die Gefahr hin, mich zu wiederholen: einfacher geht das mit lex + yacc. lex/flex erstellt nach einer Definition einen Parser, ein Programm das eine Textdatei durchgeht und zurückmeldet, was es gefunden hat ( z.B. Schlüsselwort "for", Klammer auf, Variablentyp "int" usw): Mit yacc/bison kann man die Ausgabe des Parsers weiterverarbeiten.
cu
Antwort 20 von Jaja vom 15.01.2020, 21:25 Options
öhm,
lieber TByte - Compilerbau waren bei mir an der TU ganze 2 semester mit insgesammt 8 SWS (semesterwochenstunden) gewesen.. ohne übungen ;)
das ist also nicht ganz ohne.
aber wie hier schon gesagt würde - zum erstellen einer programmiersprache kannst du mithilfe JEDER anderen programmiersprache einen compiler/interpreten basteln.
wie du damit anfängst? naja zunächst denkst du dir eine sprache aus.. das hast du ja schon gemacht, aber sie sollte schon "turing vollständig" sein.
linkaber wenn du das nicht ganz hinbekommst, mags dennoch erstmal klappen.
ein witziges beispiel für so eine spaß- sprache ist
brainfuck.
wie du dort sehen kannst, gibt es keine trennung zwischen daten und befehlen. was daten sind und was befehle ist also kontext-abhängig. ausserdem gibt es nur einen sehr reduzierten befehlssatz..
so minimalistisch solltest du deine sprache auch designen - das mcht es zunächst einfacher!
wenn du also deine sprache fertig hast, kannst du anfangen diese auch in form eines interpreten umzusetzen.
ich schlage dir vor, erstmal einen "deineSprache -> C" interpreter zu schreiben - das dürfte noch das einfachste sein..
dann musst du zwar immer erst deine programme durch deinen interpreter jegen und danach noch den erhaltenen c code compilieren, aber sonst wirst du ewig brauchen (glaub mir ;) ).
das prinzip wäre einfach: du scanst mit deinem interpreten nach schlüsselwörtern und gibst den entsprechenden c code einfach wieder als textdatei aus.. (ganz grob. so simpel wirds schon nicht)
viel spaß