Forum: PC-Programmierung Statt C bald D?


von Weinga-Unity (Gast)


Lesenswert?

Hallo an alle Programmierer.

Vielleicht gibts jetzt nach diesem Thread wieder eine Diskusion C++ vs 
Java vs C# usw.

Hab heute mal etwas nach der Programmiersprache D recherchiert und muss 
sagen, das hört sich ja nicht so schlecht an. Da diese noch eher jung 
ist sind die Bibliotheken noch am entstehen (aber FLTK4D gibts auch 
schon :) ) und somit ist der Einstieg noch nicht so ganz einfach.

Als positiv finde ich, dass ne fertige EXE raus kommt (kein Framework 
oder so), .h-Files nicht mehr benötigt werden und ein GC ist auch 
vorhanden soweit ich das mitbekommen habe.

Ich selbst hab noch Probleme ein Hello-World zu kompilieren (mit dem 
GDC).

Wo seht Ihr D in so ca. 10 Jahren? Hat vielleicht schon jemand mehr 
Erfahrungen damit?

mfg Weinga-Unity

von Arc N. (arc)


Lesenswert?

Kurze Antwort zum Gesamtkonzept:
Hat sehr viele Probleme von C/C++ nicht, lässt sich auch für 
hardwarenahe Sachen benutzen u.v.a.m., ist dafür aber genauso 
undynamisch, kennt weder Reflection/Introspection oder dynamische 
Codegenerierung etc.

In zehn Jahren:
Wird es, wie schon viele andere, in der Versenkung verschwunden sein.
Wie viel wird denn z.B. noch in der IMO besten dynamischen OO-Sprache 
aka Smalltalk entwickelt, wieviele benutzen (noch) Pascal, Haskell 
(ausserhalb der Unis) etc.
Die einzigen Sprachen, die momentan die Aussicht haben noch in ein paar 
Jahren verwendet zu werden (und nicht nur zur Pflege irgendwelcher 
Uraltsachen), dürften Java/C++/C# und vielleicht Ruby sein (wenn die 
Entwicklung von C++ eine etwas andere Richtung nimmt).

von Markus B. (Firma: Embedit Mikrocontrollertechnik) (_mb_)


Lesenswert?

Ich denke das die Zukunft eher den Plattformunabhängigen 
"Interpreter"sprachen gehören wird da mit der stetig steigenden 
Rechenleistung der Prozessoren und des immer größer werdenden Speichers 
der geringe Unterschied nicht mehr in's Gewicht fallen wird. Es gibt ja 
schon Mikrocontroller die Java in Hardware gegossen haben.

C, C++ und vielleicht D werden ihren Platz als systemnahe Sprachen 
behalten, weil ohne die keine Hardwarezugriffe möglich sind, aber zb 
Microsoft wird den Großteil der höheren Applikationen wohl frühere oder 
später auf C# umstellen

von Bartli (Gast)


Lesenswert?

> Die einzigen Sprachen, die momentan die Aussicht haben noch in ein paar
> Jahren verwendet zu werden (und nicht nur zur Pflege irgendwelcher
> Uraltsachen), dürften Java/C++/C# und vielleicht Ruby sein

Nana, so schnell verschwinden Sprachen nicht von der Bildfläche. Da gibt 
es noch diverse andere, welche sich noch eine ganze Weile halten werden, 
ob man das nun will/mag oder nicht (schon mal was von COBOL gehört?).

Und wenn sich z.B. deiner Meinung nach Ruby halten wird, dürften sich 
Perl und Python erst recht halten. Die haben beide eine grössere 
Userbase, und Python ist eigentlich auch ganz nett (was ich persönlich 
von Perl nicht behaupten kann).

von mr.chip (Gast)


Lesenswert?

> Ich denke das die Zukunft eher den Plattformunabhängigen
> "Interpreter"sprachen gehören wird da mit der stetig steigenden
> Rechenleistung der Prozessoren und des immer größer werdenden Speichers
> der geringe Unterschied nicht mehr in's Gewicht fallen wird.

Man muss hier ganz klar nach Anwendung differenzieren. Mindestens 4 
grundsätzlich unterschiedliche Gebiete mit völlig verschiedenen 
Anforderungen und Programmiersprachen fallen mir ein:

- Anwendungsentwicklung für Personalcomputer
- Embedded- und Betriebssystementwicklung
- Webapplikationen (client- und serverseitig) (
- Plattformspezifisches Scripting (Batch, Shellscript, VBA, ...)

Alle Bereiche haben ihre etablierten Sprachen, und ich sehe in keinem 
Bereich allzugrosse Dynamik. Allgemein geht es natürlich hin zu höherer 
Abstraktion, aber die heutigen Sprachen werden weiterhin den Löwenanteil 
ausmachen: Die heutigen Programmiersprachen sind eigentlich völlig 
ausreichen, einzig eine teilweise höhere Abstraktion von typischen 
Aufgaben wäre nützlich - doch sobald man dies tut, wird die Sprache 
automatisch weniger allgemein.

von Markus B. (Firma: Embedit Mikrocontrollertechnik) (_mb_)


Lesenswert?

>- Anwendungsentwicklung für Personalcomputer

Ich würde das sogar noch aufsplitten in "große Anwendungen" wie zb einen 
Email Client und in "kleine Tools" wie zb einen Taschenrechner. Für den 
Taschenrechner würde ich nie eine Eclipse RCP verwenden sondern eher 
Python und Qt4 oder GTK oder sogar gleich Tkinter

von mr.chip (Gast)


Lesenswert?

> Ich würde das sogar noch aufsplitten in "große Anwendungen" wie zb einen
> Email Client und in "kleine Tools" wie zb einen Taschenrechner. Für den
> Taschenrechner würde ich nie eine Eclipse RCP verwenden sondern eher
> Python und Qt4 oder GTK oder sogar gleich Tkinter

...auch Computergames müsste man noch irgendwo unterbringen. Gerade 
neuere Spiele mit mächtigen Online- und Modding-Fähigkeiten entwickeln 
sich ja teilweise zu riesigen Systemen.

von Andreas K. (a-k)


Lesenswert?

Weinga-Unity wrote:

> Wo seht Ihr D in so ca. 10 Jahren? Hat vielleicht schon jemand mehr
> Erfahrungen damit?

Die Datentypen sind genaus besch... wie in C und obwohl in der 
Designphase offensichtlich sein musste, dass die Migration 32bit zu 
64bit ansteht, wurde rein garnichts dafür getan, dies zu erleichtern.

von *.* (Gast)


Lesenswert?

Wozu braucht man schon 64 Bit... 4 Milliarden ist groß genug für die 
meisten Variablen.

von Simon K. (simon) Benutzerseite


Lesenswert?

*.* wrote:
> Wozu braucht man schon 64 Bit... 4 Milliarden ist groß genug für die
> meisten Variablen.

Wenn man keine Ahnung hat? ...

von *.* (Gast)


Lesenswert?

Ja dann erkäre mal was Du besser weißt (will nicht dumm sterben).

Mit der Pointer-Breite kommste in C eh kaum in Berührung. Was braucht es 
da für Innovationen?

von yalu (Gast)


Lesenswert?

Ich glaube, dass die Add-Ons von D gegenüber C++ zu wenig sind und das
Gewicht von Walter Bright bzw. seiner Firma viel zu gering ist, um D
einen nennenswerten "Marktanteil" zu verschaffen.

Fortran hat sich damals durchgesetzt, weil es von IBM gepusht wurde,
Algol, obwohl fortschrittlicher, nicht.

C hat sich durchgesesetzt, weil es mit Unix zusammen vertrieben wurde.
Nachdem Unix das Standardbetriebssystem für Workstations wurde, war es
naheliegend, dass jeder darauf in C programmierte, was dazu führte,
dass es sich langsam auch auf Nicht-Unix-Rechnern ausbreitete.

C++, obwohl von einer Einzelperson entwickelt, wurde trotzdem
akzeptiert, weil es auf C mit OO verbindet. C konnte damals schon
jeder, und OO wurde gerade so megahipp, so dass sich wahrscheinlich
alles, was irgendwie mit C und OO zu tun hat, regelrecht aufgesaugt
worden wäre.

Bei Java war's dann der Internet-Hype und die Möglichkeit, damit
Applikationen portabel im Web-Browser auszuführen.

C# bietet gegenüber C++ und Java eigentlich keine grundlegend neue
Features, geschweige denn neue Programmierparadigmen. Es versucht
vielmehr, die Vorteile der beiden in einer einzigen Sprache zu
vereinen. Käme C# nicht von Microsoft, wäre die Sprache wahrscheinlich
kaum publik geworden, weil sie für Freaks (die so etwas normalerweise
als erste aufgreifen) zu wenig Pepp hat.

D ähnelt in dieser Hinsicht C#, aber es gibt eben keine Firma
Microsoft oder IBM, die dahinter steht.

Es gibt einfach viel zu viele Programmiersprachen, und der Aufwand,
der zu treiben ist, um mit einer neue Programmiersprache produktiv
arbeiten zu können, ist nicht von Pappe.

von Arc N. (arc)


Lesenswert?

> Da gibt es noch diverse andere, welche sich noch eine ganze Weile halten
> werden, ob man das nun will/mag oder nicht (schon mal was von COBOL
> gehört?).

Nicht nur gehört... deswegen auch der Nachsatz "und nicht nur zur Pflege 
irgendwelcher Uraltsachen"

> C# bietet gegenüber C++ und Java eigentlich keine grundlegend neue
> Features, geschweige denn neue Programmierparadigmen.

Features gegenüber C++/Java eine ganze Reihe (je nach Sprache mehr oder 
weniger): Saubere Delegaten/Events, Properties, 
Reflection/Introspection, dynamische Codegenerierung, DLR (Dynamic 
Language Runtime), Nullable Types und div. "Syntactic Sugar", gegenüber 
Java z.B. bessere Schnittstelle zu nativen Functionen/Strukturen, Linq, 
Lambda-Ausdrücke, konsistente(re) Klassenbibliothek(en) und einige 
interessante Sprachen die darauf aufbauen bzw. das restliche Framework 
benutzen (Spec#, F# etc.), u.e.a.m.
Grundlegend neu: DLR (wird z.B. für IronRuby verwendet) und Linq.

DLR:
http://blogs.msdn.com/hugunin/archive/2007/04/30/a-dynamic-language-runtime-dlr.aspx

von yalu (Gast)


Lesenswert?

>> C# bietet gegenüber C++ und Java eigentlich keine grundlegend neue
>> Features, geschweige denn neue Programmierparadigmen.
>
> Features gegenüber C++/Java eine ganze Reihe (je nach Sprache mehr
> oder weniger):

Das ist schon klar. Ich wollte mit meiner obigen Aussage ausdrücken,
dass C# nicht viel zu bieten hat, was weder in C++ noch in Java
schon zuvor vorhanden war. C# ist eben ein Versuch, C++ und Java unter
einen Hut zu bringen, dazu kommen noch ein paar Elemente aus anderen
Bereichen, bspw. der funktionalen und der Datenbankprogrammierung. Das
Ganze wirkt auf mich deswegen etwas aufgedunsen und zusammengewürfelt
(wobei dies zugegebenermaßen auch für C++ in seiner aktuellen Form
gilt).

Vor einigen Jahrzehnten wurde PL/1 ebenfalls mit dem Ziel entwickelt,
die Features möglichst vieler Sprachen in einer neuen Sprache zu
vereinen. Weil aber alle dieser Features selten gleichzeitig benötigt
wurden, konnte sich PL/1 gegen spezialisiertere und damit schlankere
Sprachen nicht durchsetzen.

Die einzige Programmiersprache, die in meinen Augen wirklich fast
alles an Programmierkonzepten und -paradigmen bietet (und dies sogar
schon vor Jahrzehnten), und trotzdem eine klare, durchgängige und
offene Struktur hat, ist Lisp. Dass sie sich nicht durchgesetzt hat,
liegt natürlich an der eigenwilligen Syntax (die aber mit zum Konzept
dazugehört), die mit ihren vielen Klammern die meisten schon beim
ersten Kontakt davon abhalten, sich weiter mit der Sprache zu
beschäftigen. Schade eigentlich.

von Andreas K. (a-k)


Lesenswert?

*.* wrote:

> Mit der Pointer-Breite kommste in C eh kaum in Berührung.

Doch, sehr oft sogar. Nämlich in Gestalt von Adressrechnung aka 
Array-Indizierung und Pointer-Arithmetik. Nur wenn man das konsequent in 
64 Bit Breite macht, ist man aller Probleme ledig.

Dummerweise macht man das aber nicht. Sowohl in Windows als auch in 
Linux ist "int" weiterhin 32 Bit breit. Das hindert zwar weder Anwender 
noch Compiler daran, dafür 64 Bit Datentypen zu akzeptieren (siehe 
ptrdiff_t, offset_t, ...) und entsprechend breit zu rechnen, aber so ist 
es ausschliesslich Sache des Programmierers, den richtigen Typ zu 
erwischen. Schrott rein Schrott raus und dementsprechend fehlerträchtig.

Was hier fehlt ist:

- Die Möglichkeit, Arrays entsprechend zu deklarieren. Beispielsweise 
mit
    int a[long];
um zu signalisieren, dass für die Indexrechnung 64-Bit Arithmetik 
erforderlich ist. Leider ist das nicht wirklich konsequent möglich, 
aufgrund der C/D-typischen Identität von Array- und Pointer-Rechnung, 
aber es würde dem Compiler doch immerhin die Chance geben, freundlich 
darauf hinzuweisen, dass
    int k;
    ... a[k] ...
wahrscheinlich Unfug ist. Für Pointer liesse sich eine entsprechende 
qualiifizierung auch vorstellen (hässlich, aber diesen Geburtsfehler 
kriegt man aus C/D nicht raus ohne es ganz auf den Kopf zu stellen).

- Basierend darauf die Möglichkeit, aus einem Pointer/Array-Objekt den 
für die Indizierung/Arithmetik nötigen Typ abzuleiten. Damit liessen 
sich for-loops formulieren, ohne a priori wissen zu müssen, welcher 
Indextyp dafür nötig ist. Eine Technik die beispielsweise in C++ 
collection classes rege verwendet wird.

von Andreas K. (a-k)


Lesenswert?

yalu wrote:

> Fortran hat sich damals durchgesetzt, weil es von IBM gepusht wurde,
> Algol, obwohl fortschrittlicher, nicht.

Tja, das waren noch Zeiten als die Welt wusste was gut war ;-). In 
späteren Jahren konnte man drauf wetten, dass alles was von IBM gepusht 
wurde schon allein deswegen garantiert absäuft (z.B. PS/2, OS/2, SNA, 
Token-Ring, ATM).

von Andreas K. (a-k)


Lesenswert?

yalu wrote:

> Weil aber alle dieser Features selten gleichzeitig benötigt
> wurden, konnte sich PL/1 gegen spezialisiertere und damit schlankere
> Sprachen nicht durchsetzen.

Das auch. Aber vor allem ist PL/1 ein einziger grosser 
Konstruktionsfehler.

von soisses (Gast)


Lesenswert?

D, C# und Java kann man nicht mit C oder C++ vergleichen. D, C# und Java 
sind Projekte, die von irgendwelchen Firmen ins Leben gerufen wurden, 
während hinter C und C++ richtige ISO Standards stehen. Daher wird sich 
nur C und C++ langfristig halten.

von yalu (Gast)


Lesenswert?

Auszug aus Wikipedia-Artikel:

  2003 wurde C# von der ISO genormt (ISO/IEC 23270).

Java hält sich auch schon ziemlich lange, obwohl kein ISO-Standard.
Pascal ist so gut wie gestorben, obwohl ISO.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.