Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Das Gurke

Community-Fossil

  • »Das Gurke« ist der Autor dieses Themas

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

2

26.07.2008, 17:10

Ich hätte auch Strings benutzt, da ich eh nicht so gerne was mit Zeigern mache, und Strings oft (meiner Meinung nach auch hier) praktischer sind.
Stellt sich noch die Frage, warum er es unbedingt nach seiner Wurstelmethode haben wollte, weil in der Aufgabe stand ja, dass man char* benutzen sollte.

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

3

26.07.2008, 17:10

Also gegen Ende hab ich nicht mehr alles gelesen, aber das sind doch wirklich alles Anfänger Fehler. Wenn die Leute mit 3 Jahren Berufserfahrung die noch machen, sind sie einfach die falschen Leute dafür. Bei ein paar Sachen kann man bestimmt auch noch argumentieren, ich würde zB bei einem Projekt, bei dem ich der einzige Programmierer bin, die Parameter nicht auf 0 testen, weil ich es beim Benutzen selber früh genug merken würde, kommt insofern also auf die Vorgaben an.

Aber es gilt natürlich: Wenn C++ der Hammer ist, sieht plötzlich alles wie ein Daumen aus :)

Das Gurke

Community-Fossil

  • »Das Gurke« ist der Autor dieses Themas

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

4

26.07.2008, 17:11

Zitat von »"defaultplayer^^

Ich hätte auch Strings benutzt, da ich eh nicht so gerne was mit Zeigern mache, und Strings oft (meiner Meinung nach auch hier) praktischer sind.
Stellt sich noch die Frage, warum er es unbedingt nach seiner Wurstelmethode haben wollte, weil in der Aufgabe stand ja, dass man char* benutzen sollte.
Das kann man ja intern trotzdem mit std::string handhaben ;)

Die Signaturen waren ja nur diese:

C-/C++-Quelltext

1
2
char* getName();
void  setName(char *name);

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

5

26.07.2008, 17:14

Solche Berichte gibt es zu jeder Sprache zuhauf im Internet.
Die Leute sehen den Grund für ihre Fehler oder schlechten Programme in den Sprachen.
Das Beispiel was er erwähnt würde kein "erfahrener C++ Entwickler" jemals auch nur ansatzweise in Betracht ziehen, der String muss kopiert werden oder man benutzt eben std::string, das machts noch einfacher.

Diese Art von Artikel gibt es wie gesagt zuhauf.. und meiner Meinung nach sind die meisten davon auf das falsche Denken des Programmierers zurückzuführen. Natürlich hat jedes Sprachkonzept seine tücken, aber genau das macht einen in der Sprache erfahrenen Entwickler aus, er kennt diese Tücken und weiß mit ihnen umzugehen.
(Besonders über Java gibt es tonnenweise davon, weil jedermann meint Java müsste genauso funktionieren wie C++, sprich stringA == stringB muss funktionieren, etc).

Ich würde meine Zeit ehrlich gesagt nicht damit verschwenden angebliche ungereimtheiten in der Sprache aufzudecken. Mitm Hammer kann man sich auch auf den Finger hauen, trotzdem benutze ich ihn lieber einfach, statt mir über das Konzept des Hammers gedanken zu machen.

Die Gesamtaussage "Why I Dislike C++ For Large Projects" hat jedoch meiner Meinung nach etwas nicht ganz unwahres. Vor allem hier in der Welt der Spieleprogrammierer hält mal C++ für die Offenbahrung schlechthin, wer braucht schon andere Sprachen.
C++ hat wirklich einige Tücken und ich behaupte mal, dass man in manch anderer Sprache oft wesentlich schneller, einfacher, zum Ziel kommt und dabei weniger Fehleranfällig programmiert.
Klar ein C++ Guru macht keine Fehler :roll:, aber in der Zeit in der man C++ Guru wird kann man z.b. in Python 10 Spiele programmieren. (Achtung! Überzogenes Beispiel).

[edit]
Das heißt natürlich nicht, dass C++ ungeeignet für Spiele ist. Im Gegenteil. Durch die Hardwarenähe von C++ kann man dort wesentlich Ressourcen- und Geschwindigkeitseffizienter Arbeiten, was vor allem für 3D Spiele unerlässlich ist.

Jeder sollte da denke ich mal über den Tellerrand schauen und nicht eine Sprache verfluchen nur weil sie sich anders verhält, als man es, aufgrund seiner Erfahrung mit anderen Sprachen, erwarten würde. Es muss auch nicht immer C++ sein.

Gruß,
Dennis, der jetzt mal spasseshalber Haskell lernen geht

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

6

26.07.2008, 18:08

Sorry, aber der, der das geschrieben hat, hat in diesem Falle keine Ahnung. Ich habe nicht das ganze gelesen, weil ich bereits nach ein paar Sätzen den Kopf schütteln musste. Wenn jemand nicht fähigt ist ein paar Bücher über die Grundlagen zu lesen, den kann man wirklich nicht ernst nehmen.
C++ ist in der Tat keine so einfache Sprache, aber schlussendilch haben alle Sprachen die gleichen Probleme und wenn man die nicht haben will, muss man eben zu fertigen libs greifen, die es auch zur genüge gibt.
Nur weil bei C++ das hald nicht schon von der Sprache implementiert ist heisst das nicht, dass es schwieriger ist, oder so.

Im Gegenzug dazu, dass man hald ein wenig mehr Wissen muss über C++, kann man darin eigentlich alles realisieren, was man will und das sehr Harwarenah. Aber ich denke, dass uns das nur wieder zur berühmten Java vs. C++ Diskussion führt. :)

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

7

26.07.2008, 20:08

Zitat von »"drakon"«

Im Gegenzug dazu, dass man hald ein wenig mehr Wissen muss über C++, kann man darin eigentlich alles realisieren, was man will und das sehr Harwarenah. Aber ich denke, dass uns das nur wieder zur berühmten Java vs. C++ Diskussion führt. :)

Natürlich kann man fast alles in C++ realisieren. Die Frage ist eher mit welchen Aufwand.

Sicaine

unregistriert

8

26.07.2008, 20:38

Hm naja er hat eigentlich voellig recht. Er zeigt ein Problem in C++ auf was noch wunderbar past.

Er sagt, dass C++ viel zu fehleranfaellg ist und zuviel vom Entwickler fordert und da min. 3 Jahre intensive Erfahrung dazu gehoeren. Bzw. dass jeder im Team diese Erfahrung haben muss.

Wenn ich mir Sprachen wie Java oder C# ansehe, seh ich neben allgemeinen Vorteilen im Umfang der _Sprachen_(stndardlibs die Bilder manipulieren koennen etc.) wie auch diese Sicherheitsvorteile.

Fuer alles was nicht gerade Rechenintensiv ist(und das ist garnichmal soviel) oder wo eben highperformance wichtig ist, verwende ich auch lieber alles andere als C++.

9

26.07.2008, 21:07

Zitat von »"Sicaine"«

Wenn ich mir Sprachen wie Java oder C# ansehe, seh ich neben allgemeinen Vorteilen im Umfang der _Sprachen_(stndardlibs die Bilder manipulieren koennen etc.) wie auch diese Sicherheitsvorteile.

Wenn du damit leben kannst, dass die beiden Sprachen, die du genannt hast, einige Features von C++ nicht so anbieten, ist das deine Sache. Die Programmierung mit Zeigern oder Templates ist eben nicht für alle etwas, aber sie bietet einem auch gewisse Möglichkeiten. Und wenn man sich für C++ entscheidet, sollte man die Sprache eben auch lernen, dann muss man sich auch nicht über Anfängerfehler aufregen.

Und was den Umfang der Sprachen betrifft: Was bringt es, wenn die Standardlib durch irgendwelche Dinge wie Bildmanipulationsroutinen aufgebläht wird? So etwas ist in meinen Augen keine "Standardbibliothek" mehr, für das gibts externe Libs. Und zum Thema Sicherheit kann man sagen, dass die STL und Dinge wie std::string genügend Möglichkeiten geben, relativ einfach und bequem zu programmieren. Aber wenn man sich lieber mit char* rumschlägt, muss man sich eben nicht über Fehler wundern...

Sicaine

unregistriert

10

26.07.2008, 21:27

@nexus du scheinst wohl nicht verstanden zu haben auf was der Author hinauswill. Sicher nicht auf char* sondern allgemein auf das Problem mit pointern.

Templates hat Java quasi mit generics. Zeiger naja in Java sind eh alle objects autopointer.

Und Anfaengerfehler sind fuer mich keine Dinge die man zwar versteht aber an die man staendig denken und aufpassen muss wie auch zu schreiben sind. Die ganze Pointer Null Ueberpruefung muss normalerweise in guten Code vorhanden sein.

Zumal mir Java und C# nur in den wenigsten Faellen Features nicht anbieten die C++ hat.

Werbeanzeige