JAVA, C++, Delphi - IT-Klasse



  • java! schrieb:

    vb wird den programmierstil total versauen, delphi zwar auch aber nicht so extrem.

    falsch. andersrum ist es richtig. vb versaut den stil nicht, aber delphi versaut ihn. und c wäre am schlimmsten.
    das hat nämlich was mit der ähnlichkeit der folgesprache zu tun. die leute, die sich schrecklichkeiten in c angewöhnt haben, machen die in c++ genauso weiter. die leute von delphi haben leider sehr viel dogmatischen und veralteten unfug im nähkästchen. single-entry/single-exit, um mal einen der knaller zu nennen. das legen sie auch nicht so schnell ab. im gegenteil, viele pascaller vertreten den kram selbst in c++ sprachen weiter. und vb hat viel abstand. besser noch man nimmt qbasic. man kann prima schleifen und so üben. und dann geht man irgendwann zu c++ über und kann bereits programmieren, nur lernt man es jetzt richtig. nur noch mickrig kleine funktionen und so. die schüler können vb und c++ sehr fein trennen. auch, was den stil angeht.

    daher ist es kein schlechter trick, im ersten halbjahr mit qb zu üben und danach erst nach c++ umzusteigen (und java zu überspringen). der kurs wäre dann auf 4 semster länge ausgelegt und mit ein paar hausaufgaben sogar. grundsätzlich triviale hausaufgaben, nix schwieriges, muss nur die leute zwingen, auch mal daheim den rechner zu was andeem als gamez zocken zu benutzen. aber ich stelle mir immernoch ein 11. schuljahr vor.



  • volkard schrieb:

    falsch. andersrum ist es richtig. vb versaut den stil nicht, aber delphi versaut ihn. und c wäre am schlimmsten.
    das hat nämlich was mit der ähnlichkeit der folgesprache zu tun. die leute, die sich schrecklichkeiten in c angewöhnt haben, machen die in c++ genauso weiter.

    Auf welche "Schrecklichkeiten von C" beziehst du dich?



  • wahrscheinlich auf alle!



  • bezug schrieb:

    wahrscheinlich auf alle!

    Ich wüßte gerne, was genau er so schrecklich findet.



  • audacia schrieb:

    Auf welche "Schrecklichkeiten von C" beziehst du dich?

    auf riesige funktionen, die mehr als 10 zeilen haben. auf open-close-paare. auf makros, wo konstanten oder inline ginge. auf fehlercodes statt exceptions. auf switch statt virtual. auf wildes gecaste. auf ++ und -- in ausdrücken, die noch was anderes machen. auf riesige parameterlisten. auf riesige dateien mit ganz vielen sachen drin. auf globale variablen.



  • Das du die "Qualität" einer Programmiersprache in Anzahl der Codezeilen misst
    zeigt das du
    1.) keine Ahnung von Programmierung/Programmiersprachen hast.
    2.) die Frage des Thread-Erstellers, meines Erachtens, überhaupt nicht verstanden
    hast.
    

    ??? wir reden aber überhaupt garnicht über die qualität ... Ausserdem: warum meint jeder eigentlich besser prgrammieren zu können als ich (das fängt wirklich an zu nerven, ich fühl mich als wäre ich im kindergarten - kann sich nicht mal ein richtiger (kommerzieller) programmierer melden ??? [ich fühle mich hier nämlich so hilflos])



  • Hi

    volkard schrieb:

    ... die leute von delphi haben leider sehr viel dogmatischen und veralteten unfug im nähkästchen. single-entry/single-exit, um mal einen der knaller zu nennen. ...

    Das ist meines wissens auch bestandteil der MIRA regeln. Und hat auch seine berechtigung. Wie schnell ist mal ein delete in einer funktion vergessen, die mehrere ausgänge hat.

    zum Thema java oder c++
    Es kommt drauf an, was beigebracht werden soll. OO oder grundlegende programierstrukturen wie schleifen, vergleiche, Bedingungen, ... Aber ich nehm mal an, der punkt im lehrplan heisst: Erlernen einer der 3 genanten OO - Programiersprachen (java, c++ oder Delphi).

    Der klasische ablauf um eine programiersprache zu lernen ist doch der, das man anfängt mit Ein / Ausgabe, Berechnungen, Schleifen, Bedingungen, Variablen, ... Bei den ganzen Punkten ist meiner meinung OO einfach zu viel Balast. Weshalb ich z.b. von Java eher abrahten würde. da es ohne Class, new, throws ... gar nicht geht . Da ist c++ mit cin und cout sehr elegant. Sind zwar auch elemente aus der OO ecke, aber sicher noch angenehmer als 3 zeilen java mit 2 mal new abzuschreiben. (und die fragen kommen garantiert wozu diese schlüsselwörter alle da sind, Wozu diese ollen punkte zwischen System.out.println() gut sind,...)

    Gehts dann richtung OO find ich java wieder besser, da man dort z.B. nicht noch drauf aufpassen muss seine Objecte aus dem speicher zu löschen. Und der lehrer sich dann nicht mit den typischen c/c++ Pointer anfängerproblemen rumschlagen muss. (und ich binn mir zimlich sicher, das es schüler gibt, die das mit den ganzen * nie kapieren werden)

    gruss Termite



  • Also mit C++ anzufangen, das ist einfach zu brutal. Das bricht einem das Genick als Anfänger (nicht nur da, das bereitet einem ewig Schwierigkeiten 😃 ), Java wäre da schon eher was. Aber um die Grundlagen (Konstrollstrukturen, Schleifen usw.) einzutrichtern, warum nicht QBasic oder ne simple Scriptsprache?



  • Termite schrieb:

    Hi

    volkard schrieb:

    ... die leute von delphi haben leider sehr viel dogmatischen und veralteten unfug im nähkästchen. single-entry/single-exit, um mal einen der knaller zu nennen. ...

    Das ist meines wissens auch bestandteil der MIRA regeln.

    find emira regeln in google nicht. was soll das sein?

    Und hat auch seine berechtigung.

    nein. definitiv nicht.

    Wie schnell ist mal ein delete in einer funktion vergessen, die mehrere ausgänge hat.

    diese funktion, wo man delete vergessen könnte, die ist auch nicht exceptionsicher. also wie machste sie exceptionsicher? indem destruktoren das aufräumen besorgen. und folglich gibt es kein delete mehr zu vergessen und deine regel ist für'n popo. sie ist einfach schlecht in c++.



  • gamer schrieb:

    Das du die "Qualität" einer Programmiersprache in Anzahl der Codezeilen misst
    zeigt das du
    1.) keine Ahnung von Programmierung/Programmiersprachen hast.
    2.) die Frage des Thread-Erstellers, meines Erachtens, überhaupt nicht verstanden
    hast.
    

    ??? wir reden aber überhaupt garnicht über die qualität ... Ausserdem: warum meint jeder eigentlich besser prgrammieren zu können als ich (das fängt wirklich an zu nerven, ich fühl mich als wäre ich im kindergarten - kann sich nicht mal ein richtiger (kommerzieller) programmierer melden ??? [ich fühle mich hier nämlich so hilflos])

    Das du erste Zeile aus dem Original-Zitat gelöscht hast, zeigt zumindest du
    verstanden hast wie es zu Ausage 1 gekommen ist. 😃

    Zu 2. habe ich, bisher zumindest, keine Aussage gefunden wo jemand behauptet er
    könne besser programmieren als du. Erkenn ich da einen Anflug von Paranoia. 🙂

    Ich bin zwar kein Programmierer sondern nur Diplom-Informatiker. Aber die
    Realisierung von unseren/meinen Projekten erfolgt(e) seit 15 Jahren sowohl in
    C++, als auch Java oder VB, meist auch unter meiner persönlichen Mitwirkung :),
    jeweils in der Sprache die eben passend für das jeweilige Projekt ist.



  • bau mal mit single-entry/single-exit ne funktion, die feststellt, ob eine übergeben zahl eine primzahl ist. ich mach mal in c++-stil vor:

    bool istPrim(unsigned int kandidat){
       if(kandidat<2) return false;
       if(kandidat%2==0) return false;
       for(unsigned int teiler=3;teiler*teiler<=kandidat;teiler+=2)
          if(kandidat%teiler==0)
             return false;
       return true;
    }
    


  • volkard schrieb:

    bau mal mit single-entry/single-exit ne funktion, die feststellt, ob eine übergeben zahl eine primzahl ist. ich mach mal in c++-stil vor:

    bool istPrim(unsigned int kandidat){
       if(kandidat<2) return false;
       if(kandidat%2==0) return false;
       for(unsigned int teiler=3;teiler*teiler<=kandidat;teiler+=2)
          if(kandidat%teiler==0)
             return false;
       return true;
    }
    
    bool istPrim(unsigned int kandidat){
       bool ret = false;
    
       if(kandidat<2)
           goto ausgang;
    
       if(kandidat%2==0) 
           goto ausgang;
    
       ret = true;
       for(unsigned int teiler=3;teiler*teiler<=kandidat;teiler+=2)
          if(kandidat%teiler==0) {
             ret = false;
             break;
          }
    
    ausgang:
      return ret;
    }
    

    VORSICHT IRONIE 😃 😃 😃 VORSICHT IRONIE



  • Und ohne goto kriegt mans nicht hin? 😃



  • Redhead schrieb:

    bool istPrim(unsigned int kandidat){
       bool ret = false;
    
       if(kandidat<2)
           goto ausgang;
    
       if(kandidat%2==0) 
           goto ausgang;
    
       ret = true;
       for(unsigned int teiler=3;teiler*teiler<=kandidat;teiler+=2)
          if(kandidat%teiler==0) {
             ret = false;
             break;
          }
    
    ausgang:
      return ret;
    }
    

    VORSICHT IRONIE 😃 😃 😃 VORSICHT IRONIE

    lol.
    und das nehme ich mal als grundlage und mache mit den MIRA-regeln, die bestimmt auch goto verbieten, noch das goto weg.

    bool istPrim(unsigned int kandidat){
       bool ret = false;
       if(kandidat<2)
           ;
       else
           if(kandidat%2==0) 
              ;
           else{
              ret = true;
              for(unsigned int teiler=3;teiler*teiler<=kandidat;teiler+=2)
                 if(kandidat%teiler==0){
                    ret = false;
                    break;
                 }
           }
      return ret;
    }
    [cpp]
    naja, break ist auch ein heimliches goto. muss weg. 
    [cpp]
    bool istPrim(unsigned int kandidat){
       bool ret = false;
       if(kandidat<2)
           ;
       else
           if(kandidat%2==0) 
              ;
           else{
              ret = true;
              for(unsigned int teiler=3;teiler*teiler<=kandidat&&ret==true;teiler+=2)
                 if(kandidat%teiler==0){
                    ret = false;
                 }
           }
      return ret;
    }
    

    naja, ret ist jetzt mehrfach belegt, macht ja nix. alternativ hätte man teiler=kandidat schreiben können oder besonderts elegant noch ne variable bauen, die nur zum schleifennabbruch dient.
    (ich weiß nicht, ob das jetzt ironisch ist. ich nenne es mal realsatire.)



  • 😃 😃 😃
    In gemeinsamer Kooperation ist es uns endlich gelungen eine lehrbuchgemässe
    Version des "Primzahl"-Programmes zu erstellen.
    😃 😃 😃



  • ich fürchte, es waren die MISRA-regeln. http://www.ida.liu.se/~snt/teaching/SCRTS/MisraSoftwareGuidelines[1].pdf
    das les ich jetzt mal...
    november 1994. gabs da schon c++?
    zwischenstand: bis seite 12 nur buzzwords und bilder.
    zwischenstand: bis seite 50 isses ein proposal für case-tools.
    auf seite 56 fangen coding guidelines an.
    5.3.6 ist lustig.
    aber singe-entry/single-exit steht da nirgends.
    waren wohl doch nicht die MISRA-regeln.



  • volkard schrieb:

    bool istPrim(unsigned int kandidat){
       if(kandidat<2) return false;
       if(kandidat%2==0) return false;
       for(unsigned int teiler=3;teiler*teiler<=kandidat;teiler+=2)
          if(kandidat%teiler==0)
             return false;
       return true;
    }
    
    bool istPrim(unsigned int kandidat) {
      bool result;
      if (kandidat < 2)
        result = false;
      else if (kandidat % 2 == 0)
        result = false;
      else {
        bool looping = true;
        for (unsigned int teile = 3; looping && teiler*teiler <= kandidat; teiler += 2) {
          if (kandidat % teiler == 0) {
            looping = false;
            result = false;
          }
        }
        result = true;
      }
      return result;
    }
    

    Nicht übermäßig häßlich. Ich frage mich, was du damit aussagen wolltest.

    EDIT: Ich hab mal einfach deine Funktion nachprogrammiert. Normalerweise ist mir Korrektheit (2 ist prim!) minimal wichtiger als Stil 🤡



  • Ich spreche von einer 11. Klasse.



  • Bashar schrieb:

    Nicht übermäßig häßlich. Ich frage mich, was du damit aussagen wolltest.

    aber schon beachtlich häßlich. und zwar als direkte folge der "single-entry/single-exit"-forderung. ich denke, ich konnte zeigen, daß die "single-entry/single-exit"-forderung den code verschlechtern kann. außerdem gibt es keinen grund mehr für diese forderung.
    also ein ding ganz ohne vorteile aber mit gelegentlichen nachteilen. weg damit.



  • volkard schrieb:

    aber schon beachtlich häßlich. und zwar als direkte folge der "single-entry/single-exit"-forderung. ich denke, ich konnte zeigen, daß die "single-entry/single-exit"-forderung den code verschlechtern kann.

    IMHO konntest du das nicht. Dass die Anweisungen zum Führen des Kontrollflusses bei SESE etwas mehr Raum einnehmen, ist ja bekannt. Und ich bin noch nichtmal Verfechter von SESE, wie willst du also mit so einem Beispiel überhaupt irgendwen überzeugen?

    volkard schrieb:

    außerdem gibt es keinen grund mehr für diese forderung.

    Wenn es je einen gab, warum gibts den dann nicht mehr?


Anmelden zum Antworten