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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

21

03.04.2011, 21:30

Also we immer sagt, dass C nicht mer verwendet wird, der liegt vollkommen daneben. Der ein oder andere kennt wahrscheinlich John Carmack und ID. Selbst die neue id tech 5 Engine ist in C geschrieben.

Bist du dir da sicher? Afaik ist Carmack schon bei Doom3 auf C++ umgestiegen.

Wenn du mich fragst gibts nur einen einzigen Grund heutzutage noch C zu verwenden und das ist dass es auf einer Zielplattform keinen C++ Compiler gibt. C++ hat gegenüber C keinen Nachteil. Selbst wenn du rein Prozedural (aka C-Style) programmierst, allein templates und overloading sind es schon wert kein reines C zu benutzen wenn man die Wahl hat. Aber wie gesagt, einem Anfänger würd ich heutzutage sowieso weder zu C noch zu C++ sondern zu C# raten.

GR-PA

Treue Seele

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

22

03.04.2011, 21:37

Also we immer sagt, dass C nicht mer verwendet wird, der liegt vollkommen daneben. Der ein oder andere kennt wahrscheinlich John Carmack und ID. Selbst die neue id tech 5 Engine ist in C geschrieben.

Zitat von »John Carmack«

Especially after our move to C++, there is very little code remaining from the Q3 codebase at this point.

schon id tech 4 wurde auf C++ umgestellt... Das wird Gründe haben...
Quellen:
http://archive.gamespy.com/e32002/pc/carmack/
http://en.wikipedia.org/wiki/Id_Tech_4

Zitat von »SupremeDeveloper«

Viele Nintendo-Konsolen( Wii,NDS,GBA) sind C-Only

Quelle? AFAIK kann man für Wii und NDS auch in C++ programmieren.

Ich würde Dir zu C raten. Aber es kommt auf die Anforderungen an. Viele verwenden C++ und durch ein falsches und schlechtes OOP Design, geht halt in vielen Fällen die Performance zu Grunde. Benutzt man C, dann denkt man eher in Datenstrukturen als in Objekten.

Es gibt in C mindestens genauso viele Fälle, eher noch mehr, wie in C++ bei denen die Dummheit des Programmierers die Performance verschlechtert...
Außerdem ist C eine Untermenge von C++ und es gibt zwischen C und C++ generell keine messbaren Performance-Unterschiede.
Signaturen werden überbewertet

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

23

03.04.2011, 21:40

Sogar ganz im Gegenteil, C++ liefert einem viele Mittel um hochperformanten und eleganten Code zu schreiben die in C gar nicht vorhanden sind (allem voran eben z.B. templates). Trotzdem, für einen Anfänger sag ich: Nimm C#...

schon id tech 4 wurde auf C++ umgestellt... Das wird Gründe haben...

Klar, Carmack ist ja nicht dumm, vor kurzem hab ich gehört dass er mittlerweile auch erkannt haben soll dass Direct3D besser ist als OpenGL...aber gut das gehört jetzt nicht ganz hier her, Carmack ist ja auch nicht das Maß aller Dinge ;)

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (03.04.2011, 21:52)


Beiträge: 721

Wohnort: /dev/null

Beruf: Software-Entwickler/Nerd

  • Private Nachricht senden

24

03.04.2011, 22:01

Naja, Templates...Meiner Meinung nach in C++ total verkorkst... Ich bin aber auch kein C++-Freund. Mit funktionalen Sprachen arbeitet man sowieso effektiver, jedenfalls kann ich das bei mir beobachten. Viel kompaktere High-Level Sprachen als Haskell oder Eiffel findet man wohl kaum. C++ hat viele Macken und meiner Meinung nach ist auch das Design inkonsequent und inkonsistent. Nicht umsonst verabschäuen viele Informatik-Größen C++: http://gigamonkeys.wordpress.com/2009/10…rs-c-plus-plus/

Direct3D soll besser sein als OpenGl? Nur zur Erinnerung: Rein API technisch ist OpenGl um einiges einfacher, außerdem stets aktuell gehalten. Platformunabhängig. Was will man mehr? ( Antwort: Grafikkarten-Hersteller, die lauffähige Treiber entwickeln *narf* )

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

25

03.04.2011, 22:04

Naja, Templates...Meiner Meinung nach in C++ total verkorkst...

Warum?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Beiträge: 721

Wohnort: /dev/null

Beruf: Software-Entwickler/Nerd

  • Private Nachricht senden

26

03.04.2011, 22:09

Unschöne Syntax, meiner Meinung nach zu generell. Vielleicht bin ich nicht mehr auf dem neusten Stand, aber ich möchte nicht, dass ein Programmierer meine Templates mit Datentypen verwendet, die dafür nicht gedacht sind. Wieso kann ich keine bestimmten Abhängigkeiten herstellen? Bei der Behandlung der Typen ist mir C++ zu generell. Ich mag C++ einfach nicht, ich sehe nicht ein, warum ich für die gleiche Funktionalität, die ich mit einer anderen Sprache schneller erreichen kann, mehr als das doppelte an Code schreiben muss.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

27

03.04.2011, 22:17

[...] aber ich möchte nicht, dass ein Programmierer meine Templates mit Datentypen verwendet, die dafür nicht gedacht sind. Wieso kann ich keine bestimmten Abhängigkeiten herstellen?


Das kann aber auch nach hinten losgehen, wenn man in den möglichkeiten der abhängigkeiten zu sehr eingeschränkt ist, wie man bei C# generics sieht ;)

Beiträge: 721

Wohnort: /dev/null

Beruf: Software-Entwickler/Nerd

  • Private Nachricht senden

28

03.04.2011, 22:21

Wenn man von dem klassischen imperativen Typ-Systemen ausgeht schon. Aber ich möchte beispielsweise, dass eine Instanz des Templates in C++ einen == Operator implementiert haben muss. Oder dass man T auch in einen String konvertieren kann. In Haskell gibt es dafür Typ-Klassen, welche dieses Problem sehr elegant nutzen.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

29

03.04.2011, 22:29

Aber ich möchte beispielsweise, dass eine Instanz des Templates in C++ einen == Operator implementiert haben muss.

Dann gib deinem Template einen == Operator!?

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

30

03.04.2011, 22:33

In D macht man dafür:

Quellcode

1
void foo(T)(T param) if (is(T == short)) {

lässt sich natürlich beliebig erweitern, aber ich denke, dass geht in C++ auch ähnlich, oder? Bin im C++ Template System nicht so bewandert.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Werbeanzeige