Neue Programmiersprache/Compiler mit sinnvollem Einsatzzweck gesucht



  • Hoi Leute,
    gerade nochmal das Dragonbook überflogen und gewaltiger Tatendrang ein sinnvolles Projekt zu starten.

    In der Vergangenheit habe ich einen Compiler für eine Scriptsprache geschrieben der Bytecode generiert sowie eine passende VM. Desweiteren einen Compiler für ein Subset von C.
    Beides hat Spaß gemacht, erfüllt aber keinen praktischen Nutzen.

    Jetzt bin ich aber kein Forscher dass mir spontan eine supertolle neue Programmiersprache einfallen würde und einen weiteren C/Java Klon möchte sowieso keiner haben.

    Gibt es denn irgendeine interessante Nische für die man einen Compiler entwickeln könnte den irgendjemand nutzen wollen würde?
    Also entweder für eine existierende Sprache oder eine an eine existierende Sprache angelehnte Sprache für eine besonderes Einsatzgebiet?

    Ich möchte das ganze als Privatprojekt neben dem Studium pflegen um nach Abschluss beruflich im Bereich des Compilerbaus zu arbeiten, ergo soll das eine Referenz sein. 🙂

    Danke und Grüße,
    Ethon



  • Ja, ganz klar eine einfache, aber mächtige Sprache zur Paralellitätsanwendungsentwicklung mit Fokus auf Skalierbarkeit.



  • Skym0sh0 schrieb:

    Ja, ganz klar eine einfache, aber mächtige Sprache zur Paralellitätsanwendungsentwicklung mit Fokus auf Skalierbarkeit.

    Gibt es einige, kennste nur nicht.

    interessante Nische

    Man schafft Nischen selber und baut gleich den entsprechenden Prozessor wie http://excamera.com/sphinx/fpga-j1.html .

    einen Compiler entwickeln könnte den irgendjemand nutzen wollen würde?

    Also einen Compiler von jemanden ohne Erfahrung, der mal das Dragonbuch gelesen hat?

    existierende Sprache oder eine an eine existierende Sprache angelehnte Sprache

    Warum sollte jemand was benutzen, was so aehnlich ist wie schon was bestehendes?

    Ansosnten RetroForth. Factor.



  • Skym0sh0 schrieb:

    Ja, ganz klar eine einfache, aber mächtige Sprache zur Paralellitätsanwendungsentwicklung mit Fokus auf Skalierbarkeit.

    Macht das nicht jede neue Sprache? 🙂

    knivil schrieb:

    interessante Nische

    Man schafft Nischen selber und baut gleich den entsprechenden Prozessor wie http://excamera.com/sphinx/fpga-j1.html.

    Hmm, das erfordert viel Kreativität, abgesehen von der Unmöglichkeit für mich einen Prozessor zu bauen. 🤡

    knivil schrieb:

    einen Compiler entwickeln könnte den irgendjemand nutzen wollen würde?

    Also einen Compiler von jemanden ohne Erfahrung, der mal das Dragonbuch gelesen hat?

    Exakt. Habe auch schon Projekte von Amateuren verwendet. 🙂
    Soll ja kein Ersatz für irgendetwas sein. Nur im Ansatz sinnvoll.

    knivil schrieb:

    existierende Sprache oder eine an eine existierende Sprache angelehnte Sprache

    Warum sollte jemand was benutzen, was so aehnlich ist wie schon was bestehendes?

    Beispiel: Cython. An Python angelehnt und trotzdem sinnvoll.

    knivil schrieb:

    Ansosnten RetroForth. Factor.

    Sind ja existierende Programmiersprache bzw. Implementlementierungen die recht anspruchslos aussehen. 😕



  • Du b8ist nicht der erste und auch nicht der letyte mit diesem Wunsch. Glaube aber nicht, dass du beim ersten Wurf was vorzeigbares produzierst. Du solltest vorher ueben. Z.b. ein Schemecompiler.

    das erfordert viel Kreativität

    Nein, nur eine Nische.

    abgesehen von der Unmöglichkeit für mich einen Prozessor zu bauen

    Anstatt diesen Gedanken einfach abzulehnen, kannst du ihm mehr Zeit geben. Kleine FPGAs sind mittlerweile sehr preiswert, fertige Mikrocontroller gibt es wie Sand am mehr, es muss keine Prozessor sein, eine VM tuts auch. Was ist es mehr als ein Zustandsautomat + RAM? Oder du nimmst was populaeres und benutzt die JavaVM und benutzt sie als Zielplattform.

    Exakt. Habe auch schon Projekte von Amateuren verwendet. 🙂
    Soll ja kein Ersatz für irgendetwas sein. Nur im Ansatz sinnvoll.

    Du willst es in eine Bewerbungsmappe tun. Meinst du, jemand ist beeindruckt, wenn du einen einfache C-Kompiler schreibst? Wo ist das Besondere?

    existierende Programmiersprache bzw. Implementlementierungen die recht anspruchslos aussehen.

    Ich kann nicht anders: lol. Das interessante an Forth ist, dass der Forth-Compiler buildin ist. Die meisten Systeme/Compiler sind in Forth selbst geschrieben. Sich einfaches zu nehmen und auf einen Mikrokontroller zu bringen/erweitern/optimieren, sollte deinen Anforderungen genuegen. Du kannst darauf aufbauend deinen eigenen Forthdialekt entwickeln. Zwar bezweifle ich mittlerweile deine Offenheit und Ernsthaftigkeit, aber hier Moving Forth: a series on writing Forth kernels



  • Du hast dir aber was vorgenommen 😉

    Wir arbeiten momentan an einem Forschungsprojekt, welches .NET CIL nach LLVM kompiliert und von dort aus als Target GPGPUs anspricht (natürlich mit vielen Einschränkungen). Das Potential ist riesig, aber es ist eine schier unmögliche Aufgabe. Vielleicht kannst du in dem Bereich einige Sachen ausprobieren.



  • knivil schrieb:

    Also einen Compiler von jemanden ohne Erfahrung, der mal das Dragonbuch gelesen hat?

    knivil schrieb:

    Warum sollte jemand was benutzen, was so aehnlich ist wie schon was bestehendes?

    knivil schrieb:

    Du willst es in eine Bewerbungsmappe tun. Meinst du, jemand ist beeindruckt, wenn du einen einfache C-Kompiler schreibst? Wo ist das Besondere?

    Du hast eine wirklich ätzende und überhebliche Art an Dir. 👎

    Ethon, geh nur Deinen Weg und lass Dich nicht von solchen Deppen demotivieren.



  • qweasdyxc schrieb:

    knivil schrieb:

    Also einen Compiler von jemanden ohne Erfahrung, der mal das Dragonbuch gelesen hat?

    knivil schrieb:

    Warum sollte jemand was benutzen, was so aehnlich ist wie schon was bestehendes?

    knivil schrieb:

    Du willst es in eine Bewerbungsmappe tun. Meinst du, jemand ist beeindruckt, wenn du einen einfache C-Kompiler schreibst? Wo ist das Besondere?

    Du hast eine wirklich ätzende und überhebliche Art an Dir. 👎

    Ethon, geh nur Deinen Weg und lass Dich nicht von solchen Deppen demotivieren.

    das dachte ich mir auch schon öfters, wenn ich die beiträge von "knivil" so lese.
    wahrscheinlich ist er halt frustriert im echten leben, keine frau, keine kinder, oder so....



  • Gibt es denn irgendeine interessante Nische für die man einen Compiler entwickeln könnte den irgendjemand nutzen wollen würde?

    die eierlegende Wollmilchsau gibt es bereits: C++

    Such dir eher was spezielles, z.B. eine 3D Programmiersprache. Eine Sprache, die Matrix Operationen kann, eine leichte Möglichkeit bietet 3D Objekte darzustellen u.ä.
    Im Hintergrund sollte das dann natürlich HW-beschleunigt ablaufen, nach vorne hin sollte man davon aber nichts merken, dass da irgendwelche OpenGL Puffer verwendet werden.



  • ----



  • Bitte keine weitere Hexenverfolgung jetzt.
    Er hat's sicherlich verstanden.



  • Ich würde Forth nicht angehen. Ich habe einige Versuche in Forth gemacht und stelle stets nur fest, daß es doch sehr unhandlich ist, damit nichttriviale Programme zu basteln. Ich kann mir auch nicht vorstellen, wie man da einigermaßen Compilezeitfehler wegen nichtpassener Argumente hereinbringt.

    Nee, nee, Forth lieber als Compilat.

    In Sachen Hochsprache würde ich an manches denken:
    - Ganz dicht an Forth, ein dünner Wrapper, damit man es bedienen kann, und wo andere in C eher 20M auf einem Mikrocontroller bräuchten kommt man mit 500K aus. Nö, das war wohl die Idee von Java.
    - "target driven" Übersetzung oder wieauchimmer das hieß, finde es gerade nicht, da ist Interpretieren und Compilieren irgendwie nichts anderes. Und er optimierte auch leidlich von selber.
    - Ein CAS benutzen, keine Zusagen zu Rundungsgenauigkeit, der Compiler darf alle doubles als reelle Zahlen auffassen, zu const_expr-Funktionen ist die Ableitung auch da.

    Aber das Folgende wünsche ich mir selber:

    - In kann der selben Syntax definieren, wie ich Laufzeitsachen lösen mag, wie ich definieren kann, wie zur Compilezeit bestimmte Sachen vorberechnet werden. Und die Syntax soll nicht gegen Lisp tendieren. Oder wäre das dann nur D?



  • volkard schrieb:

    Bitte keine weitere Hexenverfolgung jetzt.
    Er hat's sicherlich verstanden.

    Ehrlich gesagt nicht. Deswegen habt ihr hier was zum Nachttreten, habt ja an sdf geuebt.

    Der Post liesst sich wie: Ich moechte in 2 Jahren bei Blizzard an WoW mitarbeiten. Dazu moechte ich ein Vorzeigeprojekt. Kein riesiges MMORPG, aber etwas, was ich als Referenz abgeben kann.

    Weiterhin heist es: Ich moechte mich weder mit Prozessorarchitektur, virtuellen Maschinen, noch anderen Sprachen beschaeftigen ... Verzeiung: Gameloop, Netzwerk oder Texturen. Auch moechte ich mich nicht mit Pong oder Teris ueben, obwohl ich noch kein Spiel selbst geschrieben habe.

    Ich frage mich, warum bei solchen Post mit zweierlei Mass gemessen wird.

    Ich würde Forth nicht angehen.

    Whatever. Kann sie gerne nach belieben veraendern. Oder Scheme, Implementation steht zu grossen Teilen in SICP. Was ausgelassen wird: tail-call und continuation.

    Keine Ahnung ob er eine Frau hat, ist auch irrelevant. Knivil benimmt sich wie ein assoziales und arrogantes Arschloch in diesem Forum und ist derart aggressiv und herablassend, dass man seine Ratschläge am besten ignoriert. Er ist einfach ein kleiner Kotzbrocken.

    Nicht ich, sondern du hast es wohl noetig, mal etwas Druck abzulassen.



  • knivil schrieb:

    Ehrlich gesagt nicht.

    Schade.

    knivil schrieb:

    Deswegen habt ihr hier was zum Nachtreten, habt ja an sdf geuebt.

    Jetzt bettelst Du aber darum, bei Kosenamen genannt und nie mehr für ernst genommen zu werden.

    knivil schrieb:

    Der Post liesst sich wie: Ich moechte in 2 Jahren bei Blizzard an WoW mitarbeiten. Dazu moechte ich ein Vorzeigeprojekt. Kein riesiges MMORPG, aber etwas, was ich als Referenz abgeben kann.

    Weiterhin heist es: Ich moechte mich weder mit Prozessorarchitektur, virtuellen Maschinen, noch anderen Sprachen beschaeftigen ... Verzeiung: Gameloop, Netzwerk oder Texturen. Auch moechte ich mich nicht mit Pong oder Teris ueben, obwohl ich noch kein Spiel selbst geschrieben habe.

    Ethon schrieb:

    In der Vergangenheit habe ich einen Compiler für eine Scriptsprache geschrieben der Bytecode generiert sowie eine passende VM. Desweiteren einen Compiler für ein Subset von C.

    Ich weiß ja nicht…
    Deine Sprüche kommen so bitter rüber, biste einfach nur neidisch auf Ethon?

    knivil schrieb:

    Ich würde Forth nicht angehen.

    Whatever. Kann sie gerne nach belieben veraendern. Oder Scheme, Implementation steht zu grossen Teilen in SICP. Was ausgelassen wird: tail-call und continuation.

    Und hier glaube ich langsam, daß Deine wohlklingenden Ratschläge böswillig sind. Also auch von mir die Empfehlung, Deine Ratschläge einfach ungelesen zu ignorieren.



  • sdf schrieb:

    Keine Ahnung ob er eine Frau hat, ist auch irrelevant. Knivil benimmt sich wie ein assoziales und arrogantes Arschloch in diesem Forum und ist derart aggressiv und herablassend, dass man seine Ratschläge am besten ignoriert. Er ist einfach ein kleiner Kotzbrocken.

    Nicht ich, sondern du hast es wohl noetig, mal etwas Druck abzulassen.

    Ich weiß nicht, du kommst mir in letzter Zeit wirklich unausgeglichen vor. Ich hab mir bereits hier:
    http://www.c-plusplus.net/forum/324109

    gedacht, dass dir irgendwas in die Hose gekrabbelt sein muss.

    @Ethon Eine funktionale Sprache in der man richtig schön lineare algebra machen könnte wäre toll. Da könnte man high level Optimierung der Ausdrücke machen, automatische parallelisierung etc (man hat ja etwas mehr Rechenzeeit zur Laufzeit um Entscheidungen zu treffen ob sich das Parallelisieren lohnt, es geht ja um teure Operationen).



  • Danke für die vielen Antworten, ein paar gute Vorschläge dabei. 👍

    Der Post liesst sich wie: Ich moechte in 2 Jahren bei Blizzard an WoW mitarbeiten. Dazu moechte ich ein Vorzeigeprojekt. Kein riesiges MMORPG, aber etwas, was ich als Referenz abgeben kann.

    Weiterhin heist es: Ich moechte mich weder mit Prozessorarchitektur, virtuellen Maschinen, noch anderen Sprachen beschaeftigen ... Verzeiung: Gameloop, Netzwerk oder Texturen. Auch moechte ich mich nicht mit Pong oder Teris ueben, obwohl ich noch kein Spiel selbst geschrieben habe.

    Höh? Was ist denn das Pong des Compilerbaus? 😕
    Ich dachte das wäre ein Matheparser. 😉

    Bin sogar sehr bereit mich mit "Prozessorarchitektur, virtuellen Maschinen, anderen Sprachen" zu beschäftigen, wie kommst du darauf?
    Ich habe es bis jetzt soweit getan wie notwendig für meine Bedürfnisse.

    Meine VM ist vlt. nicht so schnell wie die Java-VM, aber immerhin in der Lage alles was ich implementiert habe korrekt auszuführen.

    Du willst es in eine Bewerbungsmappe tun. Meinst du, jemand ist beeindruckt, wenn du einen einfache C-Kompiler schreibst? Wo ist das Besondere?

    Ahjo, zumindestens hat mich sich tiefergehend beschäftigt, ist doch schonmal ganz gut.
    Würde da aber auch noch differenzieren ob man nur den Glue-Code zwischen Flex/Bison und LLVM geschrieben hat - was vermutlich leichter ist als die ganze Codegenerierung und Optimierung selbst zu schreiben.



  • Deine wohlklingenden Ratschläge böswillig sind

    Natuerlich boeswillig. Wie soll ich denn sonst auf Beitraege wie von µ reagieren?

    otze schrieb:

    Ich weiß nicht, du kommst mir in letzter Zeit wirklich unausgeglichen vor.

    Keine Ahnung, vielleicht hast du recht.

    Ich dachte das wäre ein Matheparser.

    Nein, einen Matheparser gibts im flex/bison-Tutorial frei Haus. Wie waere es mit Mathecompiler, d.h. Mathematische Funktion als Maschinencode in Speicherbereich zur Laufzeit ablegen und als Funktionsobjekt zur Verfuegung stellen. Vielelicht unter verwendung von asmjit o.a. .



  • knivil schrieb:

    otze schrieb:

    Ich weiß nicht, du kommst mir in letzter Zeit wirklich unausgeglichen vor.

    Keine Ahnung, vielleicht hast du recht.

    Ich dachte das wäre ein Matheparser.

    Nein, einen Matheparser gibts im flex/bison-Tutorial frei Haus. Wie waere es mit Mathecompiler, d.h. Mathematische Funktion als Maschinencode in Speicherbereich zur Laufzeit ablegen und als Funktionsobjekt zur Verfuegung stellen. Vielelicht unter verwendung von asmjit o.a. .

    Das ist doch klar. Lern mal lesen.



  • Haskell ist eine ziemlich leistungsstarke und ausgefeilte Programmiersprache. Es gibt auch Neuentwicklungen (Haskell Prime) und Perspektiven. Man könnte an der Parallelisierung arbeiten, diese so lassen wie sie ist oder dies und das.

    netter Internetlink zum Thema:
    http://evincarofautumn.blogspot.de/2012/07/so-i-write-compilers-for-living-now.html

    Die Hinweise von knivil in Richtung Forth und Scheme fand ich schon sehr treffend, Scheme ist einfach einfacher und theoretischer, außerdem hat man zusätzlich ein gutes (theoretisches) Buch dazu 😉
    Assembler/Lowlevel ist hilfreich für funktionales Programmieren. Statt Forth könnte man auch erstmal mit einem guten/neueren Makroassembler arbeiten.

    Man könnte sich noch ein paar zusätzliche Gedanken machen, über den Erfolg der C-Typ Programmiersprachen vs der dem Erfolg der funktionalen oder Komitee-Sprachen. Bei funktionalen Sprachen ist oft ein ziemlicher "Idealismus" mit im Spiel. Daher sollte man statt funktionale Sprache vielleicht eher "idealistische" Sprache sagen. C-Sprachen sind dagegen sehr praxisorientiert, sind also die wahren "funktionalen" 😉

    Interessant sicher auch:
    http://de.wikipedia.org/wiki/Io_(Programmiersprache)

    Absolut nicht zu verachten wäre eine überzeugende Weiterentwicklung von Basic oder der Idee dahinter. Basic hat oft einen etwas unberechtigten schlechten Ruf.
    Zu beachten wäre noch, dass Lisp und Basicsprachtypen unter Dialekeritis leiden.
    Genaugenommen ist Haskell wohl auch so eine Art Lisp...;)



  • Vielleicht noch ergänzend dazu: Ich mag es einfach, vielleicht, weil ich damit aufgewachsen bin, wenn Entwicklungtools auf eine Diskette passen (und auch wenig Arbeitsspeicher beanspruchen).
    Aus dieser Sicht mag ich natürlich den Tiny C Compiler von Bellard sehr.
    Auf Haskell bezogen, wäre ein "Tiny GHC" als Compiler, Interpreter, oder beidem, so schlecht nicht.
    Für c-plusplus.net wäre kleiner kompakter und schneller C++ Compiler/Interpreter zum Downloaden gut, gewissermaßen als Eigenentwicklung der Community.


Log in to reply