1. Foren
  2. Kommentare
  3. Security
  4. Alle Kommentare zum Artikel
  5. › GnuTLS: Fehlerhafte Zertifikate…

So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

  1. Thema
  1. 1
  2. 2
  3. 3

Neues Thema Ansicht wechseln


  1. So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: MrSpok 04.03.14 - 14:18

    Fehler macht jeder.

    Aber sprätestens beim Kompilieren solchen Codes sollte doch wegen "Unreachable code" eine Warnung oder ein Fehler produziert werden.

    Schon merkwürdig, dass sowas durchgeht.

    [EDIT]:
    Sieht so aus, als wäre das "goto cleanup" durch "goto fail" ersetzt worden.
    Ich dachte erst, die GOTOs hätten hintereinander gestanden.
    Dann gibt's natürlich keine Compiler-Warnung.

    Aber wer benutzt heutzutage eigentlich nocht GOTOs? Naja, das ist ein anderes Thema ...



    1 mal bearbeitet, zuletzt am 04.03.14 14:25 durch MrSpok.

  2. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: zampata 04.03.14 - 14:30

    irgendwo gabs mal eine Untersuchung, dass sowohl GCC als auch Clang in den Standardeinstellungen gar keine Warnung für unreachable Code ausspucken.
    GCC sogar nicht, wenn man dies explizit anfordert

  3. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: TheUnichi 04.03.14 - 14:32

    MrSpok schrieb:
    --------------------------------------------------------------------------------
    > Aber wer benutzt heutzutage eigentlich nocht GOTOs? Naja, das ist ein
    > anderes Thema ...

    Da hat jemand mal mit VB rumgespielt und macht den Pro...

    Die meisten Low-Level Sprachen arbeiten mit GOTOs.

    Die Jumps in ASM sind auch GOTOs.

    GOTO ist die Basis für die prozedurale und objektorientierte Programmierung, die du betreibst.

    Der einzige Grund, warum man GOTO nicht nutzen sollte, ist, weil es fehleranfällig ist, bei Programmierern, die schnell die Übersicht verlieren.
    Verlierst du die Übersicht nicht, sind GOTOs durchaus ein sinnvolles Konstrukt und ab und an, gerade in Low-Level Sprachen auch durchaus mal notwendig.

  4. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: Dadie 04.03.14 - 14:35

    MrSpok schrieb:
    --------------------------------------------------------------------------------
    > Fehler macht jeder.
    >
    > Aber sprätestens beim Kompilieren solchen Codes sollte doch wegen
    > "Unreachable code" eine Warnung oder ein Fehler produziert werden.
    >
    > Schon merkwürdig, dass sowas durchgeht.
    >
    > :
    > Sieht so aus, als wäre das "goto cleanup" durch "goto fail" ersetzt
    > worden.
    > Ich dachte erst, die GOTOs hätten hintereinander gestanden.
    > Dann gibt's natürlich keine Compiler-Warnung.
    >
    > Aber wer benutzt heutzutage eigentlich nocht GOTOs? Naja, das ist ein
    > anderes Thema ...

    Zu "Unreachable code" siehe : http://blog.fefe.de/?ts=adf5a1ff
    Zu GoTo :
    Richtig eingesetzt kann ein GOTO eine gute Möglichkeit sein Code wartbar zu halten. Gerade in einer Sprache ohne OO ist das gar nicht so unüblich. Teilweise ist der Code auch einfach sehr alt und damals hat man GOTO eben benutzt. Warum über die Jahre getesteten Code umwerfen? Die Gefahr beim Umschreiben oder Neuschreiben neue Bugs in den Code einzufügen ist viel größer als die Gefahren durch GOTO. Der Fail in diesem Fall lag nicht am GOTO sondern einfach am "Denkfehler" des Programmierers der Codezeilen. Das wäre genau so auch ohne GOTO passiert. Der Fehler sähe dann nur ggf. anders aus.

  5. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: ralf.wenzel 04.03.14 - 14:38

    MrSpok schrieb:
    --------------------------------------------------------------------------------
    > Fehler macht jeder.

    Tja, wenn Apple sowas passiert, wird nicht so rücksichtsvoll reagiert, da war bei Facebook, bei Heise und auch hier der Bär los.

  6. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: fletschge 04.03.14 - 14:43

    Mit welcher Argumentation wird "unreachable code" im gcc nicht mehr abgefangen?
    Ist doch durchaus ein sinnvoller Check?

  7. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: M.P. 04.03.14 - 14:44

    Die neue Schule ist ein try / catch mit einem throw ... an der Stelle, wo jetzt das goto steht ;-)

    Das ist dann wieder die "reine Informatiker-Schule"

  8. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: thomas001le 04.03.14 - 14:47

    Wie willst du sonst sowas machen, außer mit goto in C:

    {
    if(!good) goto cleanup;
    ..
    if(!good2) goto cleanup;
    ..
    cleanup:
    long_cleanup_code();
    }

  9. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: bstea 04.03.14 - 14:47

    TheUnichi schrieb:
    > GOTO ist die Basis für die prozedurale und objektorientierte
    > Programmierung, die du betreibst.
    >

    Nicht wirklich, dafür gibts CALLs.

    --
    Erst wenn der letzte Baum gefällt, der letzte Fluss gestaut und der letzte Fisch gefangen ist, werdet ihr feststellen, dass man Biber nicht essen kann!

  10. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: acuntex 04.03.14 - 14:50

    thomas001le schrieb:
    --------------------------------------------------------------------------------
    > Wie willst du sonst sowas machen, außer mit goto in C:
    >
    > {
    > if(!good) goto cleanup;
    > ..
    > if(!good2) goto cleanup;
    > ..
    > cleanup:
    > long_cleanup_code();
    > }

    {
    if(!good)
    {
    long_cleanup_code_in_a_function();
    return;
    }
    ...
    if(!good2)
    {
    long_cleanup_code_in_a_function();
    return;
    }
    ...
    long_cleanup_code_in_a_function();
    }

    Spricht was dagegen? Klar, Redundanzen, ansonsten umgeht man so gotos ohne try-catch-finally.

    Ok, aber manch einer ist halt nunmal stolz auf "Holzhacker-Programmierung".



    3 mal bearbeitet, zuletzt am 04.03.14 14:52 durch acuntex.

  11. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: M.P. 04.03.14 - 14:50

    Nunja, jedes Switch-Konstrukt, jedes "if" und alle Schleifen werden wahrscheinlich intern wohl NICHT mit Calls abgearbeitet...

  12. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: bstea 04.03.14 - 14:50

    {
    if(!good) {cleanup(); return;}
    ..
    if(!good2) {cleanup(); return;}
    ..
    cleanup();
    }

    void cleanup() {long_cleanup_code(); }

    --
    Erst wenn der letzte Baum gefällt, der letzte Fluss gestaut und der letzte Fisch gefangen ist, werdet ihr feststellen, dass man Biber nicht essen kann!

  13. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: M.P. 04.03.14 - 14:52

    So viele "returns" in einer Funktion sind aber auch nicht gerade sauber ;-)

  14. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: bstea 04.03.14 - 14:52

    Wäre auch irgendwie sinnlos und teuer immer über den Stack zu gehen.

    --
    Erst wenn der letzte Baum gefällt, der letzte Fluss gestaut und der letzte Fisch gefangen ist, werdet ihr feststellen, dass man Biber nicht essen kann!

  15. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: bstea 04.03.14 - 14:53

    Genauso sauber wie gotos ;)

    --
    Erst wenn der letzte Baum gefällt, der letzte Fluss gestaut und der letzte Fisch gefangen ist, werdet ihr feststellen, dass man Biber nicht essen kann!

  16. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: acuntex 04.03.14 - 14:54

    bstea schrieb:
    --------------------------------------------------------------------------------
    > Wäre auch irgendwie sinnlos und teuer immer über den Stack zu gehen.

    Ja, das ganze ist ja sooo teuer, am besten den ganzen Code in die main() rein. Wie ich diese Urban Legends liebe.

  17. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: acuntex 04.03.14 - 14:55

    bstea schrieb:
    --------------------------------------------------------------------------------
    > Genauso sauber wie gotos ;)


    Nein, lieber mehrere returns als gotos ;)

  18. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: rommudoh 04.03.14 - 14:56

    M.P. schrieb:
    --------------------------------------------------------------------------------
    > Die neue Schule ist ein try / catch mit einem throw ... an der Stelle, wo
    > jetzt das goto steht ;-)
    >
    > Das ist dann wieder die "reine Informatiker-Schule"


    Ähm, falsche Sprache!

  19. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: bstea 04.03.14 - 15:08

    Zusätzliches PUSH und POP ist bei dir nicht teuer? Du musst ein Genie sein.

    --
    Erst wenn der letzte Baum gefällt, der letzte Fluss gestaut und der letzte Fisch gefangen ist, werdet ihr feststellen, dass man Biber nicht essen kann!

  20. Re: So ein Fehler muss doch spätestens beim Kompilieren auffallen ...

    Autor: acuntex 04.03.14 - 15:18

    bstea schrieb:
    --------------------------------------------------------------------------------
    > Zusätzliches PUSH und POP ist bei dir nicht teuer? Du musst ein Genie sein.

    Don't get me wrong...
    Ich erinner mich sehr wohl an die Assembler-Vorlesungen und die Warnungen wie teuer doch Funktionsaufrufe seien.

    In der Realität ist dies jedoch irrelevant.
    Bloß weil ich an einer stelle im ns-Bereich sparen wollte, kriege ich es evtl. zurück durch Bugs, schlechtere Wartbarkeit durch die Verletzung der Grundprinzipien der Software-Entwicklung etc.

  1. Thema
  1. 1
  2. 2
  3. 3

Neues Thema Ansicht wechseln


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Sie müssen ausserdem in Ihrem Account-Profil unter Forum einen Nutzernamen vergeben haben. Zum Login

Stellenmarkt
  1. über duerenhoff GmbH, Mainz
  2. K&P Computer Service- und Vertriebs GmbH, Erfurt, Leipzig, Plauen, Chemnitz, Braunschweig (Home-Office möglich)
  3. WEINMANN Emergency Medical Technology GmbH & Co. KG, Hamburg
  4. Fraunhofer-Institut für Optronik, Systemtechnik und Bildauswertung IOSB-AST, Ilmenau

Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Spiele-Angebote
  1. 15,49€
  2. 21,99€
  3. 18,69€
  4. gratis


Haben wir etwas übersehen?

E-Mail an news@golem.de


SSD vs. HDD: Die Zeit der Festplatte im Netzwerkspeicher läuft ab
SSD vs. HDD
Die Zeit der Festplatte im Netzwerkspeicher läuft ab

SSDs in NAS-Systemen sind lautlos, energieeffizient und schneller: Golem.de untersucht, ob es eine neue Referenz für Netzwerkspeicher gibt.
Ein Praxistest von Oliver Nickel

  1. Firecuda 120 Seagate bringt 4-TByte-SSD für Spieler

Vivo X51 im Test: Vivos gelungener Deutschland-Start hat eine Gimbal-Kamera
Vivo X51 im Test
Vivos gelungener Deutschland-Start hat eine Gimbal-Kamera

Das Vivo X51 hat eine gute Kamera mit starker Bildstabilisierung und eine vorbildlich zurückhaltende Android-Oberfläche. Der Startpreis in Deutschland könnte aber eine Herausforderung für den Hersteller sein.
Ein Test von Tobias Költzsch

  1. Software-Entwicklung Google veröffentlicht Android Studio 4.1
  2. Jetpack Compose Android bekommt neues UI-Framework
  3. Google Android bekommt lokale Sharing-Funktion

Corsair K60 RGB Pro im Test: Teuer trotz Viola
Corsair K60 RGB Pro im Test
Teuer trotz Viola

Corsair verwendet in der K60 Pro RGB als erster Hersteller Cherrys neue preiswerte Viola-Switches. Anders als Cherrys günstige MY-Schalter aus den 80ern hinterlassen diese einen weitaus besseren Eindruck bei uns - der Preis der Tastatur hingegen nicht.
Ein Test von Tobias Költzsch

  1. Corsair K100 RGB im Test Das RGB-Monster mit der Lichtschranke
  2. Corsair Externes Touchdisplay ermöglicht schnelle Einstellungen
  3. Corsair One a100 im Test Ryzen-Wasserturm richtig gemacht