Probleme mit Grammatik-Aufgabe (blutiger Anfänger)
-
seldon schrieb:
Wenn du jemals einen Parser schreiben willst, gib mir bitte rechtzeitig vorher Bescheid, dass ich noch Popcorn machen kann. Dieses Zeug ist verdammt praktisch zu kennen, wenn man mal Eingabedaten verarbeiten will, die komplizierter als CSV sind.
Hm, ich habe einen funktionierenden HTTP Parser geschrieben und das völlig ohne dieses komische Grammatikzeugs. Und ich meine jetzt einen richtigen Parser, der Byte für Byte einzeln verarbeitet, ohne Regexs oder sowas. Was sagt dein Unigott nun?
mfg, René~
-
Dass HTTP-Nachrichten nicht wesentlich komplexer (sondern sogar etwas einfacher) als CSV sind; es läuft im wesentlichen auf Zeilen der Form "Schlüssel: Wert" hinaus. Warum sollte man das überhaupt zeichenweise parsen wollen? istringstream und getline, gut ist.
Wenn du es ohne "dieses komische Grammatikzeugs" hinkriegst, beispielsweise einen XML-Parser zu schreiben, bin ich beeindruckt - nicht, dass ich das ernsthaft von jemandem erwarten könnte, der in einer Diskussion über eine kontextfreie Grammatik von regulären Ausdrücken faselt.
-
seldon schrieb:
Wenn du es ohne "dieses komische Grammatikzeugs" hinkriegst, beispielsweise einen XML-Parser zu schreiben, bin ich beeindruckt
Sie, mein Herr, haben leider keine Ahnung. XML ist *wesentlich* einfacher als ein HTTP multipart/form-data Upload mit Binärdaten, mehreren Feldern usw.
Außerdem parse ich die Header nicht einfach nur als key:value sondern ich verarbeite direkt den Value, hole also z.B. die einzelnen Cookies raus, unescape URL-Escaped Sequenzen, verifiziere UTF8 Sequenzen usw. usf.
mfg, René~
-
NewSoftzzz schrieb:
Ich hab keine Ahnung wovon du redest, und ich weiß nicht ob es hier im Forum jemanden gibt, bei dem es anders ist.
also deinem nickname anch zu urteilen bist du nicht älter als 15
hast dir dreimal z.b. c++ angeguckt auf shade of mine's tutorial seite oder bei volkard und dir wegen deinem html kram mal ne lib runtergeladen...aber das glaube ich kaum:
ich glaube eher du hast eine ausbildung gemacht die dir praxisnähe ohne theoretische grundlage gegeben hat dass du möglichst schnell ein paar zeilen code schreiben kannstwas passiert denn wenn die nächste generation der programmiersprachen kommt oder sogar der computer (nicht binär system sondern z.B. hexadezimal)
dann hast du dein wissen, du hast ein problmen zu lösen, und dein wissen bringt dir en müll (also quasi wien pascal programmeirer allein in der wüste ohne wasser
)@threadersteller
du musst dich nicht als unwissender outen...
das zeug ist im prinzip gar nicht schwer, aber dann doch irgendwie wieder (wie pointer)
aber wenn dus einmal raus hast dann schaffst dus
allerdings solltest du dich ein bisschen mehr mit der materie befassen, weil das ganze aussieht wie: "mh ne aufgabe die ich machen muss - mh mein erster (doofer) ansatz klappt nicht. wo krieg ich die lösung her ?"
-
Skym0sh0 schrieb:
ich glaube eher du hast eine ausbildung gemacht die dir praxisnähe ohne theoretische grundlage gegeben hat dass du möglichst schnell ein paar zeilen code schreiben kannst
Nein, ich habe überhaupt gar keine Ausbildung, ich bin Autodidakt, war schon in 2 Firmen als festangestellter Programmierer tätig, eine davon eine Bude mit Enterprise Kunden, die ihre Software in JAVA erstellen (und die haben mich angestellt, obwohl ich keine Ausbildung habe). Alle anderen Programmierer dort waren Diplominformatiker. Und weeßte was? Die haben ihren Job nicht besser gemacht als ich. In manchen Bereichen (z.B. IT Security) hatte ich auch viel mehr drauf als alle anderen zusammen.
Skym0sh0 schrieb:
was passiert denn wenn die nächste generation der programmiersprachen kommt oder sogar der computer (nicht binär system sondern z.B. hexadezimal)
Es ist ja auch so schwer eine neue Programmiersprache zu lernen, wenn man einmal programmieren kann. Ich hab in meinem Job mal in 1 Woche einen Filemanager in Ruby on Rails programmiert inklusive Rechtemanagement, unbegrenzte Ordnerebenen, hacksicher usw. und das ohne jemals 1 Zeile RoR vorher programmiert zu haben.
PS:
Skym0sh0 schrieb:
dir wegen deinem html kram mal ne lib runtergeladen...
Ich benutze gar keine library außer boost.
mfg, René~
-
Ein multipart/form-data-Upload ist für HTTP strikt Payload, was die entsprechende RFC übrigens auch explizit so sagt:
RFC 2616 (HTTP 1.1), 3.7.2 schrieb:
In general, HTTP treats a multipart message-body no differently than any other media type: strictly as payload. The one exception is the "multipart/byteranges" type (appendix 19.2) when it appears in a 206 (Partial Content) response, which will be interpreted by some HTTP caching mechanisms as described in sections 13.5.4 and 14.16. In all other cases, an HTTP user agent SHOULD follow the same or similar behavior as a MIME user agent would upon receipt of a multipart type. The MIME header fields within each body-part of a multipart message- body do not have any significance to HTTP beyond that defined by their MIME semantics.
Wenn du MIME im HTTP-Parser verarbeitest, solltest du dein Modell überdenken.
MIME ist deutlich komplexer als HTTP; vernünftig implementiert benötigt es einen Stapelautomaten (d.h. kontextfrei). Der Hintergrund ist, dass Teile einer multipart-MIME-Nachricht wieder MIME-Nachrichten enthalten können. Wenn du das ohne Kenntnis formaler Sprachen hingekriegt hast, ist das was anderes, aber das glaube ich erst, wenn ich es sehe.
Der Dunning-Kruger-Effekt ist dir ein Begriff?
-
seldon schrieb:
Der Dunning-Kruger-Effekt ist dir ein Begriff?
Ja, mein Freund, der ist mir ein Begriff. Aber darauf zu verweisen nachdem ich dir jedes deiner Argumente zerlegt habe ist erbärmlich und als Totschlagargument anzusehen.
seldon schrieb:
Wenn du MIME im HTTP-Parser verarbeitest, solltest du dein Modell überdenken.
Warum sollte ich? Es funktioniert hervorragend und ist in meinem Framework die optimalste Lösung.
seldon schrieb:
MIME ist deutlich komplexer als HTTP; vernünftig implementiert benötigt es einen Stapelautomaten (d.h. kontextfrei). Der Hintergrund ist, dass Teile einer multipart-MIME-Nachricht wieder MIME-Nachrichten enthalten können.
Ich weiß, dass das theoretisch rekursiv sein kann und das hätte ich auch "ohne Kenntnis formaler Sprachen" programmieren können (ich hatte das schon konzipiert), dann ist mir allerdings aufgefallen, dass ich keinen einzigen praktischen Fall kenne, wo das beim HTTP Upload auftritt (Ich schreibe ja keinen Parser für die Allgemeinheit sondern nur einen auf meine Bedürfnisse zugeschnittenen).
Kannst du mir einen praktischen Fall sagen, wo bei einem HTTP Upload MIME geschachtelt ist? Und ich rede jetzt nicht davon, dass du z.B. eine Email als Datei hochlädst, dann hätte man theoretisch ne Schachtelung aber das soll logischerweise nicht geparsed werden.
mfg, René~
-
Naja... sooo schwer sind Grammatiken nu auch wieder nicht. Natürlich, es kann beliebig komplex werden, aber man fängt ja für gewöhnlich auch klein an. Irgendwann wird man dann über die richtige Lösung stolpern und wohl unbewusst Gramatiken verwendet haben.
Btw. mag subjektiv sein, aber beim Compilerbau finde ich persönlich es schwerer, Code zu generieren als irgendwas zu parsen und Bäume aufzubauen.
B2T, jedenfalls etwas. Falls der Threadersteller häufiger mal prüfen muss, ob ein Wort in einer Grammatik ist, kann man das prima mit Prolog machen. Das geht auch schon mit simplen Sprachkenntnissen und man bekommt etwas Wissen in Automatentheorie, ist doch auch immer ganz nett

-
-Shelling- schrieb:
Naja... sooo schwer sind Grammatiken nu auch wieder nicht. Natürlich, es kann beliebig komplex werden, aber man fängt ja für gewöhnlich auch klein an. Irgendwann wird man dann über die richtige Lösung stolpern und wohl unbewusst Gramatiken verwendet haben.
_DAS_ kann natürlich sein. Es geht vielleicht schneller wenn man sich den Theoriekram reinzieht, aber es geht auch so. Irgendwer muss dieses "Grammatik"zeugs ja auch mal erfunden haben, oder?
-Shelling- schrieb:
Btw. mag subjektiv sein, aber beim Compilerbau finde ich persönlich es schwerer, Code zu generieren als irgendwas zu parsen und Bäume aufzubauen.
Dito.
@Bashar: Arroganz bedeutet sich über jemanden oder etwas zu stellen. Für sich selbst zu beanspruchen etwas zu können ist einfach nur selbstbewusst. Also lerne erstmal die Worte, die du benutzt, bevor du damit um dich wirfst.
mfg, René~
-
Bashar schrieb:
Du stellst dich über die, die die Theorie zu ihrem Handwerk beherrschen, wenn du behauptest, dass man die nicht braucht und du das auch ohne kannst.
Psychologie <3. Weißt du, was kognitive Dissonanz ist? Das Problem hast du gerade hier. Ich kann das auch nachvollziehen. Wenn man die Sachen wirklich ohne Theorie kann, dann löst das in dir "einen als unangenehm empfundenen Gefühlszustand" aus, da du dich gerade fragst, warum du es gelernt hast. Und dann kommt die kognitive Dissonanz hervor, die darin resultierst, mir Arroganz zu unterstellen. Herrlich! 10/10.
this->that schrieb:
Mag sein. Bei deiner Einstellung zum Thema Theorie kann ich mir die Komplexitaet deiner Taetigkeiten sehr gut vorstellen.

Das hingegen ist arrogant oder vielleicht auch nur anmaßend. Ich kann dir ja sagen was ich in den letzten Monat entwickelt habe von Grund auf (alles in C++ und komplett selbst entwickelt):
HTTP Server, angepasster HTTP Parser (wie oben beschrieben), Framework mit IoC, ziemlich hoher Performance usw.
Darauf aufbauend dann ein Browsergame, das potenziell nach Leistungstest zehntausende Spieler gleichzeitig verarbeiten kann, mit Echtzeit Kampfsystem, Pathfinding, Community-Features wie Forum, PM-System, Gilden, hochladbare Avatare usw... KI kommt als nächstes rein. Und das alles ohne Uni-Theorie... abooooow!Und das ganze ziemlich hacksicher. Wohingegen die "Enterprise-Anwendung" meiner alten Firma nur so vor Sicherheitslücken ÜBERGEQUOLLEN ist. Und die ganzen Sicherheitslücken wurden von den Diplominformatikern eingebaut. Die Firma existiert meiner Meinung nur noch, weil es im Enterprise Bereich wohl nicht soviele Hacker gibt..
mfg, René~
-
Bashar schrieb:
Kognitive Dissonanz entsteht, wenn die Realität vom eigenen Weltbild abweicht.
Genau das ist ja hier der Fall. Weltbild = "Man kann das nur mit dieser Theorie", Realität = "Man kann es auch ohne diese Theorie".
Bashar schrieb:
Aber wo ist die mir angeblich unangenehme Realität? Du hast ja bisher nur behauptet, dass du das könntest. Da hab ich kein Problem mit. Leg einen handgestrickten Parser vor, ohne dir vorher was über die Theorie anzueignen.
Reicht dir der multipart/form-data Parser oder ist dir das nicht komplex genug?
mfg, René~
-
Ich hab gesagt für eine Programmiersprache.
Genau das ist ja hier der Fall. Weltbild = "Man kann das nur mit dieser Theorie", Realität = "Man kann es auch ohne diese Theorie".
Beides ist falsch.
-
Bashar schrieb:
Ich hab gesagt für eine Programmiersprache.
Jo, meinste das programmier ich dir jetzt? Du stellst ja die Behauptung auf, dass ich es nicht kann, also musst du das auch beweisen. Ansonsten ist das nur Blah Blah. Oder ich kontere mit: Du kannst keine Game-KI programmieren. Zeige mir einen Code von dir, der das Gegenteil beweist. Du siehst, das ist Kindergartenniveau. Man kann immer irgendwas behaupten.
Bashar schrieb:
Beides ist falsch.
Sondern?
mfg, René~
-
Deine Aussage "Theorie braucht man nicht - ich bin Autodidakt, ich kann auch ohne" stellt dich - und vor allem andere Autodidakten - nicht in einem besonders gutem Licht dar.
Ich bin auch Autodidakt und trotzdem beschäftige ich mich mit der Theorie. Wieso? Weil es mich interessiert und ich denke, dass es mich weiterbringt.
Und jetzt verrate ich dir ein Geheimnis: Es würde dich auch weiterbringen.Du weißt nicht was Grammatiken sind? Mein Tip: Schnapp dir ein gutes Buch darüber und ließ es dir durch. Vielleicht stellst du fest, dass du bei deinem HTML Parser schon "richtig" vorgegangen bist. Wenn dem so ist, umso besser. Wenn nicht, kannst du ja mal schauen, was die Unterschiede sind und ob evtl. doch noch Verbesserungspotential besteht.
Theorie erweitert deinen Horizont, da es viele klüge Köpfe auf dieser Welt gibt, die sich schon Gedanken gemacht haben, auf die man alleine nicht so schnell kommen würde. Warum sollte man sich diesem Wissen verweigern?
-
Tip schrieb:
Theorie braucht man nicht
Das habe ich so nie gesagt, ich rede hier von der "Grammatik" und meiner Praxis.
Tip schrieb:
Theorie erweitert deinen Horizont, da es viele klüge Köpfe auf dieser Welt gibt, die sich schon Gedanken gemacht haben, auf die man alleine nicht so schnell kommen würde. Warum sollte man sich diesem Wissen verweigern?
Das stimmt so einfach nicht. Es gibt Theorien, die muss man überhaupt nicht kennen, dann gibt es Theorien, die die Sache komplizierter statt einfacher machen und es gibt Theorien die sind definitiv lohnenswert.
Und diese Grammatik ist für mich eben eine Verkomplizierung.
mfg, René~
-
NewSoftzzz schrieb:
Bashar schrieb:
Ich hab gesagt für eine Programmiersprache.
Jo, meinste das programmier ich dir jetzt? Du stellst ja die Behauptung auf, dass ich es nicht kann, also musst du das auch beweisen.
Du bist albern. Ich kann auch mit Recht behaupten, dass du allein durch Armwedeln nicht fliegen kannst, ohne das beweisen zu müssen.
Bashar schrieb:
Beides ist falsch.
Sondern?
Einfache Parser kriegt man sicher auch mit viel Gefrickel hin, ohne was von der Theorie zu verstehen. Je komplizierter es wird, desto weniger Land sieht man.
Dass das nicht der Realität entspricht ist deine Behauptung, für die du bisher einen Beweis schuldig geblieben bist.
-
NewSoftzzz schrieb:
Und diese Grammatik ist für mich eben eine Verkomplizierung.
Und erneut: Es gibt nur 2 Möglichkeiten: Entweder du hast von Grammatiken keine Ahnung (extrem wahrscheinlich), dann kannst du dir so ein Urteil garnicht erlauben. Oder du hast dich damit beschäftigt, aber sie offensichtlich nicht verstanden. Denn sonst würdest du nicht so einen Käse schreiben.
Und deine peinlichen Rechtfertigungsversuche a la "ich hab einen HTTP Server geschrieben. Ich bin voll fähig dädädä" sind nur ein weiteres Indiz für deine Unsouveränität und Komplexe. Zumal das genannte Zeug ja nicht mal wirklich schwierig ist. HTTP Parsen geht ins Triviale und einen HTTP Server schreibt man auch recht fix. Natürlich braucht man für sowas keine Kenntnisse in theo. Inf. oder Mathe.
Ansonsten sind deine Aussagen das albernste, was ich seit langem gesehen hab (dein Nick trägt übrigens auch gut dazu bei). Ich hoffe TGGC findet diesen Thread.

-
this->that schrieb:
Und erneut: Es gibt nur 2 Möglichkeiten: Entweder du hast von Grammatiken keine Ahnung (extrem wahrscheinlich), dann kannst du dir so ein Urteil garnicht erlauben. Oder du hast dich damit beschäftigt, aber sie offensichtlich nicht verstanden. Denn sonst würdest du nicht so einen Käse schreiben.
Und wieder: Unsägliche Arroganz. Was glaubt ihr eigentlich, dass "Grammatik" der goldene Kelch ist? Die göttliche Erlösung?
Du kannst dir ja mal das hier durchlesen: www.vf.utwente.nl/~neisser/public/reject.pdf
Da siehste mal, wie ANGESEHENE PROFESSOREN in die Kloschüssel gegriffen haben beim Peer-Reviewing und das nur weil sie sich an ihre gewohnten Strukturen geklammert haben. Der Mensch ist halt ein Gewohnheitstier.
Verdammt nochmal, Idiome, Theorien, Konzepte usw. verändern sich, werden verbessert, werden verworfen, werden ersetzt. Ihr habt die Weisheit nicht mit Löffeln gefressen, nur weil ihr "Grammatik" anwendet. Vielleicht lacht man in 20-30 Jahren über euch, so wie man jetzt über die Leute im verlinkten PDF lacht.
mfg, René~
-
Das habe ich so nie gesagt, ich rede hier von der "Grammatik" und meiner Praxis.
Wenn du so Dinge schreibst, wie "Das sind die Momente, in denen ich mir immer wieder selber dafür gratuliere, dass ich nicht studiert habe." musst du damit rechnen, dass du "missverstanden" wirst, da du damit implizierst (zumindest mir kam es so vor) als würdest du "Theorie", die an der Uni hauptsächlich gelehrt wird, generell nicht gutheißen.
Auch wenn dem nicht so ist, verstehe ich deinen Standpunkt nicht. Wie kannst du über den Nutzen von Grammatiken in deiner Praxis urteilen, wenn du nicht einmal weißt was sie sind und wie sie funktionieren? Dass du nicht weißt was sie sind, hast du mit deinem ersten Posting in diesem Thread gezeigt.
Trotzdem sollte deine Reaktion als intelligenter Mensch sein: "Kenne ich nicht, fällt aber in meinen Interessensbereich, vielleicht sollte ich mich mal damit auseinandersetzen" anstatt "Habe ich noch nie gebraucht, ergo sind sie unnötig".Ein bisschen Lockerheit und das Eingeständnis, dass das eigene Wissen nicht absolut und umfassend ist, würde dir vielleicht helfen.
Und diese Grammatik ist für mich eben eine Verkomplizierung.
Wie schon geschrieben, kannst du das schlecht beurteilen, wenn du dich nicht mal mit ihnen beschäftig hast.
Ja, für einen kleinen Parser brauchst du vielleicht noch keine Grammatiken, aber wenn es dann mal eine Programmiersprache parsen sollst, sieht die Sache schon anders aus.
-
NewSoftzzz schrieb:
Bashar schrieb:
Du bist albern. Ich kann auch mit Recht behaupten, dass du allein durch Armwedeln nicht fliegen kannst, ohne das beweisen zu müssen.
Diese unsägliche Arroganz. So unvorstellbar ist es für dich also, dass man es ohne die Theorie nicht programmieren könnte...
Ich hab meine Gründe. Du dagegen? Was hast du für Erfahrungen mit Parsern vorzuweisen, dass du sowas behaupten kannst?
NOCHMAL: Wie hat es der Erschaffer der Grammatiktheorie denn geschafft? Er hatte die Theorie logischerweise auch nicht.
Du meinst, da hat sich mal einer an einem langweiligen Nachmittag hingesetzt und dann ist ihm die "Grammatiktheorie" in den Schoß gefallen?

Bashar schrieb:
Dass das nicht der Realität entspricht ist deine Behauptung, für die du bisher einen Beweis schuldig geblieben bist.
Jo, und du kannst nicht mal einen multipart/form-data Parser programmieren.
Keine Ahnung, ob ich das kann, hab es nie versucht. Aber eins kann ich dir versprechen: Ohne mit mit den entsprechenden RFCs auseinanderzusetzen, kann ich es nicht. Deine Vergleiche hab ich bisher immer versucht zu ignorieren, weil sie so völlig am Thema vorbeigehen. Es hat doch niemand behauptet, dass DU nicht in der Lage bist, zu programmieren. Die Aussage ist, dass du keinen Parser programmieren kannst, wenn du von der Materie keine Ahnung hast. Das ist normalerweise eine Selbstverständlichkeit. Man kann ja auch nicht einfach so Gehirnoperationen durchführen. Hast du ein Ego-Problem, greift es dich an, wenn jemand sagt, dass du irgendwas nicht kannst?
Beweise mich falsch.
Ohje.
Ich werd mich jetzt mal ausklinken. Eigentlich wollte ich den Thread versachlichen, nachdem er anfänglich in einen der üblichen "Akademiker-vs.-Praktiker"-Flamewars abzurutschen drohte. Aber das war wohl umsonst. Inzwischen sind auch alle Positionen ausreichend dargestellt worden, weiteren Diskussionsbedarf hab ich zu dem Thema nicht.