welche vorteile bietet c++ gegenüber c



  • zudu schrieb:

    In deiner Traumwelt.

    http://www.autosieger.de/article15354.html

    Das Unfallrisiko junger Fahranfänger ist nach ADAC-Informationen höher als bei Autofahrern anderer Altersklassen. Zwar stellen sie nur ca.12% aller Führerscheinbesitzer der Klasse B (3), verursachen jedoch 25% aller Pkw-Unfälle. Nicht angepasste Geschwindigkeit ist die Unfallursache mit dem höchsten Anteil junger Fahrer: 40,3% der Unfälle wurden 2006 von 18- bis 25-Jährigen verschuldet. Bei Verkehrsunfällen, in denen Alkohol im Spiel war, ist diese Altersgruppe im Vergleich zu den übrigen Autofahrern mit 34% dabei. Mit 25,5% sind junge Fahranfänger an Autounfällen durch Überholen beteiligt.

    Der Vergleich hinkt eh. Ein Auto ist hier nicht als Werkzeug zu sehen und die Maximalgeschwindigkeit kein Gütezeichen.



  • Ja, die ganze Werkzeugtheorie ist Müll. Nem Anfänger sollte man eine Programmiersprache geben, die relativ sauber und einfach ist und mit der man Spass hat und schnell was interessantes programmieren kann. Wenn es einen interessiert, lernt er sowieso noch jede Menge Sprachen.



  • cooky451 schrieb:

    Es ist für jeden interessant der Algorithmen jenseits von Bubblesort implementieren möchte.

    Na, so langsam ist Python nun doch wieder nicht. 😉

    Wie gesagt, du magst ja schlechte Erfahrungen mit deinem Lehrer gemacht haben, aber die Sprache ist sicherlich nicht das Problem.



  • zudu schrieb:

    Ja, die ganze Werkzeugtheorie ist Müll. Nem Anfänger sollte man eine Programmiersprache geben, die relativ sauber und einfach ist und mit der man Spass hat und schnell was interessantes programmieren kann.

    Das kann man so allgemein nicht sagen. Verschiedene Anfänger haben unterschiedliche Bedürfnisse.



  • ZumHundertstenMal schrieb:

    cooky451 schrieb:

    Es ist für jeden interessant der Algorithmen jenseits von Bubblesort implementieren möchte.

    Na, so langsam ist Python nun doch wieder nicht. 😉

    Wie gesagt, du magst ja schlechte Erfahrungen mit deinem Lehrer gemacht haben, aber die Sprache ist sicherlich nicht das Problem.

    Es geht hier nicht um die Geschwindigkeit sondern darum, dass ich es sinnlos finde Algorithmen für einen Computer zu implementieren (nach diesem Schritt hat man die abstrakte Mathematik ja schon hinter sich gelassen) ohne sich Gedanken über Speicher, Overhead, etc. zu machen. Denn diese Überlegungen sind es doch die den Schritt Mathematik->Implementierung ausmachen. Wenn ich diesen aber nicht gehen möchte, brauche ich auch kein Python/sonstwas.

    Nem Anfänger sollte man eine Programmiersprache geben, die relativ sauber und einfach ist und mit der man Spass hat und schnell was interessantes programmieren kann.

    Kann man machen wenn man als Ziel hat dass der Anfänger möglichst schnell ein paar bunte Fensterchen zaubern kann.



  • richtigesprache schrieb:

    Oder man nimmt gleich Java zum lernen, so wie an der Uni. Damit hat man gleich die Sprache mit der weitesten Verbreitung in der Tasche. Die Wenigsten brauchen heute noch C oder C++ in ihrem Beruf als Programmierer.

    Java 😮 ???? nicht dein ernst oder ??



  • Nenne mir mal eine Sprache die weiter verbreitet ist als Java und dennoch einfach er erlernen ist???



  • hmmhmmhmm schrieb:

    Nenne mir mal eine Sprache die weiter verbreitet ist als Java und dennoch einfach er erlernen ist???

    keine Ahnung, ich kanns mir nur nicht vorstellen



  • cooky451 schrieb:

    ZumHundertstenMal schrieb:

    cooky451 schrieb:

    Es ist für jeden interessant der Algorithmen jenseits von Bubblesort implementieren möchte.

    Na, so langsam ist Python nun doch wieder nicht. 😉

    Wie gesagt, du magst ja schlechte Erfahrungen mit deinem Lehrer gemacht haben, aber die Sprache ist sicherlich nicht das Problem.

    Es geht hier nicht um die Geschwindigkeit sondern darum, dass ich es sinnlos finde Algorithmen für einen Computer zu implementieren (nach diesem Schritt hat man die abstrakte Mathematik ja schon hinter sich gelassen) ohne sich Gedanken über Speicher, Overhead, etc. zu machen. Denn diese Überlegungen sind es doch die den Schritt Mathematik->Implementierung ausmachen. Wenn ich diesen aber nicht gehen möchte, brauche ich auch kein Python/sonstwas.

    Du vielleicht nicht, aber es gibt einen ganzen Haufen Leute, die nicht programmieren, weil sie es so toll finden, sondern einfach, weil sie was ausprobieren, ein Konzept validieren, oder ein paar Sachen einmal berechnen wollen.

    Dafür ist die Entwicklungszeit relevant und nicht unbedingt, ob der Speicher optimal genutzt wird oder der Code ohne Veränderungen auf irgendeiner Embedded CPU der Waschmaschine oder dem Aufzug läuft. Wenn das die Constraints sind, dann entwickelt man Software ohnehin anders, als das, was üblicherweise auf einem Desktop-System gestartet und beendet wird.



  • hmmhmmhmm schrieb:

    Nenne mir mal eine Sprache die weiter verbreitet ist als Java und dennoch einfach er erlernen ist???

    C



  • Daniel E. schrieb:

    Dafür ist die Entwicklungszeit relevant und nicht unbedingt, ob der Speicher optimal genutzt wird oder der Code ohne Veränderungen auf irgendeiner Embedded CPU der Waschmaschine oder dem Aufzug läuft. Wenn das die Constraints sind, dann entwickelt man Software ohnehin anders, als das, was üblicherweise auf einem Desktop-System gestartet und beendet wird.

    Mein Code läuft auch auf der Waschmaschine im Aufzug!
    Zudem ist die Entwicklungszeit bei Programmieranfängern wohl eher irrelevant.

    die nicht programmieren, weil sie es so toll finden, sondern einfach, weil sie was ausprobieren,

    ??

    ein Konzept validieren,

    Aha.. und jetzt noch mal für kleine Fische, denn einen Zusammenhang zum Thema kann ich hier irgendwie nicht erkennen.

    oder ein paar Sachen einmal berechnen wollen.

    Dafür muss man auch eigene Programme schreiben..



  • Es geht hier nicht um die Geschwindigkeit sondern darum, dass ich es sinnlos finde Algorithmen für einen Computer zu implementieren (nach diesem Schritt hat man die abstrakte Mathematik ja schon hinter sich gelassen) ohne sich Gedanken über Speicher, Overhead, etc. zu machen.

    Du sagst auf der einen Seite, dass die Geschwindigkeit nicht das Argument ist, man sich auf der anderen Seite aber trotzdem Gedanken um Overhead und Speicherverbrauch machen soll. Seltsame Argumentation...

    Denn diese Überlegungen sind es doch die den Schritt Mathematik->Implementierung ausmachen.

    Nein. Man kann Programme sogar so entwerfen, dass gar kein Unterschied zwischen Mathematik und Implementierung besteht (siehe Funktionale Programmierung).
    Diese Überlegungen müssen gemacht werden, wenn man das letzte Quäntchen Geschwindigkeit herausholen möchte.

    Wichtig für Programmieranfänger (oder desinteressierte Schüler) ist doch nicht, wie ein Algorithmus mit dem Speicherplatz umgeht, sondern wie der Algorithmus funktioniert.

    C

    Das Problem an C ist, dass gerade desinteressierte Schüler damit überhaupt nichts gebacken bekommen werden, sobald es über "Hello World" hinausgeht. Die Sprache ist zwar nur etwas besserer Assembler und deswegen sehr einfach zu verstehen, aber wegen der geringen Abstraktionsmöglichkeiten muss man halt häufig großen Aufwand betreiben, was ich desinteressierten Schülern nicht zutraue.



  • ZumHundertstenMal schrieb:

    Das Problem an C ist, dass gerade desinteressierte Schüler damit überhaupt nichts gebacken bekommen werden, sobald es über "Hello World" hinausgeht.

    💡 Alle Anfänger sind komplett bescheuert. 💡



  • ZumHundertstenMal schrieb:

    Es geht hier nicht um die Geschwindigkeit sondern darum, dass ich es sinnlos finde Algorithmen für einen Computer zu implementieren (nach diesem Schritt hat man die abstrakte Mathematik ja schon hinter sich gelassen) ohne sich Gedanken über Speicher, Overhead, etc. zu machen.

    Du sagst auf der einen Seite, dass die Geschwindigkeit nicht das Argument ist, man sich auf der anderen Seite aber trotzdem Gedanken um Overhead und Speicherverbrauch machen soll. Seltsame Argumentation...

    Nein. Vielleicht war das mit der Geschwindigkeit nur falsch Ausgedrückt. Es geht nicht um die absolute Geschwindigkeit, was ich damit meinte ist dass es nicht darum geht dass Python jetzt hier und da langsamer ist als C, sondern dass es bei einer Implementierung auch Sinn macht sich Gedanken über zu Speicher etc. zu machen.

    Wichtig für Programmieranfänger (oder desinteressierte Schüler) ist doch nicht, wie ein Algorithmus mit dem Speicherplatz umgeht, sondern wie der Algorithmus funktioniert.

    Dafür muss man nicht programmieren. Da reicht Mathe.

    Das Problem an C ist, dass gerade desinteressierte Schüler damit überhaupt nichts gebacken bekommen werden, sobald es über "Hello World" hinausgeht. Die Sprache ist zwar nur etwas besserer Assembler und deswegen sehr einfach zu verstehen, aber wegen der geringen Abstraktionsmöglichkeiten muss man halt häufig großen Aufwand betreiben, was ich desinteressierten Schülern nicht zutraue.

    Desinteressierte Schüler müssen auch nicht in die Oberstufe gehen und Informatik wählen.



  • 💡 Alle Anfänger sind komplett bescheuert. 💡

    Anfänger != Desinteressierte Schüler

    Du warst wahrscheinlich schon lange nicht mehr in einer gymnasialen Oberstufe, aber Programmierung ist nicht sonderlich angesagt.

    sondern dass es bei einer Implementierung auch Sinn macht sich Gedanken über zu Speicher etc. zu machen.

    Wie gesagt: Den Sinn sehe ich nicht, wenn es nur darum geht, die zugrundeliegenden Konzepte der Programmierung zu verstehen.
    Und dafür reicht Python vollkommen aus.

    Dafür muss man nicht programmieren. Da reicht Mathe.

    Ja, genau - und Informatik ist auch zu weiten Teilen Mathe.
    Aber man möchte doch sicherlich auch mal testen, ob das, was man sich da überlegt hat, auch funktioniert.

    Desinteressierte Schüler müssen auch nicht in die Oberstufe gehen und Informatik wählen.

    D.h. ihr habt interessierte Schüler bei euch im Informatikkurs, die den Unterschied zwischen '2' und 2 nicht erklären können? Schwer zu glauben.



  • ZumHundertstenMal schrieb:

    Wie gesagt: Den Sinn sehe ich nicht, wenn es nur darum geht, die zugrundeliegenden Konzepte der Programmierung zu verstehen.
    Und dafür reicht Python vollkommen aus.

    Zum Konzept der Programmierung gehört nunmal auch Speicher etc.

    Dafür muss man nicht programmieren. Da reicht Mathe.

    Ja, genau - und Informatik ist auch zu weiten Teilen Mathe.
    Aber man möchte doch sicherlich auch mal testen, ob das, was man sich da überlegt hat, auch funktioniert.

    Zum testen kann mans auch einfach ausrechnen.

    D.h. ihr habt interessierte Schüler bei euch im Informatikkurs, die den Unterschied zwischen '2' und 2 nicht erklären können? Schwer zu glauben.

    Ich glaube es gibt einen Unterschied zwischen Schülern, die desinteressiert sind und solchen, die den oups: nicht ganzen Tag irgendwelche Diskussionen über das Lehren von Programmiersprachen führen 😃



  • cooky451 schrieb:

    sondern dass es bei einer Implementierung auch Sinn macht sich Gedanken über zu Speicher etc. zu machen.

    Falsch, Gedanken zu Laufzeit und Speicherverbrauch hat man sich in der Theorie wenn man einen Algorithmus entwickelt (oder viel eher wenn man ihn nachvollzieht im Unterricht). Schließlich sind die verschiedenen Sortieralgorithmen Musterbeispiele für die verschiedenen Laufzeiten und den verschiedenen Speicherverbrauch bei unterschiedlichen Algorithmen. Das hat aber mit programmieren nichts zu tun.

    cooky451 schrieb:

    Zum Konzept der Programmierung gehört nunmal auch Speicher etc.

    Richtig, aber nicht Interna wie "Speicher anfordern" und "Speicher freigeben":
    function x() {
    integer i; // speicher für eine einzelne Zahl wird angefordert
    ...
    return;
    } // speicher wieder frei



  • BierzeltOmi schrieb:

    cooky451 schrieb:

    sondern dass es bei einer Implementierung auch Sinn macht sich Gedanken über zu Speicher etc. zu machen.

    Falsch, Gedanken zu Laufzeit und Speicherverbrauch hat man sich in der Theorie wenn man einen Algorithmus entwickelt (oder viel eher wenn man ihn nachvollzieht im Unterricht). Schließlich sind die verschiedenen Sortieralgorithmen Musterbeispiele für die verschiedenen Laufzeiten und den verschiedenen Speicherverbrauch bei unterschiedlichen Algorithmen. Das hat aber mit programmieren nichts zu tun.

    Wenn man sich schon ein Speicherkonzept überlegt hat, warum soll man es dann nicht auch implementieren? Dann hat man doch quasi schon eine "C Lösung", warum dann nicht auch C nutzen?

    cooky451 schrieb:

    Zum Konzept der Programmierung gehört nunmal auch Speicher etc.

    Richtig, aber nicht Interna wie "Speicher anfordern" und "Speicher freigeben":
    function x() {
    integer i; // speicher für eine einzelne Zahl wird angefordert
    ...
    return;
    } // speicher wieder frei

    Hä? So sieht das doch aber in C aus? Ich verstehe nicht, was Du damit sagen willst.



  • Hä? So sieht das doch aber in C aus? Ich verstehe nicht, was Du damit sagen willst.

    Ich glaube es geht eher darum, dass der Compiler hier für integer i Speicherplatz reserviert, den er automatisch wieder frei gibt - und das ohne dein Zutun.

    Du möchtest nunmal eher low-levelig verstehen, was im Computer genau vor sich geht. Dabei ziehst du allerdings ziemlich willkürlich die Grenze bei der Hochsprache (!) C, obwohl du noch viel weiter runter gehen könntest (Assembler, Maschinensprache, genaue Funktionsweise einer ALU, etc.).

    Das ist zwar alles interessant, hat aber irgendwann nicht mehr sonderlich viel mit Informatik zu tun und ist deshalb auch kein sinnvoller Einstieg in die Programmierung. Besonders, wo es doch heutzutage so viele Sprachen gibt, die diese ganzen Details erstmal verstecken, davon abstrahieren, sodass man sich voll und ganz auf das Lösen des Problems konzentrieren kann.

    Natürlich sollte so etwas wie Speicherverbrauch und Geschwindigkeit kein totales Fremdwort sein, aber zunächst sollte dort nicht der Hauptaugenmerk liegen.

    Ich glaube es gibt einen Unterschied zwischen Schülern, die desinteressiert sind und solchen, die den ganzen Tag irgendwelche Diskussionen über das Lehren von Programmiersprachen führen 😃

    Und welche kennen den Unterschied zwischen '2' und 2 nicht? Sicherlich die Desinteressierten. Aber dann liegt es an ihnen oder/und am Lehrer und nicht an der Sprache.



  • ZumHundertstenMal schrieb:

    Ich glaube es gibt einen Unterschied zwischen Schülern, die desinteressiert sind und solchen, die den ganzen Tag irgendwelche Diskussionen über das Lehren von Programmiersprachen führen 😃

    ..

    Sorry, da fehlte ein "nicht" in dem Satz. Sollte lauten:

    Ich glaube es gibt einen Unterschied zwischen Schülern, die desinteressiert sind und solchen, die nicht den ganzen Tag irgendwelche Diskussionen über das Lehren von Programmiersprachen führen 😃

    Und ja, wie ein Compiler in etwa funktioniert bzw. wie eine ALU arbeitet ist natürlich auch interessant und sollte erklärt werden. Auch Schaltkreise und Assembler sollte man mal besprochen haben. Man muss das ja nicht bis zum erbrechen machen, aber Informationsverarbeitung gehört halt doch dazu 😃

    Und ich ziehe die Grenze bei C, weil weil man hier einerseits relativ leicht auf die Abläufe in Assembler schließen kann, aber andereseits eine schöne, Systemunabhängige Sprache hat.


Anmelden zum Antworten