Ein paar Fragen zu C++

Hallo Ihr Experten!

Ich bin neu auf dem Gebiet der Programmierung, aber C++ hat mein Interesse geweckt.
Habe gleich mehrere Fragen dazu:

1.Ich würde mir gerne C++ mithilfe von Büchern selbst beibringen. Könnt Ihr mir da etwas empfehlen, das nicht zu trocken ist? Ich habe mal in so ein paar Bücher reingeschaut, aber so ziemlich jedes zählt nur die Befehle und deren Funktionen auf, zum Teil mit Beispielen, aber ohne dass man daraufhin eine oder mehrere Aufgaben dazu bekommt, die man selbst lösen soll, was wirklich wünschenswert wäre. Ich möchte aktiv lernen, nicht Beispiele lesen und weitergehen zur nächsten Lektion, nur sowas konnte ich noch nicht finden. Hoffe Ihr könnt mir was gutes empfehlen, gerne auch auf englisch. (Auch für empfehlenswerte Online-Tutorials wäre ich sehr dankbar.)

  1. Ist C++ eurer Meinung nach zukunftsorientiert? Kann man als C++ Experte auch noch in 10 oder 20 Jahren noch Arbeit finden? Wieso? Ist eine Sprache wie Java zukunftsorientierter, wie oftmals behauptet?

  2. Wie lange braucht man um kleine Tools für Windows schreiben zu können, solche die das Arbeiten am PC leichter machen sollen…?

  3. Wie lange braucht man um C++ Experte zu werden, wenn man täglich 2-3 Stunden dafür aufbringt und nur Bücher und das Internet zur verfügung hat?

  4. Wie gut muss man sein um gut mit Grafikschnittstellen wie OpenGL arbeiten zu können oder mods für Half-Life 2 machen zu können? Auch hier wieder, wie lange…?

  5. Habe mehrfach gelesen, dass man vorher C lernen sollte… Woanders steht, man soll die Finger von C lassen und direkt C++ lernen… was ist denn nun empfehlenswert?

  6. Wie sieht es mit kommerziellen Programmen aus? Kann ich selbst „einfach“ ein Tool schreiben und es verkaufen ohne Lizenzgebühren für Programmbibliotheken oder ähnliches Zahlen zu müssen? (Mir ist klar, dass es unwarscheinlich ist, damit wirklich Geld zu verdienen, aber sollte ich mal eine innovative Idee haben, möchte ich vorher wissen was geht und was nicht :wink: )

  7. Als letztes wäre es schön ein oder zwei Empfehlungen für kostenlose IDEs zu bekommen :smile:. Und: Womit arbeitet Ihr, liebe Experten (und wenn es nicht zu aufdringlich ist: An welcher Art von Software)?

Ich erwarte keine genauen Angaben auf die „wie-lange“-fragen… Es geht mir nur darum eine grobe Vorstellung zu bekommen, also schätzen ist erlaubt und erwünscht.

Ich freue mich über jede Antwort, auch Teilantworten :smile:

Vielen Dank im Voraus!!

Hallo,

1.Ich würde mir gerne C++ mithilfe von Büchern selbst
beibringen. Könnt Ihr mir da etwas empfehlen, das nicht zu
trocken ist? Ich habe mal in so ein paar Bücher reingeschaut,
aber so ziemlich jedes zählt nur die Befehle und deren
Funktionen auf, zum Teil mit Beispielen, aber ohne dass man
daraufhin eine oder mehrere Aufgaben dazu bekommt, die man
selbst lösen soll, was wirklich wünschenswert wäre.

Ich kann „C++ in 21 Tagen“ von Jesse Liberty empfehlen, ich glaube auch, dass es darin Übungsaufgaben gibt (ist aber lange her, dass ich das gelesen habe).

  1. Ist C++ eurer Meinung nach zukunftsorientiert?

Jein. C++ wird sicher nicht so bald aussterben. Aber der Trend für Anwendungen geht sicher in die Richtung, dass man Sprachen nimmt, mit denen man den Speicher nicht wie bei C++ selbst verwaltet (und mit denen man auch hoffentlich keine Zugriffsverletzungen bauen kann).

Kann man als
C++ Experte auch noch in 10 oder 20 Jahren noch Arbeit finden?

Ja.

Wieso?

Weil es genug C+±Code gibt, der auch in Zukunft weiterentwickelt wird.

Ist eine Sprache wie Java zukunftsorientierter, wie
oftmals behauptet?

Jede Sprache hat ihre Anwendungsgebiete. Ich behaupte (und dafür wird man mich hier vermutlich verbal umbringen :wink:, dass Javas Anwendungsgebiete wachsen und die von C++ schrumpfen werden, aber auf recht großen Zeitskalen. Und schrumpfen heisst auch nicht verschwinden.

  1. Wie lange braucht man um kleine Tools für Windows schreiben
    zu können, solche die das Arbeiten am PC leichter machen
    sollen…?

Kommt drauf an, was diese Tools machen sollen. Aber wirklich einfache Aufgaben schon nach ein paar Tagen oder Wochen, vermutlich.

  1. Wie lange braucht man um C++ Experte zu werden, wenn man
    täglich 2-3 Stunden dafür aufbringt und nur Bücher und das
    Internet zur verfügung hat?

Ein Jahr. Zehn Jahre. Such dir was aus.
Hängt stark davon ab, was für dich ein Experte ist. Und wie talentiert du bist.

  1. Wie gut muss man sein um gut mit Grafikschnittstellen wie
    OpenGL arbeiten zu können oder mods für Half-Life 2 machen zu
    können? Auch hier wieder, wie lange…?

Dafür muss kein Crack sein, das geht relativ bald würde ich schätzen (2 Monate?)

  1. Habe mehrfach gelesen, dass man vorher C lernen sollte…
    Woanders steht, man soll die Finger von C lassen und direkt
    C++ lernen… was ist denn nun empfehlenswert?

Um C++ gut zu können, muss man vieles Lernen, das man auch für C braucht (Arrays, Pointer, const, Stack/Heap-Unterscheidung, …), aber die Philosophie hinter der Programmstrukturierung ist in C++ (objektorientiert) ganz anders als in C (Prozedural).

Ich persönlich glaube, dass man möglichst viele Paradigmen lernen sollte, um ein guter Programmierer zu werden. Ich würde also empfehlen, eine prozedural Sprache (sagen wir, C), eine objektorientierte (Eiffel), eine Funktionale (Lisp oder Haskell), eine Logik-orientierte (Prolog) und deklaratives Zeugs (Reguläre Ausdrücke, SQL), und auch noch eine klassiche dynamische Programmiersprache (wie perl, ruby, python) zu lernen

Aber da stoße ich vermutlich beim anwendungsorientierten Programmierer auf Unverständnis :wink:

  1. Wie sieht es mit kommerziellen Programmen aus? Kann ich
    selbst „einfach“ ein Tool schreiben und es verkaufen ohne
    Lizenzgebühren für Programmbibliotheken oder ähnliches Zahlen
    zu müssen?

Wenn du nur Bibliotheken und Compiler benutzt, die das erlauben, kann man das. Das ist auch überhaupt nicht unrealistisch, erfordert aber, dass man sich beides bewusst aussucht, und dabei auf die Lizenzen achtet.

  1. Als letztes wäre es schön ein oder zwei Empfehlungen für
    kostenlose IDEs zu bekommen :smile:. Und: Womit arbeitet Ihr, liebe
    Experten

IDE benutze ich keine. Als Text-Editor benutze ich (g)vim, der kann syntax-hilighting und alle möglichen anderen Spässe, die man beim Programmieren so gebrauchen kann, als Compiler GCC. Oh, und ich benutze Linux. Das geht auch beides unter Windows, ist dort aber dort nicht soweit verbreitet.

(und wenn es nicht zu aufdringlich ist: An welcher
Art von Software)?

Mein C+±Konsum hat abgenommen; zur Zeit schreibe ich nur noch eine numerische Simulation in C++.

Grüße,
Moritz

Hallo,

Ich bin neu auf dem Gebiet der Programmierung, aber C++ hat
mein Interesse geweckt.

Aha. Wie hat denn C++ das Interesse geweckt?

1.Ich würde mir gerne C++ mithilfe von Büchern selbst
beibringen. Könnt Ihr mir da etwas empfehlen, das nicht zu
trocken ist? Ich habe mal in so ein paar Bücher reingeschaut,
aber so ziemlich jedes zählt nur die Befehle und deren
Funktionen auf, zum Teil mit Beispielen, aber ohne dass man
daraufhin eine oder mehrere Aufgaben dazu bekommt, die man
selbst lösen soll, was wirklich wünschenswert wäre.

Wie wäre es damit, dass Du Dir selbst Aufgaben stellst, die Du mit Hilfe von den beschriebenen Befehlen löst?

Ich möchte
aktiv lernen, nicht Beispiele lesen und weitergehen zur
nächsten Lektion, nur sowas konnte ich noch nicht finden.

Da Du offenbar kein besonderes Interesse an der Theorie hast (z.B. bei der Bewertung von Algorithmen zum lösen vorgegebener Standardprobleme oder den Vor- und Nachteilen von Datenstrukturen) gilt: Learning by doing.

Hoffe Ihr könnt mir was gutes empfehlen, gerne auch auf
englisch. (Auch für empfehlenswerte Online-Tutorials wäre ich
sehr dankbar.)

Meine Güte. An online tutorials ist kein Mangel. Google Dir mal was. Ob das für Dich gut ist, kannst Du selbst am besten beurteilen.

  1. Ist C++ eurer Meinung nach zukunftsorientiert? Kann man als
    C++ Experte auch noch in 10 oder 20 Jahren noch Arbeit finden?

Auf dem Hobbyniveau findet man mit gar keiner Sprache eine (bezahlte) Arbeit.

Wieso? Ist eine Sprache wie Java zukunftsorientierter, wie
oftmals behauptet?

Das würde mich auch mal interessieren. Programmiersprachen eigenen sich für bestimmte Probleme unterschiedlich gut. Prinzipiell ist aber jedes theoretisch lösbare Problem mit allen Sprachen lösbar.

Ein wirklicher Experte in C- oder sogar Fortran-Programmierung wird keinerlei Probleme haben, eine Arbeit zu finden. Ein Stümper in Java bekommt einen Job zum wenden der Buletten bei McDonalds.

Der Experte wird auch keine wirklich großen Probleme bekommen, sich in eine andere Sprache einzuarbeiten, wenn es erforderlich sein sollte. Das setzt allerdings eine fundierte Ausbildung voraus.

  1. Wie lange braucht man um kleine Tools für Windows schreiben
    zu können, solche die das Arbeiten am PC leichter machen
    sollen…?

Ja, an schlecht programmierten kleinen Sicherheitlöchern, die das Arbeiten am PC „leichter machen“ herrscht riesiger Mangel. Veröffentliche schnell ein paar mehr!

  1. Wie lange braucht man um C++ Experte zu werden, wenn man
    täglich 2-3 Stunden dafür aufbringt und nur Bücher und das
    Internet zur verfügung hat?

Das hängt davon ab, wie talentiert man ist.

  1. Wie gut muss man sein um gut mit Grafikschnittstellen wie
    OpenGL arbeiten zu können oder mods für Half-Life 2 machen zu
    können? Auch hier wieder, wie lange…?

Für sowas braucht man zunächst einmal ein solides Verständnis der mathematischen Grundlagen. Hier lineare Algebra. Unter Windows wird OpenGL ja nicht mehr direkt unterstützt, also solltest Du Dir lieber DirectX bzw. Direct3D anschauen. Macht aber was die Grundlagen betrifft keinen Unterschied.

  1. Habe mehrfach gelesen, dass man vorher C lernen sollte…
    Woanders steht, man soll die Finger von C lassen und direkt
    C++ lernen… was ist denn nun empfehlenswert?

Mach es so, wie Du es besser findest. C++ nutzt primär das Paradigma der objektorientierten Programmierung, C ist prozedural orientiert. Beide Sprachen können das jeweils andere ebenfalls. Wenn Dir das nichts sagt, dann google mal :smile:

Übrigens hat keine der Methoden einen natürlichen Vorteil gegenüber der anderen. Insbesondere ist Objektorientierung nicht automatisch besser und/oder eleganter, als prozedurale Programmierung.

  1. Wie sieht es mit kommerziellen Programmen aus? Kann ich
    selbst „einfach“ ein Tool schreiben und es verkaufen ohne
    Lizenzgebühren für Programmbibliotheken oder ähnliches Zahlen
    zu müssen?

Das hängt davon ab, welche Bibliotheken Du nutzt. Wenn Du Dir ein Linux installierst, bekommst Du die Entwicklungsumgebung für allerlei Sprachen (inklusive der erwähnten Java, C und C++) mitsamt einem großen Haufen Bibliotheken gratis und *frei* dazu.

Auch unter Windows stehen die Entwicklungswerkzeuge wohl gratis zur Verfügung. Ich weiß aber nicht, welchen Lizenzen die zu nutzenden Bibliotheken unterliegen. Da solltest Du Dich beim Hersteller erkundigen.

  1. Als letztes wäre es schön ein oder zwei Empfehlungen für
    kostenlose IDEs zu bekommen :smile:. Und: Womit arbeitet Ihr, liebe
    Experten (und wenn es nicht zu aufdringlich ist: An welcher
    Art von Software)?

Eclipse ist sicher ein guter Ansatz für eine universell nutzbare IDE und frei verfügbare IDE. Unter Windows wirst Du an Microsoft Visual Dingsbums nicht vorbei kommen.

Ich erwarte keine genauen Angaben auf die
„wie-lange“-fragen… Es geht mir nur darum eine grobe
Vorstellung zu bekommen, also schätzen ist erlaubt und
erwünscht.

Ich freue mich über jede Antwort, auch Teilantworten :smile:

Zu guter Letzt noch zwei Links. Einmal das „hello world“ Poster der Lehmanns Buchhandlung. Dort wird in vielen Sprachen der Text „Hello, World!“ ausgegeben. Klassicherweise die erste „Aufgabe“, die man beim Erlernen einer Sprache löst.

http://www.lob.de/pdf/helloworld.pdf

Und dann auf die Hacker-Howto vom CCC (Übersetzung eines englischen Textes von Doug Mclean. Verstehe hier „hacker werden“ synonym zu „Programmierer werden“.

http://koeln.ccc.de/archiv/drt/hacker-werden.html

Gruß & viel Spaß!

Fritze

  1. Wie gut muss man sein um gut mit Grafikschnittstellen wie
    OpenGL arbeiten zu können oder mods für Half-Life 2 machen zu
    können? Auch hier wieder, wie lange…?

Dafür muss kein Crack sein, das geht relativ bald würde ich
schätzen (2 Monate?)

Naja, wir wollen mal nicht übertreiben. Einen MOD für Half-Life oder ein halbwegs brauchbares 3D-Spiel oder ähnliches ist nichts, was man nach „C in 21 Tagen“ und weiteren 5 Wochen rum-probieren hinkriegt. Auch muss man bedenken, dass manche Spiele oder Projekte Mannjahre an Zeit verschlingen. Sowas programmiert man dann auch nicht in eine paar Wochen, sondern da würde man als Einzelperson Jahre damit beschäftigt sein.

Zum Rest: ACK und daher auch ein Sternchen :wink:

Aber da stoße ich vermutlich beim anwendungsorientierten
Programmierer auf Unverständnis :wink:

Bei mir nicht :wink: Jede Programmiersprache hat ihre Anwendungsgebiete, ihre Stärken und Schwächen. Ein guter Programmierer sucht sich für jedes Projekt die geeignete Sprache aus und programmiert nicht alles in einer Sprache, nur weil er sie „gern“ hat.

  1. Als letztes wäre es schön ein oder zwei Empfehlungen für
    kostenlose IDEs zu bekommen :smile:. Und: Womit arbeitet Ihr, liebe
    Experten

Wenn du was einfaches für Einsteiger haben willst, dann empfiehlt sich meiner Meinung entweder etwas kommerzielles wie Visual Studio & Co. Wenn man lieber was nimmt ohne dafür viel Geld hinzulegen, dann würde ich z.B. empfehlen, dass man z.B. Eclipse verwendet, dass inzwischen über einen brauchbaren C++ Editor verfügt mit Code-Vervollständigung und anderen Annehmlichkeiten.
Auch kann man damit z.B. den QT Designer als Plugin benutzen (siehe diesen Screenshot http://www.qtsoftware.com/images/products/eclipse-in…), mit dem man schön und schnell Oberflächen basteln kann. Außerdem bietet QT auch noch ein wunderbares Framework, dass einem Klassen für fast alle Alltagszwecke mitbringt.
Da die neue QT-Version nun in LGPL lizensiert wird, kann man damit dann auch Projekte umsetzen, ohne dass man den Source-Code wieder freigeben müsste.
Auch bietet QT den Vorteil, dass man damit Anwendungen schreiben kann, die sowohl unter Windows als auch unter Linux oder MacOSX laufen.

@OP
Also ich würde dir empfehlen, dass du dir z.B. Eclipse CDT besorgst und Oberflächen mit QT schreibst:
http://www.eclipse.org/cdt/
http://www.qtsoftware.com/products

1 Like

Hallo,

1.Ich würde mir gerne C++ mithilfe von Büchern selbst
beibringen. Könnt Ihr mir da etwas empfehlen, das nicht zu
trocken ist? Ich habe mal in so ein paar Bücher reingeschaut,
aber so ziemlich jedes zählt nur die Befehle und deren
Funktionen auf, zum Teil mit Beispielen, aber ohne dass man
daraufhin eine oder mehrere Aufgaben dazu bekommt, die man
selbst lösen soll, was wirklich wünschenswert wäre.

Ich kann „C++ in 21 Tagen“ von Jesse Liberty empfehlen, ich
glaube auch, dass es darin Übungsaufgaben gibt (ist aber lange
her, dass ich das gelesen habe).

Danke für den Tipp!

  1. Ist C++ eurer Meinung nach zukunftsorientiert?

Jein. C++ wird sicher nicht so bald aussterben. Aber der Trend
für Anwendungen geht sicher in die Richtung, dass man Sprachen
nimmt, mit denen man den Speicher nicht wie bei C++ selbst
verwaltet (und mit denen man auch hoffentlich keine
Zugriffsverletzungen bauen kann).

Könntest Du mir Beispiele nennen für solche Sprachen? Oder zumindest ein Schlagwort, dass diese Eigenschaft beschreibt, so dass ich das nachschlagen kann?

Vielen Dank nochmal Moritz, für die zugänglichen und aufschlussreichen Antworten!!

Auf mindestens die hälfte der Antworten von Fritze könnte ich dagegen getrost verzichten. Ich finde es kindisch abwertende Kommentare über die Unwissenheit der Wissenshungrigen zu machen… dafür ist die Community hier bestimmt nicht da. Da es offensichtlich ist, muss ich wohl nicht erläutern wovon ich spreche. Trotzdem danke für die informativen Antworten.

  1. Wie gut muss man sein um gut mit Grafikschnittstellen wie
    OpenGL arbeiten zu können oder mods für Half-Life 2 machen zu
    können? Auch hier wieder, wie lange…?

Dafür muss kein Crack sein, das geht relativ bald würde ich
schätzen (2 Monate?)

Naja, wir wollen mal nicht übertreiben. Einen MOD für
Half-Life oder ein halbwegs brauchbares 3D-Spiel oder
ähnliches ist nichts, was man nach „C in 21 Tagen“ und
weiteren 5 Wochen rum-probieren hinkriegt. Auch muss man
bedenken, dass manche Spiele oder Projekte Mannjahre an Zeit
verschlingen. Sowas programmiert man dann auch nicht in eine
paar Wochen, sondern da würde man als Einzelperson Jahre damit
beschäftigt sein.

Danke für die Ergänzung!

Da ich leidenschaftlicher Spieler bin würde ich gern selbst Inhalte gestalten, z.B. durch die Mitarbeit an einem HL2 mod… Meine Stärke ist mathematisches Verständnis und strukturelles denken. Nach etwas Grundlegender Literatur und solche gestalterischen Aussichten, bietet es sich an in die Richtung zu gehen. Außerdem befinde ich mich gerade in einer Orientierungsphase, also wenn ich merke, dass Programmieren was für mich ist, möchte ich versuchen es zu meinem Beruf zu machen.

OK, weit genug abgeschweift… weisst Du mehr über die Anforderungen, die an jemandem gestellt werden, der den umgang mit openGL oder „modding“ im allgemeinen (oder speziell für die source-engine) lernen will? Oder kannst Du mir sagen, wo ich weitere Informationen dazu bekomme?

Ist C++ nicht die richtige Wahl, wenn man sich zumindest die option offen halten möchte, vielleicht sogar mal an kommerziellen Spielen mitzuarbeiten?
(Mir ist klar, dass die wenigsten da hinkommen, aber der Markt wächst und man weiß nie, wie gut man wird oder wie gefragt man sein kann :wink: )

Aber da stoße ich vermutlich beim anwendungsorientierten
Programmierer auf Unverständnis :wink:

Bei mir nicht :wink: Jede Programmiersprache hat ihre
Anwendungsgebiete, ihre Stärken und Schwächen. Ein guter
Programmierer sucht sich für jedes Projekt die geeignete
Sprache aus und programmiert nicht alles in einer Sprache, nur
weil er sie „gern“ hat.

Wäre es möglich, dass du mir zwei oder drei Beispiele gibst, für Projektarten und Art der Programmiersprache bzw. Name der Sprache, die du benutzen würdest? Wäre sehr hilfreich :smile:

  1. Als letztes wäre es schön ein oder zwei Empfehlungen für
    kostenlose IDEs zu bekommen :smile:. Und: Womit arbeitet Ihr, liebe
    Experten

Wenn du was einfaches für Einsteiger haben willst, dann
empfiehlt sich meiner Meinung entweder etwas kommerzielles wie
Visual Studio & Co. Wenn man lieber was nimmt ohne dafür viel
Geld hinzulegen, dann würde ich z.B. empfehlen, dass man z.B.
Eclipse verwendet, dass inzwischen über einen brauchbaren C++
Editor verfügt mit Code-Vervollständigung und anderen
Annehmlichkeiten.
Auch kann man damit z.B. den QT Designer als Plugin benutzen
(siehe diesen Screenshot
http://www.qtsoftware.com/images/products/eclipse-in…),
mit dem man schön und schnell Oberflächen basteln kann.
Außerdem bietet QT auch noch ein wunderbares Framework, dass
einem Klassen für fast alle Alltagszwecke mitbringt.
Da die neue QT-Version nun in LGPL lizensiert wird, kann man
damit dann auch Projekte umsetzen, ohne dass man den
Source-Code wieder freigeben müsste.
Auch bietet QT den Vorteil, dass man damit Anwendungen
schreiben kann, die sowohl unter Windows als auch unter Linux
oder MacOSX laufen.

@OP
Also ich würde dir empfehlen, dass du dir z.B. Eclipse CDT
besorgst und Oberflächen mit QT schreibst:
http://www.eclipse.org/cdt/
http://www.qtsoftware.com/products

Vielen Dank für all Deine Antworten, besonders für die empfehlung von QT!

mod… Meine Stärke ist mathematisches Verständnis und
strukturelles denken.
[…]
Richtung zu gehen. Außerdem befinde ich mich gerade in einer
Orientierungsphase, also wenn ich merke, dass Programmieren
was für mich ist, möchte ich versuchen es zu meinem Beruf zu
machen.

Dann würde ich dir empfehlen ein Informatik-Studium zu machen. Dort bekommst du alle Kenntnisse, die du haben willst, um auch komplexe Software schreiben zu können.
Viele Dinge kann man sich kaum vernünftig durch Learning-by-doing beibringen, wenn man nicht gerade Lust hat sich selbst durch Literatur durch zu arbeiten. Auch wirft man dort einen Blick in die verschiedensten Bereiche und kriegt so einen Überblick darüber, was es gibt und wie man es nutzen kann.

OK, weit genug abgeschweift… weisst Du mehr über die
Anforderungen, die an jemandem gestellt werden, der den umgang
mit openGL oder „modding“ im allgemeinen (oder speziell für
die source-engine) lernen will? Oder kannst Du mir sagen, wo
ich weitere Informationen dazu bekomme?

Keine Ahnung. Zum einen denke ich dass du bei HL2 überhaupt keine OpenGL Kenntnisse brauchst, weil das Spiel doch nur noch DirectX benutzt, oder? Auch weiß ich nicht, was man braucht, um Mods dafür zu schreiben. Es wird wohl von Valve eine Art SDK geben. Du kannst ja auch einfach bei den Autoren eines Mods mal nachfragen, die müssen es ja wissen.

Ist C++ nicht die richtige Wahl, wenn man sich zumindest die
option offen halten möchte, vielleicht sogar mal an
kommerziellen Spielen mitzuarbeiten?
(Mir ist klar, dass die wenigsten da hinkommen, aber der Markt
wächst und man weiß nie, wie gut man wird oder wie gefragt man
sein kann :wink: )

Zum einen: Informatik-Studium. Der Kern von 3D Spielen ist die Grafik-Engine. Und die ist hochkomplex und erfordert gute algorithmische und mathematische Kenntnisse, die du dir selbst nur schwer beibringen kannst.
Zum anderen: Grafik-Engines werden mit Sicherheit viel in C/C++ geschrieben, weil es hier v.a. auf Geschwindigkeit ankommt und C/C++ diese bietet.

Wäre es möglich, dass du mir zwei oder drei Beispiele gibst,
für Projektarten und Art der Programmiersprache bzw. Name der
Sprache, die du benutzen würdest? Wäre sehr hilfreich :smile:

Das kann man so pauschal nicht sagenm, dazu müsste man wissen auf welchen Plattformen das Projekt laufen soll, was es können muss usw. Ohne die genauen Anforderungen der Projekts lässt sich sowas nicht vernünftig beantworten.

Die einzelnen Programmiersprachen haben halt verschiedene Eigenschaften, die man letztlich mit den Anforderungen des Projekts im Detail vergleichen muss.

Mit C/C++ lassen sich sehr schnelle Programme schreiben, da es auf viele Dinge wie z.B. ein automatisches Speichermanagement verzichtet. Dafür lassen sich in C/C++ eben z.B. genau wegen des fehlenden Speichermanagements verdammt viele Fehler machen, die z.B. auch Sicherheitskritisch sind (Stichwort Buffer Overflows). Denn du musst dich in vielen Bereichen komplett selbst über die Allokierung und die Freigabe von Speicher kümmern. Auch lassen sich mit C++ verdammt viele „dreckige“ Sachen machen z.b. durch die Zeiger-Arithmetik, die aber fehleranfällig sind und schlecht wartbar.

Dann gibt es Sprachen, bei denen viele Fehler bereits bei der Kompilierung erkannt werden, da die Sprachen statisch getypt sind (wie z.b. in Java). Das vermeidet viele Fehler. Bei dynamisch getypten Sprachen (wie z.B. Python) würde man diese Fehler erst zur Laufzeit entdecken können.

Dann gibt es verschiedene Programmier-Paradigmen wie Objektorientierung, Funktionale Sprachen, Imperative Sprachen, usw usf…

Eine grobe Tendenz:
Desktop-Software wird oft mit C++ und einem Gui-Toolkit wie QT geschrieben oder es wird in Sprachen wie Java, C#, Visual Basic oder ähnlichen geschrieben. Meist nimmt man hierzu in der Regel objektorientierte Sprachen her.
Web-Anwendungen werden oft mit PHP, Java, Ruby, C# oder Python geschrieben. Auch hier nutzt man in der Regel objektorientierte Sprachen.
Hardware-nahe, zeitkritische Sachen oder Spiele schreibt man in der Regel eher mit C/C++.
Plattform-unabhängige Sachen schreibt man oft mit Java aber auch mit anderen Sprachen wie C/C++ und einem Plattformunabhängigen Toolkit wie QT lässt sich das machen, auch wenn dort wesentlich mehr aufpassen muss, um plattformunabhängig zu bleiben.

1 Like

Könntest Du mir Beispiele nennen für solche Sprachen? Oder
zumindest ein Schlagwort, dass diese Eigenschaft beschreibt,
so dass ich das nachschlagen kann?

Das sind im Prinzip alle Sprachen, die eine automatische Speicherverwaltung mitbringen, wie z.B. Java, C#, Haskell, Perl, etc
Infos z.B. hier:
http://de.wikipedia.org/wiki/Garbage_Collection

Desweiteren sind Sprachen die z.B. nicht direkt auf der CPU, sondern über eine Laufzeitumgebung in Form einer VM laufen, in der Regel weniger fehleranfällig bzw. sicherer, da die VM die Software „einsperren“ kann. Beispiele hierfür sind z.B. Java oder C#. Hier wird der Quelltext nur zu einem Bytecode kompiliert, der dann in der VM läuft.
http://de.wikipedia.org/wiki/Bytecode

Hallo

1.Ich würde mir gerne C++ mithilfe von Büchern selbst
beibringen. Könnt Ihr mir da etwas empfehlen, das nicht zu
trocken ist? Ich habe mal in so ein paar Bücher reingeschaut,
aber so ziemlich jedes zählt nur die Befehle und deren
Funktionen auf, zum Teil mit Beispielen, aber ohne dass man
daraufhin eine oder mehrere Aufgaben dazu bekommt, die man
selbst lösen soll, was wirklich wünschenswert wäre. Ich möchte
aktiv lernen, nicht Beispiele lesen und weitergehen zur
nächsten Lektion, nur sowas konnte ich noch nicht finden.
Hoffe Ihr könnt mir was gutes empfehlen, gerne auch auf
englisch. (Auch für empfehlenswerte Online-Tutorials wäre ich
sehr dankbar.)

Ich hatte das als Reply an ein anderes Posting schon
angefragt - das selbe gilt auch hier: „Wie sind die Vor-
kenntnisse konkret in anderen Programmiersprachen“?

Je nach Stand der Vorkenntnisse könntest Du dann
auf die entsprechende Stufe der Leiter in C/C++
springen, am besten mit einem kleinen Übungsprojekt.

  1. Ist C++ eurer Meinung nach zukunftsorientiert? Kann man als
    C++ Experte auch noch in 10 oder 20 Jahren noch Arbeit finden?
    Wieso? Ist eine Sprache wie Java zukunftsorientierter, wie
    oftmals behauptet?

Wie Moritz schon geschrieben hatte, ist diese Sichtweise
nicht zutreffend. C ist eine Schaufel, C++ eine Schaufel
mit Heizung und Java ist ein Gabelstapler. Es gibt dann
eben auch Aufgaben, bei denen Du mit einem Gabelstapler
scheiterst - und es ergibt auch keinen Sinn, in einer
großen Halle, wo alles schon seinen Platz hat, mit der
Schaufel herumzufuchteln.

Deconstruct hat schon angedeutet, daß an die Bediener
von solch unterschiedlichen Werkzeugen auch unterschied-
liche Anforderungen gestellt werden. Konkret heißt das,
das die zu überwindenden technischen Schwierigkeiten
bei der Verwendung für ein Problem ganz unterschied-
licher Art sein können, siehe auch
Wenn Programmiersprachen Pistolen wären“:
http://www.thealmightyguru.com/Humor/Docs/ShootYours…

Das genauer zu benennen würde imho mehr Raum
erfordern, man lese dazu am besten im www nach:
http://www.javacoffeebreak.com/articles/thinkinginja…
http://www.cprogramming.com/tutorial/java/syntax-dif…
usw.

  1. Wie lange braucht man um kleine Tools für Windows schreiben
    zu können, solche die das Arbeiten am PC leichter machen
    sollen…?

Was soll das zum Beispiel sein? Was meinst Du damit?
(Es kommt hier auf a) die Komplexität der Aufgabe an und
b) geht es hier um die technische Bewältigung des Problems,
die Windows-Bibliotheken einzubinden und anzusteuern)

  1. Wie lange braucht man um C++ Experte zu werden, wenn man
    täglich 2-3 Stunden dafür aufbringt und nur Bücher und das
    Internet zur verfügung hat?

Ich denke, man braucht, egal wie man vorgeht, mindestens
10 Jahre, um ein „Experte“ (der den Namen verdient) zu werden,
das gilt aber für Java auch.
siehe: http://norvig.com/21-days.html

  1. Wie gut muss man sein um gut mit Grafikschnittstellen wie
    OpenGL arbeiten zu können oder mods für Half-Life 2 machen zu
    können? Auch hier wieder, wie lange…?

Hie gibt es auch wieder mehrere Teilprobleme:

  • Richtiges Einbinden der GL-Bibliotheken in ein weitergebbares
       Programm
  • Kenntniss der richtigen und auch zweckmäßigsten GL-Funktionen,
    um ein gegebenes Problem anzugehen
  • Kenntniss der OpenGL-Datenstrukturen und Verarbeitungs-
       konventionen
  • Beherrschen von linearer Algebra (Matrix/Vektor/Tensor) und
       Verständnis der analogen Open-GL-Konzepte

… und je nach dem, wie lange Du dafür brauchst …

  1. Habe mehrfach gelesen, dass man vorher C lernen sollte…
    Woanders steht, man soll die Finger von C lassen und direkt
    C++ lernen… was ist denn nun empfehlenswert?

Ich finde es ok, vorher C zu lernen, weil es viel
schwieriger ist, damit etwas sinnvolles und hin-
reichend komplexes zu Programmieren. Man lernt eben
eine ganze Menge über Speicherverwaltung, Zeiger-
arithmetik und kommt ganz nahe an den Gott der
darunterliegenden Maschine heran :wink:

C++ nimmt Dir (durch die Standardbibliothek) schon
wieder sehr viel von diesen Schwierigkeiten ab (u.a.
fast die komplette Speicherverwaltung), erfordert aber
*manchmal* noch ein tieferes Verständnis, welches dem
C-Programmierer keine Schwierigkeiten bereitet.
Ausserdem ist die inhärente Komplexität von C sehr sehr
gering, die C++ (plus Standardbibliothek/STL) ausgesprochen
hoch.

  1. Wie sieht es mit kommerziellen Programmen aus? Kann ich
    selbst „einfach“ ein Tool schreiben und es verkaufen ohne
    Lizenzgebühren für Programmbibliotheken oder ähnliches Zahlen
    zu müssen? (Mir ist klar, dass es unwarscheinlich ist, damit
    wirklich Geld zu verdienen, aber sollte ich mal eine
    innovative Idee haben, möchte ich vorher wissen was geht und
    was nicht :wink: )

Da gibt es üblicherweise keine Probleme (wie in den anderen
Postings angedeutet), je nach verwendeten Bibliotheken sind
aber ggf. noch Bedingungen zu erfüllen. Hier bekommst Du
Hinweise: http://www.s-a-ve.com/start.html

  1. Als letztes wäre es schön ein oder zwei Empfehlungen für
    kostenlose IDEs zu bekommen :smile:.

Ich verwende für die Entwicklung von C/C+±Programmen
grundsätzlich die Visual-Studio-IDE’s, z.B. (kostenlos)
http://www.microsoft.com/express/download/

Bisher habe ich noch keine IDE gefunden, die an Komfort auch
nur annähernd herankommt. Da meine C/C+±Programme unter
Unix (Linux) laufen sollen, übersetze (kompiliere) ich
die im Visual-Studio entworfenen Programme jeweils
auch gleichzeitig unter Linux mit dem GNU-gcc (mit
Makefiles als „Entwicklungstools“).

Der nächste Kandidat wäre imho Sun’s Netbeans für C++:
http://www.netbeans.org/downloads/

Und: Womit arbeitet Ihr, liebe Experten (und wenn es nicht
zu aufdringlich ist: An welcher Art von Software)?

So ähnlich wie Moritz, numerische Simulationen (3D-Objekte)
und Auswerte/Analyse-Software für diese numerischen Simulationen.

Ich erwarte keine genauen Angaben auf die
„wie-lange“-fragen… Es geht mir nur darum eine grobe
Vorstellung zu bekommen, also schätzen ist erlaubt und
erwünscht.

Nochwas zur „Verbreitung“ von C und C++, schau mal hier:
http://www.indeed.com/jobtrends?q=sql%2Cc%2Cjava%2C+…

Grüße

CMБ

Ich denke, man braucht, egal wie man vorgeht, mindestens
10 Jahre, um ein „Experte“ (der den Namen verdient) zu werden,
das gilt aber für Java auch.
siehe: http://norvig.com/21-days.html

Der Artikel öffnet einem in gewisser Weise die Augen, wenn man bedenkt, wie leicht man fehlgeleitet werden kann durch die propagierten lernmethoden. Auch die verlinkte seite http://www.engines4ed.org/hyperbook/nodes/NODE-120-p… war sehr aufschlussreich.

Ich wollte das ganze mit Spaß angehen und das werde ich jetzt auch. Ich fange erstmal klein an und arbeite mich dann über die Jahre zu den großen wie C++ oder Java vor. Die Dinge überstürzen hat mir noch nie was gebracht :wink:

Vielen Dank nochmal an Alle, für alle guten Antworten!