PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einstieg in c/c++



Seiten : [1] 2

shor
11.09.05, 20:20
Hallo!

Ich suche ein Buch, das einen guten Einstieg in c/c++ vermittelt, der nicht zu trocken ist - meine Recherchen haben nämlich ergeben, dass oft Programmbeispiele mit Zins und Zinseszinz usw. verwendet werden und da dreht sich mir ehrlich gesagt der Magen um! :ugly:
Im Moment bin ich bei C++ für Spieleprogrammierer gelandet, dass hört sich nach Beschreibung und c't Buchkritik einigermaßen ok an!
Wollte jetzt mal nachfragen, ob jemand hier das Buch hat oder was man mir sonst noch so empfehlen könnte.
Bisher habe ich keine großartige Programmiererfahrung (früher mal bisschen Java, das ich komplett vergessen habe :) ) und ich würde mich gerne ein bisschen in c/c++ einarbeiten ohne dass ich mir gleich ein übles Brett, in Form einen 1000 Seiten Wälzers vor den Kopf schlage, dass ich dann nun wieder doch nicht fertig "lese"!

Wäre nett, wenn jemanden nen guten Tip hat!

Viele Grüße,
shor

Gromobir
11.09.05, 20:25
Das Open Book (http://www.ibiblio.org/obp/thinkCS/) Projekt kann dir da sicher weiterhelfen. Wenn Englisch für dich kein Problem ist, findest du dort anhand vieler Programmiersprachen einen guten Einstiegspunkt in die Welt das Programmierens.

Wenn du allerdings noch wenig Erfahrung mit dem Programmierern hast, empfehle ich dir mit Python zu beginne, da dort eine relativ leicht zu lernende Syntax angewandt wird.

Viel Erfolg wünsche ich dir! :)

In diesem Sinne...
Gromobir

shor
11.09.05, 20:31
Hi!

Also ich bin recht festgefahren auf c/c++ weil das ab Oktober auch in meinem Studium das Thema beim Programmieren sein wird!

Das Openbook ist schonmal kein schlechter Tip, das könnte ich ja auch noch nebenher lesen - Englisch sollte kein Problem sein! :D

Viele Grüße,
shor

Sidolin
11.09.05, 20:33
Schau mal auf cpp-entwicklung.de
Da gibts ein ganzes Buch online, das ist recht gut, ich habs als gedrucktes Buch... Aber mal ehrlich: Spiele zu programmieren kommt weit hinten, da solltest du schon ein bisschen was können. Ansonsten hab ich mal so ein Spieleentwickungsdings von kde gesehen, ich glaub kcake oder so hieß das.
Vielleicht suchst du eher sowas.

Freekazonid
11.09.05, 20:40
c von a bis z
the c programming language
softwareentwicklunginc

mehr brauchst net. c von a bis z gabs mal als openbook, und damit laesst sich der einstieg sehr gut meistern, bietet auch aussichten auf moegliche zukuenftige themen. zum 2. buch braucht man nichts sagen, zum 3. buch nayo als ergaenzung net schlecht, jedenfalls wars das einzige wo bitoperationen und das alles sehr gut erklaert wird (komm im ersten buch zu kurz, auch wenns ansonsten klasse ist)

das ist aber alles c. du musst schon wissen ob du c oder c++ willst. und wenn du eine neue sprache lernen willst sind buecher a la "C++ für Spieleprogrammierer" das allerletzte (sind sie sowieso, fuer spieleprogrammierung sind ganz andere buecher interessant)

shor
11.09.05, 20:42
Hallo!

Also soweit ich weiss ist das Buch eine Einführung in c++ und hat nichts direkt mit Spieleentwicklung zu tun, nur die Beispiele sollen sich daran orientieren.
Mein Zeil ist es im Moment nicht Spiele zu entwickeln, sondern einfach mich in meiner Freizeit vorab ein bisschen mit den Grundlagen von c/c++ vertraut zu machen!
Was brauch ich denn unter Linux für eine Entwicklungsumgebung? Ist die auch Open Source oder kostenpflichtig?

Viele Grüße,
shor

P.S. Bin schon am lesen des Openbooks! ;)

shor
11.09.05, 20:48
@ Freekazoid

Hallo!

Kommen in dem Buch auch so tolle finanzmathemtische Beispiele vor? *würg*
Also nicht dass das jetzt falsch verstanden wird, mir ist schon klar dass das zum Teil eine trockene Angelegenheit wird aber auf Beispiele, die in die Richtung gehen würde ich gerne verzichten. Dann lieber was rein mathematisches! :D
Wenn ich mich recht erinnere wird in der Vorlesung mit C angefangen, das ist ja glaube ich nicht objektorientiert, oder?
C++ kommt glaube ich erst später, im Rahmen der objektorientierten Programmierung!

(wenn ich das mit der objektorientierung richtig zugeordnet habe! :ugly: )

Was ist denn der Unterschied zwischen c/c++?

Viele Grüße,
shor

stefan-tiger
11.09.05, 21:32
Also ich hatte ein Semester C und dann ein darauf aufbauendes C++.

Ich muss sagen es war gut erst C zu lernen. Erstmal ist es die Brücke zwischen Assembler und höheren Sprachen und zweitens hat es das Verstänis für C++ erleichtert.

Vor allem: in C gibt es wesentlich weniger Sprachelemente als in C++.
Will sagen: mit C++ kann als Anfänger schnell man überfordert sein.

Mein C-Buch war "C für PCs" von Prinz. Gutes Buch, leider zur Hälfte nicht für mich zu gebrauchen, da Hardwarenahe-MS-DOS Programmierung und Windows GUI Programmierung vorkommt. Aber der allg. ist komplett.

Mein C++-Buch war "C++ in 21 Tagen". Auch nicht schlecht, aber die Beispiele sind teilweise sehr lang und man sollte sich aufjedenfall mehr Zeit als 21 Tage nehmen ;)

Gruß

baumgartner
11.09.05, 21:35
@shor
wie wärs mal mit nem link zu deinem buch?

quinte17
11.09.05, 21:35
openbook auf deutsch: http://www.pronix.de/pronix-4.html
(ist zwar C, aber auch für C++ nicht das schlechteste :))

greetz

carstenj
11.09.05, 21:40
Hallo,

Vor allem: in C gibt es wesentlich weniger Sprachelemente als in C++.
ja, aber dafür ist C auch in einigen Punkte fehleranfälliger und bietet weniger Komfort (Z. B. die Standard Library mit Strings, Vector etc.).


Will sagen: mit C++ kann als Anfänger schnell man überfordert sein.

Naja, mit C auch. Jeder lernt anders, aber es kann schon schwierig sein, wenn man erstmal das prozeduale Konzept von C verinnerlicht hat auf C++ und Objektorientierung umsteigen möchte.

Der Untergeher
11.09.05, 23:12
Hi,

wenn du schon ein bisschen programmieren kannst, also weisst was if und for und was ein Objekt ist und dass hinten ein Semikolon rankommt, dann ist es vllt sinnvoll wenn du dir ein nicht zu ambitioniertes Projekt überlegst und "einfach loslegst". Also lernen am eigenen Beispiel und mit einer geeigneten Referenz um die Lücken zu füllen. Die Referenz kann zum Beispiel "Die C++ Programmiersprache" von Stroustrup sein - das ist dann zwar ein Wälzer, aber man braucht ihn ja nicht von vorne bis hinten durchzulesen um halbwegs was zustande zu bekommen.
So hab ich zumindest C++ (und später auch Java) gelernt. Hat den Vorteil, dass man an einem interessanten und motivierendem Beispiel lernt und gleich was bei rum kommt. Setzt allerdings voraus, dass man schon eine Vorstellung entwickelt hat wie man "Sachen dem Computer beibringt".
Von sowas wie C++ für Spieleentwicklung würde ich eher abraten, da man dann viel mehr über die benötigten Toolkits und Bibliotheken (die nicht zu Sprachumfang von c/c++ gehören) lerne muss als über die Sprache selbst.

Grüße
Untergeher

shor
12.09.05, 00:04
Hi!

Naja - können ist übertrieben, ich glaub ich mach jetzt einfach mal ein C-Buch (hab mich für das C von A bis Z entschieden) durch und überlege mir danach irgendein "Projekt", so wie Du das vorgeschlagen hast!
Das wird dann wahrscheinlich irgendein lustiges kleines Spielchen werden! ;)

Danke an Alle!

Gute Nacht,
shor

ZoRn
12.09.05, 00:59
Hi!

Naja - können ist übertrieben, ich glaub ich mach jetzt einfach mal ein C-Buch (hab mich für das C von A bis Z entschieden) durch und überlege mir danach irgendein "Projekt", so wie Du das vorgeschlagen hast!
Das wird dann wahrscheinlich irgendein lustiges kleines Spielchen werden! ;)

Danke an Alle!

Gute Nacht,
shor

Obwohl ich dir noch als Tip geben wuerde, nicht mit C anzufangen, weil das fuer Anfaenger wirklich sehr schwierig ist. Pointer und Bitoperatoren sind nur ein paar Beispiele.
Ich wuerde sagen, fang besser mit Python oder Perl o.ae. an.

Webdude
12.09.05, 07:08
Ich versuch mich grade in die Netzwerkprogrammierung unter Linux einzuarbeiten.
Kann mir dafür jemand Bücher und Links empfehlen?

michael.sprick
12.09.05, 07:42
Ich wollte hier noch schnell das Buch "Thinking in C++" vom Eckel empfehlen... ein gutes Buch was sich auch gut lesen lässt.
Außerdem bin ich noch der Meinung, dass es keinen Sinn macht, erst eine andere Sprache zu lernen um dann hinterher C++ zu lernen.
Sicherlich fällt es jedem leichter, sich in eine neue Programmiersprache einzuarbeiten, wenn man schon eine andere kann - aber erst perl zu lernen um danach auf C++ umzusteigen halte ich für überflüssig.

Wenn Vorarbeit, dann lieber etwas allgemeiner... zum Beispiel UML lernen oder strukturierte Analyse oder Bücher über Konzepte lesen.

@Webdude: In welcher Sprache willst Du denn programmieren?

stefan-tiger
12.09.05, 08:04
....
Außerdem bin ich noch der Meinung, dass es keinen Sinn macht, erst eine andere Sprache zu lernen um dann hinterher C++ zu lernen...?

Also ich finde C++ ist von C nicht so verschieden.

Die main() funktion hat in C++ nichts mit OOP zu tun und die Memberfunktionen sind das selbe wie "normale" C funktionen, gleiche Konstrukte, gleicher Syntax. Nur die Kapselung ist anders.

In C kann man übrigens auch OOP programmieren. C ermöglicht die OOP, und C++ hat nur zusätzliche Sprachelemente die die OOP unterstützen. Man kann sogar noch weiter gehen und wenn man will in C++ nicht OOP prorgammieren.

Für mich war es besser erstmal z.B. Pointer in Ruhe kennenzulernen (mit C), ohne gleich von Mehrfachvererbung, pur-virtuellen Memberfunktionen und Templates erschlagen zu werden wie sie in (C++ übdlich sind)

michael.sprick
12.09.05, 08:50
ich meinte das jetzt speziell auf Zorn bezogen:

Ich wuerde sagen, fang besser mit Python oder Perl o.ae. an.

... aber auch was C betrifft: Was spricht dagegen Pointer mit C++ zu lernen wenn man hinterher doch eh C++ programieren will? Man muss sich sonst nur wieder von malloc() und free() auf new() und delete() umgewöhnen. Ansonsten bleibt Pointer ja Pointer...

Und mit virtuellen Funktionen und Templates wird man ja nicht anfangen... ich kann doch in C++ genauso ein "Hallo Welt" Programm schreiben wie in C auch.
Wenn man dann irgendwann zum Kapitel Klassen und Objekte kommt, wird einem schon klar was


cout << "Hallo Welt" << endl;

genau ist... bis dahin bleibt es halt "Das, womit man was ausgibt" ;)

Ansonsten hast Du aber vollkommen recht - nur weil man in C++ objektorientiert programmieren kann, heißt das nicht, das man es muss. Schließlich kann man auch in C++ Dinge wie sprintf() und sscanf() benutzen. ;)

Webdude
12.09.05, 09:13
@Webdude: In welcher Sprache willst Du denn programmieren?

In C dachte ich mir eigentlich. Also ich arbeite an einem Programm mit PHP Frontend und MySQL DB. Zusätzlich brauche ich noch einen Daemon der auf den Clients läuft.
Dafür dürfte C doch erste Wahl sein, oder?

stefan-tiger
12.09.05, 10:29
...wieder von malloc() und free() auf new() und delete() ...


count...

...

Naja, unter C lernt man dann was alle geleistet werden muss was in C++ einfacher geht.
Es ist je nach Studiengang/Berufsbild anders. Wenn man mit µCs zu tun hat und Assembler benutzt hat ist C einfach die Brücke.

Kommt man aus der Anwendungswelt (BWL etc.) und hat z.B.mit Java Erfahrung wäre C++ angebrachter als C.

:)

baumgartner
12.09.05, 12:05
Weil gerade das Thema so herrlich diskutiert wird:

Frage: Welches C Buch für fortgeschrittenen Perl Programmierer ???

mfg martin

michael.sprick
12.09.05, 12:43
Naja, unter C lernt man dann was alle geleistet werden muss was in C++ einfacher geht.
Es ist je nach Studiengang/Berufsbild anders. Wenn man mit µCs zu tun hat und Assembler benutzt hat ist C einfach die Brücke.

Kommt man aus der Anwendungswelt (BWL etc.) und hat z.B.mit Java Erfahrung wäre C++ angebrachter als C.

:)

hoppla - es heißt natürlich


cout << "....."
und nicht
count << "......"


Ansonsten gibt es sicherlich Sprachen, die man in Abhängigkeit vom Berufsfeld vorziehen sollte bzw. Sprachen, die je nach Vorkenntnis leichter zu verstehen sind... da stimme ich zu.
nur wenn jemand ohne Vorkenntnisse C++ lernen möchte sollte er/sie es imho direkt und ohne Umweg tun. Das Interesse an reinem C folgt sicher noch früh genug ;) (spätestens wenn der erste treiber geschrieben werden soll):p

Alex_K
12.09.05, 13:18
Für mich war es besser erstmal z.B. Pointer in Ruhe kennenzulernen (mit C), ohne gleich von Mehrfachvererbung, pur-virtuellen Memberfunktionen und Templates erschlagen zu werden wie sie in (C++ übdlich sind)

ob zuerst c und erst dann c++ war schon immer eine streitfrage, wo dir jeder eine andere antwort gibt.

ich sage mal beides hat vor und nachteile.

lernt man zuerst c++ ist die gefahr dass man zu einem buch greift welches zu schnell auf komplexe oop themen eingeht, obwohl der ein oder andere programmieranfänger noch seite probleme hat die pointer zu verstehen.
aber mit einem guten buch spricht meiner meinung nichts dagegen pointer auch in c++ zu lernen. man muss nicht gleich mit templates oder komplexen vererbungsstrukturen beginnen, um ein einfaches c++ programm zu schreiben.

lernt man zuerst c und steigt dann auf c++ um, besteht die "gefahr" dass man sich zu sehr auf seinen schon angelernten c-stiel verlässt. was wiederrum bedeutet, dass man in seinem programm zwar klassen verwendet, aber aus bequemheit viele lösungen noch im c stiel schreibt, obwohl eine echte objektorientierte losung qualitätsmäßig oft besser ist.
natürlich kann man dieses problem auch duch konsiquentes lernen von c++ auch vermeineden, aber es gibt auch einige schlechte beispiele wo dass dann nicht der fall ist.

meiner meinung ist es soweiso wichtiger konzepte zu lernen. da c++ nun mal eine objektorientierte programmiersprache ist, ist es meiner meinung auch sinnvoller gleich c++ zu lernen, da man dann nach "c" nicht erst wieder großartig umdenken muss.
wenn jemand am ende c und c++ können will, bleibt einem eh nichts anderes übrig als beide konzepte zu lernen, in diesem fall ist meiner meinung die reihenfolge mehr oder weniger egal.
vorraussetzung ist natürlich immer dass man unterlangen hat die dem vorhandenen wissen entsprechen.

Der Untergeher
12.09.05, 14:19
Ich versuch mich grade in die Netzwerkprogrammierung unter Linux einzuarbeiten.
Kann mir dafür jemand Bücher und Links empfehlen?
Ich habs selbst noch nicht durchgearbeitet; es steht bei mir noch auf der "umbedingt mal machen"-Liste :). Soll so ziemlich _der_ Einstieg in Netzwerkprogrammierung in C sein:
http://fastmirror.net/beej/

Webdude
12.09.05, 14:55
Thx @ Untergeher.
Hat vielleicht auch noch jemand was direkt zur Daemon-Programmierung auf Lager?

Der Untergeher
12.09.05, 15:15
Daemonen gibt`s hier:
http://pronix.linuxdelta.de/C/Linuxprogrammierung/index.shtml
... und vielleicht hier - weiss ich nicht mehr genau, aber ist für das was du vor hast vielleicht hilfreich:
http://www.advancedlinuxprogramming.com/alp-folder

edit: der erste Link war eine Schrott-bookmark von mir ... es ist eine alte verbuggte Version von http://www.pronix.de/pronix-6.html

fs111
12.09.05, 19:29
Also ich finde C++ ist von C nicht so verschieden.


In C kann man übrigens auch OOP programmieren. C ermöglicht die OOP, und C++ hat nur zusätzliche Sprachelemente die die OOP unterstützen. Man kann sogar noch weiter gehen und wenn man will in C++ nicht OOP prorgammieren.


Aha, und wie genau erreichst Du Polymorphie, Mehrfachvererbung etc. in C? Willst Du das gesamte Klassen und Vererbungskonzept selber schreiben?

fs111

baumgartner
12.09.05, 22:11
mich persönlich wurde dieses [0] Buch interressieren, da es anscheinend auf "alles" eingeht
hat das vielleicht schon wer gelesen?

mfg martin

[0] http://www.edvbuch.at/ProductDetails.aspx?productID=2563

carstenj
12.09.05, 22:23
Hi,

Aha, und wie genau erreichst Du Polymorphie, Mehrfachvererbung etc. in C? Willst Du das gesamte Klassen und Vererbungskonzept selber schreiben?

fs111
auch Kapselung fehlt, aber deswegen kann doch trotzdem objektorientiert programmieren. Natürlich lässt sich nicht jeder Aspekt der Objektorientierung abbilden, aber dennoch kann man das Konzept (einigermaßen) umsetzen. Java z. B. unterstützt ja auch keine Mehrfachvererbung und ist dennoch objektorientiert.

michael.sprick
12.09.05, 23:36
Java z. B. unterstützt ja auch keine Mehrfachvererbung
...ich auch nicht. Mehrfachvererbung... igittigitt ;) :D