Programiersprache für Anfänger



  • LordJaxom schrieb:

    mich würde interessieren, wo Du hier (mindestens zwei! :D) neue Problemchen findest:

    cout << "hallo, welt";
    

    << ist bereits Shift-Operator; die Doppelbedeutung verwirrt Anfänger.



  • Echt? Ein Anfänger lernt zuerst was ein Shift-Operator ist? 😮 Ich habe den bis heute nicht gebraucht! Zu Assembler-Zeiten habe ich Shifts benutzt... in C++ ist mir das zum Glück erspart geblieben.

    Und das oben genannte Beispiel, kommt in jedem C++-Buch VOR den Shift-Operatoren. Das kann niemanden verwirren.



  • tfa schrieb:

    Dieser Autor bringt es auf den Punkt:

    It can be considered: what application domain is C++ relevant for? The answer to this is that C++ might be used as a better C. But for what applications is C relevant? C is relevant for low level Unix style programming, and is not an ideal language in view of its low level nature, and flaws. C is not applicable for large project organisation: hence C++'s attempt to improve it. C++, however, has not solved C's flaws, as I once hoped it would, but painfully magnified them.

    Aus Ian Joyner: C++?? : A Critique of C++ (3rd Ed.)

    Yo, ich kann auch eine Gegenkritik schreiben. Jeder kann eine Kritik schreiben. Muß aber deshalb nichts heißen. 😉



  • u-ser_l schrieb:

    << ist bereits Shift-Operator; die Doppelbedeutung verwirrt C-Veteranen, die sich seit 20 Jahren erfolgreich C++ widersetzen.

    FTFY



  • Bulli schrieb:

    Yo, ich kann auch eine Gegenkritik schreiben. Jeder kann eine Kritik schreiben. Muß aber deshalb nichts heißen. 😉

    Absolute Zustimmung. Es gibt solche Kritiken ohnehin zu jeder Sprache (Sei es nun C, Java, C++, VB...). Wenn es einen heiligen Gral an Sprache gäbe, würde es eh nur noch diese auf dem Markt geben 😉

    cu André



  • asc schrieb:

    Wenn es einen heiligen Gral an Sprache gäbe, würde es eh nur noch diese auf dem Markt geben 😉

    Nein, dann würden die, die ihn gefunden haben, in einen heiligen Kreuzzug gegen die Anhänger anderer Sprachen ziehen. Moment mal ...



  • asc schrieb:

    Und das ist die typische Arroganz von jemanden der aus der C-Schiene kommt, und das konzept von C++ nicht verstanden hat.

    hatte ich wirklich ein bißchen hart formuliert.

    asc schrieb:

    Der Ursprungsposter hat nur einen Satz ohne Anwendungsfeld beschrieben, in der Hinsicht kann ich jedenfalls keine Empfehlung aussprechen.

    Goethe schrieb:

    Ein jeder, weil er spricht, glaubt auch über die Sprache sprechen zu können.

    er hat ein anwendungsgebiet beschrieben:
    er will was lernen.

    und da ist mir eingefallen, _wie_ lange ich die std-b von C++
    studieren mußte, um "erfolgserlebnisse" zu haben.
    ich würde heute anders anfangen.

    Wenn es um eine Sprache in der Anwendungsentwicklung, mit späterer Zielsetzung mittlere/große Projekte geht, würde ich wohl am ehesten zu Java oder C# tendieren. Bei kleinen Anwendungen gehen aber ebenso Scriptsprachen etc..

    es ist einfach nicht wahr, dass "scriptsprachen" nur mehr für
    kleine anwendungen was taugen.

    ANSI C ist genauso wenig schwer wie C++ oder Java

    aber man braucht ein wenig, bis man manches durchschaut hat,
    außer vielleicht bei java.



  • besseres Beispiel:

    &
    

    hat je nach Kontext wieviele verschiedene Bedeutungen in C++ ?

    1. logisches "und"
    2. Adreßoperator
    3. unabhängige Referenzen (int& a)
    4. pass-by-reference bei Argumentübergabe in Funktionsaufrufen
    5. Referenzrückgabe von Funktionen

    (habe ich noch welche vergessen?)

    das ist für Anfänger schlicht eine Menge zu lernen, und intuitiv erkennbar sind diese Bedeutungen, abgesehen vom logischen "und", auch nicht.



  • Ich habe die letzten drei Seiten mit Antworten nur überflogen, aber da bei so einer Grundsatzfrage überhaupt eine Diskussion von der Länge entstand, nehme ich an, dass es mal wieder darum geht, ob C/C++ gute Anfängersprachen sind.

    Ich sage, das kommt auf das Grundverständnis an. Wenn man weiß, dass jede Programmiersprache eine gewisse Grundlogik verfolgt (...naja fast jede...;), dann spricht überhaupt nichts dagegen, mit C/C++ anzufangen. Ich persönlich hab das auch versucht, bin aber zunächst daran gescheitert. Trotzdem war es ein Erfolg, weil ich das Gelernte auf andere Sprachen anwenden konnte, durch die ich dann kurze Zeit später einen besseren Zugang zu C/C++ aufbauen konnte.

    Mit Geduld geht alles. Und wenn man zunächst die vermeintlich kryptischen Aspekte der Sprache ignoriert, dann ist das genauso simpel wie Java. Übrigens hab ich mit Java größere Probleme gehabt als mit C, weil mich die etwas restriktivere Umgebung zunächst irritierte, aber das ist nur meine Erfahrung.

    Merke: C++ kocht auch nur mit Wasser.

    Bashar schrieb:

    asc schrieb:

    Wenn es einen heiligen Gral an Sprache gäbe, würde es eh nur noch diese auf dem Markt geben 😉

    Nein, dann würden die, die ihn gefunden haben, in einen heiligen Kreuzzug gegen die Anhänger anderer Sprachen ziehen. Moment mal ...

    Darüber hinaus würde jeder Prozess ewig leben...



  • u-ser_l schrieb:

    besseres Beispiel:

    &
    

    hat je nach Kontext wieviele verschiedene Bedeutungen in C++ ?

    Richtig! Je nach Kontext, und somit eindeutig. Es klingt hier bei einigen so, als würde die Syntax nur auf gut Glück funktionieren. Tut sie aber nicht. Sie funktioniert nach bestimmten Regeln. Sogar besser geregelt als in der deutschen Sprache, wo man erst beim Lesen und nicht beim Hören den Sinn erfährt ("Ein paar Schuhe" und "Ein Paar Schuhe").

    Wo ist also in C++ da das Problem, wenn selbst ein dummer Compiler versteht, was gemeint ist? Ein Mensch kann das noch besser verstehen, so wie du ja sogar selber gesagt hast: je nach Kontext.

    u-ser_l schrieb:

    das ist für Anfänger schlicht eine Menge zu lernen, und intuitiv erkennbar sind diese Bedeutungen, abgesehen vom logischen "und", auch nicht.

    Ehm, und? Er ist Anfänger. Ein Anfänger kann per Definition nicht so viel vom Fach, wie ein Fortgeschrittener oder ein Profi. Aaaaanfäääääängeeeer. Ja, das ist sowas wie ein Lehrling. Und eine Programmiersprache muß man lernen. Wer hätte das gedacht?! 😃 Es ist aber nicht so schwer zu lernen, wie es hier einige verkaufen wollen. Weiterhin muß man auch nicht jede Einzelheit von C++ wissen, um damit zu programmieren. Vieles kann man bei Bedarf nachschlagen oder auch nochmal nachschlagen. Es ist nichts geheimes, wo einem Informationen vorenthalten werden.
    Z.B. liefert einem der MS-Compiler immer Fehlercodes, und die kann man in der MSDN nachschlagen und bekommt sogar mögliche Lösungen spendiert. Darüber habe ich z.B. sehr viele Unverständlichkeiten verstanden... durch Fehler lernt man.



  • 3. unabhängige Referenzen (int& a)
    4. pass-by-reference bei Argumentübergabe in Funktionsaufrufen
    5. Referenzrückgabe von Funktionen

    Ahja, das sollten natürlich alles unterschiedliche Zeichen oder Schlüsselwörter sein, wär ja auch viel klarer.



  • Bulli schrieb:

    Yo, ich kann auch eine Gegenkritik schreiben. Jeder kann eine Kritik schreiben. Muß aber deshalb nichts heißen. 😉

    Ach ja? Dann mach mal!



  • tfa schrieb:

    Ach ja? Dann mach mal!

    Wie wäre es wenn du einfach das Netz bemühst. Für bislang jede Sprache mit der ich gearbeitet habe gab es im Netz mehrere Kritikseiten.



  • Immer wieder erstaunlich...



  • asc schrieb:

    tfa schrieb:

    Ach ja? Dann mach mal!

    Wie wäre es wenn du einfach das Netz bemühst. Für bislang jede Sprache mit der ich gearbeitet habe gab es im Netz mehrere Kritikseiten.

    Warum sollte ich denn? Hier wollte jemand eine Gegenkritik schreiben. Also bitte!
    Wenn du mehrere Kritikseiten im Netz kennst, verrat sie uns doch einfach. Aber sie sollten schon ansatzweise so ausführlich, fundiert und kompetent sein wie die Seite, die ich gepostet habe. "Rants" von irgendwelchen Fanboys eignen sich vielleicht für Flamewars, sind aber sonst uninteressant.

    Zur Inspiration noch zwei zu C++: 1 2
    Zugegebenermaßen weniger fundiert. Die fallen eher in die Sparte Flamewar-Fanboys 😃

    Zum Thema find ich dieses Zitat noch passend:

    Der Große B.S. schrieb:

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg.

    Wobei man über "makes it harder" natürlich auch wieder streiten kann...



  • LordJaxom schrieb:

    aber mich würde interessieren, wo Du hier (mindestens zwei! :D) neue Problemchen findest:

    printf("%d", "hallo, welt");
    // vs.
    cout << "hallo, welt";
    

    problemchen 1: 'cout' interpretiert seine eingabe. das kann schief gehen bzw. anders aussehen als gewünscht (hier gabs mal 'nen thread, in dem 'cout' in verbindung mit volatile sich ziemlich seltsam verhielt).
    problemchen 1.5: deine printf-zeile enthält einen fehler.
    problemchen 2: ein 'cout'-ausdruck, der mehrere objekte formatiert ausgeben soll, wird sehr lang und hässlich, jedenfalls im vergleich zu 'printf'.

    Bulli schrieb:

    Wo ist also in C++ da das Problem, wenn selbst ein dummer Compiler versteht, was gemeint ist?

    mensch Artchi, poste doch wieder unter deinem richtigen namen.
    🙂



  • Bulli schrieb:

    Wo ist also in C++ da das Problem, wenn selbst ein dummer Compiler versteht, was gemeint ist?

    das *ist* das Problem: Was für einen "dummen" Computer oder Compiler gut verständlich ist, ist in der Regel für den Menschen schwer verständlich, und umgekehrt. Man denke an Binärcode.

    Abgesehen davon finde ich es auch komisch, daß ich in C++ alle Typen selbst vereinbaren muß, aber sobald ich einen Typ-Fehler begehe, mich der Compiler ermahnt, und sogar hinweist, wie der richtige Typ lauten würde a la "expected: int*, got: int**" - warum typisiert er nicht einfach selber, statt dem Programmierer diese fehlerträchtige Arbeit aufzuhalsen - offenbar kann er es ja ?

    Bulli schrieb:

    Es ist aber nicht so schwer zu lernen, wie es hier einige verkaufen wollen.

    das hängt vom Background ab. Als ich C lernte, konnte ich schon mehrere Assemblersprachen, da war C also kein Problem.

    Mir scheint, daß die Gewöhnung an logisches Denken ein Hindernis beim Lernen von C++ ist. C++ ist teilweise nicht logisch, es gibt keine eindeutige Zuordnung zwischen Syntax-Elementen und Konzepten, viele Symbole und Schlüsselwörter sind mehrfach überladen mit Bedeutungen, die teilweise nichts miteinander zu tun haben.



  • asc schrieb:

    Der Name ist Programm... Wenn du C++ als " Unlogisch und kompliziert" betrachtest, gilt dies erst recht für C.

    http://www.artima.com/cppsource/safebool.html
    Kannst du mal schnell das mit dem safe bool idiom und dem Rückgabewert bool oder void* erklären, ich hab das noch nicht ganz verstanden. Sollte doch auch einfach, logisch und unkompliziert ohne 3 Seiten Text gehen, da C++. Und wie war das mit dem assign operator und exception safety?



  • naja, da jetzt meine anfängliche frage zur diskussion über c bzw. c++ wurde kann das thema auch geschlossen werden weil es keinen sinn mehr hat. ich werde mir jetzt einfach mal 2-3 bücher über c++ holen und bin gerade dabei mir phyton anzugucken. ich hoffe es klappt aber erwarte auch nicht von mir selbst, das ich in 1 monat programmieren kann. trotzdem vieln dank für eure beiträge und vll. bis bald mal wieder... 🙂



  • isklar schrieb:

    asc schrieb:

    Der Name ist Programm... Wenn du C++ als " Unlogisch und kompliziert" betrachtest, gilt dies erst recht für C.

    http://www.artima.com/cppsource/safebool.html
    Kannst du mal schnell das mit dem safe bool idiom und dem Rückgabewert bool oder void* erklären, ich hab das noch nicht ganz verstanden. Sollte doch auch einfach, logisch und unkompliziert ohne 3 Seiten Text gehen, da C++. Und wie war das mit dem assign operator und exception safety?

    Interessantes Problem, aber es erklärt nich nicht warum C weniger Kompliziert ist als C++, da es die gleichen Probleme hat, weniger Typsicherheit besitzt...

    Und nur das zweifel ich hier an. Ich habe niemals gesagt das C++ unkompliziert ist, aber mehr als C (Alleine die vielen Zusatzbedingungen die man in der C-Bibliothek wissen muss um Funktionen aufzurufen, ohne in Laufzeitfehler zu rennen, die in der C++ Bibliothek zum Großteil dank Typsicherheit, Klassen etc. bereits in der Compilezeit aufgedeckt werden können).

    Ich lobe weder C++ in den Himmel, noch ziehe ich C die Existenzberechtigung ab. Nur von der Komplexität sind beide ähnlich. Und beide ebenso schwer für ein Anfänger zu lernen.

    fricky schrieb:

    problemchen 1: 'cout' interpretiert seine eingabe. das kann schief gehen bzw. anders aussehen als gewünscht (hier gabs mal 'nen thread, in dem 'cout' in verbindung mit volatile sich ziemlich seltsam verhielt).
    problemchen 1.5: deine printf-zeile enthält einen fehler.
    problemchen 2: ein 'cout'-ausdruck, der mehrere objekte formatiert ausgeben soll, wird sehr lang und hässlich, jedenfalls im vergleich zu 'printf'.

    Zu 1 & 1.5: cout interpretiert seine Aussage wenigstens typsicher. Der Fehler in der C-Zeile soll wohl nur auf die Leichtigkeit hinweisen wie man in C einen Laufzeitfehler hinbekommt. Und Anfänger werden mit volatile (Das ich übrigens bislang nur sehr selten -eher nie- in Anwendungsprogrammen begegnet bin) wohl nur wenig bis garnicht in Kontakt kommen.
    Zu 2: Wenn ich dafür die Fehler zur Compilezeit statt zur Laufzeit geliefert bekomme, ist es zumindestens mir das wert.

    u-ser_l schrieb:

    Mir scheint, daß die Gewöhnung an logisches Denken ein Hindernis beim Lernen von C++ ist.

    Das mag dir so gehen, ich finde C++ in vielen Bereichen logischer und vor allem auch sicherer als seine C-Altlasten...

    cu André


Anmelden zum Antworten