Sprache 'D' fertiggestellt - wie geht's weiter ?
-
Sag das nicht so laut, sonst kommt das Javaiener und trumpf, wir sind als erste gelistet

-
THX 1138 schrieb:
OT: Naja nennt sich Hackordnung ( das Wort kommt aus dem Hühnerstall ) und C++ scheint (ist?) das Alphatier zu sein, darum will sich jeder mit ihr anlegen ( in der Natur sinds zwar meistens die Männchen die rivalisieren ).
Ich vermute eher, dass es in diesem Forum deshalb in erster Linie "c++ vs. irgendwas"-Threads gibt, weil c++ im Vergleich zu anderen Programmiersprachen in einer gewissen Weise eine stärkere Verbindung mit diesem Forum hat.
-
Gregor schrieb:
THX 1138 schrieb:
OT: Naja nennt sich Hackordnung ( das Wort kommt aus dem Hühnerstall ) und C++ scheint (ist?) das Alphatier zu sein, darum will sich jeder mit ihr anlegen ( in der Natur sinds zwar meistens die Männchen die rivalisieren ).
Ich vermute eher, dass es in diesem Forum deshalb in erster Linie "c++ vs. irgendwas"-Threads gibt, weil c++ im Vergleich zu anderen Programmiersprachen in einer gewissen Weise eine stärkere Verbindung mit diesem Forum hat.
Genau. Was möglicherweise, eventuell, wenn auch nicht sicher, daran liegen könnte, dass das Board "c-plusplus.net" heisst... *hmmm*

-
C++ auch nicht
Edit: Stimme gesenkt
LOL, naja wenigstens ist ja C dabei, ein kleiner Trost ... Oder nee, bestimmt haben die einfach nur '++' vergessen ... *kleinlaut*
Ich vermute eher, dass es in diesem Forum deshalb in erster Linie "c++ vs. irgendwas"-Threads gibt, weil c++ im Vergleich zu anderen Programmiersprachen in einer gewissen Weise eine stärkere Verbindung mit diesem Forum hat.
Hmmmm ja, komplexe Sache

Die Zukunft bringt's schon, wir werden sehen ...
Naja, hustbaer, soooo schlimm ist es nun auch nicht

-
Was mich bei D äußerst stutzig macht, ist btw. der konservative GC. Gibt es in der Sprache keine eigenen Zeiger-Typen für Objekte auf dem GC-Heap? Wenn nicht, dann wird der GC wahrscheinlich nie richtig geil werden und das ist schlimmer, als wenn sie ihn weggelassen hätten...
-
@ THX 1138
warum hältst du nich den mund wenn du eh nur schwachsinn laberst...
hackordnung ist was ganz anderes als das was du da von dir gibst, ich empfehle dir mal was dazu durchzulesen, sogar nen wikipedia artikel würdes tun...
solche hobbybiologen wie du nerven einfach nur...
-
Optimizer schrieb:
Was mich bei D äußerst stutzig macht, ist btw. der konservative GC. Gibt es in der Sprache keine eigenen Zeiger-Typen für Objekte auf dem GC-Heap? Wenn nicht, dann wird der GC wahrscheinlich nie richtig geil werden und das ist schlimmer, als wenn sie ihn weggelassen hätten...
Jetzt bitte ich mal um erklärung, warum du ein besonderen Zeiger willst. O.O
-
Zeus schrieb:
Optimizer schrieb:
Was mich bei D äußerst stutzig macht, ist btw. der konservative GC. Gibt es in der Sprache keine eigenen Zeiger-Typen für Objekte auf dem GC-Heap? Wenn nicht, dann wird der GC wahrscheinlich nie richtig geil werden und das ist schlimmer, als wenn sie ihn weggelassen hätten...
Jetzt bitte ich mal um erklärung, warum du ein besonderen Zeiger willst. O.O
Weil der GC wissen muss, was ein Zeiger ist und was nicht. Außerdem ist ein Zeiger bei einem modernen GC in der Regel ein Zeiger auf ein Zeiger, damit der GC die Objekte im Heap umsortieren kann bei bedarf (was einem aber auch die CPU Caches trashen kann)
-
rüdiger schrieb:
Zeus schrieb:
Optimizer schrieb:
Was mich bei D äußerst stutzig macht, ist btw. der konservative GC. Gibt es in der Sprache keine eigenen Zeiger-Typen für Objekte auf dem GC-Heap? Wenn nicht, dann wird der GC wahrscheinlich nie richtig geil werden und das ist schlimmer, als wenn sie ihn weggelassen hätten...
Jetzt bitte ich mal um erklärung, warum du ein besonderen Zeiger willst. O.O
Weil der GC wissen muss, was ein Zeiger ist und was nicht.
Dafuer muss man Zeiger aber nicht zwangsweise auszeichnen. Ein GC kann es auch selbst rausfinden.
-
Jo, da der GC ja sowieso einen eigenen Pool für "managed" Objekte haben wird lässt sich auch "relativ" schnell über die Adresse herausfinden ob ein Zeiger auf ein GC Objekt oder ein "normales" zeigt.
Und wenn anstelle von Zeigern bei GC Objekten "handles" verwendet werden ist diese Abfrage sogar noch viel viel schneller, dafür braucht natürlich jedes Dereferenzieren länger. Auch doof.
-
Beweis schrieb:
http://labs.google.com/sets?hl=en&q1=c%20%20&q2=java&q3=&q4=&q5=&btn=Grow+Set
D wird nicht erwähntwas hat diese liste zu bedeuten?
häufig der anfragen nach programmiersprachen bei google, oder was?
-
Lustiges Spielzeug
http://labs.google.com/sets?hl=en&q1=ten&q2=&q3=&q4=&q5=&btn=Large+Set
http://labs.google.com/sets?hl=en&q1=password&q2=abc123&q3=123456&q4=&q5=&btn=Large+Set
-
Apollon schrieb:
rüdiger schrieb:
Zeus schrieb:
Optimizer schrieb:
Was mich bei D äußerst stutzig macht, ist btw. der konservative GC. Gibt es in der Sprache keine eigenen Zeiger-Typen für Objekte auf dem GC-Heap? Wenn nicht, dann wird der GC wahrscheinlich nie richtig geil werden und das ist schlimmer, als wenn sie ihn weggelassen hätten...
Jetzt bitte ich mal um erklärung, warum du ein besonderen Zeiger willst. O.O
Weil der GC wissen muss, was ein Zeiger ist und was nicht.
Dafuer muss man Zeiger aber nicht zwangsweise auszeichnen. Ein GC kann es auch selbst rausfinden.
Nein, er kann nur konservative Annahmen machen, was ein Zeiger sein könnte. Es kann aber auch irgendeine Bit-Kombination zufällig (und sooo unwahrscheinlich wäre das schon nicht) auch ein gültiger Zeiger sein. Was du mit "selber rausfinden" meinst, beschreibt genau einen konservativen GC. Mach' dir keine Hoffnung - ein konservativer GC wird nie geil sein. Er braucht sehr lange um alle möglichen Zeiger zu identifizieren, er arbeitet ungenau ( = lässt Objekte stehen, entfernt Objekte die über Pointer-Arithmetik noch erreichbar wären) und ist noch ein zweites mal langsam, weil er den Heap nicht kompaktieren kann. Denn dazu müsste er Objekte verschieben und die Zeiger darauf anpassen können, was nicht möglich ist, wenn er Zeiger nicht zweifelsfrei identifizieren kann.
-
Ich weis zwar nicht, von was ihr da gerade redet, aber egal

Ich hab zu dem Thema mal einen kleinen Artikel auf meiner Homepage verfasst.
Könnt ihr euch mal gerne durchlesen ---> www.cpp-world.deZu finden unter den News.
Aja, und was ist ein GC ??
Grüße,
mikey.
-
ich glaub
Garbage Collector
oder?
.. geraten, die erste gc-abkürzung die mir eingefallen ist.mfg,
julian
-
Ohje, ich glaub da muss jetzt Wikipedia herhalten ...
-
Es stimmt schon und ist mir bekannt. Ich habe mal einen GC fuer C implementiert. Aber...
Optimizer schrieb:
[...] er arbeitet ungenau ( = lässt Objekte stehen, entfernt Objekte die über Pointer-Arithmetik noch erreichbar wären) [...]
Genau das tuht er nicht. Er laesst Objekte stehen, falls ein Bitmuster zufaellig als gueltige Adresse durchgeht, auch wenn es das nicht ist, aber dass er gueltige Objekte entfernt ist mir neu.
Optimizer schrieb:
Er braucht sehr lange um alle möglichen Zeiger zu identifizieren [...]
So lange nun auch nicht. Es reicht aus, wenn man lediglich den Codebereich scannt. Von da an sind die Objektgroessen, auf die potentielle Zeiger verweisen, bekannt.
EDIT: 5 Stunden lang postet keiner und wenn ich einen Beitrag verfasse, kommen sie daher und quetschen sich dazwischen.
Mein Beitrag bezog sich auf Optimizer.
-
Apollon schrieb:
Es stimmt schon und ist mir bekannt. Ich habe mal einen GC fuer C implementiert. Aber...
Optimizer schrieb:
[...] er arbeitet ungenau ( = lässt Objekte stehen, entfernt Objekte die über Pointer-Arithmetik noch erreichbar wären) [...]
Er laesst Objekte stehen, falls ein Bitmuster zufaellig als gueltige Adresse durchgeht, auch wenn es das nicht ist, aber dass er gueltige Objekte entfernt ist mir neu.
Natürlich entfernt er ein Objekt nicht, wenn ein Zeiger direkt darauf verweist. Du hast die relevante Stelle sogar mitzitiert.
So lange nun auch nicht. Es reicht aus, wenn man lediglich den Codebereich scannt.
Und die Stacks und den Heap, wenn man den Zeigern folgt. Ich weiß nicht genau, was du mit Code-Bereich meinst. Wenn du das Segment meinst, in dem sich der Programmcode befindet, wie soll das ausreichen?
Die Frage nach der Möglichkeit stellt sich ja nicht. Ich traue dem GC schon zu brauchbar zuverlässig zu arbeiten, aber richtig geil wird er nie sein vor allem vom Performance-Standpunkt aus. Das wird einfach nur die Gerüchte wieder anheizen ("Ich hab das einmal mit und einmal ohne GC gemacht, der GC ist ja soooo langsam" - natürlich ist er das, wenn er schlecht ist). Der richtige Weg bzgl. GC wäre so wie in C++/CLI (auch wenn ich die Sprache sonst nicht mag). So denke ich, dass man nur die Feature-List weiter füllen wollte.
-
Optimizer schrieb:
Der richtige Weg bzgl. GC wäre so wie in C++/CLI (auch wenn ich die Sprache sonst nicht mag). So denke ich, dass man nur die Feature-List weiter füllen wollte.
Ist jetzt zwar OT, aber: wie arbeitet der GC unter C++/CLI und was ist der Unterschied zu der Art, wie er in D arbeitet?
-
Optimizer schrieb:
Apollon schrieb:
Es stimmt schon und ist mir bekannt. Ich habe mal einen GC fuer C implementiert. Aber...
Optimizer schrieb:
[...] er arbeitet ungenau ( = lässt Objekte stehen, entfernt Objekte die über Pointer-Arithmetik noch erreichbar wären) [...]
Er laesst Objekte stehen, falls ein Bitmuster zufaellig als gueltige Adresse durchgeht, auch wenn es das nicht ist, aber dass er gueltige Objekte entfernt ist mir neu.
Natürlich entfernt er ein Objekt nicht, wenn ein Zeiger direkt darauf verweist. Du hast die relevante Stelle sogar mitzitiert.
Ja. Die Pointer-Arithmetik. Da aber beim Allozieren die Groesse mitvermerkt wird, sehe ich vorerst kein Problem. Aber vermutlich ist dir da mehr bekannt als mir.
Optimizer schrieb:
So lange nun auch nicht. Es reicht aus, wenn man lediglich den Codebereich scannt.
Und die Stacks und den Heap, wenn man den Zeigern folgt. Ich weiß nicht genau, was du mit Code-Bereich meinst. Wenn du das Segment meinst, in dem sich der Programmcode befindet, wie soll das ausreichen?
Naja. Ausreichen ist vielleicht falsch ausgedrueckt. Das scannen des Codebereiches (Ja. Das Segment wo sich der Programmcode befindet) ist insofern ausreichend, als dass es ausreicht diesen Bereich zu scannen. Die Zeiger die man darin findet verweisen auf Objekte bekannter Groessen. Da reicht es aus den Bereich Adresse + Groesse zu scannen, um zu entscheiden ob sich da weitere Verweise befinden.
Ob der GC von D nun "geil" ist oder nicht, kann und will ich nicht beurteilen. Ich weiss nur, dass konservative GCs recht gute Dienste leisten und in der Praxis auch eingesetzt werden. AFAIK hat Firefox einen fuer JS, vielleicht auch fuer mehr.
Blue-Tiger schrieb:
Optimizer schrieb:
Der richtige Weg bzgl. GC wäre so wie in C++/CLI (auch wenn ich die Sprache sonst nicht mag). So denke ich, dass man nur die Feature-List weiter füllen wollte.
Ist jetzt zwar OT, aber: wie arbeitet der GC unter C++/CLI und was ist der Unterschied zu der Art, wie er in D arbeitet?
Optimizer hats schon angedeutet. Referenzen werden als solche kenntlich gemacht. Durch zusaetzliche Information, Eintraege in Tabellen, etc.. Dies beschleunigt das Wiederfinden von Zeigern und somit das markieren von gueltigen Objekten. Nachteil: zusaetzliche Information muss gespeichert werden.