 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Bauchredner
Anmeldungsdatum: 11.01.2008 Beiträge: 57
|
Verfasst am: 11.01.2009, 14:13 Titel: Programmiersprache selbst entwickeln |
|
|
Hallo mal wieder!
Als ich im Internet etwas rumgeforscht hab, hab ich folgendes entdeckt: http://de.wikipedia.org/wiki/Esoterische_Programmiersprache
Da hab ich gedacht, warum nicht auch mal ne Programmiersprache entwickeln? Ich weiss, was hier auf mich zu kommt und habe durch Selbstrecherche das http://andremueller.gmxhome.de/toc.html gefunden. Zeit werd ich wohl genug finden. Aber habt ihr sonst noch Informationen, wie man eine Programmiersprache entwickelt?
Danke zum Voraus,
Bauchredner _________________ Zu meiner Homepage |
|
Nach oben |
|
 |
Lutz Ifer Grillmeister

Anmeldungsdatum: 23.09.2005 Beiträge: 555
|
Verfasst am: 11.01.2009, 16:24 Titel: Re: Programmiersprache selbst entwickeln |
|
|
Bauchredner hat Folgendes geschrieben: | Zeit werd ich wohl genug finden. |
Das glaube ich eher nicht.
Eine komplette Programmiersprache allein zu entwickeln auf dem Wissensstand, auf den ich jetzt mal einfach so einschätze, könnte ohne weiteres zur Lebensaufgabe werden.
hf & gl. _________________ Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft. |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 11.01.2009, 17:00 Titel: |
|
|
Assembler brauchst nicht unbedingt, und die Implementierung eines Interpreters für eine esoterische Programmiersprache (natürlich trotzdem abhängig davon, welche...) ist in vertretbarer Zeit durchaus machbar. Es bietet sich z.B. der 19942375. Brainfuck-Interpreter o.ä. an.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Bauchredner
Anmeldungsdatum: 11.01.2008 Beiträge: 57
|
Verfasst am: 11.01.2009, 18:24 Titel: |
|
|
Oder ich mach nur einen oder zwei Begriffe, die man dann gebrauchen kann. Nur wo erstelle ich den Code für eine neue Programmiersprache? Im Texteditor? Im DOS Eingabefenster? Oder wär dann das Erlernen einer Assemblersprache doch besser? _________________ Zu meiner Homepage |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4703 Wohnort: ~/
|
Verfasst am: 11.01.2009, 19:11 Titel: |
|
|
Ich denke mal, am einfachsten wird es sein, einen Interpreter zu schreiben; also das Programm, das in deiner Sprache geschrieben sein soll, als normale Textdatei zu speichern und diese dann durch den Interpreter zu jagen. Die erste Frage für mich lautet in diesem Fall: Wie gestalte ich die Sprache, dass ich sie möglichst leicht parsen kann? _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 11.01.2009, 22:13 Titel: |
|
|
Also wenn du fragst wo du den Code eingeben must, und dann noch wissen willst wie man eine Programmiersprache schreibt...
Selbst einen einfachen Interpreter mit vertretbarer Syntax und Expression-System ist alleine sicherlich nicht in unter 4 Wochen zu realisieren.
Schau dir doch mal an wieviel Sourcecode nur der FBC hat (und das ist noch nicht der Assembler/Linker!!): http://www.ohloh.net/p/543
Zitat: | Codebase 493,599 [zeilen]
Effort (est.) 134 Person Years
[...]
$ 7,369,630 [entwicklungskosten] |
|
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4703 Wohnort: ~/
|
Verfasst am: 12.01.2009, 00:19 Titel: |
|
|
Es hängt natürlich davon ab, was die Sprache alles können soll. fbc ist ja schließlich schon sehr umfangreich.
Zunächst einmal würde ich mich auf einfache Zahlenberechnung, Schleifen und Bedingungen konzentrieren; in LISP-Syntax geht das sogar relativ flott. Danach fängt die Arbeit erst an, aber ausbauen kann man das ja dann nach und nach (sofern Durchhaltevermögen vorhanden ). _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 12.01.2009, 11:03 Titel: |
|
|
Also .. ich habe schon mehrere Interpreter geschrieben, kann kann dir nur sagen, das du dir erstmal gedanken darüebr machen solltest, wie dein Sourcecode aussehen soll.
Schreibe dir einfach mal ein Textfile mit befehle zurecht. so als wenn du einen Sourcecode für FB schreiben würdest. Wenn dir deien Syntax dann gefällt, und du zufrieden mit dem aufbau der Befehle bist, vorallem so, das sie syntax gleich bleibt. dann kannst du anfangen einen Parser zu schreiben, der dir diesen Sourcecode einlist. Dabei sollte der Parser die Daten so lesen, das du anschliessend alle nötigen parameter zusammen hast, um einen Befehl ausführen zu können.
Anfangen würde ich beim parser mit dem Einlesen. Sprich. Du beginsnt mit einem Main(), das die erste Datei, welche du deinem eigenem Compiler übergibst, weiterreicht. Wenn du compileroptionen eingeben möchtest, oder dies später mal vor hast, kannst du diese zusätzlich in Main() verarbeiten.
Die Datei,w elche gelesen werden soll, übergibst du anschliessend einer Lesefunktion, die dafür sorgt, das der quelltext eingelesen und dessen Befehlszeilen zerlegt werden. Die Lesefunktion für eien Datei sollte dabei absichtlich seperat sein, udnnicht im Main, damit spätere includfiles, bzw Befehle die weitere Datein includieren möchten, ebenfalls die selbe Dateilese-funktion aufrufen können, udn du dir 2x die selbe arbeit, sparen kannst.
In dieser lesefunktion werden anschliessend die zerlegten befehlszeilen (die je nach deiner syntax zerteilt werden), einer ausführungs oder umsetzungsfunktion zugewiesen. Dort wird anschliessend die Befehlszeile soweit zerlegt, und aufbereitet, das sie später verabrietet werden kann.
Dabei ist noch hinzuzufügen, das diese funktion rekrusiv arbeitet.
Als beispiel von BASIC Lang:
Ist ein Befehl, der relativ unkomplex ist, und nicht einen Text ausgibt. Dabei ist Print ein statement, das einen Wert ("a") benötigt. Hast du jedoch komplexe funktionsaufrufe
Code: | Print Funktion("a", Subfunktion("b")) |
Dann musst du natürlich zuerst die Subfunktion verarbeiten, so das diese ihre rückgabe an die Funktion weiter leiten kann, welche wiederum ihr ergebniss an Print weiterreicht.
Darum ist eine Rekrusive verarbeitungsfunktion sinvoller, da solche parsingmechanissmen einfacher mit eienr funktion zu lösen sind, als mit mehreren Komplexen.
Dies ist übrigens der Schwierigste teil an einem Parser.
Nachdem du nun die einzelstukturen auseinander gefriement hast, musst du diese an eine verarbeitungsfunktion weiter reichen, welche die übergebenen parameter und den Befehl "SubFunktion" (aufzurufender befehl) und "b" (Parameter) verarbeitet. bzw. in ein ergebniss umsetzt.
Hier teilt sich die aufgabe in 2 funktionen auf. Einmal eine eigene funktiosn udn routine ausführungsfunktion, welche die funktion einlist, und deren quellcode erneut über den verarbeitunsprozess jagt, um das ergebniss zu modelieren. und anschliessend an zurückgibt, und die zweite, welche interne Compilerbefehle wie "Print", "Cls", "Open", usw. verarbeitet. Solche Befehle sind feststehen, und müssen direkt vom compiler / Interpreter verarbeitet, bzw umgesetzt werden.
Beim Interpreter würde dieser jetzt den Befehle direkt ausführen und verarbeiten. Beim Compiler wird das ganze in ASM oder direktem Maschinencode umgesetzt und in eine ausgabedatei geschrieben.
Und damit ist das dann schon alles geschaft, und dein Interpreter / compiler arbeitet.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 12.01.2009, 15:16 Titel: |
|
|
also ne interpretierte sprache mit (wenn erwünscht furchtbar abgedrehter) syntax ist eigentlich super einfach, du baust dir drei vier grundelemente, dann noch zwei rekursionskonstruktoren, implementierst dir ne map für den systemzustand und baust für jedes grundelement und jeden konstruktor die übersetzung auf den systemzustand und du kannst anfangen zu programmieren. Ist überhaupt nicht viel stress und könnten die meisten sogar schaffen.
wenn man allerdings bei ner programmiersprache an ne vollwertige sprache denkt, in der leute auch wirklich leistungsfähige applikationen schreiben können und nicht nur grad ein paar ausdrücke auswerten, dann sieht das ganze anders aus. das ist klar. Bis man da mal was in ne vernünftige runtime-umgebung gebracht hat wo's auch funktioniert, dann noch das kann schon viel arbeit sein, und dann brauchts aber für ne taugliche programmiersprache die auch wirklich anklang finden soll ne hinreichend gute API, das ist unter anderem auch noch ein punkt bei dem freebasic noch viele mankos hat.
aber nur ne kleine funktionale auswertungssprache, das ist in der tat einfach. syntax-check ist jetzt auch nicht so schwer, gibt fertige LL-parser die das übernehmen können, man muss sich halt nur vorher in logische syntax einarbeiten, wenn man gut ist und vernünftige lernmaterialien hat *kann* man das eingeschränkt in ner woche schaffen, wenn man das thema breiter auslegt kommt man da aber problemlos auch auf n halbes jahr. Aber aus studiumserfahrung - wir hatten im ersten und zweiten semester jeweils eine kleine Logik-Vorlesung, und anderthalb entsprechende vorlesungen zu formaler modellierung im dritten semester, und da haben wir uns mehrere auswertungssprachen selbst gebastelt, deren auswertung zu implementieren wäre überhaupt kein problem gewesen. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
frebas
Anmeldungsdatum: 20.06.2008 Beiträge: 245
|
Verfasst am: 12.01.2009, 18:24 Titel: |
|
|
lol:
Code: | Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook.
Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. |
Das ist ein Hello World Programm! Die Sprache heißt Ook! und soll für Orang-Utans verständlich sein. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4703 Wohnort: ~/
|
Verfasst am: 12.01.2009, 18:57 Titel: |
|
|
Whitespace ist viel cooler - einfach nur ausdrucken, und der Quelltext ist vor jedem Spionageangriff sicher. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 12.01.2009, 21:03 Titel: |
|
|
frebas hat Folgendes geschrieben: | lol:
[...]
Das ist ein Hello World Programm! Die Sprache heißt Ook! und soll für Orang-Utans verständlich sein. |
Der Bibliothekar der Unsichtbaren Universität (Ankh Morphork, Scheibenwelt) hätte daran sicher seine freude
Terry Pratchett lässt grüßen.
mfg
The_Muh _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
Eisbaer

Anmeldungsdatum: 16.10.2004 Beiträge: 354 Wohnort: Deutschland,Bayern
|
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|