Compilerbau Königsdisziplin?



  • Intelligenz besteht für mich aus folgenden Komponenten:
    - Die Fähigkeiten zu lernen
    - Die Fähigkeiten erlerntes anzuwenden und für den Gebrauch in ähnlichen Situationen anzupassen
    - Die Fähigkeit Zusammenhänge zu erkennen und zu verstehen
    - Die Fähigkeit sich Dinge bewusst und unbewusst zu merken
    - Die Fähigkeit eine Handlung mit mehreren Schritten im Voraus zu planen
    - und so weiter und so fort...



  • Sqwan schrieb:

    Intelligenz ist doch erstmal die Fähigkeit zu lernen.
    Wie lernt man? In dem man sich Fragen stellt. Und so lange der PC das nicht selbstständig macht wirds schon scher. Im nächsten schritt muss er aus informationen die er hat einen mehrwert ziehen. Und versuchen für ein bestimmtes ergebnis gewisse informationen zu finden.

    Interessant wäre dazu erstmal, das ein PC durch gewisse züge von allein lernt Schach zu spielen.
    Heißt, es gibt ein Schachfeld. Der PC kennt die regeln nicht. Jetzt macht der gegner einen Zug, und der PC lernt von allein warum dieser zug möglich ist und wann welchr zug möglich ist. Egal welches spiel man ihm vor setzt. Auch sollte er allein erkennen wie es funktioniert. Heißt, man legt ihm Mensch Ärger dich nicht vor, und er merkt von allein, das die figur von punkt zu punkt läuft, und das immer in eine richtigung und zwar so viele Punkte wie auf dem Würfel sind.
    Beim Schach muss er dann schon wiessen das es verschiedene farben gibt. Und zwar von allein.

    Und die SW dazu schreibt sich von allein. Und genau deshalb kommt man kein Stück weiter, weil ihr viel zu viel erwartet.



  • Na schön das wenigstens ihr wisst was Intelligenz ist. Da seit ihr klüger als die derzeitige Wissenschaft in diesem Bereich.



  • Zeus schrieb:

    Er hat die Sprachen doch aufgezählt, wo dies möglich ist. Allerdings hast man das Problem, dass evtl. die Hostsprache ein Problem für die DSL sein kann.

    eben - genau deshalb eignen sich die genannten ja auch nicht optimal zur Implementation von DSLs. Die Syntaxen der genannten Sprachen sind nicht flexibel genug, man kann kaum neue Sprachelemente definieren, ohne die Sprache zu verlassen und ohne einen ganzen Interpreter oder Compiler zu implementieren.

    Bei Sprachen zur Implementation von DSLs denke ich eher an sowas wie FORTH oder LISP - Sprachen mit minimaler Syntax, in denen man DSLs ganz natürlich in Form neuer Befehle und Syntaxelemente defnieren kann.



  • !rr!rr_. schrieb:

    ich denke, es wäre eleganter, eine Hochsprache mit hinreichend flexibler Syntax herzunehmen und die DSLs in dieser Hochsprache zu formulieren, anstatt für jede DSL einen neuen Compiler zu bauen.

    Ich entwickle also eine DSL (A), transformiere sie in die Hostsprache (B) und kompiliere sie in Binaerform (C, aber irrelevant). Der Prozess von A nach B ist ebenfalls eine Compilierung.

    Die Syntaxen der genannten Sprachen sind nicht flexibel genug, man kann kaum neue Sprachelemente definieren, ohne die Sprache zu verlassen

    Du sollst ja auch nicht die Hostsprache erweitern.

    Intelligenz besteht für mich aus folgenden Komponenten:
    - Die Fähigkeiten zu lernen

    Nein. In dem Teilgebiet KI der Informatik macht das Thema "Lernen" nur einen geringen Teil aus. Intelligent bedeutet sowas wie schlau, ein Problem gut loesen. Ob die Loesungsstrategie gelernt, abgeschaut, in den Genen kodiert oder durch einen Algorithmus realisiert ist, spielt dabei keine Rolle. Verwechselt es nicht mit Bewusstsein!



  • Das Schwierige am Compilerbau ist doch nur der Optimizer?



  • Ist das eine Frage? Magst du vielleicht nochmal den Thread lesen? Kurz: Nein! Und "doch nur" laesst mich denken, dass du es selbst noch nie probiert hast.



  • Dann schau dir doch mal den Artikel im C++Magazin über Compilerbau an.



  • Dann beschaeftige dich doch mal ernsthaft mit Compilerbau. Das soll keine Kritik an den Artikeln sein, sie koennen allein vom Umfang her nicht mal die Spitze des Eisberges aufzeigen.



  • Compilerbau ist Compilerbau ob das nun in drei Seiten erklärt ist und dann auch inner Woche umgesetzt ist oder ob man einen wirklichen professionellen Compiler entwickelt ist doch Wurst. Sobald ein Programmen eine Programmiersprache in Maschinencode umsetzt haben wir einen Compiler vorliegen.

    Also Compilerbau überhaupt nicht schwer, aber wenn es wirklich professionell werden soll dann wird es, wie mit fast allem, extrem komplex.

    Compilerbau Königdisziplin?
    Nein, vom Grunde her eine relativ einfache Geschichte welche aber je nach Anforderungen zu einer Königsdisziplin werden kann. Genauso ist es bei Spieleentwicklung, OS-Entwicklung etc.



  • compilernerd schrieb:

    Compilerbau ist Compilerbau ob das nun in drei Seiten erklärt ist und dann auch inner Woche umgesetzt ist oder ob man einen wirklichen professionellen Compiler entwickelt ist doch Wurst. Sobald ein Programmen eine Programmiersprache in Maschinencode umsetzt haben wir einen Compiler vorliegen.

    Also Compilerbau überhaupt nicht schwer, aber wenn es wirklich professionell werden soll dann wird es, wie mit fast allem, extrem komplex.

    Compilerbau Königdisziplin?
    Nein, vom Grunde her eine relativ einfache Geschichte welche aber je nach Anforderungen zu einer Königsdisziplin werden kann. Genauso ist es bei Spieleentwicklung, OS-Entwicklung etc.

    Du stellst deine Ahnungslosigkeit gerne so zu schau?



  • Die Krux ist wohl, wenn ein Compiler sehr viel mehr als nur die optimierte Umsetzung von standardisiertem Quellcode (Beispiel C oder C++) in ausführbaren Maschinencode leisten soll. Für mich ist das bereits das Drumherum, was man auch gerne haben möchte.

    Erweitere ich die Anforderungen an einen Compiler in die spezifischen Anwendungen hinein, wird die Angelegenheit sehr komplex! 😉

    Ach, wie war es doch zudem mit Assembler, FORTRAN, PASCAL, und auch C so bequem! :p Man hatte nur einen Compiler und brauchte nicht für neue Ziele gleich einen neuen Compiler suchen oder gar selbst entwickeln müssen.



  • je nach Anforderungen zu einer Königsdisziplin werden kann.

    Ich zitiere mich mal selbst:

    Auch sind die Anforderungen gestiegen: man moechte gern ...

    Desweiteren habe ich schon den naiven Ansatz diskutiert.



  • Zeus schrieb:

    compilernerd schrieb:

    Compilerbau ist Compilerbau ob das nun in drei Seiten erklärt ist und dann auch inner Woche umgesetzt ist oder ob man einen wirklichen professionellen Compiler entwickelt ist doch Wurst. Sobald ein Programmen eine Programmiersprache in Maschinencode umsetzt haben wir einen Compiler vorliegen.

    Also Compilerbau überhaupt nicht schwer, aber wenn es wirklich professionell werden soll dann wird es, wie mit fast allem, extrem komplex.

    Compilerbau Königdisziplin?
    Nein, vom Grunde her eine relativ einfache Geschichte welche aber je nach Anforderungen zu einer Königsdisziplin werden kann. Genauso ist es bei Spieleentwicklung, OS-Entwicklung etc.

    Du stellst deine Ahnungslosigkeit gerne so zu schau?

    Na, dann erklären sie Herr Klugscheißer doch mal für die Allgemeinheit ab wann man ein Programm einen Compiler nennen kann.



  • compilernerd schrieb:

    Na, dann erklären sie Herr Klugscheißer doch mal für die Allgemeinheit ab wann man ein Programm einen Compiler nennen kann.

    Darum geht es doch gar nicht in diesem Thread.



  • Du sollst ja auch nicht die Hostsprache erweitern.

    doch, gerade das ist wünschenswert - interne DSLs sind eleganter und einfacher zu implementieren als externe DSLs.

    - und da kommt man mit den genannten Java oder Haskell etc nicht weiter. Mit syntaktisch flexiblen Sprachen wie LISP oder FORTH aber schon.



  • !rr!rr_. schrieb:

    Du sollst ja auch nicht die Hostsprache erweitern.

    doch, gerade das ist wünschenswert - interne DSLs sind eleganter und einfacher zu implementieren als externe DSLs.

    - und da kommt man mit den genannten Java oder Haskell etc nicht weiter. Mit syntaktisch flexiblen Sprachen wie LISP oder FORTH aber schon.

    Die Anforderung bestimmt ob es wünschenswert. Dein Wünschenswert ist aus dem Brauch heraus, wie du es gerne siehst.
    Ein Problem hab ich schon genannt, dass die Konflikte zwischen Hostsprache und DSL kommen könnte. Ein Weiteres ist, dass das man überhaupt nicht die Mächtigkeit der Hostsprache braucht und die Reduzierung auf die DSL Einfachheit bringen würde.



  • Ein Weiteres ist, dass das man überhaupt nicht die Mächtigkeit der Hostsprache braucht und die Reduzierung auf die DSL Einfachheit bringen würde.

    es zwingt ja niemand den Benutzer einer internen DSL, den Rest der Hostsprache mitzubenutzen, wenn er das nicht braucht.

    Praxisbeispiel: man kann perfekte Dokumente in LaTeX herstellen, ohne jemals auf "rohe" TeX-befehle zurückgreifen zu müssen. Niemand zwingt einen LaTeX-Programmierer, "rohe" TeX-Befehle zu benutzen, wenn er sie nicht braucht.

    Ein Problem hab ich schon genannt, dass die Konflikte zwischen Hostsprache und DSL kommen könnte.

    dieses Problem wird umso unwahrscheinlicher auftreten, je minimaler die Syntax der Hostsprache ist. Bei den genannten FORTH oder LISP dürften kaum Kollisionen vorkommen, denn man kann ja fast alles selber definieren.



  • Dennoch gibt es Probleme, wenn Schluesselwoerter der Hostpsrache mit denen der DSL kollidieren. Und zu Haskell: Man hat sich bewusst gegen ein Makrosystem a la Lisp/Scheme entschieden, wobei PLT-Scheme/Racket noch einen Tick drauf setzt. Man geht einfach einen anderen Weg, selbstverstaendlich kommt man Java oder Haskell genauso weit, auch wenn in Java nicht ganz so komfortabel. Beieindruckend finde ich http://video.google.com/videoplay?docid=2474684021522878343# , wobei es eher was mit Compilerbau als mit DSL oder Makrosystem zu tun hat.



  • Haskell *kotz programmiert da echt jemand freiwillig mit?


Anmelden zum Antworten