You are not logged in.

  • Login

1

Wednesday, March 4th 2009, 1:18pm

C++ VS D

Hallo ist D identisch mit C++ nur einfacher zu erlernen?

ist D Für sachen geeignet für die C++ nicht geeignet ist? Oder umgekehrt.

Wird C noch benötigt da es schon C++ und die wiederum D als nachfolger hat?


Danke schonmal im vorraus.

2

Wednesday, March 4th 2009, 2:24pm

also erstmal würd ich C++ nicht als "Nachfolger" von C bezeichnen. C++ ist zwar aus C hervorgegangen aber es gibt trotzdem noch einige Gebiete auf denen oftmals C und nicht C++ eingesetzt wird. Dazu zählen embedded Systeme, Compiler usw. Nur was End-User-Programme angeht trifft man es quasi nicht mehr an.

3

Wednesday, March 4th 2009, 2:49pm

Mit c++ kann man keinen compiller schreiben? Das versteh ich nicht.

Da fragt man sich doch wieder was das soll.

Wäre Super wenn ich noch einen vergleich, unterschiede, negatives, positives zu C++ und D im vergleich bekommen würde.

4

Wednesday, March 4th 2009, 5:26pm

Naja, Nachfolger hin oder her...
C++ erweitert C durch OOP, Generics und weiteren Konzepten.

Wo aber die Sprache C immernoch unübertroffen gute Arbeit leistet ist bei Betriebssystemkernen. Diese werden zu 100% neben Assembler, mit C entwickelt.

Was Compiler angeht, wie will man einen C++ Compiler basteln, wenn es noch gar keinen für C++ gibt? Dennoch ist es quasi egal ob man nun mit Assembler, C, C++ oder gar C# einen Compiler schreibt. Jedoch muss man immer einen Kompromiss in sachen Effizienz und - nennen wir es mal - Programmierkomfort eingehen. Immerhin ist das Programmieren mit Assembler ein Krampf - Dagegen ist C# schon wieder deutlich ineffizienter als C.

C hat aber tatsächlich noch stark Einfluss im Embeddet Bereich. Es ist aber ebenso möglich andere Sprachen wie C++ auf Embedded Systeme einzuführen.



Was D angeht, so scheint mir das irgendwie eine Totgeburt zu sein. Mit C++ stehen dem Programmierer alle Möglichkeiten zur Verfügung und es ist stark verbreitet. Zumal, was D wirklich so außergewöhnlich macht, ist mir schleierhaft.


/€1:
Sou, ich hab mich da mal eingelesen.
D ist, genauso wie C++, kompatibel zu C. D ist aber nicht kompatibel zu C++. Im großen und ganzen bietet D die selben Konzepte wie C++. Hinzu kommen dann noch eine Garbage Collection und andere Feature, die aus der C# und Java Welt kommen sollen.

Wer noch mehr wissen will: Heise online - Eleganter programmieren: D ist da

This post has been edited 1 times, last edit by "Blue" (Mar 4th 2009, 5:31pm)


5

Wednesday, March 4th 2009, 6:16pm

Ich ziehe daraus einfach mal folgendes: D hat die gleichen funktionen und möglichkeiten wie C++ nur D ist verwirrender da man mehrere Sprachkentnisse braucht. C# ist eher für NET.

C++ soll aber auch geeignet sein für Hardwarenahes und Spiele.

Wie steht D zur Spielprogrammierung?

C und C++ sind sich also gewisserweise ähnlich.

Stimmt das Gerücht mit C++ kann man alle funktionen die Assebler kann?

Ist C++ gut zu gebrauchen für Internet-Kommunikationen? C# wird da natürlich bevorzugt nehme ich an.

6

Wednesday, March 4th 2009, 9:34pm

Ich ziehe daraus einfach mal folgendes: D hat die gleichen funktionen und möglichkeiten wie C++ nur D ist verwirrender da man mehrere Sprachkentnisse braucht. C# ist eher für NET.

C++ soll aber auch geeignet sein für Hardwarenahes und Spiele.

Wie steht D zur Spielprogrammierung?

C und C++ sind sich also gewisserweise ähnlich.

Stimmt das Gerücht mit C++ kann man alle funktionen die Assebler kann?

Ist C++ gut zu gebrauchen für Internet-Kommunikationen? C# wird da natürlich bevorzugt nehme ich an.


Nicht wirklich verwirrender. Insgesamt sind die Sprachen relativ gleich. D bietet nur weitere Feature, die das Programmieren bequemer machen sollen (Es kommen halt Konzepte aus C++ mit denen aus Java oder C# zusammen).

C++ und auch D laufen nativ auf dem System, und nicht erst in einer virtuellen Umgebung - Wie Java oder C#. Das macht C++/D sehr schnell. D und auch C++ sind beide für die Spieleprogrammierung geeignet. Den meisten Support wirst im Internet und auch in Büchern aber nur bei C++ finden, das schließt D schon fast aus.

In C (Und somit auch in C++) kannst du Assembler schreiben.

Internet Kommunikation kannst du mit jeder Sprache realisieren. Hier werden oft Java und C# genutzt.

7

Thursday, March 5th 2009, 1:08pm

D wird vernachlässigt?

Da wäre D ja die ultimative Programmiersprache.

8

Thursday, March 5th 2009, 1:40pm

Es gibt noch weitere ähnliche Programmiersprachen ;)
z.B.:http://de.wikipedia.org/wiki/Objective-C

Es gab auch mal Tools in den 90ern, die einen C-Compiler um objektorientierte Funktionen
erweiterten - aber meines Wissens sind die Tools heute Geschichte ;)

MfG bcc-fan

9

Thursday, March 5th 2009, 2:45pm

Ich weiss nicht inwiefern du meinst, dass Objective-C heutzutage vernachlässigt wird, aber die Sprache ist durch das iPhone wieder voll im Rennen ;)
OSX ist für die iPhone SDK, sowie ein virtuelles iPhone zum testen, Vorraussetzung!


Zum Thema Spieleprogrammierung:
Die DirectX SDK ist komplett in C++ geschrieben, da wird man mit anderen Sprachen keinen Spass haben.
Wie es mit openGL aussieht weiss ich nicht.

10

Thursday, March 5th 2009, 6:41pm

Ich weiss nicht inwiefern du meinst, dass Objective-C heutzutage vernachlässigt wird, aber die Sprache ist durch das iPhone wieder voll im Rennen
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Wie steht C++ zu iPhone?

__________________________________________________________________________________
bei Betriebssystemkernen. Diese werden zu 100% neben Assembler, mit C entwickelt.
__________________________________________________________________________________

Ist es mit C++ nicht auch möglich bei Betriebssystemkernen mitzuhelfen?

Hier können die vergleiche von C und C++ komen schätze ich mal.

Ein neues gerät kann eine Programmiersprache wieder in schwung bringen interessant. :D

11

Friday, March 6th 2009, 8:16am

Ist es mit C++ nicht auch möglich bei Betriebssystemkernen mitzuhelfen?


Natürlich ist es das.

Aber du musst anders an die Sache ran gehen.

Nach den Konzeptionierung eines neuen Projektes erfolgt ja meistens irgendwann die Umsetzung. Genau an diesem Punkt sollte man wissen welche Sprache man nutzt ;)

Da spielen mehrere Faktoren eine Rolle. Sei es Geschwindigkeit, Platform unabhänhihkeit, erweiterbarkeit ... usw.

Für ein OS ist es nunmal sehr wichtig, dass es schnell ist. Zudem muss man gucken, auf welchen Architekturen es laufen muss (AMD, Intel, Sparc, PowerPc, AIX ... etc.)
Das sind nur 2 Faktoren, aber es ist nunmal Fakt, dass man am Ende sehr oft bei C landet, was nicht heisst, dass du es nutzen musst.

Grade in der Handybranche tauchen immer wieder neue Programmiersprachen auf.
Für Programme und Spiele ist Java sehr weit vorne, aber man sieht an dem iPhone und den anderen Geräten, dass immer mehr Perfromance in die kleinen Geräte gesteckt wird, so dass man als Programmierer viel mehr Möglichkeiten hat bzw. bekommen wird.

Ich glaube Samsung war das, die in ihr neues Handy einen 1Ghz Prozessor eingebaut haben.

Je mehr Ressourcen du hast, je mehr Möglichkeiten hast du. Und dann wird es auch zunehmend Alternativen zu Java geben.


Wenn du insgesamt wissen möchtest, wie zukunftssicher C++ ist, dann bist du definitv auf dem richtigen Weg.
Es ist wie bei den richtigen Sprachen. Wenn du spanisch kannst, dann ist es nicht mehr schwierig italienisch, französich oder auch englisch zu lernen. Mit Russisch oder chinesisch, würdest du dann aber Probleme bekommen. ;)

12

Friday, March 6th 2009, 12:21pm

C# ist für mich Russisch das ist irgendwie auf einer anderen Logik aufgebaut.

Java finde ich auch noch interessant.

C und C++ sind meine favoriten.

13

Sunday, March 8th 2009, 4:21pm

Naja, Java und C# sind ziemlich ähnlich finde ich :D

ist ja auch als antwort auf java von McRosoft gekommen :D

14

Monday, March 30th 2009, 2:49pm

hi,

da D hier etwas vernachlässigt wird gebe ich mal dazu ein paar infos die mir gerade so einfallen:

  • nette und helfende Gemeinschaft
  • extrem schneller Compiler (DMD)
  • keine Header (*.h) Dateien (gibt es zwar, aber braucht man so gut wie nie)
  • Compiler für Windows/Linux/MacOSX/*BSD und x32_86, x64_x86, PPC; ARM* / MIPS* z.Z. nur begrenzt
  • wer Java/C++/C#/C schon kann findnet sich schnell in D zurecht, ähnlich Syntax
  • in D geschrieben Bibliotheken gibt es einige (besonders für Spiele), aber natürlich nicht so viele wie für C/C++
  • Anbindungen zu GTK, SWT, QT etc.
  • das Linken von C code ist mit minimalem Aufwand möglich (für C++ nur recht begrenzt, anonsten über C Brücke)
  • assoziative arrays und arrays sind eingebaute Datentypen
  • D ist einfach zu lernen als C++, da viele Altlasten und probleme entfernt wurden
  • mächtige und einfache template syntax (viel einfacher als C++)
  • es gibt anonyme funktionen
  • sehr schneller binärcode
  • garbage collector (auch austauschbar oder abschaltbar)
  • es ist z.B. nicht nötig das Semikolon hinter Klassedefinitionen zu setzen
  • strings können utf8 utf16 utf32 codiert sein (keine problem bei der i18n)
  • kein Präprozessor/ Makroprozessor, in D generell nicht nötig
  • volle UTF8 Unterstützung, d.h. z.B Variablen aus dem griechischen Alphabet oder chinesisch ;-)
  • Assembler Code kann man einbetten wie bei C/C++
  • Alle Variablen werden automatisch vorinitialisiert (hilft Fehler zu vermeiden), man kann aber auch explizit void zuweisen.


Alles in allem is D eine einfache aber mächtige und schnelle (System-) Programmiersprache.

This post has been edited 2 times, last edit by "foobar" (Apr 10th 2009, 1:16pm)


15

Monday, March 30th 2009, 2:55pm

oh, das hätte ich fast vergessen:
  • eingebaute Datentypenhaben eine feste Größe, ansonsten gibt es size_t (hat Größe eines Zeigers)
  • Es gibt kein foo->bar; für den Zugriff gibt es nur foo.bar, egal ob foo ein Pointer ist oder nicht.


ok, den Rest gibt es u.a. hier.

Bzgl. Spieleprogrammierung. Hier ein paar Spiele die in D geschrieben wurden:

Deadlock
Open Morrowind
Titanion

Meiner Meinung nacht ist D ist einfacher zu lernen als C++ (weniger Fallstricke, bessere Fehlermeldungen).
Ich selber habe vorher C++ programmiert.
Für D gibt es bei weitem nicht so viele Bibliotheken wie für C/C++,
aber immerhin ist das Dazulinken von C Code kein Problem.
Es gibt einige Debugger für D, z.B. gdb oder Zerobugs.
IDEs sind etwas sparsam gestreut, aber schaut selbst.

Ansonsten gibt es eine ganze Reihe von D Projekten aufdsource.org.

This post has been edited 3 times, last edit by "foobar" (Apr 1st 2009, 3:07am)


16

Tuesday, March 31st 2009, 8:21am

Schöne Auflistung :thumbup:


Da es scheint , dass du selber mit/in D Programmierst, hast du auch aus deiner Sicht ein paar Kritikpunkte, ausser die nicht so große Verbreitung und deren Folgen in Bezug auf libs und IDEs, die du Preisgeben würdest ? :)

17

Tuesday, March 31st 2009, 1:52pm

Kritikpunkte gibt es natürlich auch:
  • z.Z. zwei inkompatible Standard Bibliotheken (Phobosund Tango); Phobos ist die offiziele. Phobos vs. Tango
  • Die Compiler haben deutlich mehr Bugs als C/C++ Compiler (aber nichts um das man nicht herumkommt oder ständig drüber stolpert)
  • D ist noch nicht sehr verbreitet, daher gibt es kaum Bücher (aber es gibt sie 1 2, ansonsten gibt es viel Onlinematerial)
  • Der Garbage Collector und ein paar Features benötigen Typinformationen zur Laufzeit die die Binaries größer machen als bei C/C++


D geht in einigen Konzepten aus meiner Sicht nicht so weit wie ich es gerne hätte,
aber es ist Welten besser als C++.
Aber es ist zu bedenken das D noch recht jung ist (D1 gibt es erst ab 2007).
Es gibt sogar alternative Compiler als die Referenzimplementation von digitalmars.com.
Zudem ist D2 ist in der Entwicklung.
Es geht vorwärts. :-)

18

Thursday, April 2nd 2009, 7:11am

guten morgen,

es ist wohl übertrieben zu sagen java == C#, aber ich finde wenn man das eine einigermaßen kann ist das andere flott gelernt.
wie schon einigemale gesagt wird C jetzt fast ausschließlich im embadded bereich verwendet. außerdem kann man nicht sagen das das eine "nur" in dieser und das andere nur in jener sprache programmiert wird. es ist oft ein zusammenspiel bzw. es gibt immer ausnahmen.
C bietet gegenüber C++ den entscheidenden geschwindigkeitsvorteil. ich bring da immer gerne das beispiel mit der ansteuerung des airbags im auto... da können ne paar millisekunden verdammt lange sein ^^
auf der anderen seite hast du in C++ OOP was dir in C fehlt.

mit D habe leider absolut keine erfahrungen und kann dir da auch nicht weiterhelfen.

mich würde noch interessieren was genau du vor hast... das ganze liest sich für mich so als ob du etwas planst und nicht 100% weißt mit was du an die sache ran gehen musst.


thx, truespin

19

Tuesday, April 14th 2009, 4:31pm

Wo aber die Sprache C immernoch unübertroffen gute Arbeit leistet ist bei Betriebssystemkernen. Diese werden zu 100% neben Assembler, mit C entwickelt.

____________________________________________________________________________________________________________________________________

Ist D denn jetzt auch schon für die Arbeit an Betriebssystemkernel geeignet?

Wenn D wirklich so gut ist warum ist sie dann so unbekannt?

20

Monday, April 20th 2009, 4:23am

Quoted

Ist D denn jetzt auch schon für die Arbeit an Betriebssystemkernel geeignet?


Ja,
xomb
Kernel Experimentierprojekte

Quoted

Wenn D wirklich so gut ist warum ist sie dann so unbekannt?

* ist noch jung
* toolchain muss eventl. noch etwas reifen
* Konkurrenz?

Social bookmarks