C oder C++ zum Einstieg?

enr00

enr00

Routinier
Ich möchte jetzt endlich mit C oder C++ anfangen, weiss aber nicht was ich nehmen soll, könnt ihr mir da Ratschläge geben?
 
Nimm C++. Praktisch alle modernen Sprachen unterstützen OO, da schadets nicht, wenn du das Prinzip glecih von anfang an kennenlernst.

Ansonsten kommts drauf an, was du denn programmieren willst..
 
Als so ne Frage gabs hier schon mal, aber ich empfehle am Anfang C, weil manche Sachen einfach tiefer behandelt werden, finde ich.

Ich kann dir das Buch "C von A bis Z" empfehlen, das kannst du auch online auf www.pronix.de lesen.
Und dann zum weitermachen "C++ von A bis Z". (in diesem wird wie in manchen anderen C++ Büchern auf C Büchern verwiesen. )
 
Nimm C++. Praktisch alle modernen Sprachen unterstützen OO

Eigentlich habe ich schon minimale Erfahrung mit OO bei java.

Ansonsten kommts drauf an, was du denn programmieren willst..

Ich möchte den Kernel verstehen können, und eben auch auf Windows *.exe's erzeugen können, sonst fällt mir nicht viel ein.

Ich kann dir das Buch "C von A bis Z" empfehlen

Das fällt zusammen mit "C++ von A bis Z" in die engere Auswahl

ich empfehle am Anfang C, weil manche Sachen einfach tiefer behandelt werden

Was wird denn beispielsweise tiefer behandelt?


Ich glaube aber ich werde mit C anfangen...
 
Also ich denke mal so Hardwarenah und Systemnah da bist du mit C besser drann. Weil eben im Buch von C++ von A bis Z ist manches (z.B. Pointer, Speicher, Variablentyp, ...) nicht so stark behandelt worden wie im C von A bis Z, es wurde öfters drauf verwiesen.

Also ich empfehle dir das Buch mal anzugucken, am besten online, da sollte es auch kostenlos sein, also kann man nix falsch machen und auf der Seite (www.pronix.de) gibts noch ein Buch, das sich auch mit dem OS (Linux-Unix-Programmierung) näher beschäftigt.
 
Vielen Dank

Vielen Dank dass ihr mir geholfen habt!
 
Ich würd C++ nehmen. Es sei denn du hast zu viel Zeit.
C++ ist eine Hybridsprache, d.h. sie kann prozedural (das was C macht) als auch OOP.
 
Um den Kernel zu verstehen brauchst Du natürlich C, da Linux komplett in C geschrieben ist. Außerdem brauchst Du natürlich Kenntnisse von dem Gebiet im Kernel, mit dem Du Dich beschäftigen willst.

Übrigens kommt man mit moderneren Sprachen als C und C++ wesentlich schneller zu benutzbaren Ergebnissen. Exemplarisch sei einmal Java genannt. Man hat Garbage Collection und die Standardbibliothek ist viel, viel größer als bei C++. Die Sprache selber ist wesentlich einfach aufgebaut als C++. Das erleichtert nicht nur das Lernen der Sprache, sondern sorgt auch dafür, dass die IDEs mehr können als die für C++, weil sie weniger Probleme haben, die Sprache zu parsen und deswegen mehr Features implementieren können (Refaktorisierung usw.). Hinzu kommen wesentlich einfachere und trotzdem nicht weniger mächtige Möglichkeiten zur Modularisierung, einfachere Buildsysteme usw. usf. Kurzum: Es gibt viel mehr durchdachte Konzepte und viel weniger historisch gewachsenes Gefrickel, so dass man sich mehr auf das zu lösende Problem konzentrieren kann.
 
Zuletzt bearbeitet:
ach naja, wenn er c++ kann, dann wird er mit c kein problem haben! außer dass man ein paar veraltete konstrukte nicht gleich zuordnen kann. aber dafür hilfts inet. und dass mit den linux-kernel nur mit c versteht ist schwachsinn. heute wird nichts mehr ohne oo gemacht... ob nun mit structs oder mit klassen ist auch egal! c++ bietet alles was c bietet nur noch mehr!
 
Exemplarisch sei einmal Java genannt. Man hat Garbage Collection und die Standardbibliothek ist viel, viel größer als bei C++. Die Sprache selber ist wesentlich einfach aufgebaut als C++. Das erleichtert nicht nur das Lernen der Sprache, sondern sorgt auch dafür, dass die IDEs mehr können als die für C++, weil sie weniger Probleme haben, die Sprache zu parsen und deswegen mehr Features implementieren können (Refaktorisierung usw.). Hinzu kommen wesentlich einfachere und trotzdem nicht weniger mächtige Möglichkeiten zur Modularisierung, einfachere Buildsysteme usw

Java kann ich schon etwas, ich will aber mal was neues lernen, hauptsächlich geht es mir darum, ausführbare Dateien zu erzeugen, denn ich möchte die Programme anderen Leuten auf Win zur Verfügung stellen, und nicht jeder hat einen Bytecode Interpreten und weiss ihn zu benutzen.

ach naja, wenn er c++ kann, dann wird er mit c kein problem haben! außer dass man ein paar veraltete konstrukte nicht gleich zuordnen kann. aber dafür hilfts inet. und dass mit den linux-kernel nur mit c versteht ist schwachsinn. heute wird nichts mehr ohne oo gemacht... ob nun mit structs oder mit klassen ist auch egal! c++ bietet alles was c bietet nur noch mehr!

Ich finde bei java das Planen neuer Klassen mühsam und möchte auch einen Einblick in präobjektorientierte Sprachen haben, von daher glaube ich dass ich C lernen werde.
 
Also ich lerne gerade C und vermisse eigentlich nichts. Bin gerade am OpenGL programmieren (ein topic hier hat mich drauf gebracht) und importier jetzt dff dateien (von GTA)...mir fehlt OOP nicht wirklich.
Ausserdem ist C von A bis Z echt ein gutes Buch. Wer noch K&R liest, ist bestimmt bestens geruestet.
 
naja, wenn dus nicht vermisst, dann nur weil du wenig erfahrung hast, aber der code wird schlecht wartbar ohne oop. datenkapselung ist einfach besser,grade wenn die projekte gößer werden.
 
Jo das schon slash-ex, aber ich find für Anfänger reicht C aus. Da man die Grundlagen einfach besser lernt.
 
Werde mit C beginnen

Ich werde jetzt mit C beginnen, ich bestelle mir schnell C von a bis z und nachher lerne ich C. Wie lange habt ihr denn gebraucht, um das Buch ganz zu verstehen? und wie ist man einzustufen wenn man alles was im Buch steht beherrscht?
 
Die Sprache selbst hast du relativ schnell begriffen.. die Algorithmen und der Programmaufbau - das kann Jahre gehen :).
 
naja, wenn dus nicht vermisst, dann nur weil du wenig erfahrung hast, aber der code wird schlecht wartbar ohne oop. datenkapselung ist einfach besser,grade wenn die projekte gößer werden.

Naja, wenn Du wirklich erfahren bist, dann ist Dein C-Code auch wartbar ;)

Mfg, Lord Kefir
 
@enr00:
Ja klar, was du selber schreibst kapierst du auch schnell. Aber ein komplexer Softwareprojekt wird auch noch von anderen mitgeschrieben und da musst du oft kapieren können, was die anderen jetzt eigentlich gecoded haben. Zudem wirst du in grösseren Programmen oftmals irgendwann über Fehler stolpern die du am Anfang gemacht hast weil du zuwenig weit dachtest (ausser du machst zuerst UML Diagramme.. aber das ist langweilig :)).

Mit Java hast du das Problem weniger als mit C.. mit C hast du einfach mehr Freiheiten Dinge zu verbocken.
 
Die Sprache selbst hast du relativ schnell begriffen.. die Algorithmen und der Programmaufbau - das kann Jahre gehen :).

Sehe ich ebenso. Letzten endes muss man das nur einmal richtig koennen und das Wissen dann auf andere Sprachen anwenden. Selbstverstaendlich ist das laengst nicht alles, da sich viele Sprachen stark unterscheiden. Allein der Unterschied zwischen prozeduraler und (rein) objektorientierter Programmierung ist gross, aber der OP hat ja mit Java schon Erfahrung. (Ich durfte vor kurzem z. B. mal an eine funktionale Programmiersprache, da war alles bisherige Wissen fuer die Katz...)

Wenn man keinen Wert auf objektorientierung legt, ists imho eigentlich Wurscht, ob C oder C++, allerdings hat man bei C halt nicht das schoene cin/cout.

Soll es allerdings wirklich nur Verstaendnis des Kernels sein und eigene Entwicklung von Programmen steht im Hintergrund, ist man sicher mit reinem C besser beraten...
 
Ich finde den Unterschied OOP zu prozeduraler Programmierung nicht wirklich so aufregend.
Bei der OOP programmierst du ja auch prozedural - in den Methoden. Es werden eben nur die Funktionen an bestimmte Daten gebunden, mehr ist das nicht. Es ist einfach nur eine andere Ansichtsweise.
Viel krasser ist der Unterschied zur funktionalen Programmierung.
 

Ähnliche Themen

Software-Entwickler C/C++, embedded, automotive (m,w,d) in München gesucht

Shell Programmierung

C Programm Klausur Noten Spiegel einlesen und Farb Balkendiagramm sim draw ausgeben

es kommen abwechselnd neuere Distributionen...

chown Befehl in einem Script

Zurück
Oben