C und C++ sind out

Richtig, hab davon auch eben erst gelesen. Klingt ziemlich
interessant, imho.
 
lol. schmand ;)
 
Das ging die Tage schon durch die News-Ticker.

Out sind C/C++ in meinen Augen zwar schon lange, aber D wird deshalb nicht gleich über Nacht deren Rang ablaufen. Ich denke die Sprache wird sich nicht durchsetzen.
 
Beobachte (und teste) D schon seit ein, zwei Jahren und finde die Sprache toll :). Seitdem ich mich mit D beschäftige, macht mir das Programmieren in C/C++ deutlich weniger bis z.T. kaum mehr Spaß *g*.

Tue mich selbst aber leider auch eher schwer daran zu glauben, dass C/C++ durch D ersetzt werden -- wäre aber mit einem etwas größerem Nischendasein auch schon sehr zufrieden.

Interessant ist auch die Seite dsource.org, dort gibt es einige Projekte zu D. So z.B. auch Docoa, welches ich aber wegen derzeitiger Maclosigkeit noch nicht ausprobieren konnte. In den kommenden Semesterferien werde ich dann wohl auch mal mein erstes wirkliches Projekt in D anfangen umzusetzen.

Walter Bright, Ds Erfinder, ist ja übrigens auch jener, der damals den ersten nativen Compiler für C++ schrieb.
 
Eine interessante Site!
Gespannt bin ich auf Tioport. Sollte das Projekt tatsächlich einen brauchbaren Java->D-Konverter hervorbringen, ließe sich ja eine ganze Menge Bibliotheken für jedes erdenkliche Thema einsetzen.
Die Sprachen ähneln sich auf den ersten Blick in vielen entscheidenden Aspekten. Aber D hat Destruktoren :D !

Btw: Ich habe mir den Compiler von digitalmars geladen. Aber der meckert immer eine fehlende Bibliothek an:
/usr/bin/ld: can't open: crt3.o (No such file or directory, errno = 2)
Hat jemand einen Rat?
 
Zuletzt bearbeitet:
in der c't vom Montag ist ein Artikel zu D (hab sie als Abo, deswegen schon heute).
 
Ich Schussel ...

jpv schrieb:
Ich habe mir den Compiler von digitalmars geladen. Aber der meckert immer eine fehlende Bibliothek an:
/usr/bin/ld: can't open: crt3.o (No such file or directory, errno = 2)
Hat jemand einen Rat?

Die Developer Tools müssen natürlich mit dem geladenen gdc zusammenpassen ... ;)
Auf der Konsole kompiliert gdc nun fleißig. Allerdings hat die auf gdcmac.sf.net zu ladende Integration in XCode 2.4 nicht :(
Naja, für kleine Tests gehts auch so ...
 
Kann mir mal jemand den Point of Sale nennen? Gut, ich sehe eine Tabelle mit ganz vielen "tollen" Features die D hat, C, C++ und JAVA aber nicht haben. Aber von den Features hat mir bisher auch noch keines gefehlt. :hehehe:

Wer kann mir ein Beispiel nennen, das ich mit D schneller, besser oder einfacher implementieren kann? Ich sehe momentan nüx. :rolleyes: :kopfkratz:
 
jpv schrieb:
Aber D hat Destruktoren :D !

Destruktoren und GarbageCollection schließen sich nach meinem Verständnis gegenseitig aus. Java hat ja auch finalize - also quasi Destruktoren, die eben nicht ausgeführt werden, wenn man Pech hat.
 
DeineMudda schrieb:
Destruktoren und GarbageCollection schließen sich nach meinem Verständnis gegenseitig aus. Java hat ja auch finalize - also quasi Destruktoren, die eben nicht ausgeführt werden, wenn man Pech hat.
Diese Frage interessierte mich nun auch ;) ... D scheint damit umgehen zu können:

Code:
import std.stdio;

class Hansi {
public:
        this() {
                writefln("Hallo Hansi");
        }
        ~this() {
                writefln("Tschuess Hansi");
        }
}

void main(char[][] args) {
        Hansi h = new Hansi;
        //delete h;
}

Auch ohne den delete Ausdruck wird der Destruktor ausgeführt wärend in Java hier die finalize Methode übersprungen wird:

Code:
package test;

public class TestFinalize
{
	public TestFinalize()
	{
		System.out.println("Hallo");
	}
	protected void finalize() throws Throwable
	{
		System.out.println("Tschüß");
	}
	public static void main(String[] args)
	{
		new TestFinalize();
	}
}

Eigentlich sollte es ja auch kein Problem sein, da auch in D alle Klassen von eine Basis-Object-Klasse abgeleitet sind, diese statisch aufzuhängen und beim Beenden des Programms ordentlich zu zerstören.

In C++ hatte ich mir damals auch mit einer Object-Klasse geholfen, die sich im Konstruktor in eine statische Liste einträgt, die zum Programmende aufgeräumt wird.
 
wegus schrieb:
..
akademische Schnapsidee oder realer Nachfolgekandidat für die C-Suites (C/C++/Objective-C) ? Was meint ihr?

Oh Mann, ich wäre schon froh, wenn ich in C++ programmieren könnte.. nicht weil ich es nicht kann, sondern weil im embedded-Bereich, in dem ich tätig bin, fast nur C (und teilweise noch Assembler) verwendet wird..

Da stellt sich die Frage nach Destruktor <-> GarbageCollection gar nicht..

Generell habe ich bisher nicht DAS Alleinstellungsmerkmal von C#, Java und D gefunden, was mich aber wirklich stört (auch wenn es OT ist) ist die Tatsache, das man etwas mit EINEM BUCHSTABEN abkürzt. Es ist lustig nach C und D im Internet zu suchen :kopfkratz:

Gruß
jo
 
DeineMudda schrieb:
Destruktoren und GarbageCollection schließen sich nach meinem Verständnis gegenseitig aus. Java hat ja auch finalize - also quasi Destruktoren, die eben nicht ausgeführt werden, wenn man Pech hat.
In einem Punkt hast Du natürlich recht: delete setzt nicht alle Referenzen auf null. Dieses Problem sollte zwar C++-Programmierern vertraut sein, aber da bleibt noch Spielraum für weitere Entwicklungen.
 
_JoAs schrieb:
sondern weil im embedded-Bereich, in dem ich tätig bin, fast nur C (und teilweise noch Assembler) verwendet wird..

immernoch :) man hat mir schon vor 15 Jahren erzählt "wir machen das aber bald alles in C++" :hehehe: .

Abseits vom kurzen Namen frag ich mich halt, ob die wenigen Änderungen wirklich eine ganze Industrie zum umlernen bewegen. Java war lange eine eigene Welt und hatte in ganz anderen Gebieten als C/C++ seine Berechtigung. Da bekommt es jetzt starke Konkurrenz von .NET/C#. Wo aber soll der Benefit von D sein? Wo ist das Heureka, das aus Objective-C und C++ wieder ein D werden läßt? Sieht das jemand? Oder haben wir hier nur JustAnotherCImprovement?
 
wegus schrieb:
immernoch :) man hat mir schon vor 15 Jahren erzählt "wir machen das aber bald alles in C++" :hehehe: .

ja, das habe ich auch mehrmals gehört.. problematisch ist halt nur, dass nicht nur die Echtzeitfähigkeit sondern auch die Laufzeiten bei uns (Automobiltechnik) eine große Rolle spielt. Selbst wenn schon versprochen wird, das ein modernen C++ Compiler Code erzeugt, der ähnlich performant wie C-Code ist, ist es aber trotzdem eine Tatsache, dass man durch die Sprache C++ einen hohen Overhead erhält.. dh. die Algorithmen sind gleich gut, der Overhead ist bei C++ deutlich höher.

Da hat auch EC++ nicht geholfen..

Und so geht man mehr und mehr zu Modellierungswerkzeugen (UML) über und programmiert in C. Durch Coding-Rules und Architekturregeln erreicht man soetwas wie zB. "Datenkapselung" (die Hochkommas sind bewußt so eingefügt ;) ).

Gruß jo
 
Damit auch ich mal zur Ausgangsfrage komme und nicht auf mir besonders wichtigen Spezialitäten herumreite:
Ich denke, es hängt von den verfügbaren Bibliotheken ab. Java konnte sich so gut verbreiten, weil sich recht schnell eine große Menge brauchbarer Bibliotheken laden ließ, die sich meist auch problemlos auf unterschiedlichen Java-Hosts einsetzen ließ.
Für viele Themen gibt es auch Bibliotheken für C++, aber diese sind mit deutlich mehr Stolpersteinen behaftet, wenn man nicht gerade den passenden Compiler/das passende OS benutzt.
Die sprachliche nähe von D hat ja auf dsource..org (s.o.) schon jetzt einen Java->D Konverter hervorgebracht. Wenn dieser in absehbarer Zeit die Möglichkeit bietet z.B. xerces/xalan für D zur Verfügung zu stellen, und wenn sich D dann noch so plattformunabhängig zeigt, daß sich Code wirklich hier wie dort kompilieren läßt, dann hat D sicherlich eine Chance einen nennenswerten "Markt"anteil zu gewinnen.
Wenn dem nicht so ist, dann befürchte ich, daß diese Sprache - die mir bisher wirklich gut gefällt - ein Nischendasein an den Unis fristen wird.

Gruß, jpv
 
Meine Pascal/Modula-Zeiten sind nun wirklich lange vorbei. Aber ich erinnere mich noch dunkel an sehr "saubere Konstrukte", die eigentlich immer gut lebar waren.
Das C-Syntax-Erbe in D ist aber bestimmt von Vorteil: Es ist einfach weniger Text zu tippen ;)
 
kleine anmerkung noch zu GC und delete

Ich muß sagen, ich mag diese Sprache ;) ich spiele gerne damit herum. Und ich glaube, daß sie zumindest eine realistische Chance hat, Bedeutung in der Entwicklerwelt zu erlangen.

jpv schrieb:
delete setzt nicht alle Referenzen auf null. Dieses Problem sollte zwar C++-Programmierern vertraut sein, aber da bleibt noch Spielraum für weitere Entwicklungen.

damit lag ich falsch:
Code:
import std.stdio;

class Test {
	this() { writefln("Hallo"); }
	~this() { writefln("Tschüß"); }
}

void main(char[][] args) {
	Test t = new Test();
	if (t is null) writefln("t ist null");
	else  writefln("t ist nicht null");
	delete t;
	if (t is null) writefln("t ist null");
	else  writefln("t ist nicht null");
}
ergibt
Code:
Hallo
t ist nicht null
Tschüß
t ist null
 
jpv schrieb:
Die Developer Tools müssen natürlich mit dem geladenen gdc zusammenpassen ... ;)
Auf der Konsole kompiliert gdc nun fleißig. Allerdings hat die auf gdcmac.sf.net zu ladende Integration in XCode 2.4 nicht :(
Naja, für kleine Tests gehts auch so ...

/usr/bin/ld: can't open: crt3.o (No such file or directory, errno = 2)


:confused: ich habe das gleiche Problem; verrätst Du mir, wies geht??

Danke!! :p
 
Zuletzt bearbeitet:
Zurück
Oben Unten