JAVA, C++, Delphi - IT-Klasse



  • Dich meinte ich ja gar nicht.

    Im Java-Prog is auch noch was nicht ganz richtig 😉

    Aber es sind nicht die "kleinen" Sachen die C++ schwieriger machen. Es sind z.B. der Umgang mit Zeigern, das System mit den Header-Files ...

    Ein anderer Punkt ist das Anfänger gerne etwas auf dem Bildschirm sehen und auch draufklicken wollen. Das kann einem C++ nicht so einfach bieten wie Delphi oder Java.

    Ciao



  • Naja also ich hab mit 14 angefangen c++ zu lernen und hatte bis heute nie probleme ⚠



  • n00bs schrieb:

    gamer schrieb:

    PS: ich hab nicht gesagt das delphi und vb tot sind.

    aber paar so trolls wie "totgesagte leben länger" oder "volkard" behaupten so'n dünnpfiff 😡

    ey ich hab nur vb gemeint und damit hatte ich recht.



  • gamer schrieb:
    Ich hab auch mit c++ angefangen :(
    Zum vergleich:
    Code:
    class CHalloCplusplus
    {
    public static void main (String[] args)
    {
    System.out.println("Hallo Cplusplus");
    }
    }
    Code:
    class CHalloCplusplus
    {
    public static void main (String[] args)
    {
    System.out.println("Hallo Cplusplus");
    }
    }
    Code:
    class CHalloCplusplus
    {
    public static void main (String[] args)
    {
    System.out.println("Hallo Cplusplus");
    }
    }
    
    Code:
    #include <iostream>
    main() {
    cout << "Hallo Cplusplus";
    }
    Code:
    #include <iostream>
    main() {
    cout << "Hallo Cplusplus";
    }
    Code:
    #include <iostream>
    main() {
    cout << "Hallo Cplusplus";
    }
    
    Toller Vergleich. Da hab ich auch einen:
    Java Code:
    public class TestPrime
    {
       public static void main (String[] args)
       {
          int end = 1000000000;
          long time = System.currentTimeMillis ();
          int [] sieve = new int [(end >> 5) + 1];
          int x, y, i;
          int primes = 1;
          int sqrt = (int)Math.sqrt((double)end);
          x = 3;
          while (x <= sqrt)
          {
             if ((sieve[x >> 5] & (0x1 << (x & 0x1f))) == 0)
             {
                y = x * x;
                i = x << 1;
                ++primes;
                while (end > y)
                {
                   sieve[y >> 5] |= (0x1 << (y & 0x1f));
                   y += i;
                }
             }
             x += 2;
          }
          while (x <= end)
          {
             if ((sieve[x >> 5] & (0x1 << (x & 0x1f))) == 0) ++primes;
             x += 2;
          }
          System.out.println ("Zwischen 0 und " + end +
                              " liegen " + primes + " Primzahlen.");
          System.out.println ("GesamtZeit : " +
                              (System.currentTimeMillis () - time) +
                               " Millisekunden");
       }
    }
    Java Code:
    public class TestPrime
    {
    public static void main (String[] args)
    {
    int end = 1000000000;
    long time = System.currentTimeMillis ();
    int [] sieve = new int [(end >> 5) + 1];
    int x, y, i;
    int primes = 1;
    int sqrt = (int)Math.sqrt((double)end);
    x = 3;
    while (x <= sqrt)
    {
    if ((sieve[x >> 5] & (0x1 << (x & 0x1f))) == 0)
    {
    y = x * x;
    i = x << 1;
    ++primes;
    while (end > y)
    {
    sieve[y >> 5] |= (0x1 << (y & 0x1f));
    y += i;
    }
    }
    x += 2;
    }
    while (x <= end)
    {
    if ((sieve[x >> 5] & (0x1 << (x & 0x1f))) == 0) ++primes;
    x += 2;
    }
    System.out.println ("Zwischen 0 und " + end +
    " liegen " + primes + " Primzahlen.");
    System.out.println ("GesamtZeit : " +
    (System.currentTimeMillis () - time) +
    " Millisekunden");
    }
    }
    Java Code:
    public class TestPrime
    {
       public static void main (String[] args)
       {
          int end = 1000000000;
          long time = System.currentTimeMillis ();
          int [] sieve = new int [(end >> 5) + 1];
          int x, y, i;
          int primes = 1;
          int sqrt = (int)Math.sqrt((double)end);
          x = 3;
          while (x <= sqrt)
          {
             if ((sieve[x >> 5] & (0x1 << (x & 0x1f))) == 0)
             {
                y = x * x;
                i = x << 1;
                ++primes;
                while (end > y)
                {
                   sieve[y >> 5] |= (0x1 << (y & 0x1f));
                   y += i;
                }
             }
             x += 2;
          }
          while (x <= end)
          {
             if ((sieve[x >> 5] & (0x1 << (x & 0x1f))) == 0) ++primes;
             x += 2;
          }
          System.out.println ("Zwischen 0 und " + end +
                              " liegen " + primes + " Primzahlen.");
          System.out.println ("GesamtZeit : " +
                              (System.currentTimeMillis () - time) +
                               " Millisekunden");
       }
    }
    
    C/C++ Code:
    #include<iostream>
    #include<time.h>
    #include <cmath>
    
    int main ()
    {
       const int end = 1000000000;
       const long startTime = (long)time(NULL);
       const int arraySize = (end >> 5) + 1;
       int sieve [arraySize];
       for (int i = 0 ; i < arraySize ; ++i)
       {
          sieve[i] = 0;
       }
       int x, y, i;
       int primes = 1;
       const int sqrtEnd = (int)sqrt((double)end);
       x = 3;
       while (x <= sqrtEnd)
       {
          if ((sieve[x >> 5] & (0x1 << (x & 0x1f))) == 0)
          {
             y = x * x;
             i = x << 1;
             ++primes;
             while (end > y)
             {
                sieve[y >> 5] |= (0x1 << (y & 0x1f));
                y += i;
             }
          }
          x += 2;
       }
       while (x <= end)
       {
          if ((sieve[x >> 5] & (0x1 << (x & 0x1f))) == 0) ++primes;
          x += 2;
       }
       std::cout << "Zwischen 0 und " << end << " liegen " << primes << " Primzahlen." << std::endl;
       std::cout << "GesamtZeit : " << ((long)time(NULL) - startTime) << " Sekunden" << std::endl;
    }
    C/C++ Code:
    #include<iostream>
    #include<time.h>
    #include <cmath>
    
    int main ()
    {
    const int end = 1000000000;
    const long startTime = (long)time(NULL);
    const int arraySize = (end >> 5) + 1;
    int sieve [arraySize];
    for (int i = 0 ; i < arraySize ; ++i)
    {
    sieve[i] = 0;
    }
    int x, y, i;
    int primes = 1;
    const int sqrtEnd = (int)sqrt((double)end);
    x = 3;
    while (x <= sqrtEnd)
    {
    if ((sieve[x >> 5] & (0x1 << (x & 0x1f))) == 0)
    {
    y = x * x;
    i = x << 1;
    ++primes;
    while (end > y)
    {
    sieve[y >> 5] |= (0x1 << (y & 0x1f));
    y += i;
    }
    }
    x += 2;
    }
    while (x <= end)
    {
    if ((sieve[x >> 5] & (0x1 << (x & 0x1f))) == 0) ++primes;
    x += 2;
    }
    std::cout << "Zwischen 0 und " << end << " liegen " << primes << " Primzahlen." << std::endl;
    std::cout << "GesamtZeit : " << ((long)time(NULL) - startTime) << " Sekunden" << std::endl;
    }
    C/C++ Code:
    #include<iostream>
    #include<time.h>
    #include <cmath>
    
    int main ()
    {
       const int end = 1000000000;
       const long startTime = (long)time(NULL);
       const int arraySize = (end >> 5) + 1;
       int sieve [arraySize];
       for (int i = 0 ; i < arraySize ; ++i)
       {
          sieve[i] = 0;
       }
       int x, y, i;
       int primes = 1;
       const int sqrtEnd = (int)sqrt((double)end);
       x = 3;
       while (x <= sqrtEnd)
       {
          if ((sieve[x >> 5] & (0x1 << (x & 0x1f))) == 0)
          {
             y = x * x;
             i = x << 1;
             ++primes;
             while (end > y)
             {
                sieve[y >> 5] |= (0x1 << (y & 0x1f));
                y += i;
             }
          }
          x += 2;
       }
       while (x <= end)
       {
          if ((sieve[x >> 5] & (0x1 << (x & 0x1f))) == 0) ++primes;
          x += 2;
       }
       std::cout << "Zwischen 0 und " << end << " liegen " << primes << " Primzahlen." << std::endl;
       std::cout << "GesamtZeit : " << ((long)time(NULL) - startTime) << " Sekunden" << std::endl;
    }
    

    Toll, aber ich hab dass auf eine einfache textausgabe bezogen.
    Ach und unterschätz mich mal lieber nicht sonst mach ich aus deinen 41 zeilen c++ code gleich 31 dan hat c++ wieder gewonnen



  • gamer schrieb:

    Toll, aber ich hab dass auf eine einfache textausgabe bezogen.
    Ach und unterschätz mich mal lieber nicht sonst mach ich aus deinen 41 zeilen c++ code gleich 31 dan hat c++ wieder gewonnen

    Darum geht es doch gar nicht. Eigentlich sollte aus den beiden Vergleichen hervorgehen, dass es auf diesem Level nur geringe strukturelle Unterschiede zwischen den Sprachen gibt. ...bzw., dass man Programme in dieser Art in beiden Sprachen relativ ähnlich schreiben kann (wobei ich nicht bezweifele, dass man die Programme auch völlig anders und sehr sprachspezifisch schreiben kann).

    Auf so einem Level kommt bei einem Vergleich, der irgendwie "Sprachkomplexität" oder so zeigen soll, nicht viel bei raus. ...und viel weiter kommen die in der Schule in einem Halbjahr eh nicht.



  • gamer schrieb:

    Ach und unterschätz mich mal lieber nicht sonst mach ich aus deinen 41 zeilen c++ code gleich 31 dan hat c++ wieder gewonnen

    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.



  • Delphi ist ein Orakel in Griechenland,
    Java eine Insel,
    bleibt nur noch C++ :p



  • C++ ist eine Programmiersprache von Bjarne Stroustrup.



  • 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


Anmelden zum Antworten