Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Programmieranfänger und Motivationstiefs

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.05.2010, 22:29 Uhr
Krustenbrot



Guten Tag,
ich als Anfänger hätte da ein paar Fragen an die erfahreneren Programmierer.
Ich habe vor 6 Monaten angefangen, mich mit dieser Thematik zu beschäftigen. Da ich aber erst 16 Jahre alt bin
und aufgrund von schulischem "Stress" nicht immer Zeit hatte, habe ich mir nur die Grundlagen anlernen können.
Ich habe sowohl in C++ als auch in C# ein wenig mit den Grundlagen gearbeitet. Das heißt, die wichtigsten Programmiermerkmale
wie Schleifen, Switch Cases, u.Ä kann ich bereits. Ebenfalls habe ich mich in die OO-Programmierung eingearbeitet. Nun ist es aber so, dass ich mit Büchern diese Teile gelernt habe, aber noch nicht sicher im Umgehen bin. Ebenso verlässt mich gerade bei C++ manchmal die Lust. Gerade nun, wo ich mit Zeigern anfangen wollte. Daher würde ich hier gerne um Rat bitten. Was ist für einen 16 Jährigen, der in die Oberstufe geht, die beste Wahl bzgl. des Programmierens? Muss es C++ mit den ganzen Hintergründen wie Speicherverwaltung o.Ä sein, oder zählt eher der Gedanke: "Zeit ist Geld" und ist somit dank schöner IDE und Struktur C# die bessere Wahl? Was kann ich gegen Motivationstiefe tun? Da ich nicht der Beste in Mathematik bzw logischem Denken bin, was natürlich nicht heißt, dass ich sehr schlecht bin :-) , rede ich mir auch dies manchmal als Grund ein, dass ich einfach nicht für das Programmieren geschaffen bin. Habe ich eine Projektidee und kriege es auch umgesetzt, macht es Spaß. Hänge ich dann aber vor lauter "hä?" nurnoch wissenslos rum, verliere ich aber nach kürzester Zeit wieder die Lust. Und dort ist das andere Kriterium. Während ich bei C++ bisher abgesehen von einem kurzem Reinschnuppern in QT nur Konsolenprogramme programmiert habe, gefällt mir C# aufgrund der GUI-Win-Forms wieder viel besser. Andernseits möchte ich auch nicht, laut Aussagen anderer Programmierer, das "Zusammenklicke" lernen und letztendlich vom Programmieren selbst keine Erfahrung haben. Darum wird mir von einigen eher zu C++ geraten, da es ja schnellere Programme aufgrund von nativen Code erzeugt und mehr "Hintergrundinformationen" geben würde. Andernseits raten mir andere eher zu C#, da es leichter wäre, diese Sprache zu lernen. Dafür ist C# widerum Windowsabhängig(Ausnahme:Mono) und ebenso MS-Abhängig.

Was würdet ihr mir persönlich für eine Vorangehensweise empfehlen? Ich bitte darum, nicht bloßes "Programmiersprachen"-Empfehlen zu schreiben, wie z.B. "Nimm C++" sondern auch die Vorteile und Nachteile dieses zu nennen. Ebenso würde ich mich freuen, wenn es hier auch um die allgemeine vorangehensweise antworten geben würde. Also Antworten, die auf die oben genannten Probleme wie Motivationstiefs u.Ä zugreifen.

Vielen Dank,
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.05.2010, 09:20 Uhr
0xdeadbeef
Gott
(Operator)


Zunächst mal: C++ ist schwieriger zu lernen. Wenn man es einmal kann, ist es echt toll, aber da hin zu kommen, dauert Jahre.

Dementsprechend ist es für Programmieranfänger eher mäßig geeignet - ich empfehle als erste General-Purpose-Sprache in der Regel Java, aber C# ist von Java nicht sonderlich weit entfernt - du musst dich halt nur darauf einstellen, dass deine Programme, wenn du sie in C# schreibst, aller Wahrscheinlichkeit nach nur unter Windows laufen werden.

Das Problem sowohl mit C# als auch mit Java ist (und das ist jetzt zunächst nur meine Meinung), dass sie den Programmierer an die Hand nehmen und seine Probleme vorherzusehen versuchen; dabei opfern sie Orthogonalität auf dem Altar der leichten Erlernbarkeit. Das ist für Anfänger zunächst nicht besonders kritisch (und sogar hilfreich, weil sie sich um einige Dinge, die bis etwa Kapitel 12 sonst problematisch wären, nicht zu kümmern brauchen), aber als erfahrener Programmierer packt man sich an den Kopf und fragt sich, wer auf die Idee gekommen ist, diesen oder jenen Sonderfall tief in der Sprache zu verankern - etwa spezielle Operatoren für String-Objekte oder eine besondere try-Syntax für das Disposable-Interface. Oder Garbage Collection.

Wie dem auch sei, ich rate dir, mit Java (wahlweise C#) anzufangen; wenn du das erstmal beherrschst, kannst du C++ immer noch lernen. Es scheint mir nicht ratsam, gleich mit der Königsdisziplin anzufangen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.05.2010, 20:05 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Naja also C# kann ich nur empfehlen: und: es läuft auch unter Linux (solang man jetzt nicht gleich auf .NET Framework 4 (beta) oder so setzt, alles andere funktioniert mit Mono eigentlich ziemlich zuverlässig.

Java kann ich da persönlich eher mäßig empfehlen.

Bei uns an der FH lehren wir da schon C# aus dem Grund
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.05.2010, 00:22 Uhr
0xdeadbeef
Gott
(Operator)


Das mit C# unter Linux geht aber nur so lange gut, wie man sich keine GUI zusammenklickt, oder? Ich meine mich so dunkel an einen Rechtsstreit zwischen Microsoft und dem Mono-Projekt um die Windows-Forms-Bibliothek zu erinnern.

Es gibt da zwar Cross-Platform-Bibliotheken (Gtk# etc), aber wenn wir mal ehrlich sind, als C#-Entwickler benutzt man doch den MSVC-Forms-Designer.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.05.2010, 13:30 Uhr
Bruder Leif
dances with systems
(Operator)


Meine EUR 0.02: Ich wuerde fuer den Anfang erst mal die Grundlagen lernen, und zwar komplett. DANN kann man immer noch zu Nimm-Mich-An-Die-Hand-Systemen "aufsteigen".

Meine Kinder sind mit ihren beiden C64 rundum gluecklich BASIC 2.0, noch ohne while und Co. Keine Rekursion, kein nix. Dafuer bekommt man ein Gefuehl dafuer, was da im Computer eigentlich abgeht, und muss sich um wirklich ALLES selbst kuemmern. Dann noch ein bisschen Assembler dazu, und DANN koennen wir ueber PC und C reden (oder erst QBASIC, um strukturiertes Programmieren zu lernen, ohne dabei vertrautes Terrain zu verlassen). Nach C vielleicht Python, vielleicht Tcl, vielleicht werfen wir einen Blick auf Scheme. Solange es ihnen Spass macht

Gleich mit Zusammenklick-Systemen anzufangen, macht einen nicht zum Programmierer. Siehe http://charlespetzold.com/etc/DoesVisualStudioRotTheMind.html, dem Artikel kann ich nur zustimmen. Wir entfernen uns immer mehr von dem, was Programmieren eigentlich bedeutet -- Probleme zu loesen. Und das lernt man mit den Sprachen und Methoden, die derzeit wenig Geld in die Kasse bringen, wesentlich besser...

Fuer motivierende Projekte schau Dir mal die ersten paar Probleme auf Projekt Euler an (http://projecteuler.net), die sind noch schoen leicht zu loesen, und bringen Dich mit C oder C++ trotzdem schon mal an Speicherverwaltung und aehnliches ran...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.

Dieser Post wurde am 25.05.2010 um 13:30 Uhr von Bruder Leif editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.05.2010, 21:34 Uhr
Lensflare



Hallo Krustenbrot,

Ich bin größtenteils der selben Meinung wie 0xdeadbeaf.
Aber ich würde noch gerne einiges anmerken:

Ich habe schon bei mehreren Programmieranfängern, die mit Java/C# angefangen haben festgestellt, dass sie sich danach in C++ mit einigen Dingen sehr schwer tun die eigentlich konsistenter oder logischer sind als in Java/C#.
Beispiel: value/reference types verwirrung.

Dh. wenn man erst einmal durch eine Sprache geprägt ist, dann fällt es einem möglicherweise schwer sich die Eigenheiten und Möglichkeiten von anderen Sprachen anzueignen. Besonders dann, wenn sie relativ ähnlich sind wie C++ und Java/C#.

Und das wäre schade, denn C++ hat vieles zu bieten, was Java(/C#) vermissen lässt und ich meine nicht die Schnelligkeit
(const correctness, operator overloading, function pointers, templates, wahl über value/reference type, ...)

Was Java/C# zu bieten haben ist einfach die Fehlersicherheit, Mächtigkeit der Standardbibliotheken und natürlich auch "Features" und Bequemlichkeiten, die C++ nicht hat.
(viele "Kleinigkeiten" die das Programmiererleben einfacher und sicherer machen).

Auch wenn C# den Ruf hat, die Stärken von C++ und Java zu vereinen wird es ihm nur zum Teil gerecht.

Ich hatte damals mit C/C++ angefangen, habe es mir selbst beigebracht und parallel dazu an der FH Java gelernt. Dadurch habe ich beides, Java und C++ besser verstanden und habe es nicht bereut.



Was die Motivation angeht, habe ich ein ähnlcihes Problem wie du. Wenn ich mir was größeres vornehme, vierliere ich schnell die Lust. Ich habe mir mein Wissen und die Erfahrung durch kleinere Projekte angeeignet und das hat sich bisher noch nie negativ auf die größeren Projekte ausgewirkt (die bei Praktika oder FH Projekten machen musste).
Ich denke, dass es dabei nur wichtig ist immer im Hinterkopf zu behalten, dass das Programm, wenn es denn wachsen sollte, überschaubar, erweiterbar und wartbar bleiben soll. Also das was bei großen Projekten wichtig ist.

Also meine persönliche Meinung ist, dass man die Motivation dadurch aufrecht erhalten kann, indem man sich nicht zu viel vornimmt. Herausforderungen sollten aber natürlich schon dabei sein.
Ich sage das so vorsichtig, weil viele in diesem Forum anderer Meinung sind
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)

Dieser Post wurde am 28.05.2010 um 21:38 Uhr von Lensflare editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: