Programmiersprache



  • Nöö. Wenn die Sprache was Neues Gutes zu bieten hat, kann man drüber nachdenken. Und zwar, das OS auf die Sprache mit der Sprache aufzubauen, das heißt, erstmal wieder jeden bisherigen Code außer dem bootsector umzuschubsen.



  • volkard schrieb:

    Nöö. Wenn die Sprache was Neues Gutes zu bieten hat, kann man drüber nachdenken. Und zwar, das OS auf die Sprache mit der Sprache aufzubauen, das heißt, erstmal wieder jeden bisherigen Code außer dem bootsector umzuschubsen.

    Über diesen Punkt denke ich gerade nach. Dazu müsste man dann sich die Sprache so umfangreich entwerfen, dass man den Compiler in der Sprache selbst schreiben kann, aber so einfach, dass man es mit nicht allzu großen Umständen schafft.

    Vielleicht sollten wir erstmal uns Gedanken machen, was wir haben wollen:

    -Bedingte Sprünge (IF-THEN-ELSE) sind unerlässlich.
    -Welche Typen? (auf jeden Fall Integers und Strings)
    -Welche Schleifen? (Ich würde erstmal sagen: WHILE unbedingt, weitere nach Bedarf nachrüsten)
    -Prozeduren/Funktionen? (Funktionen mit rekursiver Ausführung und Rückgabe sollte man schon haben)
    -Welche Standard-API (besonders Input/Output)
    -GOTO? 😃

    Zu Henne und Ei:
    Man könnte am Anfang einen kleinen Compiler schreiben, der aus dem Code einfachen C-Code generiert. Mit diesem könnte man dann einen Compiler in der Sprache selbst übersetzen.

    Die grundsätzlichen Prinzipien von Compilern sind mir bekannt, allerdings müsste ich wohl einiges auffrischen. Ich würde das Projekt umsetzen, aber Mitstreiter könnte ich sicherlich gebrauchen.



  • earli schrieb:

    aber so einfach, dass man es mit nicht allzu großen Umständen schafft.

    Ähm. Und dann ist sie aber schlechter als C oder C++ und bringt keinen Vorteil.
    Ich würde zunächst von der Nullterminierung weggehen, verlangen, daß Funktionen zur Compilezeit rechnen können, und nettes Exceptionhandling haben wollen.



  • Will ja kein Spielverderber sein, aber...

    Was hat Sprachenentwicklung und Compilerbau mit OS-Development zu tun?
    IMHO nichts ->Ist das Thema evtl. nicht besser in RUDP aufgehoben?

    Und mal kurz fuer euch zum selber Ueberdenken:
    Was wollt ihr eigentlich konkret erreichen? "eine Programmiersprache" (/compiler) ist reichlich allgemein und mir draengt sich der Verdacht auf, dass die Mehrzahl der Beteiligten hier im Prinzip aneinander vorbei redet, bzw. komplett unterschiedliche Zielsetzungen und Motivationen hat.
    Die Diskussion ueber grundlegende Ziele und Kriterien solltet ihr vielleicht vor konkreten Vorschlaegen an den Anfang stellen.

    Last but not least um die Ernsthaftigkeit und Erfolgschancen abzuschaetzen: Hat ueberhaupt schon mal jemand von euch sich tiefgehender mit Theoretischer Informatik, Sprachentheorie, Compilerbau, etc. befasst oder sind die Massstaebe eher nur Erfahrungen und Ideen, die bei der Benutzung anderer Sprachen entstanden sind?
    Ihr solltet bedenken: Eine vernuenftige (Programmier)Sprache zu entwerfen und dazu einen Compiler zu bauen ist alles andere als trivial und kann von der Komplexitaet ganz locker dieses ganze OS-Projekt uebersteigen. ... (*auf Finger beiss* in dem Zusammenhang draengt sich mir irgendwie ein rant gegen vieler Leute Lieblingsprogrammiersprache hier geradezu auf 🤡 )



  • Nobuo T schrieb:

    Last but not least um die Ernsthaftigkeit und Erfolgschancen abzuschaetzen: Hat ueberhaupt schon mal jemand von euch sich tiefgehender mit Theoretischer Informatik, Sprachentheorie, Compilerbau, etc. befasst oder sind die Massstaebe eher nur Erfahrungen und Ideen, die bei der Benutzung anderer Sprachen entstanden sind?
    Ihr solltet bedenken: Eine vernuenftige (Programmier)Sprache zu entwerfen und dazu einen Compiler zu bauen ist alles andere als trivial und kann von der Komplexitaet ganz locker dieses ganze OS-Projekt uebersteigen. ... (*auf Finger beiss* in dem Zusammenhang draengt sich mir irgendwie ein rant gegen vieler Leute Lieblingsprogrammiersprache hier geradezu auf 🤡 )

    Danke für die Kritik!

    Sprachtheorie (reguläre und kontextfreie Sprachen werden wir hauptsächlich brauchen) ist mir geläufig, wie auch andere Grundlagen (Komplexitätstheorie, Berechenbarkeitstheorie). Die Grenzen liegen also für meinen persönlichen Beitrag eher da, wo der Umfang an langweiliger Arbeit soweit explodiert, dass es keinen Spaß mehr macht.

    Um mich bei Laune zu halten, müsste halt die Sprache interessant sein und/oder nicht zu viele redundante Features enthalten. Konkret meine ich, dass wir vorerst zum Beispiel keine 30 verschiedenen Typen oder 10 Arten von Schleifen brauchen. Das macht viel Arbeit, bevor die ersten Ergebnisse zu sehen sind. Natürlich kann man nach Lust und Laune die Sprache trotzdem später erweitern.

    Einige praktische Aspekte von Compilern sind für mich allerdings totales Neuland, zum Beispiel Optimierung von Code. Aber sowas werden wir auch kaum exzessiv nutzen oder überhaupt brauchen.



  • Hallo,

    earli schrieb:

    zum Beispiel Optimierung von Code. Aber sowas werden wir auch kaum exzessiv nutzen oder überhaupt brauchen.

    Erhard möchte aber einen Yotta-Kernel und dafür sollte dann schon effizienter Code erzeugt werden. Eigentlich ist effizienter Code generell eine gute Idee.

    Es bleibt IMHO aber die Schwierigkeit das eine neue Programmiersprache mit (ordentlichem) Compiler die Komplexität eines OS schon deutlich übersteigen kann. Für meine Plattform spukten mir auch mal solche Ideen im Kopf rum, heute ist es mir schwierig genug einen Assembler und Linker zu entwickeln.

    Grüße
    Erik


  • Mod

    Es sollte doch auch ganz einfache Ansätze für eine primitive Programmiersprache geben. Wie kann man Studenten so etwas sonst praktisch vermitteln?





  • Erhard Henkes schrieb:

    Es sollte doch auch ganz einfache Ansätze für eine primitive Programmiersprache geben. Wie kann man Studenten so etwas sonst praktisch vermitteln?

    Also bei uns wurde alles vollkommen von Grund auf aufgezogen. Das wurde dann zwar so gemacht, dass nach jeder Stufe die entsprechenden GNU-Tools (flex, bison) verwendet wurden, um in die nächste Stufe einzusteigen. Aber im Prinzip kann jeder Student, der alles mitgemacht hat, komplett von Grund auf einen eigenen Compiler schreiben.

    Problematisch wird es eher dadurch, dass man x86, ELF usw. gut kennen muss, um was PrettyOS-lauffähiges zu bekommen. Das wäre wahrscheinlich echt zu viel Arbeit. Wir haben als Studenten damals Java-Bytecode erzeugt, das ist schon deshalb einfacher, weil die Java Virtual Machine keine Register hat.

    Damit wäre wohl nur noch ein in C geschriebener Compiler für eine limitierte Kunstsprache realistisch, und da stellt sich die Frage, ob sich der Aufwand lohnt.


  • Mod

    @earli: Du hast diesen amüsanten Vorschlag eingebracht. Was wäre die einfachste Variante der Umsetzung? ELF und x86 beherrschen wir hier.
    ELF: siehe http://www.henkessoft.de/OS_Dev/OS_Dev2.htm#mozTocId95189


Anmelden zum Antworten