Volkard


  • Mod

    @Jockelx sagte in Volkard:

    @It0101 sagte in Volkard:

    Volkard hatte nichts übrig für schlampige Programmierung, soweit ich mich erinnere.

    Hat aber auch nicht blind akzeptiert, was andere für "schlampig" halten.
    Wenn z.B. ein 'goto' irgendwo gut ist, dann nimmt man da halt ein 'goto', auch wenn 99% "schlampig" schreien.

    Korrekter wäre, dass 99% der Fälle, wo jemand goto nutzen will, schlampig sind. Das hätte volkard auch so gesagt.



  • @SeppJ
    Das widerspricht nicht dem, was ich gesagt habe.



  • @Jockelx sagte in Volkard:

    Wenn z.B. ein 'goto' irgendwo gut ist, dann nimmt man da halt ein 'goto', auch wenn 99% "schlampig" schreien.

    wenn ein goto irgendwo gut ist, schreit keiner "schlampig"😉



  • @Wade1234 🙂
    Das ist übrigens kein fiktives Beispiel. Ich kann mich auch deshalb noch an die Diskussion erinnern, weil 'goto' bei mir halt auch überhaupt nicht in Betracht kommt.
    Fand es dann spannend, dass man auf einem höheren Level dann wieder anfängt, die No-Gos zu hinterfragen.



  • @Wade1234 sagte in Volkard:

    @Jockelx sagte in Volkard:

    Wenn z.B. ein 'goto' irgendwo gut ist, dann nimmt man da halt ein 'goto', auch wenn 99% "schlampig" schreien.

    wenn ein goto irgendwo gut ist, schreit keiner "schlampig"😉

    Nur ist es halt nirgendwo gut 😎



  • Können die Sinnlosdiskussionen nicht wenigstens in einem Thread bleiben wenn sie schon unbedingt geführt werden müssen?



  • @It0101 Nie sagen ist nie gut 😉

    Ich käme auch nie auf die Idee, das zu nutzen. War aber sehr stutzig, als Alexandrescu in irgendeinem cpp-con video ein Codeschnipsel mit goto vorlegte. Und alle warten auf das "Scherz"...war aber nicht, stattdessen so und so viel Energie für Facebook gespart.



  • @Swordfish sagte in Volkard:

    Können die Sinnlosdiskussionen nicht wenigstens in einem Thread bleiben wenn sie schon unbedingt geführt werden müssen?

    Was wäre daenn deiner Meinung nach sinnvoll? Wildes spekulieren, was Volkard jetzt macht?



  • @Jockelx
    ja das liegt daran, dass goto sinnvoll eingesetzt auch wirklich geschwindigkeitsvorteile bringt, genauso wie man bei mikrocontrollern nicht um globale variablen herumkommt, weil die interrupthandler keine parameter übernehmen.

    leider ist es so, dass man erst einmal lernen muss, ohne das ganze zeug klarzukommen, daten sauber in strukturen zu packen, parameterlisten zu erstellen, funktionsaufrufe zu koordinieren usw. usf., und das geht am einfachsten, wenn man sagt, dass goto und globale variablen verboten sind.



  • @Swordfish sagte in Volkard:

    Können die Sinnlosdiskussionen nicht wenigstens in einem Thread bleiben wenn sie schon unbedingt geführt werden müssen?

    An denen du dich übrigens gelegentlich auch gern beteiligst. 😁



  • @Jockelx sagte in Volkard:

    Wildes spekulieren, was Volkard jetzt macht?

    Da halte ich mich ganz an Dieter Nuhr.

    @It0101 sagte in Volkard:

    An denen du dich übrigens gelegentlich auch gern beteiligst.

    Aus Selbstschutz (sonst wird mir das Hirn sauer) und aus Mitgefühl anderen gegenüber wenn mir jemand all zu viel Blödsinn quatscht. Aber meine Hemmschwelle steigt täglich.


  • Gesperrt

    @Wade1234 sagte in Volkard:

    ja das liegt daran, dass goto sinnvoll eingesetzt auch wirklich geschwindigkeitsvorteile bringt,

    Nicht nur das. 'goto' kann eh nicht aus einer Funktion hinaushüpfen. Und da Funktionen eh eine überschaubare Größe haben sollen, ist das Spaghetti-Code-Argument auch nur die Hälfte wert.

    Wer sich vor 'goto' fürchtet, sollte bei 'longjmp' schon fast einen Nervenzusammenbruch kriegen. Weswegen man C++-Codern LongJmp auch als neues Konzept aka. Exceptions verkauft. 🐱



  • @RBS2 sagte in Volkard:

    Weswegen man C++-Codern LongJmp auch als neues Konzept aka. Exceptions verkauft.

    std::longjmp():

    No destructors for automatic objects are called. If replacing of std::longjmp with throw and setjmp with catch would execute a non-trivial destructor for any automatic object, the behavior of such std::longjmp is undefined.

    <°)))><(


  • Gesperrt

    @Swordfish sagte in Volkard:

    @RBS2 sagte in Volkard:

    Weswegen man C++-Codern LongJmp auch als neues Konzept aka. Exceptions verkauft.

    std::longjmp():

    No destructors for automatic objects are called. If replacing of std::longjmp with throw and setjmp with catch would execute a non-trivial destructor for any automatic object, the behavior of such std::longjmp is undefined.

    <°)))><(

    Ihr C++-Würstchen habt immer mit sehr viel Undefined zu kämpfen. Mag durchaus daran liegen, dass eure Sprache mit der heißen Nadel gestrickt wurde.

    Apropos Volkard: auf C++ ließ er nichts kommen. Ein echter Ehrenmann!



  • @RBS2 sagte in Volkard:

    Ihr habt immer mit sehr viel Undefined zu kämpfen. Mag durchaus daran liegen, dass eure Sprache mit der heißen Nadel gestrickt wurde.

    Liegt eher daran, daß wir den ganzen C-Mist mitschleppen müssen.



  • @RBS2 sagte in Volkard:

    Und da Funktionen eh eine überschaubare Größe haben sollen, ist das Spaghetti-Code-Argument auch nur die Hälfte wert.

    hier hast du mal ein beispiel, welches veranschaulichen soll, warum goto nicht verwendet werden sollte:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
         int zahl1, zahl2;
         char rechenoperation;
    	 int ergebnis;
         int rc;
    
         start:
    
    
    	lieserstezahl:
         printf("Bitte geben Sie die 1. Zahl ein: ");
         rc = scanf("%d", &zahl1);
         if(rc != 1)
         {
              goto fehlererstezahl;
         }
    
        printf("\n");
    
    	lieszweitezahl:
        printf("Bitte geben Sie die 2. Zahl ein: ");
        rc = scanf("%d", &zahl2);
        if(rc != 1)
        {
             goto fehlerzweitezahl;
        }
    
        printf("\n");
    
    	liesrechenoperation:
        printf("Bitte geben Sie das Zeichen fuer die Rechenoperation ein: ");
        rc = scanf("%c", &rechenoperation);
        if(rc != 1)
        {
              goto fehlerrechenoperation;
        }
    
        printf("\n");
    
    	if(rechenoperation == '+')
    	{
    		goto plus;
    	}
    	
            if(rechenoperation == '-')
    	{
    		goto minus;
    	}
    	 if(rechenoperation == '*')
    	{
    		goto mal;
    	}
    	 if(rechenoperation == '/')
    	{
    		goto geteilt;
    	}
    
    		goto fehlerrechenoperation;
    
    	
    	fehlererstezahl:
    	printf("\nDie Eingabe fuer die 1. Zahl ist ungueltig.\n");
    	goto lieserstezahl;
    	
    	fehlerzweitezahl:
    	printf("\nDie Eingabe fuer die 2. Zahl ist ungueltig.\n");
    	goto lieszweitezahl;
    
    	fehlerrechenoperation:
    	printf("\nDie Eingabe fuer die Rechenoperation ist ungueltig.\n");
    	goto liesrechenoperation;
    	
    	plus:
    	printf("%d + %d = %d\n\n", zahl1, zahl2, zahl1 + zahl2);
    	goto start;
    	
    	minus:
    	printf("%d - %d = %d\n\n", zahl1, zahl2, zahl1 - zahl2);
    	goto start;
    	
    	mal:
    	printf("%d * %d = %d\n\n", zahl1, zahl2, zahl1 * zahl2);
    	goto start;
    	
    	geteilt:
    	printf("%d / %d = %d\n\n", zahl1, zahl2, zahl1 / zahl2);
    	goto start;	
    	
    	return 0;
    

    und das programm ist noch klein.


  • Gesperrt

    @Wade1234 sagte in Volkard:

    @RBS2 sagte in Volkard:

    Und da Funktionen eh eine überschaubare Größe haben sollen, ist das Spaghetti-Code-Argument auch nur die Hälfte wert.

    hier hast du mal ein beispiel, welches veranschaulichen soll, warum goto nicht verwendet werden sollte:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
         int zahl1, zahl2;
         char rechenoperation;
    	 int ergebnis;
         int rc;
    
         start:
    
    
    	lieserstezahl:
         printf("Bitte geben Sie die 1. Zahl ein: ");
         rc = scanf("%d", &zahl1);
         if(rc != 1)
         {
              goto fehlererstezahl;
         }
    
        printf("\n");
    
    	lieszweitezahl:
        printf("Bitte geben Sie die 2. Zahl ein: ");
        rc = scanf("%d", &zahl2);
        if(rc != 1)
        {
             goto fehlerzweitezahl;
        }
    
        printf("\n");
    
    	liesrechenoperation:
        printf("Bitte geben Sie das Zeichen fuer die Rechenoperation ein: ");
        rc = scanf("%c", &rechenoperation);
        if(rc != 1)
        {
              goto fehlerrechenoperation;
        }
    
        printf("\n");
    
    	if(rechenoperation == '+')
    	{
    		goto plus;
    	}
    	
            if(rechenoperation == '-')
    	{
    		goto minus;
    	}
    	 if(rechenoperation == '*')
    	{
    		goto mal;
    	}
    	 if(rechenoperation == '/')
    	{
    		goto geteilt;
    	}
    
    		goto fehlerrechenoperation;
    
    	
    	fehlererstezahl:
    	printf("\nDie Eingabe fuer die 1. Zahl ist ungueltig.\n");
    	goto lieserstezahl;
    	
    	fehlerzweitezahl:
    	printf("\nDie Eingabe fuer die 2. Zahl ist ungueltig.\n");
    	goto lieszweitezahl;
    
    	fehlerrechenoperation:
    	printf("\nDie Eingabe fuer die Rechenoperation ist ungueltig.\n");
    	goto liesrechenoperation;
    	
    	plus:
    	printf("%d + %d = %d\n\n", zahl1, zahl2, zahl1 + zahl2);
    	goto start;
    	
    	minus:
    	printf("%d - %d = %d\n\n", zahl1, zahl2, zahl1 - zahl2);
    	goto start;
    	
    	mal:
    	printf("%d * %d = %d\n\n", zahl1, zahl2, zahl1 * zahl2);
    	goto start;
    	
    	geteilt:
    	printf("%d / %d = %d\n\n", zahl1, zahl2, zahl1 / zahl2);
    	goto start;	
    	
    	return 0;
    

    und das programm ist noch klein.

    Zerlege dein Programm in Funktionen von nicht mehr als 20 Zeilen. Und du wirst sehen, dass das 'goto' nur noch halb so böse ist.



  • warum sollte ich dann goto verwenden? ein funktionsaufruf ist doch quasi goto.


  • Gesperrt

    @Swordfish sagte in Volkard:

    @RBS2 sagte in Volkard:

    Ihr habt immer mit sehr viel Undefined zu kämpfen. Mag durchaus daran liegen, dass eure Sprache mit der heißen Nadel gestrickt wurde.

    Liegt eher daran, daß wir den ganzen C-Mist mitschleppen müssen.

    Euer Godfather Struppi wollte es so. Nun müsst ihr damit leben. Mein Mitleid hält sich in Grenzen. 🐱


  • Gesperrt

    @Wade1234 sagte in Volkard:

    warum sollte ich dann goto verwenden? ein funktionsaufruf ist doch quasi goto.

    Gosub, wenn schon. 🐱


Anmelden zum Antworten