Programiersprache für Anfänger



  • Tim schrieb:

    Sollen wir darüber diskutieren wieviele C++ Compiler nicht komplett z.B. Templates umsetzen?

    Die Warnung bei printf ist aber eine freiwillige Leistung, die nicht vom Standard abgedeckt wird. Und auch wenn die Diskussion nicht sonderlich sinnvoll ist, kann man beim Vergleich von Sprachen nicht die Vorteile eines einzelnen Compilers zugunsten der Sprache auslegen.

    Davon ab, dass Dein Fehler zur Compilezeit den Übersetzungsvorgang nicht sonderlich beeinträchtigt 🙂



  • LordJaxom schrieb:

    Tim schrieb:

    Sollen wir darüber diskutieren wieviele C++ Compiler nicht komplett z.B. Templates umsetzen?

    Die Warnung bei printf ist aber eine freiwillige Leistung, die nicht vom Standard abgedeckt wird. Und auch wenn die Diskussion nicht sonderlich sinnvoll ist, kann man beim Vergleich von Sprachen nicht die Vorteile eines einzelnen Compilers zugunsten der Sprache auslegen.

    Wenn man nur die Theorie betrachtet, hast du sicher recht.

    LordJaxom schrieb:

    Davon ab, dass Dein Fehler zur Compilezeit den Übersetzungsvorgang nicht sonderlich beeinträchtigt 🙂

    Es ist aber trivial ihn zu erkennen 😃



  • LordJaxom schrieb:

    Die Warnung bei printf ist aber eine freiwillige Leistung, die nicht vom Standard abgedeckt wird. Und auch wenn die Diskussion nicht sonderlich sinnvoll ist, kann man beim Vergleich von Sprachen nicht die Vorteile eines einzelnen Compilers zugunsten der Sprache auslegen.

    und genau so wenig aussagekraft hat der vergleich von library-funktionen (cout vs. printf, usw).
    btw: irgendwo weiter vorn wurde c++-verweigerern vorgeworfen, sie hätten >20 jahre mit C rumgefummelt und können sich daher auf nichts neues einlassen. meiner meinung nach stimmt das nicht. die meisten, die c++ nicht sonderlich schätzen, kennen mehrere programmiersprachen und haben auch einiges an c++ -wissen. gerade leute, die nur C kennen und dann irgendwann von C++ erfahren, sind von C++ besonders angetan.
    🙂



  • Bashar schrieb:

    u-ser_l schrieb:

    es dient grundsätzlich nie der Erfaßbarkeit und Lernbarkeit, wenn verschiedene Konzepte denselben Namen tragen oder auf dieselbe Syntax abgebildet werden.

    Du wiederholst dich, also tu ich das auch: Wo bleibt dein Beleg?

    welcher der beiden Sätze ist verständlicher:

    1. Fliegen fliegen Fliegen nach

    2. Hunde laufen Hunden nach

    Einfacher verständlich ist 2., weil in 1. das gleiche Wort in zwei verschiedenen Bedeutungen vorkommt, in 2. dagegen eine 1:1 Zuordnung zwischen Wort und Bedeutung vorliegt.



  • Okay, da du mich zu ignorieren scheinst, sag ich es nochmal.
    In C gab es static schon in der Form, dass es in einer Funktion ausgesagt hat, die Variable bleibt über alle Funktionsaufrufe so bestehen.(Oder so ähnlich).
    In C++ hat man das selbe für Klassen eingeführt, static bedeuted nun "Die Variable bleibt über alle Instanzen so bestehen"(bzw. so ähnlich eben).
    Dass das technisch gesehen, 2 verschiedene Dinge sind, kann dem Anfänger doch scheißegal sein. Im Gegenteil, es kann sogar als Merkhilfe fungieren, da das Schlüsselwort absolut ähnliche Dinge tut.
    Genau das selbe gilt für deinen Satz, für jemanden der Deutsch lernt, kann die Ähnlichkeit zwischen Fliegen und fliegen gerade beim Vokabeln lernen eine Merkhilfe sein, und da ich den Satz, so wie du ihn gesagt hast, niemals in einer sinnvollen Aussage gehört hab ist die zufällig auftretende Kuriosität, dass "F/fliegen" 3 mal nacheinander auftritt(bei 2en ist es schon nicht mehr wirklich verwirrend) und für verwirrung sorgen kann ein absolut irrelevanter Ausnahmefall.



  • JustAnotherNoob schrieb:

    Okay, da du mich zu ignorieren scheinst, sag ich es nochmal.

    sry, hab's wohl übersehen ...

    JustAnotherNoob schrieb:

    "Die Variable bleibt über alle Instanzen so bestehen"(bzw. so ähnlich eben).
    Dass das technisch gesehen, 2 verschiedene Dinge sind,

    technisch und auf CPU-Ebene ist es eher schon ähnlich (nämlich realisiert als globale Variable), aber semantisch bedeutet static 3 verschiedene Dinge. Was hat eine *Klassenvariable* damit zu tun, daß eine *lokale* Variable zwischen zwei Funktionsaufrufen ihren Wert behält ??

    Und was hat das wiederum damit zu tun, daß eine *globale* Variable innerhalb ihrer Datei gültig ist ??

    JustAnotherNoob schrieb:

    kann dem Anfänger doch scheißegal sein.

    Eben nicht. Wäre es so schlimm gewesen, aus static drei verschiedene Schlüsselwörter zu machen ?

    JustAnotherNoob schrieb:

    Im Gegenteil, es kann sogar als Merkhilfe fungieren, da das Schlüsselwort absolut ähnliche Dinge tut.

    das ist ein Trugschluß. Gleiche Syntax verführt dazu, gleiche Bedeutung dahinter zu vermuten (oder zumindest ähnliche), und das führt im Fall von static zu Problemen.



  • u_ser-l schrieb:

    welcher der beiden Sätze ist verständlicher:

    Drück ich mich undeutlich aus?



  • gut, Du willst also einen Nachweis, daß C++ für Anfänger schwer zu durchschauen ist, schwerer als Programmiersprachen mit eindeutiger Zuordnung zwischen Konzept und Syntax ?

    Da du mir ohnehin nicht glauben wirst:

    goOgle nach "C++ in der Schule"



  • u_ser-l schrieb:

    gut, Du willst also einen Nachweis, daß C++ für Anfänger schwer zu durchschauen ist, schwerer als Programmiersprachen mit eindeutiger Zuordnung zwischen Konzept und Syntax ?

    Nein, ich will einen Beleg dafür, dass die "Mehrdeutigkeit" von static für Anfänger ein Problem darstellt.

    goOgle nach "C++ in der Schule"

    Den Beleg zu suchen ist deine Aufgabe. BTW bei Artikeln von Stefan Ram wär ich ganz vorsichtig. Der drückt zwar alles sehr genau aus, aber zwischen echten und imaginären Verständnisproblemem unterscheidet er nicht.



  • unglaublich, wie man sich in was reinsteigern kann, da vergeht ja jedem anfänger die lust auf c und c++ 😃

    ich muss ehrlich sagen, dass ich c++ einiges leichter fand um einzusteigen. vor allem aus dem grund, weil die meisten c tutorials die sache mit den zeigern und dynamisch allociertem speicher nur schlecht erklären und die stringbearbeitung per char array erklären statt mit library funktionen. das erfordert doch schon relativ viel vorstellungsvermögen. c++ macht es einem da leichter mit new und delete und der string klasse. es ist sicher nicht schlecht, solche dinge zu lernen, aber für anfänger halt erschlagend. da sollte man erstmal lernen was 'schlaufen' sind 🤡

    [flame]bezüglich syntax komplexizität und kontext sensitivität sind ja beide sprachen pillepalle, perl ist da vieeeel schöner.[/flame]

    my @array = ("eins", "zwei", "drei");
    print @array;
    print "\n";
    print "@array\n";
    print @array."\n"; 
    foreach(@array) { print; }
    print "\n";
    
    einszweidrei
    eins zwei drei
    3
    einszweidrei
    

    soll mal einer nem anfänger erklären 😉



  • Bashar schrieb:

    Nein, ich will einen Beleg dafür, dass die "Mehrdeutigkeit" von static für Anfänger ein Problem darstellt.

    Solange du >>Mehrdeutigkeit<< in Zusammenhang mit den verschiedenen Bedeutungen von static in Anführungszeichen setzt, verstehen wir uns nicht. Es ist de facto eine Mehrdeutigkeit.

    Aber meinetwegen kannst Du gerne glauben, eine static globale Variable mit dateiweiter Gültigkeit wäre dasselbe wie eine static lokale Variable, die zwischen zwei Funktionsaufrufen ihren Wert behält. Du bist damit ohnehin in zahlreicher Gesellschaft.



  • Was hat eine *Klassenvariable* damit zu tun, daß eine *lokale* Variable zwischen zwei Funktionsaufrufen ihren Wert behält ??

    Ob eine *lokale* Variable ihren Wert zwischen Funktionsaufrufen,
    oder eine Variable ihren Wert über allen Instanzen beibehält, ist zwar ein Unterschied, aber ähnlich sind sie sich dennoch.
    Im Grunde kann man für static sagen: Die Variable gibts nur einmal für den Kontext, in dem sie deklariert wurde. Und schon haste ne Vereinhetlichung.



  • uber perle schrieb:

    unglaublich, wie man sich in was reinsteigern kann, da vergeht ja jedem anfänger die lust auf c und c++ 😃

    Beide Sprachen sind imho auch nicht Einsteigerfreundlich.

    Aber es kommt auch darauf an, was man mit einer Sprache erreichen möchte (Einfach irgendeine Sprache als Einstiegssprache zu nennen halte ich für Fehl am Platz, siehe auch meine Empfehlungen in Zusammenhang mit der Zielsetzung, ziemlich weit vorne im Thread). Unter umständen kann auch Assembler, Cobol, Natural & Co für einen Einsteiger geeignet sein, wenn er genau dies später braucht.

    uber perle schrieb:

    [flame]bezüglich syntax komplexizität und kontext sensitivität sind ja beide sprachen pillepalle, perl ist da vieeeel schöner.[/flame]

    OMG - Da ist mir C++ jedenfalls logischer xD.

    cu André



  • Für Anfänger gibt es einfachere Programmiersprache als C/C++, z.B. BASIC. Nur empfehlenswerter bleibt C/C++. Damit zu programmieren macht für den Einstieg mehr Mühe. Man kann aber länger damit leben und braucht nicht mehr umzusteigen, wenn man mehr will oder soll.



  • @u_ser-l:
    Was ich über static glaube oder nicht ist nicht der Gegenstand der Diskussion. Kommt jetzt von dir mal was anderes als Geblubber?



  • Blub Blubblub 🙂

    hast' Recht - ich will mich auch nicht dazu verleiten lassen persönlich zu werden, es geht ja schließlich nur um

    static
    

    🙄

    Ciao



  • asc schrieb:

    OMG - Da ist mir C++ jedenfalls logischer xD.

    versuch dich mal in einen absoluten anfänger zu versetzen. welchen code würde er wohl eher kapieren? den perl-code oder einen c++ code, der gleiches macht?
    🙂



  • ~fricky schrieb:

    versuch dich mal in einen absoluten anfänger zu versetzen. welchen code würde er wohl eher kapieren? den perl-code oder einen c++ code, der gleiches macht? 🙂

    Ganz ehrlich: Ich tippe sogar auf den C++ Code, der aber wesentlich mehr Codezeilen hätte. Das Perlzeugs finde ich jedenfalls von allen mir bekannten Sprachen bisher das kryptischste (Von Mehrdeutigkeiten die ja Gegen C++ genannt werden ebenso abgesehen).



  • uber perle schrieb:

    [flame]bezüglich syntax komplexizität und kontext sensitivität sind ja beide sprachen pillepalle, perl ist da vieeeel schöner.[/flame]

    perl ist schöner, aber APL ist kürzer 😃



  • asc schrieb:

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

    Ich hab zwar noch nicht soviel mit C gemacht, aber mir kommt es um einiges einfacher vor als C++. Einige C Libraries mögen ja fehleranfälliger sein, aber ein std::transform um einen String in Uppercase zu convertieren ist auch nicht einfach und intuitiv. Außerdem hat C auch weniger Sprachfeatures z.B. keine Exceptions und Operatorüberladung, welche in C++ große Fehlerquellen sind (siehe safe bool und assignment operator).


Anmelden zum Antworten