switch-case Problematik



  • cirion schrieb:

    er hat doch vollkommen recht. "continue" hat als einzige semantik "fahre mit dem nächsten schleifendurchgang fort". keine andere.

    Falsch. Das ist eine Interpretation, die semantisch nach menschlichem Gebrauch sowieso nur unsinnig ist, weil "continue" "mach weiter so" bedeutet.

    cirion schrieb:

    switch ist keine schleife. end of story. das ist bereits logisch

    Nö, wenn man volkards Lesart von C als Assemblermakrosammlung deutet, eben nicht.

    cirion schrieb:

    , so wie es ist, und continue mit einer bedeutung für nicht-schleifen zu überladen wäre sicherlich nicht logik-förderlich.

    Nö, wenn man continue als "fang bei dem umschließenden Block neu an" interpretiert, eben nicht.

    cirion schrieb:

    da kann man schon eher drüber diskutieren, ob eben jene überladung für "break" logisch ist.

    Hatte ich vorher schon geschrieben ...



  • kopfschüttel schrieb:

    Finde diese Diskusion absulut sinnlos, und kann mich nur volkard anschließen, "Ich bin dankbar, daß Du keine "logische" Sprache entwirfst.".

    Dann schüttel mal den Kopf wie versprochen ... argumentfreies Gesabbel mußt Du als unreg nicht posten.



  • Es ist schon korrekt, dass continue nicht für switch gilt. Das wäre schon aus sprachlicher Sicht vollkommen irreführend:

    case 1000:
    // ...
    continue; // Er geht also ins nächste case (2000). Unlogisch + sinnlos!
    
    case 2000:
    // ...
    break; // Er bricht aus der Verzweigung heraus. Logisch + sinnvoll.
    

    Bei einer Schleife ist der Sinn jedoch nachvollziehbar. Die Schleife wird am Anfang fortgesetzt (contiue) bzw. abgebrochen (break).



  • pointercrash() schrieb:

    Falsch. Das ist eine Interpretation, die semantisch nach menschlichem Gebrauch sowieso nur unsinnig ist, weil "continue" "mach weiter so" bedeutet.

    aha. du gehst also nach der semantik der englischen sprache? dann erklär mir mal anhanddessen, was eine "for"-schleife ist. die semantik einer computersprache ist halt schon was anderes. obs nun "continue" oder "brtzlkt" heisst, ist wursch - die semantik dessen ist nunmal "mach mit der schleife weiter".

    Nö, wenn man continue als "fang bei dem umschließenden Block neu an" interpretiert, eben nicht.

    mit dieser semantik würde

    {
        // irgendwas
        continue;
    }
    

    zur schleife mutieren. ganz abgesehen davon, dass dann auch if-konstrukte "verschleifbar" wären (letztlich ist switch semantisch nur convenience-ersatz für if-else-kaskaden). keine gute idee - die lesbarkeit wäre dann völlig dahin. es macht schon sinn, dass jede form von schleife als solche bereits an ihrem kopf erkennbar ist.

    ru,
    cirion



  • Lesen -> Denken -> Posten

    Ich wollte ja nicht continue als Blödmannimplementation angedacht wissen, sondern als reentry in den Blockheader. Das führt wie bei Schleifen in den Entscheidungsteil (naja, bei do halt nicht).



  • pointercrash() schrieb:

    sondern als reentry in den Blockheader. Das führt wie bei Schleifen in den Entscheidungsteil (naja, bei do halt nicht).

    das macht das erst zur schleife, und damit die schleife nicht mehr am kopf erkennbar. wenn du drauf stehst, bastel dir nen kleinen präprozessor dafür - aber die meisten programmierer würden aus gutem grund einen großen bogen um sowas machen.

    ru,
    cirion



  • cirion schrieb:

    es macht schon sinn, dass jede form von schleife als solche bereits an ihrem kopf erkennbar ist.

    Ich lach' mich schief, da sind tatsächlich "fighters for the truth" einer Sprache, die einen jährlichen Wettbewerb im "most obfuscative code" (höchst erfolgreich) abhalten und die's nicht anders andenken wollen, weil's schon immer so war?

    Nee, ich dachte, 'ne Frage wär's wert, warum continue ausgerechnet für switch nicht gelten sollte, aber deswegen Anfeindungen zu kassieren, naja, was kommt nach dem großteils nicht implementierten C99? 😃



  • du stellst eine frage, die mit sprachdesign zu tun hat, und kommst dann mit argumenten, die höchstens mit sprachmissbrauch zu tun haben. was erwartest du? die antwort aus sicht des scriptkiddies, das so eine fixe idee toll findet, weil man plötzlich schleifen auch noch "obfuscaten" kann, oder eine antwort aus sicht eines informatikers, der sich mit sprachdesign ein wenig auskennt? letzteres wohl eher nicht...

    ru,
    cirion



  • knivil schrieb:

    Nur kann es passieren, dass der Compiler die Reihenfolge meiner cases verändert?

    Wie kommst du ueberhaupt auf diese Idee?

    Naja, ich kam auf diese Vermutung, da es innerhalb eines switch-case Blocks nicht möglich ist eine Variable zu definieren. Aber das kann ja auch nicht gehen, logisch. Und das hat dann auch nichts mit meiner Vermutung zu tun.

    Aber, um bei der Sache zu bleiben, eine umschachtelnde Infinite-Loop hätte schon einen kleinen Vorteil. Man müsste die Labeln nicht mehr sequentiell aufsteigend anordnen, schätze ich mal.

    Gruss
    T.



  • cirion schrieb:

    du stellst eine frage, die mit sprachdesign zu tun hat, und kommst dann mit argumenten, die höchstens mit sprachmissbrauch zu tun haben.

    Begründungslose Behauptung.

    cirion schrieb:

    was erwartest du? die antwort aus sicht des scriptkiddies, das so eine fixe idee toll findet, weil man plötzlich schleifen auch noch "obfuscaten" kann,

    Eine sinnvolle Antwort, warum das nicht so sein sollte.

    cirion schrieb:

    oder eine antwort aus sicht eines informatikers, der sich mit sprachdesign ein wenig auskennt?

    Ach, laß mal stecken. Ich hab' nur zwei Jahrgänge Elektrotechniker mit meinem Solver versorgt, bis es den PB 1000 nicht mehr gab und ich anderes zu tun hatte. Glaub' mir, was Praxistauglichkeit anbelangt bist Du mit Information unterversorgt. 😃



  • pointercrash() schrieb:

    Ach, laß mal stecken. Ich hab' nur zwei Jahrgänge Elektrotechniker mit meinem Solver versorgt, bis es den PB 1000 nicht mehr gab und ich anderes zu tun hatte. Glaub' mir, was Praxistauglichkeit anbelangt bist Du mit Information unterversorgt. 😃

    soll mich das jetzt beeindrucken, oder was? das einzige, was das vermittelt, ist deine selbstüberschätzung.

    ru,
    cirion



  • @cirion: Willkommen im Klub.
    Und laß Dich nicht ärgern. 😉



  • volkard schrieb:

    @cirion: Willkommen im Klub.

    danke 🙂

    Und laß Dich nicht ärgern. 😉

    ach, da bin ich schlimmeres gewohnt 😉

    ru,
    cirion



  • Tomahawk schrieb:

    Aber, um bei der Sache zu bleiben, eine umschachtelnde Infinite-Loop hätte schon einen kleinen Vorteil. Man müsste die Labeln nicht mehr sequentiell aufsteigend anordnen, schätze ich mal.

    Du hattest doch mal arge Sorgen um die Performance. Üblicherweise hast Du im ASM- Output oben im Switch- Head die Entscheidung, welches Label (case) angesprungen wird. Ich weiß nicht, ob das Standard ist, aber nach drei Compilern scheint das so zu sein. Danach wird nichts mehr geprüft, nur beim break gehts an das switch- Ende, ansonsten wird der Code weiter stur durchgeackert.
    Das kann man aktiv nutzen, um z.B. upper/lowercase- Anpassungen zu vermeiden oder einfach jeden case mit break abzuschließen.



  • volkard schrieb:

    @cirion: Willkommen im Klub.
    Und laß Dich nicht ärgern. 😉

    cirion schrieb:

    ach, da bin ich schlimmeres gewohnt 😉

    Was wollt ihr dann hier noch? Geht doch einfach heiraten (ist ja mittlerweile erlaubt). 😉



  • @pointercrash()

    Mann o mann, sag mal müßtest Du nicht schon Lange im Bett sein ? So wie Du dich hier gibst kannst ja nich wirklich älter als 5 sein.

    1.) Es gibt kein continue in einem switch - case block. Und das ist eine Tatsache !

    2.) Es wird in C auch keine geben, auch wenn Du es Dir noch so wünscht.

    3.) Niemand hat Dich Persönlich angegriffen, aber Du must immer deinen Senf dazugeben, und andere beleidiegen, die berechtigt anderer Meinung sind als Du.

    🙄



  • kopfschüttel schrieb:

    3.) Niemand hat Dich Persönlich angegriffen,

    Doch, das habe ich. Es hat sich Wort für Wort aufgeschaukelt.
    Angefangen hat es glaube ich mit
    "Du verwechselst Definition mit Logik und behauptest, weil es so definiert ist, ist es auch logisch. Das ist sophistische Selbstreferenz, aber kein Argument."=="Du kannst nicht logisch argumentieren."
    über
    "Tut mir leid, deiner Logik folge ich nicht."=="Du kannst auch nicht."
    und
    "Das ist nicht "meine Logik", sondern die allgemeine Logik"=="Doch, ich kann."
    und
    "Ich bin dankbar, daß Du keine "logische" Sprache entwirfst."=="Nein, du kannst nicht."
    und dem wechsel auf die Meta-Ebene mit
    "Es ist zum Kotzen mit Dir, immer bei Mangel an Argumenten wirst Du persönlich."
    Tja, da kann ich wenig machen.

    Aber ich muß ja auch nicht immer was machen, wo ich doch stattdessen cirion heiraten darf.



  • muss dir leider mitteilen, dass das bis nach meiner scheidung warten muss 😉

    ru,
    cirion



  • 😃



  • cirion schrieb:

    muss dir leider mitteilen, dass das bis nach meiner scheidung warten muss 😉

    Mist. Ruf mich dann an oder mail an volkard@normannia.de, falls Du eine Frau bist.


Anmelden zum Antworten