Was muss ich alles machen um eine eigene Programmiersprache zu entwickeln? Welches Wissen usw? Und welche benutzen Nintendo und Playstation? Welches Konstrukt?

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Die Frage ist zunächst wozu willst du eine eigene Sprache entwickeln? Es gibt eigentlich schon sehr viele Programmiersprachen mit denen du alles erledigen kannst.

Neue Programmiersprachen werden idR erst dann entwickelt wenn neue Technologien entwickelt werden, auf welche andere Sprachen nicht mehr einfach anwendbar sind.

zB wenn du einen Prozessor entwickelst welcher Grundlegend anders arbeitet als bestehende Prozessoren und die gängigen Programmiersprachen die Fähigkeiten des Prozessors nicht gut ausnutzen können.

Eigentlich werden für solche Systeme oft C/C++, C#, Java usw verwendet.

Franz1957  29.12.2022, 20:07

Neue Programmiersprachen werden immer wieder von erfahrenen Programmierern entwickelt, die die Schwächen der bisher benutzten Sprachen gut kennen und bessere Lösungen gefunden haben.

Ja, neue Technologien wie Multiprozessorsysteme, verteilte asynchrone Systeme, Roboter usw. können dafür den Anlaß geben. Aber es gibt auch andere Gründe.

Z.B. der Aufwand, Anwendungsprogramme für verschiedene Hardwareplattformen und Betriebssysteme gleichzeitig zu pflegen. Darum wurden Systeme wie Java und C# entwickelt, bei denen das Kompilat auf einem virtuellen Prozessor läuft und dadurch leichter portierbar ist.

Z.B. werden bei der C- und C++-Programmierung bestimmte schwer zu debuggende Programmierfehler (Speicherverwaltung) besonders oft gemacht. Um diese Fehler zu verhindern sind bei der Sprache Rust besondere Sicherheitsvorkehrungen eingebaut worden.

1
Kelec  30.12.2022, 00:37
@Franz1957

Richtig

Aber sie werden eben nicht ohne Anlass zum Spaß geschaffen, wenn man mal esoterische Sprachen außen vor lässt.

0
Franz1957  30.12.2022, 12:12
@Kelec

Zum Spaß wird das sicherlich weniger oft gemacht, denn es ist kein ganz simples Vorhaben. Aber manche bauen zum Spaß komplizierte Flugmodelle oder machen beim Ironman mit. Und falls es ein Lernprojekt ist, kann Spaß dabei nur hilfreich sein. Ich akzeptiere jedenfalls Spaß als völlig ernst zu nehmenden Anlass. :-)

0
Kelec  30.12.2022, 12:38
@Franz1957

Das hängt ganz vom selbst gesteckten Projektziel ab.

Wenn das Ziel ist eine Sprache zu entwickeln dann ist es ein legitimer Grund. Wenn das Ziel etwas anderes ist und man sich denkt da muss man sich eine eigene Sprache entwickeln auch wenns nicht notwendig ist sabotiert man sich damit am Ende sein eigenes Projekt.

Darum habe ich zu Beginn der Antwort auch die Frage gestellt wozu sich der TE die Sprache entwickeln will.

0
Bushmills145  30.12.2022, 13:47
@Franz1957

Wobei Menschen unterschiedliche Ideen davon haben, was "Spaß" vermittelt und macht. Auch wenn dies nicht deine Vorstellung von Spaß ist, bedeutet das nicht, dass Compilerbau anderen keinen Spaß machen muss. Compiler mit praktischer Verwendbarkeit zum Spaß zu bauen ist nicht nur möglich, sondern wird auch gemacht.

0
Bushmills145  30.12.2022, 13:52
@Franz1957

Oh tut mir leid, mein Kommentar sollte eigentlich eine Reaktion auf Kelec sein. Da hab ich mich mit der Zeile vom "Kommentieren" Knopf vertan.

0
Bushmills145  30.12.2022, 14:04
@Kelec

Menschen entwickeln und bauen sogar CPUs aus und zum Spaß (und dem Wunsch, sich Kenntnis anzueignen, was eine Unterform von Spaß sein kann)

0
Kelec  30.12.2022, 14:34
@Bushmills145

Ich glaube du hast das Kommentar falsch verstanden.

Klar kann man Spaß an der Sache an sich haben das ist ja auch nicht verkehrt.

Gemeint war eher, dass niemand einen Compiler machen sollte wenn es unnötig ist und dem eigentlichen Ziel im Weg steht.

0
Kelec  30.12.2022, 14:42
@Bushmills145

Klar habe auch schon mal einen Simulator für eine Z80 CPU gemacht und das quasi auch nur zum Spaß. Das macht ja auch Sinn.

Ist wie gesagt eine Frage des Ziels.

0

Du könntest dich in eine Programmiersprache einarbeiten, bei der die Vorgehensweise fürs Programmieren die ist, den Compiler so zu erweitern, dass daraus eine problemspezifische Programmiersprache wird.

So etwas gibt es. Sogar gratis, und für beinahe jeden beliebigen Computer. Allerdings sind nicht alle von deren Implementationen genauso einsteigerfreundlich: Manche erwarten schon etwas Vorkenntnis. Viele, die so etwas verwenden, haben den Compiler für eine solche Programmiersprache auch schon selbst mindestens einmal geschrieben - aus Neugier und aus Spaß.

Mit der Kenntnis lernst du auf spielerische Art und Weise, was in einen Compiler für eine Programmiersprache, die auf deinen eigenen Ideen fußt, dazu- und hinein gehört. Zusätzlich wirst du deine Programmiersprache auch nicht vollständig neu schreiben müssen, sondern kannst einen solchen Compiler dafür verwenden, um deine Programmiersprache daraus zu machen.

Die Sprache ist nicht so wichtig. Du musst erstmal lernen, wie Programmieren an sich geht. Dann ist das Einarbeiten in die meisten programmiersysteme möglich.

Universitäten bringen z.B. Programmierung mit JAVA oder Python bei, und versetzen ihre Studierenden in die Lage, schnell andere Programmiersprachen zu lernen.

W00dp3ckr  29.12.2022, 10:30

Nebenbei gesagt ist Programmierung heutzutage mehr und mehr ein Zusammenstellen von Funktionen aus verschiedenen Quellen. Wenn Du einen Computer baust, designst Du auch keine Chips mehr, sondern Du kaufst Dir Mainboard und Prozessor. Du wirst auch das Betriebssystem nicht selbst erstellen, außer wenn Du ganz, ganz spezielle Anforderungen hast.

0

Als erstes sie erfinden und dann dem Programm klar mach was es eo tun soll. Das ganze schaffst du nicht alleine. Da brauchst du Profis die dir helfen. Und ein Erfolg ist nicht garantiert.

Franz1957  30.12.2022, 12:36

Klingt wie: "Überleg' lieber nochmal, ob Du wirklich Fußball spielen willst"...

0
Bushmills145  30.12.2022, 13:41

Ich sehe keinen Grund, warum das nicht alleine geschafft werden kann. Schließlich haben das bereits viele alleine geschafft.

0
Bushmills145  30.12.2022, 15:57
@Raider22

Ein bissel Geübter kann die Anfänge eines Compilers - also dass dieser bereits Quellcode ausführbar machen kann und, wichtig, verwendet werden kann als Werkzeug, um an ihm selbst weiter zu schreiben, also sich selbst zu erweitern, in etwa zwei Tagen schreiben. Beginnend von scratch, also mit der ersten Zeile Code.

Ein weniger Geübter wird dafür zugegebenerweise länger benötigen. Aber "ewig" ist eine ganz andere Größenordnung.

0

Dafür mußt Du dies lernen:

  • wie man die Grammatik einer Programmiersprache beschreibt,
  • wie man ein Programm schreibt, das einen eingegebenen Programmtext prüft, ob es dieser Grammatik entspricht, und falls nicht, Fehlermeldungen ausgibt.
  • wie man den Programmtext, wenn er der grammatisch fehlerfrei ist, sinngemäß richtig in eine schon existierende Sprache übersetzt (z.B. C, oder Assembler, oder den Befehlscode irgendeiner virtuellen Maschine, z.B. Java-Bytecodes).

Das Fachgebiet, in dem man diese Tätigkeit lernt, nennt sich Compilerbau.

https://www.qwant.com/?q=compilerbau

https://www.qwant.com/?q=writing+your+own+computer+language

Empfehlung: Schau Dir an, wie verschiedene Programmiersprachen ein und dieselbe Aufgabe beschreiben. Erkundige Dich, für welche Art von Aufgaben diese Sprachen typischerweise verwendet werden, und wozu ihre unterschiedlichen Ausdrucksmittel gut geeignet sind und wozu weniger gut.

https://rosettacode.org/wiki/Category:Programming_Languages

https://rosettacode.org/wiki/Category:Programming_Tasks

Tip: Eine Programmiersprache, die sich zum Experimentieren mit eigenen Grammatiken besonders gut eignet, ist Raku.

https://docs.raku.org/language/grammar_tutorial

Franz1957  30.12.2022, 13:40

Was die Spielkonsolen angeht, weiß ich wenig, gehe aber davon aus, daß "schnelle" hardwarenahe Sprachen wegen des großen Rechenaufwands in der 3D-Grafik unverzichtbar sind. Ebenso wichtig sind neben den Sprachen aber auch die Schnittstellen/APIs der Grafikbibliotheken.

https://en.wikipedia.org/wiki/Video_game_programming (-> Abschnitte 'Programming languages' und 'APIs and libraries'.)

https://de.wikipedia.org/wiki/Spieleprogrammierung (-> Abschnitte Programmiersprachen' und 'Programmierschnittstellen'.)

Ich empfehle: Halte in den Jobabgeboten und in der Werbung der Ausbilder nach Angaben Ausschau. Hier z.B. werden C++ und C# genannt. https://www.sae.edu/deu/games-programming-ausbildung-studium/

Offenbar bieten die Hersteller für die Spieleentwickler eigene Development Kits an, die auch spezielle Hardware umfassen. https://en.wikipedia.org/wiki/Game_development_kit

0