welche vorteile bietet c++ gegenüber c



  • ZumHundertstenMal schrieb:

    ..., weil man ja einem Anfänger auch nicht direkt TMP um die Ohren haut

    Die haut man auch anderen nicht um die Ohren http://de.academic.ru/dic.nsf/dewiki/1332856



  • ipsec schrieb:

    @cooky451:
    Deinen Argumenten zufolge wären ja die Programmieranfänger, die zuerst z.B. mit Python anfangen, ganz arm dran. Dort gibt es gar keine char-Arrays, mit denen man den Stringtyp erklären könnte. Wie sollen die das nur jemals verstehen?

    Genau. Mit Python anfangen ist für mich der größte Unfug den man überhaupt machen kann. Python mag seine stärken haben, erfahrende Programmierer können hier ohne viel Aufwand sehr schnell sichere Programme schreiben. Als Lernsprache ist das Ganze doch aber wirklich völlig ungeeignet. Man bekommt halt in keiner Weise mit was da überhaupt vor sich geht. Bei mir im Unterricht kann niemand den Unterschied zwischen der Zahl 5 und '5' erklären. Wie auch?
    num = 5
    char = "5"
    print(num, " | ", char)
    Funktioniert ja problemlos. Python zaubert alles irgendwie richtig, nur sieht man davon nichts. (Genau so sieht das auch mit Zeilenvorschüben (\n) aus.) Das ist natürlich nicht als Schwäche der Sprache Python anzusehen, nur als Lernsprache finde ich das doch wirklich absolut ungeeignet.
    Meiner Meinung nach sollte man ruhig auch mal Dinge wie atoi, itoa etc. nachschreiben lassen. Gerade solche Aufgaben schärfen doch das Verständnis für die Vorgänge im Computer. Auch gegen ein bisschen Assembler hätte ich nichts einzuwenden.

    Natürlich, wer Python kann dem wird es nachher nicht unmöglich sein auch noch C zu lernen. Aber ich wage zu behaupten dass jemand der schon Erfahrungen mit C hat wesentlich schneller Python lernen kann.

    Man muss natürlich auch überlegen wo die Prioritäten liegen. Will man dass Schüler möglichst schnell ein buntes Fenster mit "Hallo, Welt" basteln können (ohne zu wissen was überhaupt ein message-loop ist), ist Python bestimmt eine gute Wahl. Das wäre aber niemals mein Ziel wenn ich versuchen würde jemandem Programmieren nahezubringen.



  • Man muss natürlich auch überlegen wo die Prioritäten liegen. Will man dass Schüler möglichst schnell ein buntes Fenster mit "Hallo, Welt" basteln können (ohne zu wissen was überhaupt ein message-loop ist), ist Python bestimmt eine gute Wahl. Das wäre aber niemals mein Ziel wenn ich versuchen würde jemandem Programmieren nahezubringen.

    Idealerweise geht es beim Informatikunterricht nicht um das Programmieren an sich, sondern um Algorithmen. Man soll lernen, wie man ein Problem mit Hilfe des Computers löst. Und dafür ist eine Sprache, die mir beim Problemlösen hilft und mir nicht noch das Leben mit manueller Speicherverwaltung schwer macht, gut geeignet.

    Vor allem in der Schule ist "Programieren lernen" meiner Meinung nach ziemlich sinnlos, da sich diejenigen, die sich sowieso dafür interessieren, sich früher oder später eh mit dem Thema auseinandersetzen werden. Der Rest wird C, Python, oder welche Sprache auch immer gelehrt wird, nach kürzester Zeit wieder vergessen haben.
    Deswegen ist das einzig sinnvolle, was man beim Informatikunterricht lehren kann, die Entwicklung von Algorithmen und die allgemeine Herangehensweise für das Lösen von Problemen, weil diese Fähigkeiten auch später noch sinnvoll verwendet werden können.

    Bei mir im Unterricht kann niemand den Unterschied zwischen der Zahl 5 und '5' erklären. Wie auch?

    Ist die Frage dein ernst? Mit einem guten Lehrer natürlich!
    Dass der Lehrer schlecht ist, kann ja sein, aber bei einem schlechten Lehrer würde auch C nicht helfen.

    Python zaubert alles irgendwie richtig, nur sieht man davon nichts.

    Wie gesagt: Und printf() zaubert nicht? Meinst du es würde deinen Mitschülern leichter fallen die Funktionsweise von printf() zu erklären?



  • ZumHundertstenMal schrieb:

    Man muss natürlich auch überlegen wo die Prioritäten liegen. Will man dass Schüler möglichst schnell ein buntes Fenster mit "Hallo, Welt" basteln können (ohne zu wissen was überhaupt ein message-loop ist), ist Python bestimmt eine gute Wahl. Das wäre aber niemals mein Ziel wenn ich versuchen würde jemandem Programmieren nahezubringen.

    Idealerweise geht es beim Informatikunterricht nicht um das Programmieren an sich, sondern um Algorithmen. Man soll lernen, wie man ein Problem mit Hilfe des Computers löst. Und dafür ist eine Sprache, die mir beim Problemlösen hilft und mir nicht noch das Leben mit manueller Speicherverwaltung schwer macht, gut geeignet.

    Vor allem in der Schule ist "Programieren lernen" meiner Meinung nach ziemlich sinnlos, da sich diejenigen, die sich sowieso dafür interessieren, sich früher oder später eh mit dem Thema auseinandersetzen werden. Der Rest wird C, Python, oder welche Sprache auch immer gelehrt wird, nach kürzester Zeit wieder vergessen haben.
    Deswegen ist das einzig sinnvolle, was man beim Informatikunterricht lehren kann, die Entwicklung von Algorithmen und die allgemeine Herangehensweise für das Lösen von Problemen, weil diese Fähigkeiten auch später noch sinnvoll verwendet werden können.

    Algorithmen kann man auch auf dem Papier aufstellen/lösen/whatever, dafür brauche ich erstmal keine Programmiersprache. Wenn es aber darum geht Probleme möglichst effizient mit einem Computer zu lösen, was ja auch zumindest einen Teilbereich der Informatik ausmacht, gehört Speicherverwaltung nunmal dazu.

    ZumHundertstenMal schrieb:

    Bei mir im Unterricht kann niemand den Unterschied zwischen der Zahl 5 und '5' erklären. Wie auch?

    Ist die Frage dein ernst? Mit einem guten Lehrer natürlich!
    Dass der Lehrer schlecht ist, kann ja sein, aber bei einem schlechten Lehrer würde auch C nicht helfen.

    Siehe unten 😉

    ZumHundertstenMal schrieb:

    Python zaubert alles irgendwie richtig, nur sieht man davon nichts.

    Wie gesagt: Und printf() zaubert nicht? Meinst du es würde deinen Mitschülern leichter fallen die Funktionsweise von printf() zu erklären?

    Gut, bevor man itoa etc. nicht mal selbst geschrieben hat, zaubert printf. Dennoch sieht man in etwa was da vor sich geht.
    printf("%i", num) ist doch gleich etwas total anderes. Das läd zum ausprobieren ein: Was passiert bei printf("%c", num) oder bei printf("%i", c) etc.
    Einem wird zumindest immer bewusst gemacht, dass 5 != '5'.
    Und ja, wir haben über die Jahre im Unterricht bestimmt drei mal ASCII besprochen. Eigentlich müsste doch also jedem in etwa klar sein wie Buchstaben im Computer repräsentiert werden. Dem ist aber einfach nicht so. Mit C wäre das nicht so einfach in Vergessenheit geraten.



  • Algorithmen kann man auch auf dem Papier aufstellen/lösen/whatever, dafür brauche ich erstmal keine Programmiersprache.

    Stimmt genau. Es kann trotzdem mal ganz interessant sein, sie auch mal zu implementieren.

    Wenn es aber darum geht Probleme möglichst effizient mit einem Computer zu lösen, was ja auch zumindest einen Teilbereich der Informatik ausmacht, gehört Speicherverwaltung nunmal dazu.

    Und für einen Programmieranfänger ist das wichtig? Reicht da nicht die Python-Perfomance?

    Und ja, wir haben über die Jahre im Unterricht bestimmt drei mal ASCII besprochen. Eigentlich müsste doch also jedem in etwa klar sein wie Buchstaben im Computer repräsentiert werden. Dem ist aber einfach nicht so.

    Wie gesagt: Dann ist euer Lehrer schlecht...



  • Alle guten haben damals mit Basic auf C64 oder ähnlichem angefangen. Diskussion beendet.



  • warum wird Programmierung an allgemeinbildenden Schulen eigentlich nicht mit Single-Paradigma-Sprachen gelernt?

    "Single-paradigma" heißt "leicht erfaßbar" + "keine ablenkung vom eigentlichen Programmier-Paradigma". Dann kämen jährlich hunderttausende Schüler mit LISP-, Logo-, Smalltalk-, Scratch- oder sogar APL- oder Forth-Kenntnissen von der Schule und bräuchten nicht jede kaputte Hype-Sprache toll zu finden.



  • 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.



  • ZumHundertstenMal schrieb:

    Und für einen Programmieranfänger ist das wichtig? Reicht da nicht die Python-Perfomance?

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

    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.

    Oh Gott..



  • ZumHundertstenMal schrieb:

    Und für einen Programmieranfänger ist das wichtig? Reicht da nicht die Python-Perfomance?

    Je schlechter der Arbeiter, desto besser muß das Werkzeug sein.

    Wobei es natürlich auch nicht dumm ist, einem guten Arbeiter gutes Werkzeug zu geben, aber er ist bei weitem nicht so stark darauf angewiesen.



  • volkard schrieb:

    ZumHundertstenMal schrieb:

    Und für einen Programmieranfänger ist das wichtig? Reicht da nicht die Python-Perfomance?

    Je schlechter der Arbeiter, desto besser muß das Werkzeug sein.

    Genau, darum setzen wir Fahranfänger in Rennwagen und drücken jeden Hobbyknipser ein 10000€ Kamera in die Hand. 🙄



  • zudu schrieb:

    volkard schrieb:

    ZumHundertstenMal schrieb:

    Und für einen Programmieranfänger ist das wichtig? Reicht da nicht die Python-Perfomance?

    Je schlechter der Arbeiter, desto besser muß das Werkzeug sein.

    Genau, darum setzen wir Fahranfänger in Rennwagen und drücken jeden Hobbyknipser ein 10000€ Kamera in die Hand. 🙄

    Nein, da sehe ich eh keine Gefahr.

    Aber wir stecken Fahranfänger in uralte Rostschüsseln, die allein von der Technik her schon ein zehnfach höheres Unfallrisiko haben und wundern uns, daß an den Alleen die Bäume kaputtgehen und Jugendliche sterben.
    Wir schenken unseren Kindern Kameras um unteren 50-Euro-Segment und werden uns bestätigt sehen, daß ihnen das Knipsen keine Begeisterung entlocken wird.



  • 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.



  • 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???


Anmelden zum Antworten