Welche Sprache lernen?



  • Tim schrieb:

    u-ser_l schrieb:

    da gibt's übrigens noch so 'ne Sprache, komm' jetzt grad' nicht auf den Namen, fängt mit C an und danach zwei Sonderzeichen ... 🙂

    linefeed und carriage return?

    😃 👍



  • > C++ dient als guter Einstieg zur OOP meiner Meinung nach.

    Fail. Ich finde, obwohl C++ keine OO-Sprache ist, besitzt sie die beste OO, die es gibt. Der rohe Attribut-Zugriff in .NET ist ja ein Graus. 😉



  • anfängerpeter schrieb:

    programme mit installer sind sogut wie immer zum wegschmeißen 😡 😡 😡

    ich finde auch, Betriebssysteme sollten wieder im ROM ausgeliefert werden, das würde auch die Motivation zu fehlerfreiem und schlankem Code erhöhen 😃



  • _matze schrieb:

    Was ist eigentlich mit Microsofts Java-Klon J++ oder J#? Gibt's das noch? Hat das überhaupt jemals mal einer benutzt?

    nö, das waren m$'s erste selbstfindungsversuche im krieg gegen sun und noch bevor sie diesen borland-starentwickler abgeworben haben.

    anfängerpeter schrieb:

    ich raste jedesmal aus wenn irgendein scheißprogramm meint einen installer brauchen zu müssen

    ja, ne. irgendwelche mini-tools z.b. sowas finde ich auch total albern.

    FreakY<3Cpp schrieb:

    Wieso kommt ihr mit so einer Gülle wie Basic, Freebasic oder C?

    weil BASIC total einfach für anfänger ist, C z.b. nicht, das finde ich zu abstrakt für einen, der noch nie was programmiert hat.

    FreakY<3Cpp schrieb:

    C++ dient als guter Einstieg zur OOP meiner Meinung nach.

    eigenlich kann jede andere sprache, die sich OOP auf die fahnen geschrieben hat, OO besser als C++, meiner meinung nach.
    🙂



  • Du willst also Anfängern eine Sprache in die Hand drücken, die total alt ist und sie somit einen widerlichen Stil annehmen? Wieso sollen sie nicht gleich die Sprachen der Zukunft sich aneignen. Ich hab auch mit C++ angefangen und mit einem guten Tutorial (die besten sind eigentlich immer englisch), geht das sehr gut. Anfangs hatte ich nicht mal ein Buch, aber als ich dann zum OO Part kam, hab ich das weiter im Buch gelernt, damit ich es gleich verstehe und nicht ein wirres Zeug lerne.

    FOR i = 33 TO 255
       PRINT i; CHR$(i)
    NEXT i
    

    Mmmmhh... Der Code sieht richtig schmackhaft aus...

    Entweder man lernt es gleich richtig, oder man tut sich vorher Basic an. Was lernt man dadurch? Mit Print Texte schreiben und eine Funktion aufzurufen. Die ersten 2-3 Lektionen von C++. Sorry, aber ich finde das ist sinnlos verschwendete Zeit.



  • Kommt drauf an.

    Ist man eher der Experimentiertyp, möchte die volle Kontrolle in die Hand nehmen und steht auf mächtige Sprachmittel, ist C++ super. Da lernt man auch interessante Konzepte jenseits von Mainstream-OOP kennen. Voraussetzung ist die nötige Ausdauer und Motivation, denn C++ ist keine besonders anfängerfreundliche Sprache. Dafür gibt sie einem recht viel Freiheit.

    Will man hingegen einfach programmieren und vor allem schnell zu einem Ergebnis (z.B. GUI) kommen, empfehlen sich Java und C#. In diesem Fall trifft das wohl eher zu. Beschränkt man sich auf Windows, ist .NET und C# wohl die bessere Wahl, braucht man hingegen Portabilität oder bewegt sich in Richtung Web-Entwicklung, kann man Java nehmen.



  • Dass in einem C++-Forum tatsächlich Basic als Anfängersprache empfohlen wird, reißt mich vom Hocker.
    Basic verdirbt den Programmierstil auf Lebenszeit. Ich frage mich, ob ihr den Threadersteller als Anfänger oder als Idioten seht. 🙄
    Lern C++. Bis du zur Objektorientierten Programmierung kommst, hast du ein verbessertes C gelernt. Und das tolle an C++ ist, dass man die OO einsetzen kann, aber nicht muß.
    Und was daran sooo schwierig sein soll, dass engagierte Anfänger es nicht schaffen könnten, ist mir nicht einsichtig.



  • C 64er schrieb:

    Dass in einem C++-Forum tatsächlich Basic als Anfängersprache empfohlen wird, reißt mich vom Hocker.
    Basic verdirbt den Programmierstil auf Lebenszeit.

    Nö, das ist Blödsinn. Ich habe als Kind auch mit AmigaBASIC angefangen und (nachdem zwischendurch andere Sprachen dran waren) meine ersten Windows-Programme in VB geschrieben. Ich sage mal so: wer sich nicht umgewöhnen kann, ist vielleicht nicht gerade der beste Programmierer. 😉



  • EIn etwas älterer Basic-Dialekt ist die beste Anfängersprache, gerade WEIL man da schlechten Stil üben kann, ohne ihn später in die nächaste Sprache mitzunehmen.



  • FreakY<3Cpp schrieb:

    FOR i = 33 TO 255
       PRINT i; CHR$(i)
    NEXT i
    

    Mmmmhh... Der Code sieht richtig schmackhaft aus...

    ja, wenn man etwas englisch kann, ist für jeden sofort ersichtlich (ausser vielleicht das 'chr$'), was das machen soll. auch wenn er noch nie im leben programmcode gesehen hat. bei 'nem ähnlichen c++ schnipsel:

    for (int s=33; s<256; s++)       // keine 255, warum 'int', wieso klammern, warum ein kleiner-zeichen, was soll ++, was sollen die semikolons, wtf?
      cout << s << reinterpret_cast<char>(s) << endl;  // spätestens hier wird sich der anfänger 'nen wolf raten. noch nichtmal sowas wie 'print' ist zu sehen. die absolut üble cast-schreibweise macht die verwirrung komplett
    // ^^ ein anfänger würde sowas noch nicht mal als schleife interpretieren
    

    ...versteht der anfänger erstmal garnichts, ohne bis seite 10 seines tutorials gekommen zu sein.
    ihr macht den fehler und seht es aus eurer perspektive. ihr könnt schon programmieren.
    🙂



  • ;fricky schrieb:

    ...versteht der anfänger erstmal garnichts, ohne bis seite 10 seines tutorials gekommen zu sein.
    ihr macht den fehler und seht es aus eurer perspektive. ihr könnt schon programmieren.
    🙂

    Deswegen Python:

    a = ['cat', 'window', 'defenestrate']
    for x in a:
        print x, len(x)
    

    Einfache, saubere Syntax, der man sofort ansieht was sie macht ohne viel wissen zu muessen. Und mit PyQt kann man auch seine GUI-Programme schreiben, sammt einem GUI-Editor.



  • DEvent schrieb:

    Einfache, saubere Syntax, der man sofort ansieht was sie macht ohne viel wissen zu muessen.

    naja, das mit dem einrücken muss man wissen. aber für einen absoluten neueinsteiger muss das aber kein hindernis sein (nur wenn man schon andere sprachen kennt, ist es vielleicht doof).
    🙂



  • ;fricky schrieb:

    [...]ja, wenn man etwas englisch kann, ist für jeden sofort ersichtlich (ausser vielleicht das 'chr$'), was das machen soll. auch wenn er noch nie im leben programmcode gesehen hat.

    ist ne Behauptung die nicht stimmen muss. Für jemanden der noch nie Programmcode gesehen hat ist nichtmal unbedingt klar wo die for-Schleife aufhört, und was das "NEXT i" dahinter bedeuten soll. Er muss sich also auch erstmal ein wenig einlesen, bis er die Schleifensyntax und das CHR$ versteht.

    Wenn man den C++-Code richtig schreibt

    for (int s=33; s<256; ++s) 
    {
      cout << s << static_cast<char>(s) << endl;
    }
    

    sieht man sofort den Schleifenkörper. Und wenn man hier genauso weit gelesen hat (nämlich bis man die Schleifensyntax und den cast kennt), versteht man genausoviel, weil die Ausgabe mittels cout gleich auf der ersten Seite in jedem Buch/Tutorial drankommt.

    Deine Argumentation lautet also in etwa "Beim BASIC versteht jeder sofort alles bis auf das was wichtig ist um das ganze Programm richtig zu verstehen. Beim C++ versteht man erstmal nicht alles, weil man die Dinge nicht kennt, die wichtig sind um das Programm richtig zu verstehen". Etwas einseitig 😉



  • pumuckl, die BASIC-Syntax ist für Anfänger grundsätzlich einfacher zu verstehen. Einfach, weil vieles 'klar' ausgeschrieben wird, weil es weniger kryptisch ist. Das liegt auf der Hand, denke ich. Die Syntax einer for-Schleife muss man sich in beiden Sprachen anlesen, klar, nur in BASIC ist das halt eine Sache von Sekunden, in C(++) dauert es vielleicht schon Minuten. 😉



  • pumuckl schrieb:

    Wenn man den C++-Code richtig schreibt

    for (int s=33; s<256; ++s) 
    {
      cout << s << static_cast<char>(s) << endl;
    }
    

    ok, die geschweiften klammern sind ziemlich wichtig, aber der rest sieht weiterhin furchterregend aus. vielleicht sollte man aus '++s' besser 's=s+1' machen, die variablendeklaration aus der schleife rausnehmen und statt 'cout' printf verwenden, was auch den hässlichen cast, die << und das 'endl' beseitigt. damit führt man zwar einen, für anfänger undurchsichtigen printf-formatstring ein, aber das wäre wohl das kleinere übel.

    pumuckl schrieb:

    Deine Argumentation lautet also in etwa "Beim BASIC versteht jeder sofort alles bis auf das was wichtig ist um das ganze Programm richtig zu verstehen. Beim C++ versteht man erstmal nicht alles, weil man die Dinge nicht kennt, die wichtig sind um das Programm richtig zu verstehen". Etwas einseitig.

    nee, ich sage: bei basic versteht man auf anhieb (oder zumindest ohne grössere schwierigkeiten) den ablauf, weil man's nur mit einfachen, englischen wörtern zu tun hat (for, to, next, goto, usw.) und nicht mit seltsamen zeichen wie <<, ++ und grausamen dingen wie static_cast<a>(b). für anfänger sind schnelle aha-effekte sehr wichtig. später, wenn man die fundamentalsten grundlagen der programmierung gelernt hat, kann man sich immer noch auf sprachen mit kryptischer syntax (z.b. C-ähnlich) stürzen.



  • Hey, wie waere es denn mal mit etwas anderem zum Einstieg? Lisp, Scheme oder Haskell zum Beispiel. Gibt auch gute Buecher und video lectures (alles online).



  • ;fricky schrieb:

    ok, die geschweiften klammern sind ziemlich wichtig, aber der rest sieht weiterhin furchterregend aus. vielleicht sollte man aus '++s' besser 's=s+1' machen,

    könnte man. Die halbe Zeile "der ++_Operator erhöht das Argument um 1" finde ich allerdings nicht so schwer zu verstehen.

    die variablendeklaration aus der schleife rausnehmen

    Halte ich für irreführend. Gerade die Deklaration im Schleifenkopf macht noch deutlicher dass es in der Schleife um diese Variable geht.

    und statt 'cout' printf verwenden, was auch den hässlichen cast, die << und das 'endl' beseitigt. damit führt man zwar einen, für anfänger undurchsichtigen printf-formatstring ein, aber das wäre wohl das kleinere übel.

    Sehe ich anders. Die %d, %s und wie sie nicht alle heißen sind mindestens so hässlich wie die <<-Operatoren, und static_cast besagt eigentlich schön ausgeschrieben, was gemacht wird. Ein printf zu nehmen, wo die selbe Variable zweimal ausgegeben wird mit dem einzigen Unterschied, dass %s und %d die Ausgabe verändern, ist da deutlich subtiler.

    ich sage: bei basic versteht man auf anhieb (oder zumindest ohne grössere schwierigkeiten) den ablauf, weil man's nur mit einfachen, englischen wörtern zu tun hat (for, to, next, goto, usw.) und nicht mit seltsamen zeichen wie <<, ++ und grausamen dingen wie static_cast<a>(b). für anfänger sind schnelle aha-effekte sehr wichtig. später, wenn man die fundamentalsten grundlagen der programmierung gelernt hat, kann man sich immer noch auf sprachen mit kryptischer syntax (z.b. C-ähnlich) stürzen.

    Ich finde einen static_cast<char>() sehr viel weniger grausam zu lesen und zu verstehen als ein CHR$(). Ein << ist in meinen Augen eine sehr viel deutlichere Aneinanderreihung als wenn beim PRINT die Argumente mit Semikola getrennt sind. Und so kryptisch ist die Syntax von C++ nun wirklich nicht, wie du sie versuchst darzustellen. Ich behaupte ja nicht, dass es einfacher ist als BASIC oder python, aber eben auch nicht wirklich schwieriger. Wer sich in irgendeiner Weise halbwegs ernsthaft mit Programmiersprachen auseinandersetzen will sollte mit Operatoren und Klammern genausogut wie mit englischen Schlüsselwörtern umgehen können. Gewohnt ist man das eh spätestens in der Mittelstufe aus der Matehmatik und Physik, und wer in den Bereichen schon Schwierigkeiten damit hat braucht imo in dieser Diskussion nicht berücksichtigt werden. Schließlich reden wir von angehenden Programmierern und nicht von Möchtegern-Scriptkiddies.



  • nicht, daß so etwas jetzt leichter verständlich wäre für Anfänger: 😃

    (33 to: 255) do: [ :s | Transcript show: s asCharacter ].
    


  • pumuckl schrieb:

    Sehe ich anders. ... Ein printf zu nehmen, wo die selbe Variable zweimal ausgegeben wird mit dem einzigen Unterschied, dass %s und %d die Ausgabe verändern, ist da deutlich subtiler ... Und so kryptisch ist die Syntax von C++ nun wirklich nicht, wie du sie versuchst darzustellen.

    for(;P("\n"),R--;P("|"))for(e=C;e--;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);
    

    Ja, sehr subtil und gar nicht kryptisch ... 😃

    pumuckl schrieb:

    Schließlich reden wir von angehenden Programmierern und nicht von Möchtegern-Scriptkiddies.

    Du kannst nicht davon ausgehen, daß jeder, der ein Programm schreiben auch zum Vollzeitprogrammierer werden möchte, genausowenig wie ein Scriptkiddie soviel Spaß an der Sache finden kann, daß es die Profiklasse erklimmt. Nur würde ich niemandem von Haus aus einen Brocken wie C++ hinwerfen und sagen "wenn Du's nicht abraffst, bist Du zu doof zum Programmieren, laß' die Finger davon". Das ist der totale Spaßkiller.

    Aus der deutschen Wiki:

    Das Apronym „BASIC“ steht für „Beginner’s All-purpose Symbolic Instruction Code“, was so viel bedeutet wie „symbolische Allzweck-Programmiersprache für Anfänger“.

    Der OP will Windowsprogramme schreiben, er braucht keine Multiplattformsachen, er will schnell zum Schuß kommen. Nach hehren pädagogischen Zielen, wie eine frühzeitige Erziehung zum in euren Augen "echten" Programmierer aussieht, hat er ja gar nicht gefragt.
    Ich kenne VB classic und hab' ein bißchen in VB.NET reingeschnüffelt, da sieht das OOP- Konzept freundlich und nachvollziehbar aus. BASIC ist eine "sprechende" Sprache und daß µ$ es geschafft hat, die uralt- Kamelle so behutsam zu modernisieren, daß die Grundidee der einfach zu erlernenden Sprache nicht zerstört wurde, ist einer der wenigen zu lobenden Aspekte an dem Laden.
    Zweifelsohne wäre das mein Tip Nummer eins.
    Relativ schnell zum Zug käme man noch mit Java (v.a. wg. starker RAD-IDEs) oder C#, wobei ich das schon als deutlich kryptischer ansehe.
    "Sprechender" wäre da noch Delphi, aber ich vermute fast, daß die ziemlich auf dem absteigenden Ast sind.

    Also why not BASIC? Wer dann merkt, er braucht mehr in seiner Welt, wird schon was finden ... 😉



  • pointercrash() schrieb:

    for(;P("\n"),R--;P("|"))for(e=C;e--;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);
    

    Ja, sehr subtil und gar nicht kryptisch ... 😃

    Immer wieder wird mit Beispielen argumentiert, die total an der Realitaet vorbei gehen.


Anmelden zum Antworten