C++ Mit C oder mit C++ anfangen? Warum?

l8lechi

Cadet 1st Year
Registriert
Apr. 2015
Beiträge
12
Hallo liebe Community!
Ich will mit der Programmierung anfangen, und nebenher ein bisschen Geld verdienen. Nach etwas längerer Recherche bin ich dann dazu gekommen, dass ich entweder C++ oder C lernen will. Jedoch weiß ich nicht welche es von denen entgültig werden soll. Man sagt ja, dass C++ auf C basiert, aber ist wirklich so viel anders? Und kann man mit C etwas machen, das man mit C++ nicht machen kann? Zum Beispiel ein Betriebssystem programmieren? Ich meine, C++ ist doch eine Erweiterung von C, also müsste ich doch theoretisch alle Funktionen von C auch in C++ benutzen können, und zusätzlich zu den C-Funktionen noch ein paar neue. Oder?
Für Spiele ist C++ besser, aber ist es wirklich sinnvoll, mit C++ anzufangen, obwohl C++ auf C basiert? Kann C++ nicht genau so wie auch C auf die Hardware zugreifen, oder gibt es doch unterschiede, von denen ich nichts weiß? C++ ist ja außerdem Objekt-Orientiert... Ich habe den Sinn noch nicht ganz verstanden, aber ich habe auch noch nie ein größeres Projekt gehabt. Ich habe mal eine Einführung zu Python gemacht (Einstieg in Python - Ideal für Programmieranfänger geeignet), aber nicht das komplette Buch, ungefähr 3/4 des Buches. Also (würde ich jetzt mal so behaupten) bin ich kein kompletter Programmieranfänger mehr.
Ich tendiere eher zu C++, weil es ja komplexer ist. Und wenn man C++ vollständig verstanden hat, dann hat man C doch auch verstanden, oder?
Könnt ihr mir also Bücher zum lernen eurer jeweiligen Empfehlung empfehlen? Oder wie habt ihr euren Favorit gelernt? Ich würde Bücher bevorzugen, weil ich gerne etwas, mit dem ich mich beschäftige, in der Hand halte.

Danke schonmal im Vorraus für alle Antworten. Ich werde Nachfragen natürlich beantworten, aber wahrscheinlich mit etwas Verzögerung (ich bin nicht "Dauer-Online").
Ihr könnt mir auch gerne private Nachrichten schreiben, ich werde sie so bald wie möglich beantworten :)
 
aber ist wirklich so viel anders?

JA! Einfach aus dem Grund, dass C++ Objektorientierung kann und C nicht. Und wenn man heute Programierung lernt, sollte man Objektorientierung lernen. C lohnt nur, wenn man kleine Microcontroller Programmieren will. Aber auch die, für die es nur C gibt werden immer seltener.

Ja, du kannst mit einer C++ Umgebung/Compiler auch C programmieren.

Fürs erste lernen, ist es eigentlich egal, was man nimmt C++/Java/C#, sofern es OO kann. Kommt ein wenig drauf an, was dein "langfristiges" Ziel ist. Hardware nahe und Spiele: C++, Windowsprogramme: C#. Eine Sprache die auf vielen Systemen läuft (z.B. auch Android): Java
 
Zuletzt bearbeitet:
Abend,

man sollte als Grundlage mit C anfangen ! C ist der Ursprung !

Was möchtest du Programmieren ?

Schönen Abend
 
Die Grundlagen (if / Switch case / Schleifen / Funktionen [bei C(++) noch Pointer]) lernt man auch in C++. Nur lernt man parallel das alles in Objekte, Klassen und Instanzen zu verpacken. Und wenn man heute halbwegs was zustande bringen will, sollte man sich OO so früh wie möglich zu eigen machen.

Nach der Argumentation sollte er mit Assembler (oder besser noch Lochkarten) anfangen, denn dass ist der Wirkliche Ursprung.
 
Edit: z.B.: Ausgabe unterschiedlicher Zahlen von Typ 'float'

Code:
#include <stdio.h>

void main()
{
	float v1,v2,v3,v4,v5,v6;	/* Die Variablen v1...v6 speichern */
						/* Werte des Typs "float"*/
	v1=1.0;				/* Zuweisung verschiedener Zahlen */
	v2=-1.0;				/* an die Variablen v1...v6 */
	v3=1234567890.1234567890;
	v4=12345678901234567890.0;
	v5=10;				/* Hier erfolgt die Zuweisung von */
	v6=-10;				/* Integer-Zahlen	*/

	printf("\n\n");
	printf("\t v1 = %e\n",v1);	 /* Ausgeben der zugewiesenen Zahlen */
	printf("\t v2 = %e\n",v2);
	printf("\t v3 = %e\n",v3);
	printf("\t v4 = %e\n",v4);
	printf("\t v5 = %e\n",v5);
	printf("\t v6 = %e\n",v6);
	printf("\n\n");
}
 
Zuletzt bearbeitet:
Eine Sprache zu "können" ist nur ein Teil in der Softwareentwicklung. Der wahrscheinlich weitaus kompliziertere Teil ist es, das zu lösende Problem zu verstehen und anschließend so aufzuarbeiten, dass es sich möglichst effizient in einen Algorithmus gießen läßt.

Objektorientierung ist sehr populär, das sollte man sich unbedingt etwas näher anschauen. Je nach deiner Zielsetzung sind aber auch andere Paradigmen und Sprachen interessant. Für Parser/Compiler könntest du dir z.B. gentle anschauen.

Mein Tipp: Versuch dich erstmal zu orientieren, in welche Richtung du entwickeln willst und dann mach dich schlau, welche Sprachen sich in diesem Bereich bewährt haben. Wenn du schon mit Python angefangen hast, dann mach doch damit erstmal weiter.
 
Es gibt Unterschiede zwischen den Sprachen, mehr nicht.

Erkenne die Unterschiede und entscheide selbst welche Sprache du verwenden möchtest.

Der Punkt ist nur der, dass halt viele Projekte C++ anwenden, sonst gibt es keinen Zwang C++ zu nehmen.
Du kannst mit C aber auch alles machen, nur gibt es manche Libraries für C nicht ;)

Btw. C ist eine der einfachsten Sprachen die es gibt, weil sie simpel ist ;) - man muss die Regeln nur kennen ;)
 
Ich wollte eigentlich nur simple Spiele programmieren, damit ich mir ein bisschen Geld dazu verdienen kann, und weil mein größtes Hobby Computer sind.
 
Zuletzt bearbeitet:
https://maxhemingway.files.wordpres...language-should-i-learn-first-infographic.png

C++ zu lernen weil es "komplexer" ist klingt nicht nach einem guten Kriterium ;)

Es hängt von dem Einsatzzweck ab. Generell kann man das so nicht sagen. Python kann man prozedural oder objektorientiert einsetzen. Es enthält auch einige funktionale Aspekte.

Persönlich würde ich empfehlen mit python weiterzumachen. C und seine Eigenheiten zu kennen ist sicher auch kein Fehler, besonders in unixoiden Umgebungen. C++ ist mir persönlich zu abgefahren und syntaktisch bei vollem Ausreizen der OOP Möglichkeiten schon heftig. Liegt vielleicht aber daran, dass ich nie in der Situation war, ernsthaft C++ programmieren zu müssen.

Aus meiner Sicht aber dann doch eher Java als c++

Aber c als simpel zu bezeichnen ist aus meiner Sicht gewagt. Vom Sprachumfang her schon, Projekte mit signifikanter Komplexität zu realisieren, ist eine Kunst. Von Portablität und Sicherheit ganz zu Schweigen. Dann lieber golang.org IMO

Aber Kleine Spiele und Viren... OMG ich verschwende meine Zeit
 
Das ist jetzt ein Witz, oder?
 
Wenn dein Ziel Spiele sind, würde ich mir mal die Unreal Engine (o. Ä) angucken.
 
Ich wollte eigentlich nur simple Spiele programmieren, damit ich mir ein bisschen Geld dazu verdienen kann, und weil mein größtes Hobby Computer sind.
Schau auf die Engines und entscheide.

Keiner kann dir sagen ob nun C, Java oder C++ besser sind für deine Bedürfnisse.
Manchmal hilft auch nur Assembler weiter, das zum Thema gute Programmiersprache.
 
Nilson schrieb:
Wenn dein Ziel Spiele sind, würde ich mir mal die Unreal Engine (o. Ä) angucken.

Wobei hier dann die Frage ist: möchte man sehen, wie eine Engine funktioniert und selbst eine entwickeln? Oder die Engine verwenden und darauf aufbauend dann ein Spiel entwickeln. Ob letzteres jedoch im Sinne des Fragestellers ist?
 
Ich persönlich sehe keine Grund, warum man sich heute noch mit C abgeben sollte, außer man braucht es, um irgend welche alten C-Programme zu warten, die man von irgend wem "geerbt" hat.

Wenn die Wahl nur C oder C++ lautet, würde ich immer gleich zu C++ raten und C links liegen lassen. Wenn nötig, kann man auch in C++ immer noch C-Style Code schreiben, also alle halbwegs komplexeren Sprachkonstrukte von C++ außen vor lassen und so programmieren, als wäre man in C unterwegs.

Da du aber schon mit Python angefangen hast, würde ich dir fürs erste raten, damit weiter zu machen. Python wäre so wie so immer meine erste Wahl, wenn ein Newbie nach einer guten Einsteigersprache fragt, denn Python hat eine relativ einfache Syntax und bietet einem Anfänger nicht so viele hinterhältige Falltüren wie C oder C++. Damit kann sich der Anfänger besser aufs Programmieren Lernen konzentrieren und muß sich nicht allzu sehr mit den technischen Gemeinheiten der Sprache selbst herumschlagen.
Wenn du in Python erst mal sicher unterwegs bist, wird es dir auch viel einfacher fallen, weitere Sprachen (wie dann z.B. C++) zu lernen.

Weiter oben wurde geschrieben, daß C keine Objektorientierung könne. Das stimmt nur bedingt, denn halbwegs objektorientiert kann man auch in C programmieren, auch wenn man dafür mehr Aufwand spendieren muß, da C anders als C++ diesen Stil nicht von Haus aus unterstützt.
Ergänzung ()

sunnyday schrieb:
Btw. C ist eine der einfachsten Sprachen die es gibt

Was sowohl ein Vorteil als auch ein Nachteil sein kann. Vorteil: Die Regeln der Sprache sind schnell erlernt. Nachteil: Dadurch, daß die Sprache so simpel ist, bietet sie dem Programmierer leider nur die grundlegendsten Werkzeuge und wenig Komfort.
 
Wenn man noch keinen Einblick hat erschließt sich einem der Sinn der Objektorientierung nicht. Erinner mich noch gut an meine Anfänge. Wenn man aber einmal objektorientiert programmiert hat und irgendwann automatisch nur noch objektorientiert denkt will man gar nicht mehr anders. :) Abgesehen von wenigen Ausnahmen wird auch nur objektorientiert programmiert, also kann ich auch nur zu C++ raten, auch wenn ich selbst noch nie C oder C++ programmiert habe.

Noch eine Anmerkung: Wenn Du schnell geht verdienen willst: Vergiss es. Unter einem halben Jahr bis Jahr Praxiserfahrung, und damit meine ich min 4 Stunden pro Tag wirst Du keinen Code zustande bringen, den Du verkaufen solltest.

Wenn Du einfach Erfahrung sammeln willst: fang an. Evtl gibst ja auch irgendwo nen Praktikumsplatz oder so, wo Du auch Leute um Dich hast, die Dir Sachen erklären können und wo Du einen bessern Einstieg findest.
 
antred schrieb:
Ich persönlich sehe keine Grund, warum man sich heute noch mit C abgeben sollte, außer man braucht es, um irgend welche alten C-Programme zu warten, die man von irgend wem "geerbt" hat.

Ich würde wie so oft sagen: it depends! Stell Dir vor, Du schreibst ein recht systemnahes Programm auf einer Unix-Umgebung. Da wäre C die Sprache der Wahl.

Letztlich hängt es immer davon ab, was man erreichen will. Ein klassischer Top-Down-Ansatz eben: das zu lösende Problem bestimmt, welche Sprache zum Einsatz kommt. Andererseits, wenn man eine Sprache lernen möchte, dann könnte doch ein Bottom-Up-Ansatz besser sein: die Sprache als Selbstzweck.
 
Auf Syntax würde ich gar nicht achten, alles lässt sich lernen !
Informiere dich lieber wozu die einzelnen Sprachen primär benutzt werden.

C: Betriebssysteme, Embedded Systems, Treiberprogrammierung. Generell alles was maximalen Speed braucht, dafür auch maximal auf Komfort verzichtet.

C++: Spiele, Anwendungen die eher Systemspezifisch sind. Ähnlich C, aber mit Objektorientierung.

Java: Findet sich überall, am wichtigsten ist dass man nicht vom Betriebssystem abhängig ist. Was in Windows gemacht wurde, läuft auch in Linux. Dennoch sind Java Programme eine ziemliche Krücke und fühlen sich auf modernsten Rechnern träge an, vor allem wenn GUIs im Spiel sind.

C#: Findet sich (NOCH) auf Windows Plattformen und ist Java SEHR ähnlich, außer dass es nicht überall läuft. Es ist komfortabler und durchdachter, aber die Verbreitung ist eher mangelhaft. Kürzlich wurde es aber freigegeben und bekommt bald Support auf anderen Plattformen. Problem dabei ist, MS supportet nicht selbst sondern überlässt es der Community. Ob so ein Schuh draus wird ? Glaube kaum dass sich Firmen auf sowas verlassen, die wollen immer einen Bezugspartner.

Ich selbst benutze C und Java. Java lernst du viel schneller und hast schnelle Erfolge.
C ist Fummelarbeit, da muss man sich manuell um jeden Furz kümmern, aber man lernt auch mehr.
Z.b. benutzt man in Java einfach Strings und kümmert sich nicht drum wie sie funktionieren, in C wirst du eine Speicherstelle reservieren müssen, reinschreiben und hinterher wieder freigeben müssen.
 
Zuletzt bearbeitet:
black90 schrieb:
Dennoch sind Java Programme eine ziemliche Krücke und fühlen sich auf modernsten Rechnern träge an, vor allem wenn GUIs im Spiel sind.

Da ist sie wieder, diese Urban Legend, die Java wahrscheinlich nie mehr los wird. Wir (in der Firma) schreiben Enterprise-Anwendungen mit... Java. Kein .NET oder sonstwas, nein, es ist Java. Und wir haben dabei beides: rechenlastige, datenbankgestützte Backend-Prozesse als auch ein Frontend, bei dem mehrere hundert Anwender drauf sind (natürlich nicht alle am gleich PC ;) ).

Seit Java 5/6 sind auch die Startup-Zeiten der VM und der Memory-Footprint extremst minimiert worden. Schau Dir mal beispielsweisen den JBoss-AppServer an, der startet in weniger als 2 Sekunden.
 
Cactuos schrieb:
Ich wollte eigentlich nur simple Spiele programmieren, damit ich mir ein bisschen Geld dazu verdienen kann, und weil mein größtes Hobby Computer sind.

Geld verdienen ? WO ? Welche Firma ?

Faust2011 schrieb:
Das ist jetzt ein Witz, oder?

Hab ich mir auch gerade so gedacht.
 
Zurück
Oben