Wie fange ich an?

Hi!

Ich habe vor, in absehbarer Zeit C++ zu können. Wie stell ich das an? Was muss ich machen?
Zur Info: bisher kann ich noch keine Programmiersprache (schäm)

Wär nett, wenn ihr mir weiterhelfen könntet!! (hoff)

DANIEL

*live long and prosper*

Hi,

Ich habe vor, in absehbarer Zeit C++ zu können. Wie stell ich
das an? Was muss ich machen?
Zur Info: bisher kann ich noch keine Programmiersprache
(schäm)

Erst mal musst Du Dir ein bischen C antun, dann C++ angehen. C++ enthaelt C komplett und erweitert es.
Fuer C++ ist Thinking in C++ von Bruce Eckel zu empfehlen, frei downloadbar unter http://www.bruceeckel.com

Gruss

Thorsten

P.S.:
Wenn Du viel programmierst brauchst Du zwei Jahre um gut zu werden. Um ueberhaupt an den Start zu kommen brauchts vielleicht halbes Jahr, bis Du erste ernste Programme grschrieben hast.

Hi Daniel :smile:

Vegiss es einfach!!! Ja, du hast richtig gelesen, vergiss es. Wenn du bisher noch gar keine Programmiersprache kannst und direkt mit C++ anfangen willst, wird das mächtig in die Hose gehen.

Du solltest erstmal mit einer einfachen Sprache anfangen. Java oder VB zum Beispiel. Außerdem hat Dennis Ritchie vor C++ noch C gestellt. Wer nicht stehen kann, kann nicht gehen. Mit anderen Worten, wer kein C kann, kann kein C++.

Sorry für die etwas demotivierende Antwort, aber ich wollte ehrlich sein …

cu Stefan.

Hi,

Sorry für die etwas demotivierende Antwort

Also, demotivierender gehts echt kaum noch. Ich habe direkt mit C angefangen ohne vorher irgendwelche Erfahrung zu habe. Nach einem halben Jahr habe ich meine erste grosse Anwendung angefangen. Der Stil und das Design sind zwar nicht gerade das gelbe vom Ei (fuer C allerdings gar nicht soooo uebel) aber es war eine „multi gethreadete“ App in der sich client Apps ueber named pipes und einen Server koordiniert haben CORBA fuer Arme (als das Ding fertig war und weitgehend Bugfrei lief beherrschte ich C und Tcl/Tk recht gut). Und mittlerweile beschaeftige ich mich nur noch mit OOP, habe gerade meinen ersten Diamond gebaut und in meiner aktuellen App praktisch den kompletten C++ Syntax ausgereizt.
Und ich bin nicht etwa besonders toll, intelligent oder sonstwas. Ich kann mir nichtmal nach Hacker-Manier ellenlange Dokus in einem halben Dutzend Kaffe-Pausen reinziehen. Programmieren lernen kann jeder mit der richtigen Anleitung und Motivation. Und C++ ist zwar stellenweise etwas tricky aber nichts was nur der altgedienten Elite zugaenglich ist.
Also halt mal die Luft an :wink:

Gruss

Thorsten

Hi,

Du solltest erstmal mit einer einfachen Sprache anfangen. Java
oder VB zum Beispiel.

lol
Hatte ich doch glatt in meinem ersten Posting gesehen. Also Du hast ja Ahnung, echt toll. Java verhaelt sich zu C++ in etwa so wie C++ zu C. Najas nicht ganz, Java ist schon einfacher als C++ … wenn man OOP erst mal beherrscht. Im Grunde basut es aber auf C++ auf und ist die logische Fortfuehrung von C++. Zum Lernen von Java werden i.d.R. C-Kenntnisse vorausgesetzt und C++ ist sehr hilfreich … da man sich mit C++ langsam ranarbeiten kann, waehrend man bei Java gleich mit einer single rooted hirarchy klarkommen muss und mit so abgefahrenen Konzepten wie interfaces und client callback classes klarkommen muss.
Und VB klicky bunty ist der sicherste Weg sich den Einstieg in ein wirkliches Verstaendnis von Programmierung zu verbauen.
Wenn Du schon andere Sprachen Vorschlaegst nimm wenigstens etwas, was Programmierung erfordert (nicht Kybernetik fuer Anfaenger ;-> ) und schnelle Lern-Erfolge bringt (Script-Sprachen wie Perl, Tcl oder Python wobei ich letzteres empfehlen wuerde).

Gruss

Thorsten

P.S.:
Frueher hiess der Einstieg in Programmierung Assembler (und davor HexCode) - dagegen ist C/C++ ein Kindergeburtstag.

Moin,

Ich habe vor, in absehbarer Zeit C++ zu können. Wie stell ich
das an? Was muss ich machen?

Lerne erst Java, dann C. Oder auch umgekehrt, wenn Du etwas mit PC-Hardware vertraut bist.

Thorsten

Moin,

Hatte ich doch glatt in meinem ersten Posting gesehen. Also Du
hast ja Ahnung, echt toll. Java verhaelt sich zu C++ in etwa
so wie C++ zu C. Najas nicht ganz, Java ist schon einfacher
als C++ … wenn man OOP erst mal beherrscht.

Eben. Wenn man mit Java anfängt, hat man Gelegenheit, OOP zu lernen, ohne über Pointer&Co zu stolpern. Weder OOP noch Pointer&Co sind einfach, beides braucht man für C++, womit man beginnt ist ziemlich egal.

Thorsten

Hi :smile:

Ja, wenn überhaupt ist das der richtige Weg! Aber ich möchte nochmal darauf hinweisen, dass es nicht schnell gehen wird. Es ist ein langer und harter Weg …

cu Stefan.

Vielen Dank!
Hi!

Endlich hat mir auf eine meiner Fragen mehr als Einer geantwortet :wink:

Ihr habt mir wirklich geholfen (was soll ich sonst sagen *g*).

Noch mal VIELEN DANK

DANIEL

Hi,

Eben. Wenn man mit Java anfängt, hat man Gelegenheit, OOP zu
lernen, ohne über Pointer&Co zu stolpern.

Naja, meine persoenliche Ansicht ist, dass man besser mit einer Sprache anfaengt, die einen zwingt, zu verstehen, was man eigentlich tut. Auch mit Java arbeitet man mit Pointern (viel mehr als in C/C++ sogar), man merkt nur nichts davon und das kann fatal sein.

Gruss

Thorsten

Moin,

Eben. Wenn man mit Java anfängt, hat man Gelegenheit, OOP zu
lernen, ohne über Pointer&Co zu stolpern.

Naja, meine persoenliche Ansicht ist, dass man besser mit
einer Sprache anfaengt, die einen zwingt, zu verstehen, was
man eigentlich tut.

Klar. Bei Java ist das OOP.

Auch mit Java arbeitet man mit Pointern (viel mehr als in
C/C++ sogar), man merkt nur nichts davon und das kann fatal
sein.

Wie zB.? Man wird doch weitestgehend abgeschirmt von den typischen C-Ekligkeiten. Die bloße Existenz des Typs String erleichtert vieles.

Thorsten

Hi,

Wie zB.? Man wird doch weitestgehend abgeschirmt von den
typischen C-Ekligkeiten.

Hast recht, ich meinte fatal nicht im Sinne von segfault sondern im Sinne von Design. Wie jede andere Sprache kann man Java mehr oder weniger effektiv verwenden und memory leaks sind da natuerlich auch moeglich (in dem ich einfach vergesse, eine Referenz frei zu geben).
Ich finde halt einfach, wenigstens ein Programmierer sollte verstehen, was er da am Computer macht. Wenn Programmierer nicht mal mehr verstehen, was da grundsaetzlich abgeht … Naja, vielleicht bin ich da ja etwas altmodisch …

Die bloße Existenz des Typs String erleichtert vieles.

Oh ja. Oh ja! :wink:
Ich will nicht meher ohne strings arbeiten muessen. Gibts uebrigens bei C++ auch, verhaelt sich auch aehnlich.

Gruss

Thorsten

Moin,

Ich finde halt einfach, wenigstens ein Programmierer sollte
verstehen, was er da am Computer macht. Wenn Programmierer
nicht mal mehr verstehen, was da grundsaetzlich abgeht …

Stimmt auch wieder. Vermutlich empfehle ich nur Java, weil ich mich am Anfang mit C rumquälen mußte und das anderen ersparen wollte.

Thorsten

Hi Thorsten :smile:

Wollte nur daran erinnern, dass Java eine Garbage-Collection hat, so dass Speicherlöcher automatisch verhindert werden. Java kennt auch nicht das Pointer-Konzept oder das Typen-Konzept von C++. Java ist daher in meinen Augen eine Anfängersprache. Das meine ich durchaus nicht negativ, sondern vielmehr möchte ich jedem Anfänger diese Sprache für die ersten Schritte ans Herz legen.

Ich finde halt einfach, wenigstens ein Programmierer sollte
verstehen, was er da am Computer macht. Wenn Programmierer
nicht mal mehr verstehen, was da grundsaetzlich abgeht …
Naja, vielleicht bin ich da ja etwas altmodisch …

Hast du schon mal an einem richtig großen Projekt mitgearbeitet? Allein wenn du z.B. mit dem Visual C++ irgendwelche Wizards benutzst, dann generieren die dir tausende Zeilen von Code, den man nicht versteht. Das braucht und soll man auch gar nicht, denn dafür sind die Wizards ja da. Mir ist z.B. auch egal, wie ein Kollege eine bestimmte Klasse oder COM-Komponente implementiert hat. Ich benutze sie einfach. Und wenn sie nicht so funktioniert, wie er in seiner Beschreibung angegeben hat, dann bekommt der Kollege seine Klasse wieder zurück und muss sie nachbessern. Mit dem Verstehen ist das daher so eine Sache. Natürlich wäre das der Königsweg, aber es kostet die Firma, für die man arbeitet viel Zeit und Geld …

Oh ja. Oh ja! :wink:
Ich will nicht meher ohne strings arbeiten muessen. Gibts
uebrigens bei C++ auch, verhaelt sich auch aehnlich.

Ja, die STL von C++ kann ich jedem Entwickler nur ans Herz legen. Gut, die Routinen sind z.B. ungeeignet für Multi-Threading, aber das kann man ja leicht selber korrigieren :smile:

cu Stefan.

Hi,

Wollte nur daran erinnern, dass Java eine Garbage-Collection
hat, so dass Speicherlöcher automatisch verhindert werden.

Wenn man nicht irgendwo Referenzen haelt. Wenn man die nicht „loescht“ hat man ein Speicherloch - was doch durchaus passieren kann, oder?

Java kennt auch nicht das Pointer-Konzept oder das
Typen-Konzept von C++.

Alles ausser den primitives ist in Java tatsaechlich ein Pointer. Da kann man natuerilch nicht viel verkehrt machen.

Hast du schon mal an einem richtig großen Projekt
mitgearbeitet?

Nein.

Allein wenn du z.B. mit dem Visual C++
irgendwelche Wizards benutzst, dann generieren die dir
tausende Zeilen von Code, den man nicht versteht.

Klar, das ist ja auch voellig in Ordnung. Schon die Benutzung einer Standard lib impliziert i.d.R. jede Menge Zeug, das man nicht versteht. Ich z.B. beherrsche keine Sprache, bei der ich das Hello World Programm wirklich verstehe.

Das braucht
und soll man auch gar nicht, denn dafür sind die Wizards ja
da.

In den meisten Faellen hast Du sicher recht. Wenn man grundsaetzlich nicht in der Lage ist, den betreffenden Code zu verstehen, dann fuerchte ich laeuft man Gefahr ineffizienten Code zu produzieren, der zudem sehr Teuer in der maintainance ist.

Natürlich wäre das der
Königsweg, aber es kostet die Firma, für die man arbeitet viel
Zeit und Geld …

Komerzielle Software steht nicht gerade in dem Ruf, einen hohen Grad an Wiederverwendbarkeit und Effizienz zu bieten. Ich vermute, dass wir die Gruende dafuer hier gerade diskutieren.
Funktionieren tut das nur, weil die Kunden in der Regel keine Alternative dazu haben, die ueberhoehten Preise fuer Standard-Software zu zahlen.

Ok, Du siehst hier driftet es bei mir etwas ins ideologische ab. Evtl. ist eine Spezialisierung von Programmierern in der Form sogar wuenschenswert, dass manche fuenf Abstraktionsebenen ueber der Maschienenarchitektur ansetzen und keinen Schimmer haben, was sie da so alles machen (keine Ironie). Vermutlich muss man sich mit zunehmender Komplexitaet der Software von den von mir vertretenen Idealen verabschieden. Oder aber gewisse Grundlagen sollten als Voraussetzung fuer Programmierer aller Kolör (sorry) angesehen werden. Wuerde mich ja mal interessieren, wie sich der entschieden hat, der den Thread hier gestartet hat …

Gruss

Thorsten