C++ Noch aktuell?
-
C++Brutzel schrieb:
Ich wollte mich jetzt mal so richtig tief in c++ stürzen, da kommen jedoch einige Fragen bei mir auf:
1. Ist C++ eigentlich immer noch aktuell?
C++ ist eine der mächtigsten Sprachen. Wenn Du praktisches Programmieren wirklich verstehen möchtest, solltest Du Dir C++ ansehen und Dir dafür viel Zeit lassen. Programmieren wirklich zu lernen dauert Jahre, C++ wird Dir bis zum Schluss keine Grenzen setzen.
Weiterhin kannst Du schnell auf andere verwandte Sprachen wechseln, wenn Du erstmal programmieren kannst.C++Brutzel schrieb:
2. Ich bin zurzeit bei Grundlagen wie "cout","printf" und sachen wie das, Ich habe mir als Ziel gesetzt ein kleines einfach gehalten Spiel zu schreiben jedoch weiß ich zurzeit nicht wie ich das hinkriegen sollte...v.a. da ich zz nur die o.g einfachen befehle kenne und das ja auch alles auf Text basiert und weniger mit Grafik zu tun hat. Also: Kann ich mit C++ Spiele meiner wahl programmieren?
Ja, Du kannst aus C++ OpenGL, SDL und DirectX und sehr vieles mehr ansprechen.
Aber nicht jetzt. Du solltest erst programmieren lernen.C++Brutzel schrieb:
3.Wird mir C++ eigentlich auch immer wieder begegnen?-Ist denn auch aktuelle und bekannte Software in C++ geschrieben?
Mehr und mehr Anwendungen werden in C# oder Java geschrieben, beide Sprachen sind aber mit C++ verwandt. Gute C++ Kenntnisse werden sehr hilfreich sein. Solltest Du Dich für maschinennahe Projekte interessieren (Robotik, Microcontroller...), wird es mit Java und C# allerdings schnell eng. Hierfür eignet sich C und C++ wieder mehr.
Es wird weiterhin auch noch vieles in C++ entwickelt. Nach dem Hype vor ca. 7 Jahren wurde vieles auf Java umgestellt und das wirkt weiterhin nach. Zur Zeit erscheinen mir Spiele in C# oder Java eher Seltenheitswert zu besitzen. Ich bin allerdings auch kein großer Spieler.
-
Undertaker schrieb:
Checker&Murckser schrieb:
also ich verwende nicht alles was C++ zu bieten hat, aber mehr als das was ich benutze, habe ich auch noch nicht gebraucht

was ist das eigentlich für eine software, die du für die ATmega's in C++ entwickelt hast und welchen vorteil bringt dir dabei C++ gegenüber C?

Direkten Vorteil: keinen. Man kann mit C sicher genauso gute (bzw. bessere - bin ja ganz sicher nicht der beste Programmiere) Programme schreiben.
Aber:
Ich habe C++ gelernt und denke mal, dass ich das einigermaßen gut kann und warum soll ich in C programmieren, wo ich erst umdenken muss, wenn ich weiß, wie ich meine Sachen mit C++-Mitteln realisiere. Es macht vieles (für mich) einfacher.
Ich mein, Teile meines Codes kann man auch als C ansehen, die unterste Ebene der Lib würde sicher nach geringen Abwandlungen so auch von einem C-Compiler compiliert werden - wieso nicht die Möglichkeiten nutzen die man hat
?Was ich programmiere: Die Steuereinheit für einen "Fußballroboter" für den RobocupJunior (wenn jemand den Wettbewerb kennt).
-
Checker&Murckser schrieb:
Direkten Vorteil: keinen.
dachte ich mir's doch, du benutzt C++ fast wie C.

Checker&Murckser schrieb:
Aber:
Ich habe C++ gelernt und denke mal, dass ich das einigermaßen gut kann und warum soll ich in C programmieren, wo ich erst umdenken muss, wenn ich weiß, wie ich meine Sachen mit C++-Mitteln realisiere. Es macht vieles (für mich) einfacher.naja, du sagtest doch, du hättest dir eine eigene vector-klasse geschrieben. so'ne klasse arbeitet ja normalerweise mit dynamischem speicher (heap) und hat z.b. 'nen überladenen []-operator, der ja eine exception auslösen sollte, wenn man mal daneben zielt. du sagtest aber auch, dass du keine exceptions benutzt. wie legst du einen heap an, wenn der controller nur 4KB ram hat? was macht des vectors push_back-funktion, wenn mehr speicher gebraucht wird? benutzt du ein ATmega-derivat das mehr memory hat (falls es das gibt)? wie reagierst du auf falsche indizes ohne exceptions?
1000 fragen, aber mich würde wirklich mal interessieren, wie C++ programmierer sowas hinkriegen...Checker&Murckser schrieb:
Was ich programmiere: Die Steuereinheit für einen "Fußballroboter" für den RobocupJunior...
steuereinheit? heisst das, dass noch andere controller in dem robbie werkeln oder ist es nur ein einziger ATmega?

-
vector::operator[] löst keine Exceptions aus!
-
Artc schrieb:
vector::operator[] löst keine Exceptions aus!
wär' ich glatt von ausgegangen. entschuldigt bitte meine unwissenheit. was macht er denn sonst bei out-of-bounds zugriffen, z.b. x = my_vector[-99]; und ähnlichem? gleich 'realloc'?
-
Undertaker schrieb:
Artc schrieb:
vector::operator[] löst keine Exceptions aus!
wär' ich glatt von ausgegangen. entschuldigt bitte meine unwissenheit. was macht er denn sonst bei out-of-bounds zugriffen, z.b. x = my_vector[-99]; und ähnlichem? gleich 'realloc'?
Ist wohl ziemlich undefiniert
wenn du Bereichsprüfung benötigst verwendest du std::vector::at()@ OT:
Wenn du "nur" ein kleines Spiel Programmieren willst schau dir mal die Basic-Dialekte an (BlitzBasic ist der vielleicht bekannteste). Damit kannst du vergleichsweise schnell vergleichsweise viel erreichen.Ich bin gerade an meinem 2. C++ - Spiel am schreiben und einige der Programmierer haben mit BlitzBasic angefangen, wenn du wirklich dabeibleiben willst kannst du C++ später lernen
Wenn das Spiel nur als Zwischenschritt gedacht ist und du gerne Programmieren lernen willst sieht das ganze natürlich anders aus. Allerdings kann das eigene Spiel nur ein Fernziel sein.
-
otze schrieb:
Ich bezweifel einfach mal, dass man in java aufgrund der 3 Millionen exceptions stabile programme schreiben kann *densteininsrollenbringt*
Exceptions sind ein Instrument, mit denen Programme stabiler werden.
Was ist die alternative? In der Regel werden in C beispielsweise Fehlercodes zurückgeliefert. Häufig werden diese einfach ignoriert. Die Folgen sind unvorhersehbar. In der Regel führt das zum Absturz.
Wird bei einem Fehler eine Exception ausgelöst, wird das Programm schlimmstenfalls an dieser Stelle abgebrochen bevor etwas unvorhersehbares passiert, wenn der Fehler nicht explizit behandelt wird.
Ok - in Java kann ich ihn gar nicht ignorieren. Daher wird häufig ein leerer catch-Block eingefügt. Vor allen Dingen, wenn man so hoch technisierte Tools wie Eclipse verwendet, bei denen das auf Mausklick geht. Dadurch kann man doch etwas unvorhersehbares erreichen.
-
tntnet schrieb:
Ok - in Java kann ich ihn gar nicht ignorieren.
Kommt auf die Exception an
Daher wird häufig ein leerer catch-Block eingefügt.
Kann man bei jeder Sprache machen
Dadurch kann man doch etwas unvorhersehbares erreichen.
Nicht wirklich.
-
volldagegen schrieb:
...außerdem ist es dumm auf ne c++ board zu fragen, ob c++ noch aktuell ist....
Kommt drauf an, ws man mit seinem Thread bezwecken will.
Von mir aus soll der gute Mann ruhig anfangen, Spiele mit Java, ASM, C, C++, Smalltalk, Cobol, ... zu programmieren - vielleicht wird er irgendwann feststellen, dass die Kategorie "aktuell" eher die unwichtigste dafür ist....@C++-Brutzel:
C++Brutzel schrieb:
Ich wollte mich jetzt mal so richtig tief in c++ stürzen, ...
Dann hau rein !!
C++Brutzel schrieb:
1. Ist C++ eigentlich immer noch aktuell?
Ist irrelevant.
C++Brutzel schrieb:
Kann ich mit C++ Spiele meiner wahl programmieren?
Probier's aus.
C++Brutzel schrieb:
3.Wird mir C++ eigentlich auch immer wieder begegnen?
Kommt ganz drauf an, wo Du Dich rumtreibst.
Gruß,
Simon2.
-
Ist ja auch gut, dass [] keine Exception bei einer Bereichsüberschreitung wirft, denn das ist eindeutig ein Programmierfehler und hat mit Exceptions so erst mal relativ wenig am Hut. Ansonsten gibts ja auch die .at() Methode, welche dann eben doch diese Exception wirft. Wenn einem so viel dran liegt kann man die ja benutzen. Läuft in Java eigentlich auch nicht viel anders. Bei einer Bereichsüberschreitung fliegt zwar eine Exception, aber das ist ne Runtime-Exception und die muss man nicht fangen, und das wird normalerweise auch niemand tun...
-
Simon2 schrieb:
volldagegen schrieb:
...außerdem ist es dumm auf ne c++ board zu fragen, ob c++ noch aktuell ist....
Kommt drauf an, ws man mit seinem Thread bezwecken will.
Von mir aus soll der gute Mann ruhig anfangen, Spiele mit Java, ASM, C, C++, Smalltalk, Cobol, ... zu programmieren - vielleicht wird er irgendwann feststellen, dass die Kategorie "aktuell" eher die unwichtigste dafür ist....Gruß,
Simon2.
So falsch ist die Frage doch gar nicht. Wenn man sich in ein System einarbeitet, will man doch wissen, ob sich das lohnt und ob das Wissen, was man sich aneignet morgen noch zu gebrauchen ist. Und da denke ich, daß C++ schon seit 15 Jahren da ist und daher wahrscheinlich nicht morgen einfach verschwinden wird.
-
Bringen wirs doch mal auf den Punkt: Allein die tatsache, dass es in Kuerze (hoffentlich) einen Standard C++0x geben soll, zeigt, dass die C++ommunity nicht gerade klein, das Interesse an der Sprache gross und die Sprache selbst nicht hoffnungslos veraltet ist. Also kann man als Antwort auf den Threadtitel durchaus sagen: C++ ist noch aktuell.
Die Frage, ob man mit C++ Spiele programmieren kann, seien sie konsolen- oder grafikbasiert, wurde ja nun auch schon mehrmals mit ja beantwortet.
Ob vector::operator[] nun exceptions wirft oder nicht, und ob C++ auf ATmegas Sinn macht oder nicht, duerfte fuer den Threadstarter ja nun weniger von Belang sein, er sollte sich durch diese OT-Diskussionen also nicht verunsichern lassen

Ersteres kann man uebrigens einfach nachlesen, letzteres duerfte mehr oder weniger Geschmackssache derjenigen sein, die fuer solche Dinger porgrammieren. (warum Leute ihren Senf dazugeben muessen die damit weniger am Hut haben sei mal dahingestellt :P)