Programiersprache für Anfänger



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



  • Ich denke es sollte hier unterschieden werden zwischen "wie einfach ist es eine sprache zu lernen (alle relevanten sprachfeatures zu kennen und zu wissen wie man sie anwendet)" und "wie einfach ist es in einer bestimmten zeit eine sprache zu lernen und dann brauchbare programme (also ohne viele grobe fehler) damit zu entwickeln".

    was den ersten punkt angeht ist C viel einfacher als C++. was den zweiten angeht IMO nicht. obwohl C++ einem mehr möglichkeiten gibt dinge falsch zu machen, nimmt einem C++ (wenn man es auch nur halbwegs richtig einsetzt) auch viele dinge ab wo man viel falsch machen könnte wenn man sie immer "zu fuss" machen muss (container, smart-pointer etc.). und sobald man beide sprachen mal gut kann ist es in C++ denke ich einfacher, d.h. man kommt schneller zu einem brauchbaren ergebnis als mit C.

    im allgemeinem. spezialfälle wie embedded-systems, treiberentwicklung etc. mal ausgenommen.

    p.S.: was jetzt nicht heissen soll dass ich C oder C++ für eine sprache halte mit der man besonders leicht einsteigen kann. da eignen sich sprachen wie python, java oder auch PHP/Perl vermutlich besser, auch wenn ich mich mit keiner dieser sprachen selbst besonders anfreunden konnte (am ehesten noch java) - aber das ist wieder rein subjektiv.



  • hustbaer schrieb:

    obwohl C++ einem mehr möglichkeiten gibt dinge falsch zu machen, nimmt einem C++ (wenn man es auch nur halbwegs richtig einsetzt) auch viele dinge ab...

    das ist es, was ich weiter oben ansprach: man kann mit C++ unsicherheiten vermeiden, die man sich mit eingehandelt C hätte, holt sich im gegenzug aber andere (und meistens viel fiesere) mögliche fehlerquellen an bord.

    hustbaer schrieb:

    ...auch wenn ich mich mit keiner dieser sprachen selbst besonders anfreunden konnte (am ehesten noch java)...

    ich dachte immer, du kommst aus der windows-welt. daher hätte ich auf C# getippt.
    🙂



  • man kann mit C++ unsicherheiten vermeiden, die man sich mit eingehandelt C hätte, holt sich im gegenzug aber andere (und meistens viel fiesere) mögliche fehlerquellen an bord.

    Mit den "meistens viel fieseren" Fehlerquellen bekommt man IMO nur zu tun wenn man sich überschätzt, Dinge verwendet wo man sich nicht ganz sicher ist bzw. die man einfach nicht richtig verstanden hat etc. Lässt sich IMO recht einfach vermeiden. Ist aber natürlich nur meine persönliche Meinung.

    ich dachte immer, du kommst aus der windows-welt. daher hätte ich auf C# getippt.

    Ich komme aus der Amiga 500/3000 Welt und bin mittlerweile in der Windows Welt zuhause. Was aber nicht heisst dass ich C# so toll finde. Für gewisse Dinge (RAD, GUI-Kram etc.) ist es nett, für andere Dinge wieder der Horror. Und gerade auf C# bzw. das .NET Framework trifft IMO das zu was du über C++ schreibst: man kann sehr schnell was auf die Beine stellen, handelt sich dabei aber Probleme/Fehlerquellen ein die zumindest der typische C# Programmierer überhauptnichtmehr versteht. Das .NET Framework hat einige Fallstricke parat wo man sich schön Memory-Leaks bzw. allgemein Resource-Leaks einfangen kann. Und andere Probleme wie verfrühte Finalisierung die in bestimmten Situationen möglich ist, die man mit Hand verhindern muss. Alles andere als schön und anfängerfreundlich. Und bestimmt noch viele andere Dinge.



  • hustbaer schrieb:

    Was aber nicht heisst dass ich C# so toll finde. Für gewisse Dinge (RAD, GUI-Kram etc.) ist es nett, für andere Dinge wieder der Horror. Und gerade auf C# bzw. das .NET Framework trifft IMO das zu was du über C++ schreibst: man kann sehr schnell was auf die Beine stellen, handelt sich dabei aber Probleme/Fehlerquellen ein die zumindest der typische C# Programmierer überhauptnichtmehr versteht.

    ach du schreck! und ich dachte, .NET wär (unter win) eine ernstzunehmende alternative zu Java. etwas, mit dem auch 'schlechte' programmierer was halbwegs stabiles auf die beine stellen können.
    🙂



  • hustbaer schrieb:

    man kann mit C++ unsicherheiten vermeiden, die man sich mit eingehandelt C hätte, holt sich im gegenzug aber andere (und meistens viel fiesere) mögliche fehlerquellen an bord.

    Mit den "meistens viel fieseren" Fehlerquellen bekommt man IMO nur zu tun wenn man sich überschätzt, Dinge verwendet wo man sich nicht ganz sicher ist bzw. die man einfach nicht richtig verstanden hat etc. Lässt sich IMO recht einfach vermeiden.

    Man kann sich halt schon beim Assignment-Operator überschätzen.


Anmelden zum Antworten