Programmieren / Grammatik
-
- Beiträge: 57
- Registriert: Di 9. Okt 2012, 17:32
Programmieren / Grammatik
Das ist eine theoretische Diskussion. Also ohne Praxisbezug zu Pascal oder zu Lazarus.
Gestern beim Lagerfeuer gab es Diskussion. Hier die Thesen, was ist falsch oder richtig. Es geht um theo. Informatik.
Pascal hat LL(1) Grammatik.
Prorammiersprachen sind kontextfrei oder kontextsensitiv beides geht nicht.
Alle höheren Programmiersprachen sind kontextfrei und damit LL(1).
Alle höheren Programmmiersprachen sind kontextsensitiv.
Assembler ist kontextsensitiv.
LL(1) Sprachen sind unbeliebt und unpraktisch.
Jeder Code in jeder Programmiersprache lässt sich per Hand übertragen in Code einer Prorammiersprache mit LL(1).
Danke fürs Lesen.
Gestern beim Lagerfeuer gab es Diskussion. Hier die Thesen, was ist falsch oder richtig. Es geht um theo. Informatik.
Pascal hat LL(1) Grammatik.
Prorammiersprachen sind kontextfrei oder kontextsensitiv beides geht nicht.
Alle höheren Programmiersprachen sind kontextfrei und damit LL(1).
Alle höheren Programmmiersprachen sind kontextsensitiv.
Assembler ist kontextsensitiv.
LL(1) Sprachen sind unbeliebt und unpraktisch.
Jeder Code in jeder Programmiersprache lässt sich per Hand übertragen in Code einer Prorammiersprache mit LL(1).
Danke fürs Lesen.
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Programmieren / Grammatik
Klassisch Standard Pascal ist LL(1) oder "fast" LL(1). (ich weiß nicht ob der dangling else workaround ganz LL(1) ist)tryunderror hat geschrieben:
Pascal hat LL(1) Grammatik.
Stimmt denk ich.Prorammiersprachen sind kontextfrei oder kontextsensitiv beides geht nicht.
Unsinn.Alle höheren Programmiersprachen sind kontextfrei und damit LL(1).
Parsen davon, nein denke ich. Semantik, natuerlich.Alle höheren Programmmiersprachen sind kontextsensitiv.
Es gibt kein universale Assembler, und fast jeder hat Erweiterungen. Mehr Kontext nötig.Assembler ist kontextsensitiv.
Die populärsten Sprachen der letzte Jahrzehnt sind fast alle sogenannte Curly Braces (C ähnlich), weil Manager denken das das auf Schulung spart.LL(1) Sprachen sind unbeliebt und unpraktisch.
Unpraktisch ist ganz Unsinn.
2 Minuten suchen und http://stackoverflow.com/questions/3148 ... equivalentJeder Code in jeder Programmiersprache lässt sich per Hand übertragen in Code einer Prorammiersprache mit LL(1).
-
- Beiträge: 203
- Registriert: Di 22. Sep 2009, 13:08
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Programmieren / Grammatik
Nunja. Ich denke mal kontextfreie Grammatiken für Programmiersprachen
sind eher etwas theoretisches.
Mal ein Beispiel:
Sowas mag in irgendeiner Grammatik zwar korrekt sein. Compilieren tut es trotzdem nicht.
Normalerweise gibt es immer irgendwelche Regeln, die man beachten muss,
die man kontextfrei einfach nicht richtig greifen kann.
Ich habe mal die Grammatik, die in der Hilfe von Delphi dabei war angesehen. Es fängt gut an,
aber irgendwann wundert man sich was für seltsame Konstrukte grammatikalisch korrekt sein sollen.
Und am Ende hatte ich den Eindruck, dass derjenige, der das geschrieben hat einfach aufgegeben hat..
Ich denke mal für reale Programmiersprachen "gibt" es zwar irgendwelche kontextfreien Grammatiken,
mit denen man ein paar grobe Syntaxchecks machen kann, aber arg viel taugt das alles nicht.
Grammatikalisch korrekter Code ist meistens eine echte Obermenge von compilierbarem Code...
P.S: Kontextsensitiv würde ich als Obermenge von Kontextfrei definieren.
sind eher etwas theoretisches.
Mal ein Beispiel:
Code: Alles auswählen
TTest = class(TObject)
public
procedure Test;
procedure Test;
end;
Normalerweise gibt es immer irgendwelche Regeln, die man beachten muss,
die man kontextfrei einfach nicht richtig greifen kann.
Ich habe mal die Grammatik, die in der Hilfe von Delphi dabei war angesehen. Es fängt gut an,
aber irgendwann wundert man sich was für seltsame Konstrukte grammatikalisch korrekt sein sollen.
Und am Ende hatte ich den Eindruck, dass derjenige, der das geschrieben hat einfach aufgegeben hat..
Ich denke mal für reale Programmiersprachen "gibt" es zwar irgendwelche kontextfreien Grammatiken,
mit denen man ein paar grobe Syntaxchecks machen kann, aber arg viel taugt das alles nicht.
Grammatikalisch korrekter Code ist meistens eine echte Obermenge von compilierbarem Code...
P.S: Kontextsensitiv würde ich als Obermenge von Kontextfrei definieren.
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Programmieren / Grammatik
Grammatisch ist es korrekt, nur Semantisch nicht.Patito hat geschrieben: Sowas mag in irgendeiner Grammatik zwar korrekt sein. Compilieren tut es trotzdem nicht.
Aber es gibt Sprachen die wissen müssen ob etwas ein Typ oder ein Variabel ist um weiter Parsen zu können.
-
- Beiträge: 320
- Registriert: Sa 21. Mär 2009, 17:31
- OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4)
- CPU-Target: 64 Bit
Re: Programmieren / Grammatik
tryunderror hat geschrieben: Prorammiersprachen sind kontextfrei oder kontextsensitiv beides geht nicht.
Jede kontextfreie Sprache ist nach Definition kontextsensitiv
Sprachen die nicht kontextsensitiv sind, dürften sich praktisch nicht parsen und kompiliern lassentryunderror hat geschrieben: Alle höheren Programmmiersprachen sind kontextsensitiv.
Klassischer Assembler ohne Funktionen/Labels mit endlichen Registern dürfte sogar regulär sein.tryunderror hat geschrieben: Assembler ist kontextsensitiv.
Somit ist auch kontextfrei und kontextsensitiv.
Jatryunderror hat geschrieben: Jeder Code in jeder Programmiersprache lässt sich per Hand übertragen in Code einer Prorammiersprache mit LL(1).
Wenn man Assembler als Programmiersprache betrachtet, geht das sogar automatisch
-
- Beiträge: 57
- Registriert: Di 9. Okt 2012, 17:32
Re: Programmieren / Grammatik
Danke für viele Antworten und den Link.
Fragen:
LL(1) ist nicht dasselbe wie kontextfrei?
Pascal ist die einzige Programmiersprache mit LL(1)?
Java und C und c** und PHP haben definitiv keine LL(1) Grammatik?
Grammatik von Pascal also LL(1) ist nicht beliebt?
Warum sind C++ und PHP so beliebt? Wenn wir Programmierer fragen, dann sagen die, Chef will es so.
Gibt es Tabelle Internet welche Programmiersprache welche Struktur zb PHP Skriptsprache wird nicht compiliert kann aber auch compiliert werden ist auf Hompeages aktiv
Algol veraltet etc
Delphi ist GUI und mehr für Pascal. etc.
Kontextsensitiv bezog sich auf Parsen.
Amerkung : Wenn ich im Internet "kontextfrei" suchte, fand ich nur Übungsaufgaben von Unis.
Und noch provokative Frage:
Gibt es sichere und unsichere Programmiersprachen? JS dürfte doch unsicher sein?
Fragen:
LL(1) ist nicht dasselbe wie kontextfrei?
Pascal ist die einzige Programmiersprache mit LL(1)?
Java und C und c** und PHP haben definitiv keine LL(1) Grammatik?
Grammatik von Pascal also LL(1) ist nicht beliebt?
Warum sind C++ und PHP so beliebt? Wenn wir Programmierer fragen, dann sagen die, Chef will es so.
Gibt es Tabelle Internet welche Programmiersprache welche Struktur zb PHP Skriptsprache wird nicht compiliert kann aber auch compiliert werden ist auf Hompeages aktiv
Algol veraltet etc
Delphi ist GUI und mehr für Pascal. etc.
Kontextsensitiv bezog sich auf Parsen.
Amerkung : Wenn ich im Internet "kontextfrei" suchte, fand ich nur Übungsaufgaben von Unis.
Und noch provokative Frage:
Gibt es sichere und unsichere Programmiersprachen? JS dürfte doch unsicher sein?
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Programmieren / Grammatik
Nein zb auch Modula2.tryunderror hat geschrieben:
Pascal ist die einzige Programmiersprache mit LL(1)?
C* und Java sind ein und dieselbe, die sogenannte Curly Braces syntax, und damit liegt die grammatik als nicht LL(1) fest.Java und C und c** und PHP haben definitiv keine LL(1) Grammatik?
Grammatik von Pascal also LL(1) ist nicht beliebt?
(Die Grammatik von) PHP kenne ich nicht echt gut.
Das ist der Grund worum Java und C# Curly Braces C Syntax haben. Es gibt ein merkwuerdiges Idee unter Manager das solch ein Grundsyntax dasselbe halten enorm Spart wenn man eine neue Sprache lernen muss.Warum sind C++ und PHP so beliebt? Wenn wir Programmierer fragen, dann sagen die, Chef will es so.
Unsinn natürlich in einem zeit wo Sprache gar nicht die meisten Trainungszeit kostet, aber Bibliotheken und algemeine Know-how.
Das ist immer so, und fuer mehr Dinge in der Kompilerwelt. Zb alle Unis nutzen Grammars und parsergeneratoren, aber Produktions C Kompiler nutzen recursive descent (also pseudo LL(1)) parser, auch fuer C/C++. Es ist nur so das es fuer Pascal einfach ist.Amerkung : Wenn ich im Internet "kontextfrei" suchte, fand ich nur Übungsaufgaben von Unis.
Grammatik und Kompiler Unterricht ist mehr gemeint für eine generelle Verständnis wie Kompiler funktionieren und kleine Tools erstellen, und nicht als Einleitung für professioneller Kompiler erstellung.
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Programmieren / Grammatik
Die ganze Sichere/Unsichere Klassification ist veraltet und etwas für Unis. C# und Java heißen meistens in Prinzip Sicher zu sein, aber sind so Komplex das immer neue Bugs in VM und Bibliotheken gefunden werden (sie dich nur die Monatliche Windows (und .NET!) updates)tryunderror hat geschrieben: Gibt es sichere und unsichere Programmiersprachen? JS dürfte doch unsicher sein?
-
- Beiträge: 57
- Registriert: Di 9. Okt 2012, 17:32
Re: Programmieren / Grammatik
Noch ein paar Fragen:
Compilerbau ist einfacher für LL(1) als für JAVA oder c++?
Warum setzen sich =Pascal und Delphi nicht durch? Mit Delphi und Pascal sind doch alle denkbaren Sachen programmierbar auch in jedem BS oder nicht?
Compilerbau ist einfacher für LL(1) als für JAVA oder c++?
Warum setzen sich =Pascal und Delphi nicht durch? Mit Delphi und Pascal sind doch alle denkbaren Sachen programmierbar auch in jedem BS oder nicht?
-
- Beiträge: 57
- Registriert: Di 9. Okt 2012, 17:32
Re: Programmieren / Grammatik
Zusatzfragen:
Warum ist Pascal so unbeliebt? Hoffentlich ist die Frage in einem Pascal Forum erlaubt.
Pascal ist doch prima und einfach und sicher und alles ist machbar. Und es gibt mehr als eine GUI also Delphi.
Warum ist Pascal so unbeliebt? Hoffentlich ist die Frage in einem Pascal Forum erlaubt.
Pascal ist doch prima und einfach und sicher und alles ist machbar. Und es gibt mehr als eine GUI also Delphi.
Re: Programmieren / Grammatik
Pascal ist nicht unbeliebt. Ich glaube Java und C++ sind viel unbeliebter.tryunderror hat geschrieben: Warum ist Pascal so unbeliebt?
Pascal ist aber nicht (mehr) so stark verbreitet. Das hat versch. Gründe. Einer davon ist bestimmt, dass die wesentlichen Betriebssysteme in C geschrieben sind.
Und Java ist halt nicht "nur" eine Sprache und hat deshalb andere Vorteile.
-
- Beiträge: 320
- Registriert: Sa 21. Mär 2009, 17:31
- OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4)
- CPU-Target: 64 Bit
Re: Programmieren / Grammatik
Weil die meisten Leute es nur noch von Turbo Pascal kennen. Und weil Delphi zu teuer geworden isttryunderror hat geschrieben:Zusatzfragen:
Warum ist Pascal so unbeliebt? Hoffentlich ist die Frage in einem Pascal Forum erlaubt.
Pascal ist doch prima und einfach und sicher und alles ist machbar. Und es gibt mehr als eine GUI also Delphi.
Und weil es keine Block-Scope-Variablen gibt
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Programmieren / Grammatik
Ich weiss nicht wie man darauf kommt 
Wenn man sich den aktuellen TIOBE Index anschaut
http://www.tiobe.com/index.php/content/ ... index.html
und Pascal und Object Pascal zusammenrechnet (die Trennung macht aus meiner Sicht wenig sinn)
landet man zwichen Python und PHP was ich auch für relativ realistisch halte.
Btw muss man dann auch die Basics zusammenziehn passt aber auch da in den Firmen oft noch Visual Basic oder die .NET Variante davon eingesetzt wird.
C hat seine Polularität da sämtliche Embedded Devices in C Programmiert werden was dort auch Sinn macht.
Die Popularität von Java versteh ich bis heut nicht ist aber warscheinlich ein selbstverstärkender Effekt java Programmierer werden meisst gesucht weil Java die häufigst verwendete Sprache ist.

Wenn man sich den aktuellen TIOBE Index anschaut
http://www.tiobe.com/index.php/content/ ... index.html
und Pascal und Object Pascal zusammenrechnet (die Trennung macht aus meiner Sicht wenig sinn)
landet man zwichen Python und PHP was ich auch für relativ realistisch halte.
Btw muss man dann auch die Basics zusammenziehn passt aber auch da in den Firmen oft noch Visual Basic oder die .NET Variante davon eingesetzt wird.
C hat seine Polularität da sämtliche Embedded Devices in C Programmiert werden was dort auch Sinn macht.
Die Popularität von Java versteh ich bis heut nicht ist aber warscheinlich ein selbstverstärkender Effekt java Programmierer werden meisst gesucht weil Java die häufigst verwendete Sprache ist.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 57
- Registriert: Di 9. Okt 2012, 17:32
Re: Programmieren / Grammatik
Wie wird in der Praxis ein Programm aufgehackt? goto Befehle im Maschinencode manipulieren?
Eure Diskussion geht ja am Thema vorbei. Denn wenn der Auftraggeber C++ will, dann ist es egal, ob Pascal besser ist.
Was geht denn nicht mit Pascal? Ist doch nur Frage vom Aufwand?
Und nochmal: Ist nicht Pascal sicherer weil restriktiver in der Sprachstruktur?
Eure Diskussion geht ja am Thema vorbei. Denn wenn der Auftraggeber C++ will, dann ist es egal, ob Pascal besser ist.
Was geht denn nicht mit Pascal? Ist doch nur Frage vom Aufwand?
Und nochmal: Ist nicht Pascal sicherer weil restriktiver in der Sprachstruktur?