Samstag, 23. Januar 2010

Q99: Ist das ein Semantikfehler oder ein Syntaxfehler?


Freitag, Mittagessen im Marx. Dort wo hervorragendes Essen auf den grauslichsten Kaffee trifft. Grauslichster Kaffee wo gibt. Wirklich, believe me! Normalerweise gehen wir ins T-Lunch, Massenabfertigung ohne Speisekarte. Na ja nicht ganz, die Speisekarte steht auf einer schwarzen Tafel beim Eingang. Liest im Prinzip eh keiner mehr. Weil es eh ein Essensradl gibt. Alle drei Wochen das Gleiche! Ich kenne schon den Product Lifecycle des Wolfbarsch auswendig. Aber ja, zurück zum Marx, dorthin wo es den schlechtesten Kaffee gibt der jemals gebräut wurde. Den würde sogar jemand zurück schicken der den amerikanischen Neverending Coffeepott gewohnt ist.

Aber was soll’s. Wir waren bei der Speisekarte. Auf den ersten Blick nichts Ungewöhnliches.

Dort steht nämlich:

Marx Mittagsmenü – 10,40 Euro

Rindfleisch Carpaccio auf Rucola  mit Balsamicoreduktion
und
Gesottenes Gemüserelish auf Weizenflade
oder
Truthahngeschnetzeltes im Tomatensouce und Couscous

Die ganze Bande stellt im Bruchteil einer Sekunde fest was heute den Schlund runter soll. Die ganze Bande? Nein. Ein unbeugsamer Fraggle, nenne wir ihn FRAFU, leistet Widerstand und stellt fest das da die Menüsyntax nicht stimmt. Entwickler nehmen nicht alles so einfach hin. Die hinterfragen, die tüfftln, die denken nach. Auch wenn’s nur ums Essen geht. Ja, unsere Entwickler. Unsere Söhne. Sorry, und natürlich Töchter.

Mit einem „Vasteh i net, des is doch foisch! Des is a Bledsinn!“ zieht der 65% Fraggle die Aufmerksamkeit auf sich. Darauf der Rest der Bande „No wos vastehst net? Is eh klor! Du kriagst de Vurspeis und des Gehmüse oder de Vurspeis und den KussKuss!“.

Recht hat die Bande. Denkt der gemeine Speisekartenleser (aka der Rest der Bande),  aber nicht der Entwickler in FRAFU. Der denkt natürlich in Codesyntax, der denkt wie ein Semantischer-Syntax-Compiler. Wie ein Speisekartencompiler. Und das Gerät hat recht. Außer es wären Klammern gesetzt. Nur Klammern sehe ich keine. Oder habe ich eine Flatulenz auf den Augen?

Zur Erinnerung:
  • Vor der Berechnung des Wertes eines (logischen) Operators werden die Werte aller seiner Operatoren bestimmt.
  • Die Und-Verknüpfung && (Konjunktion) und Oder-Verknüpfungen || (Disjunktion) verkürzen u.U. die Auswertung:
  • Eine Oder-Verknüpfung ist generell wahr, sobald der erste wahre Operand gefunden wird.
  • Eine Und-Verknüpfung ist generell falsch, sobald der erste falsche Operand gefunden wird.
  • In diesen Fällen werden bei den Operatoren && und || die restlichen Operanden nicht mehr ausgewertet.
  • Die Auswertung findet im Regelfall von links nach rechts statt, es sei denn sie wird durch runde Klammern anders vorgegeben.
Ist das jetzt ein Semantikerfehler? Oder ein Syntaxfehler? Oder gar kein Fehler? Bin gespannt auf die Kommentare der Bloglesenden Menükartenkompiler und die Abstimmung in der Umfrage (rechts oben im Blog)!

12 Kommentare:

Unknown hat gesagt…

Der Kaffee im Marx ist GUT, besser als im T-Centro...... und warum geht der BvB 2-3x pro Tag ins Marx auf einen Kaffee... na weil der Kaffee GUT ist!!

frafu hat gesagt…

Naja, das mit dem Kaffee können Raucher natürlich nicht nachvollziehen.
Aber das Grundpoblem der Menükarte ist, dass das so komplizierte Speisen sind, dass ich nicht weiß ob das eine Vorspeise, Hauptspeise oder Nachspeise sein soll.
Wenn das Menü wäre:
Leberknödelsuppe
und
Schnitzel
oder
Schweisbraten
dann würds ein kleiner Prolofraggle wie ich auch verstehen. :-)

Luckey Luke hat gesagt…

Ich war letzte Woche im Marx und muss dem Author recht geben. Der Cafe ist voll mies und das ärgste ist die Bedienung. Geschlagene 10 Minuten bis man uns entdeckt hat. UNd für das Essen brauche sie ewig. Da kann auch der Starfernsehkoch nichts dazu beitragen. Ich wüßte auch nicht wie ich die Karte verstehen soll. Dafür sind aber die Preise gesalzen. Aber die Minilasagne war ihr Geld wert. Ich tippe auf Syntaxfehler!

Anonym hat gesagt…

Also ich muss schon zugeben das man als Raucher eingeschränkten Geschamck hat. Seit ich nicht mehr rauche schmecke ich auch vieles anders.
Grüße an Q. Du solltest STandUp-Comedian werden. Überlege dir meinen Vorschlag. Sehen uns beim nächsten Stammtisch. Habe von deinem Hassardstück zum Prüfungseinspruch gehört. Bravo!
Gruß
Andi

Andreas hat gesagt…

Nachtrag: Semantikfehler.

Den Fehler hätte ein Compiler nicht entdeckt, weil keine Syntaxverletzung vorliegt. Den erwischt du nur beim White-Boxtest.
Gruß
Andi

Lucian L. hat gesagt…

Syntaxfehler. Ganz klar. Die nicht vorhandenen Klammern hätte er entdecken müssen.
LL

Fuchsl hat gesagt…

@LL - Syntaxfehler? Was soll da ein Syntaxfehler sein? Wie soll ein Compiler ein nicht vorhandenes Klammernpaar finden wenn es keine anderen Klammern gibt die dazu führen das er bemerkt das das andere Klammernpaar findet?

(if entwickler = Tochter and (entwickler = Mutter or entwickler = Sohn) then ...

Das muss er finden! Ich bin auch dafür das Töchter in der Bundeshymne vorkommen. Go Christl go...

Fuchsl

Nubsi hat gesagt…

Klar Semantikfehler. Da gehts um den Inhalt und nicht um die Regelkonformität. Man sollte sich aber einmal den Kontrollflussgraphen der Speisekarte anschauen. Scheinbar ist da eine schiere Komplexität drinnen die der Anwender (der Gast) nicht versteht. Wieviele Knoten und Kanten hat die Karte eigentlich?

Ich denke das es notwendig wäre die ENtwickler der Karte mal beim Architekturdesign zu unterstützen. Ausserdem empfehle ich das Buch "Design Patterns für Speisekarten" aus dem O'Reilly Verlag. EIn muss für jeden Entwickler.

Q. hat gesagt…

Also Knoten hats einen: So eine goldene Kordel mit Knoten hält das Ganze zusammen!

Kanten hats im ungeöffneten Zustand 4: Unterkante, Oberkante, Linke Kante, Rechte Kante.

Im offenen Zustand: ANzahl Seiten * 4

Nubsi, berechne bitte die Zyklomatische Komplexität!
Danke. Dafür lade ich dich auf einen Kaffee ins Marx ein. Du als Raucher schmeckst eh nichts!! ;-)

Anonym hat gesagt…

Also ich hab irgendwo mal gelernt, dass ein logisch UND einer mathematischen "Strichrechnung" und ein logisch ODER einer mathematischen "Punktrechnung" entspricht. Somit ist dit Speisekarte gemäß "Punkt- vor Strichrechnung" korrekt!

lg, Markus eL

Anonym hat gesagt…

Der Schas hat mir jetz keine Ruhe gelassen. Die Speiskarte is doch falsch! Es gilt nämlich gemäß "Rangordnung der Operatoren" UND vor ODER somit gäb's entweder (Carpaccio und Gemüse) ODER Trunthan (mit ohne Vorspeis ;-).

lg, Markus eL

Q. hat gesagt…

eL, ich bin voll bei dir. So würde ich es auch lesen. Vielleicht ist Menükartensyntax aber anders! ;-)
lg
Q.