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

dv

Frischling

Beiträge: 30

Wohnort: Südamerikanischer Dschungel

  • Private Nachricht senden

51

15.04.2009, 04:32

Java finde ich persönlich extrem einschränkend. Es zwingt einem, für alles OOP zu verwenden, was suboptimal ist, wenn eine Problemstellung zB mit einem funktionaleren Ansatz besser wäre.

C++ unterstützt darüberhinaus generisches Programmieren, was für mich ein Knockout-Kriterium ist. G.P. steigert Produktivität und Wiederverwendbarkeit enorm. Da Javas Generics nicht 1% der Fähigkeiten von C++-Templates unterstützen, ist es nicht möglich, in Java wirklich generisch zu coden. Z.B. sind große Teile von Boost generisch geschrieben. Die STL ist generisch, und um Welten mächtiger als alle Java Collections. (Mit C++0x Ranges, Boost.RangeEx wirds sogar noch mächtiger.)

Das zweite Knockout-Kriterium ist Lambda. In C++98 kann ich es mit boost.lambda / boost.phoenix konstruieren, und teilweise unterstützen. Bereits da zeigt sich, wie nützlich das Konzept ist; ich kann gar nicht mehr zählen, wie oft ich bind und phoenix eingesetzt habe. In C++0x kommt ein Lambda als Sprachfeature rein. C# unterstützt es bereits, aus gutem Grund. Java? Hat nur anonyme Klassen, die nicht dasselbe sind, weil sie (a) unnötigen Code verursachen (aus einer anonymen Klasse ableiten, Methode definieren etc.) (b) ein Interface voraussetzen, was einfach unsinnig und zu einschränkend ist.
~dv();

52

15.04.2009, 07:56

Ja, boost::bind ist cool.

C++ ist schon interessant, weil es sehr viel kann. Manche Sachen kann man allerdings nicht direkt erreichen, sondern muss irgendeinen Trick anwenden. Und da bin ich mir nicht ganz sicher, ob das gut oder schlecht ist.
Klar mag C++ am Anfang etwas komplexer sein, aber wenn man Jahrelang an einem Projekt sitzt, will man doch auch eine coole Programmiersprache benutzen und nicht nur eine die man schnell gelernt hat.
Lieber dumm fragen, als dumm bleiben!

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

53

15.04.2009, 13:22

Also ich musste jetzt im Studium erst Scheme und dann Java lernen und habe festgestellt, dass eine gute Grundlage in C++ einem einfach alles weitere lernen extrem vereinfacht, da es eigentlich kein wichtiges Thema gibt, was man nicht auch in C++ schonmal hatte^^


Also C++ für mich die absolute Nr. 1, da man viele Freiheiten hat und es einen auch super für alle anderen Sprachen vorbereitet!

Beneroth

Alter Hase

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

54

15.04.2009, 14:02

Zitat von »"grek40"«

Also ich musste jetzt im Studium erst Scheme und dann Java lernen und habe festgestellt, dass eine gute Grundlage in C++ einem einfach alles weitere lernen extrem vereinfacht, da es eigentlich kein wichtiges Thema gibt, was man nicht auch in C++ schonmal hatte^^


Also C++ für mich die absolute Nr. 1, da man viele Freiheiten hat und es einen auch super für alle anderen Sprachen vorbereitet!


Genau diese Meinung habe ich auch!
Gerade darum finde ich C++ als erste Programmiersprache ideal!

55

15.04.2009, 14:09

Hallo

Ich habe c# lieben. Angefangen habe ich mit Pascal, aber das war nicht so toll. Dann c++ und jetzt c#. Wobei mir c# eigentlich am besten gefällt. Vor allem in Kombination mit den .net Framework.

chrische

56

15.04.2009, 19:01

Ich habe mit Java angefangen, bin dann aber voll auf C++ umgestiegen und von dieser Sprache auch überzeugt.

Aber dass ich in Java schon vieles konnte hat mir auch beim C++ lernen extrem geholfen, da die Syntax und die Funktionsweise ja schon sehr ähnlich sind.

p0llux

Treue Seele

Beiträge: 101

Wohnort: Aachen

Beruf: HiWi (theo. Inf.)

  • Private Nachricht senden

57

16.04.2009, 05:31

Naja, ich kenne jetzt schon mehrere Sprachen, wie z.B. ASM, C, C++, C#, Java, Prolog, Haskell, etc. Angefangen habe ich damals mit Basic auf dem C64. Damals hat 's schon genervt, wenn einem die Zeilennummber ausgegangen sind und man will mit GOSUB rumspringen musste :D

Generell gefällt mir C++ wegen der Performance, andererseits sind Dinge wie die STL (jetzt bekomme ich sie voll drauf, aber Templates in C++ sucken nunmal gewaltig, was ihre Bedienung angeht) und die Notwendigkeit von Source/Header/Forwarddeklarationen, etc... (Die Möglichkeit wäre ja toll, aber die Notwendigkeit ist einfach nur ein steinzeitliches Laster, dass die Sprache mit sich rumschleppt) einfach grausig und unterstützen keinen guten Workflow.

Beneroth

Alter Hase

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

58

17.04.2009, 11:21

hm, was ist wenn man nicht bei allen Punkten diesselbe Meinung hat?

Ist man dann ein halberfahrener Coder? :lol:

59

17.04.2009, 13:32

Zitat von »"unsigned long"«


- Erfahrene Coder würden niemals sagen, dass das Header/Source-Prinzip veraltet ist sondern mehr Vorteile mit sich führt als Nachteile und vorallem kein steinzeitliches Laster sind.


nämlich welche Vorteile ?

dv

Frischling

Beiträge: 30

Wohnort: Südamerikanischer Dschungel

  • Private Nachricht senden

60

17.04.2009, 23:34

Zitat von »"unsigned long"«

- Erfahrene Coder würden niemals sagen, dass C++ gute Performance hat. Sondern sie zufriedenstellend ist.


Wie meinst du das? Genauer bitte.

Zitat

- Erfahrene Coder würden niemals sagen, dass die STL suckt (Bis auf die String-Verarbeitung). Sondern sie ein großer Kompromis ist.


Ich stimme teilweise zu. Die STL ist vor allem ein gutes Beispiel von generischer Programmierung, und eine Demonstration, wie mächtig dieses Paradigma ist. Es gibt z.B. in der Java Standardlibrary nichts, was an die STL in Punkto Effizienz, Orthogonalität, und Flexibilität gleichkommt. Und das, ohne intrusiv zu sein. Sie ist aber kein Kompromiss.

Zitat

- Erfahrene Coder würden niemals sagen, dass Templates sucken.


Templates sucken auch nicht, ihre Syntax aber schon. Die Template-Metasprache ist ja zufällig entstanden, und ist weder für den Programmierer noch für den Compiler leicht verständlich. Das - zusammen mit anderen C++-Syntax-Eigenheiten - sorgt dafür, dass ein C++-Parser sehr schwer zu schreiben ist. Nicht umsonst gibts kaum Refactoring-Tools für C++ ... :|

Zitat

- Erfahrene Coder würden niemals sagen, dass das Header/Source-Prinzip veraltet ist sondern mehr Vorteile mit sich führt als Nachteile und vorallem kein steinzeitliches Laster sind.


Dem widerspreche ich total. 99,9999999% aller C++-Header werden quasi wie Interfaces verwendet. Das Header/Source-Prinzip hat historische Wurzeln, und ist heutzutage nicht mehr vernünftig vertretbar. Packages haben sehr viele Vorteile, z.B. intelligentes Dependency-Tracking, private Sektionen (z.B. Ausblenden von Systemheadern - das Pimpl-Idiom existiert u.a. als eine Krücke, um das zu erreichen), vorkompilieren bzw. cachen von Parserschritten (v.a. bei Templates wichtig), ....

Header haben natürlich den Vorteil, dass man sich ums Compilieren u. Linken dessen Codes keine Gedanken machen muss. Ich mag ja auch Header-Only Libraries wie STL und Boost.Bind/MPL/Fusion/Graph/... , aber man kann nicht leugnen, dass Header an sich eine Krücke sind. Sinnvoller wäre es, das gesamte Konzept von Libraries, Headern, Linken usw. kräftig zu überdenken.


Dem Rest der Punkte stimme ich aber 100%ig zu.
~dv();

Werbeanzeige