Dynamic Linking während der Laufzeit unter Linux
-
// schrieb:
Leute...Java und C++ haben völlig unterschiedliche Aufgabengebiete. Das ist fast wie ein Äpfel mit Birnen Vergleich.
Ok, einigen wir uns darauf. Damit kann ich leben. Aber nur interessehalber: Was sind das für Aufgabenbereiche. Ich progge schon länger alles mögliche mit Java. Ich hab gehört, es soll sich besonders für Netzwerkzeugs eignen.
-
schoppenhauer schrieb:
Und... um mich selber zu Zitieren:
schoppenhauer schrieb:
Ja. Genau das ist es, was ich will. Ich werd mal mein Glück damit versuchen, ansonsten frag ich einfach nochmal nach. Danke.
Bitte lass das. Du hast in dem Posting mehrfach bewiesen, dass Du überhaupt keinen Plan von C++ hast, noch dazulernen möchtest. Dafür kennst Du aber die Java Marketing Broschüren auswendig. Damit kannst Du jeden Abteilungsleiter beeindrucken, der genausowenig Plan hat. Ich würde aber aufpassen, wenn Du genausoviel Glück wie heute hast, gerätst wieder an den Richtigen und hinterläßt einen ähnlichen Eindruck.
Wer Interfaces mit Funktionspointern gleichsetzt und auch noch glaubt, dabei was kleveres zu sagen, der sollte besser in seiner Java-Welt bleiben. In C++ sollte man doch wissen, was man tut - wenigstens halbwegs. Interfaces sind in C++ mit abstrakte Klassen gleichzusetzen, die mit ausschließlich mit rein virtuellen Funktionen bestückt sind. Der Umgang mit C++-Interface ist identisch zu Java. Also genauso ästhetisch oder eben nicht, wie immer Du es wünschst. Funktionspointer sind instanzabhängig, nicht typabhängig - das nur zu Deiner Information.
Ich weiß, dass man mit Java sein Geld verdienen kann, ich bin selber zufällig selber Informatiker inkl. Diplom. Ich habe Java gelernt und Projekte damit progammiert. Seitdem streike ich, wenn's um Java geht.
Und wie es der Zufall will: mein Hauptgebiet ist witzigerweise Compilerbau und Sprachdesign, ich entwickle selber eine Programmiersprache. Dafür untersuche ich auch vorhandene Programmiersprachen, um Fehler zu identifizieren und nicht zu wiederholen.
Zum Thema Konsequenz überzeugt mich C++ nicht, weil es C mitschleift, die inzwischen 34 Jahre alt ist. Aber Java fährt so dermaßen voll gegen die Wand, da Java die Chance hatte vieles besser machen zu können und baute stattdessen Einschränkungen und zusätzliche Fehler ein. Java ist grade mal 10 Jahre alt - oder 15, wenn man Oak dazuzählt. Ich habe mich darüber anderswo schonmal ausgelassen. Über den Sinn oder insbesondere den Unsinn der Garbage Collection äußere ich mich auch nochmals, wenn meine Sprache fertig ist (absichtlich ohne Garbage Collection).Bitte werde glücklich mit Java, denn mit der Einstellung kannst Du mit C++ nicht glücklich werden. C++ lernt man auch nicht mal eben so, man guckt da nicht mal eben so rein, selbst wenn man Java bereits Jahre gut kann, hat man beim Umstieg auf C++ noch vieles dazuzulernen. Selbst wenn man C++ bereits Jahre gut kann, wird man immer wieder erstaunt sein, was alles möglich ist. Vielleicht schaust du Dir C# an, vielleicht ist das eher was für Dich.
Schönes Leben noch.
Edit: da war noch was...
schoppenhauer schrieb:
mir nicht erst noch hunderte sinnloser Fehlermeldungen über irgendwelche Fehler gibt, die von irgendwelchen "Sonderfällen" der Syntax herrühren, die meistens jeglicher Logik widerstreben.
Ich weiß, dass man in Java schon einen Schritt in diese Richtung unternommen hat. Ich weiß aber auch, dass als ich mit C anfing ich manchen "Sonderfall" nicht sofort verstanden habe.
Der Witz an der Sache ist, dass Java die syntaktisch zweifelhaften Sonderfälle mit übernommen hat. Von daher wäre ich mal interessiert, welche "Sonderfälle" Du gefunden haben willst.
-
Also wirklich. So unverfrohren unverschämt zu posten auf eine simple Frage nach dem Einsatzgebiet von Java. Wahrscheinlich bist du selber in diesem Forum ein Mod, jeder normale Mod hätt dich wegen sowas schon längst verwarnt. KEIN MENSCH hat dich hier nach deiner Meinung zu C++ gefragt - ok, auch mich hat kein Mensch nach meiner Meinung zu Java gefragt, aber im Gegensatz zu Dir hab ich auch nur beiläufig erwähnt, dass es EINIGE Sachen an Java gibt, die besser sind als an C++. Ich habe am Anfang nichtmal was von VIELEN gesagt. Dass du denkst, dass es die nicht gibt, ist ok, beziehungsweise mir absolut egal. Ich wollte auch keine Diskussion anzetteln, und habe die auch durch meinen zweiten Post SICHER nicht herausprovoziert - ich hab das bewusst vorsichtig formuliert, und hauptsächlich auf Reflections bezogen, da ich n00bz wie dich kenne. Dass du dich gleich persönlich angegriffen fühlst könnte ich ja nicht wissen - und mein weiterer Post danach war nur eine Antwort auf die Verbissenen Ansichten der Leute, die geawt haben.
Xin schrieb:
Bitte lass das. Du hast in dem Posting mehrfach bewiesen, dass Du überhaupt keinen Plan von C++ hast, noch dazulernen möchtest. Dafür kennst Du aber die Java Marketing Broschüren auswendig. Damit kannst Du jeden Abteilungsleiter beeindrucken, der genausowenig Plan hat. Ich würde aber aufpassen, wenn Du genausoviel Glück wie heute hast, gerätst wieder an den Richtigen und hinterläßt einen ähnlichen Eindruck.
Ich habe noch nie eine Java Marketing Broschüre gesehen ehrlichgesagt. Das werd ich auch nicht. Und ich bin auch kein Herr Von und Zu Diplom-Informatiker (jedenfalls bisher nicht), ich progge eigentlich hauptsächlich wenn ich ein konkretes Problem habe, das ich lösen will, etc.. Ich hab aber auch schon "größere" Sachen mit Java programmiert, also jedenfalls für meine Verhältnisse größere Sachen - dazu gehört auch eine PostScript-Engine (die ich aus Zeitmangel allerdings leider nie richtig fertiggeschrieben habe), die aber soweit recht schnell funktioniert hat.
Euch super-progger kenn ich schon... Sobald man mal irgendwas schlecht findet, was gehen die "Heiligen Gepflogenheiten der Programmierung" verstößt, reicht das schon als Beweis aus, dass man keine Ahnung hat. Das ist ja auch viel leichter, als es vielleicht einzusehen...Xin schrieb:
Wer Interfaces mit Funktionspointern gleichsetzt und auch noch glaubt, dabei was kleveres zu sagen, der sollte besser in seiner Java-Welt bleiben.
Und wer nicht richtig lesen kann, der sollte nicht in Foren posten. Es ging um Callbacks. Das ist der einzig sinnvolle Grund, Funktionspointer zu benutzen. Und er ist nicht sehr elegant.
Xin schrieb:
Und wie es der Zufall will: mein Hauptgebiet ist witzigerweise Compilerbau und Sprachdesign, ich entwickle selber eine Programmiersprache.
Und darauf auch noch stolz sein??? Die "Theorien" des Compilerbaus finde ich sehr... merkwürdig... um nicht sogar zu sagen, dämlich. Das ist nur Gedummschwätze von Sachen, die sowieso offensichtlich sind... Außerdem: Das LETZTE was die Welt braucht ist noch eine Programmiersprache.
Xin schrieb:
Bitte werde glücklich mit Java, denn mit der Einstellung kannst Du mit C++ nicht glücklich werden.
Ok, du hast mich überzeugt: Ich werde bei Java bleiben.
Trotzdem nochmal Danke für die schnelle Antwort auf die Frage nach den dynamischen Libs. Es ist schön, dass es auch anständige Menschen gibt.
-
schoppenhauer schrieb:
Mich wundert ehrlichgesagt (ich hab ja auf diversen Java-Foren schon posts von diversen C++-Trollen gesehen), dass die meisten Java-Befürworter eher aufgeschlossen sind, und auch die Nachteile von Java sehen - aber eben auch Nachteile von C/C++, während die C/C++-Coder immer verbissen darauf bestehen, dass C/C++ ja soviel besser ist als Java.
Ich habe ja schon erwähnt, daß meiner Ansicht nach C++ besser ist als Java und möchte hier die Diskussion nicht noch weiter anheizen, auch wenn es mir in den Fingern juckt, aber eines möchte ich doch korrigieren: Auch wenn es oft erwähnt wird, gibt es keine Sprache C/C++. Ich bestehe darauf, C++ zu programmieren. C ist eine völlig andere Programmiersprache, die wirklich anfällig für Bufferüberläufe, Speicherlecks und ähnliche interessante Dinge ist. Wenn man C++ korrekt verwendet sind diese Probleme weitestgehend Vergangenheit. Der Destruktor ist nicht nur ein Ersatz für den Garbage-collector, sondern eines der leistungsfähigsten Hilfsmittel, die ich in Java schmerzlich vermisse. (Tschuldigung - ich hör schon auf)
Tntnet
-
Im Gegensatz zu Xin postest du das aber wenigstens anständig und ohne andere Personen als dumm zu bezeichnen. Obgleich ich keine Diskussion anzetteln wollte, bin ich dieser auch nicht abgeneigt, hat doch jeder das Recht auf seine Meinung, und ich habe auch nicht erwartet, dass ich auf einem C++-Forum viele Java-Befürworter finde.
Falls du noch lust hast
:
Desweiteren hab ich auch nichts gegen Destruktoren, sie täten Java auch als zusätzliches Hilfsmittel gut, um etwas weniger RAM zu brauchen. Aber leider - viele C++-Programme sind da nicht optimal geschrieben, und führen keine Destruktoren aus. Sie geben also Speicher, den sie eigentlich nicht mehr brauchen, nicht frei. Für sowas ist Garbage-Collecting ideal. Das wäre möglicherweise eine optionale Erweiterung für C++, die Sinn ergäbe.
Ich verstehe sowieso nicht, warum die Java VM teilweise so dermaßen verschwenderisch mit Ressourcen umgeht, obwohl dies garnicht notwendig wäre. Man denke nur an Swing, das meiner Meinung nach eine ziemlich schwachsinnige API ist (und wohl nicht zuletzt deswegen durch SWT langsam ersetzt wird).
Wie dem auch sei. Ich habe halt z.B. ein paar sehr merkwürdige Dinge über C++ gelesen und ausprobiert. In einem der Tutorials, dies hier zum Download gibt, steht:
Werden aber in abgeleiteten Klassen Methoden definiert, die zwar den gleichen Namen aber eine andere Parameterliste wie in der Basisklasse haben, so wird diese Methode nicht -- wie man erst annehmen könnte -- überladen, sondern die Methode der Basisklasse ist nicht mehr verfügbar: sie wird verdeckt und kann nur noch über den Scope-Operator :: angesprochen werden.
Ich habe das ausprobiert... Und... Nunja... Es stimmt. Und das finde ich sehr seltsam. Ich sehe einfach keinen plausiblen Grund dafür. Und man kann diese Funktionen nichtmal außerhalb der Klasse ansteuern, also nichtmal in einer Instanz.
Und: was ich mich noch frage: Wie wird in C++ sichergestellt, dass keine zwei Klassen denselben Namen haben? Bei Java wird dies durch die Coding Convention sichergestellt, die z.B. besagt, dass das Package eines Herstellers immer mit der umgekehrten URL anfangen muss.
Außerdem: Schaut euch mal diesen Code an:
#include <iostream> using namespace std; void zeiger ( int ); void zeiger ( char ); void func ( void Zeiger ( int ) ); void func ( void Zeiger ( char ) ); int main () { func(zeiger); return 0; } void zeiger ( int i ) { cout << i << endl; } void zeiger ( char i ) { cout << (int) i << endl; } void func ( void Zeiger ( int ) ) { Zeiger(2); } void func ( void Zeiger ( char ) ) { Zeiger(3); }
Man KANN das auflösen durch eine typedef-klausel. Aber dann wird es SEHR unübersichtlich. Im Java würde man das mit Methods machen... Da gäbe es keine Probleme.
-
schoppenhauer schrieb:
Wie dem auch sei. Ich habe halt z.B. ein paar sehr merkwürdige Dinge über C++ gelesen und ausprobiert. In einem der Tutorials, dies hier zum Download gibt, steht:
Werden aber in abgeleiteten Klassen Methoden definiert, die zwar den gleichen Namen aber eine andere Parameterliste wie in der Basisklasse haben, so wird diese Methode nicht -- wie man erst annehmen könnte -- überladen, sondern die Methode der Basisklasse ist nicht mehr verfügbar: sie wird verdeckt und kann nur noch über den Scope-Operator :: angesprochen werden.
Man kann aber zusätzlich die verdeckte Methode mit einer using-Klausel wieder verfügbar machen, und somit auch auf die geerbte Methode ohne Scope-Operator zugreifen.
Man KANN das auflösen durch eine typedef-klausel. Aber dann wird es SEHR unübersichtlich. Im Java würde man das mit Methods machen... Da gäbe es keine Probleme.
Das kann man mit Templates in C++ noch viel flexibler machen, dann ist man sogar nicht mehr nur auf Funktionszeiger beschränkt sondern kann auch Funktoren benutzen.
-
Was sind Funktoren?
-
schoppenhauer schrieb:
Wahrscheinlich bist du selber in diesem Forum ein Mod, jeder normale Mod hätt dich wegen sowas schon längst verwarnt.
Zur Info: Ich bin kein Moderator.
schoppenhauer schrieb:
...da ich n00bz wie dich kenne. Dass du dich gleich persönlich angegriffen fühlst könnte ich ja nicht wissen
Interessante Zusammenstellung.
schoppenhauer schrieb:
Und ich bin auch kein Herr Von und Zu Diplom-Informatiker (jedenfalls bisher nicht)
Der Herr von und zu ist gerne bereit Fragen zu beantworten. Beim Aufstellen von Vorurteilen gegenüber C oder C++ macht der Herr von und zu allerdings darauf aufmerksam, dass dies nicht sonderlich auf solides Grundwissen des Vorurteilsträgers schließen läßt.
schoppenhauer schrieb:
Euch super-progger kenn ich schon... Sobald man mal irgendwas schlecht findet, was gehen die "Heiligen Gepflogenheiten der Programmierung" verstößt, reicht das schon als Beweis aus, dass man keine Ahnung hat. Das ist ja auch viel leichter, als es vielleicht einzusehen...
Du kennst Java und 'uns Super-Progger', aber kein C++.
Was die "Heiligen Gepflogenheiten der Programmierung" angeht, bin ich eher bekannt, diesen eher kritisch gegenüber zu stehen. Ansonsten wäre ich vermutlich dem Java-Hype hinterhergelaufen. Ich hab's ausprobiert - man will ja nicht dumm sterben - und kam zu C++ zurück.schoppenhauer schrieb:
Xin schrieb:
Wer Interfaces mit Funktionspointern gleichsetzt und auch noch glaubt, dabei was kleveres zu sagen, der sollte besser in seiner Java-Welt bleiben.
Und wer nicht richtig lesen kann, der sollte nicht in Foren posten. Es ging um Callbacks. Das ist der einzig sinnvolle Grund, Funktionspointer zu benutzen. Und er ist nicht sehr elegant.
Findest Du nicht, dass ein Beweis von Unkenntnis ausreicht? Dir hat ein C++-Programmierer, noch dazu einer, der in der Informatik ein Diplom hat, also zumindest ein bißchen mehr Ahnung hat, als Du, der grade in C++ einsteigen möchte, gesagt, dass Interfaces etwas anderes als Funktionspointer sind. Ich habe Dir sogar gesagt, wo der Unterschied zwischen Funktionspointern und abstrakten Klassen (Interfaces) liegt.
Du wirfst mir vor, dass ich nichts einsehen will...? Gib mir einen Grund, Dich und Deine Fragen ernst zu nehmen.schoppenhauer schrieb:
Xin schrieb:
Und wie es der Zufall will: mein Hauptgebiet ist witzigerweise Compilerbau und Sprachdesign, ich entwickle selber eine Programmiersprache.
Und darauf auch noch stolz sein??? Die "Theorien" des Compilerbaus finde ich sehr... merkwürdig... um nicht sogar zu sagen, dämlich. Das ist nur Gedummschwätze von Sachen, die sowieso offensichtlich sind... Außerdem: Das LETZTE was die Welt braucht ist noch eine Programmiersprache.
<°)))><
schoppenhauer schrieb:
Xin schrieb:
Bitte werde glücklich mit Java, denn mit der Einstellung kannst Du mit C++ nicht glücklich werden.
Ok, du hast mich überzeugt: Ich werde bei Java bleiben.
Danke.
-
schoppenhauer schrieb:
Was sind Funktoren?
Objekte die den ()-operator definieren.
Desweiteren hab ich auch nichts gegen Destruktoren, sie täten Java auch als zusätzliches Hilfsmittel gut, um etwas weniger RAM zu brauchen. Aber leider - viele C++-Programme sind da nicht optimal geschrieben, und führen keine Destruktoren aus. Sie geben also Speicher, den sie eigentlich nicht mehr brauchen, nicht frei. Für sowas ist Garbage-Collecting ideal. Das wäre möglicherweise eine optionale Erweiterung für C++, die Sinn ergäbe.
Viele C++-Programme sind von Anfängern geschrieben und rufen so den Destruktor nicht auf. Wenn diese Anfänger nun in Java programmieren klappt alles weil es ja die Garbage-Collection gibt. Also ist C++ nicht für Anfänger geeignet und Java schon??? Nur weil es Leute gibt, die mit C++ nicht umgehen kann, ist das kein Nachteil für C++. Diese Erweiterung ergibt überhaupt keinen Sinn. Die Anfänger, die nicht mit C++ umgehen können und ihren Speicher vergessen, sollen doch zu Java gehen.
Und auch wenn Java bald Templates hat: C++ wird auch bald wieder erweitert (variable Parameteranzahl). Alles entwickelt sich, doch momentan hat Java einfach keine Templates.
mfg.
-
Leute wie dich braucht die Welt!
(Mein letztes Wort in diesem Thread - jetzt wirds mir zu dumm. Gibts denn in diesem Forum keine Mods?)
(War @Xin)
-
schoppenhauer schrieb:
Leute wie dich braucht die Welt!
(Mein letztes Wort in diesem Thread - jetzt wirds mir zu dumm. Gibts denn in diesem Forum keine Mods?)
(War @Xin)Dein erster Satz ist total sinnlos, zeigt nur, dass du anscheinend nicht bereit bist zu diskutieren.
Und ein "mir wirds zu dumm" ist einfach nur dumm! Keine Begründung oder Argumentation!
Alles in allem versuchst du dich nur zu verdrücken, weil du nicht fähig bist deinen Standpunkt zu vertreten.
Und ich finde nicht ein Mod sollte hier was gegen Xin tun, er hat nichts gemacht. Du hast ihn als noob bezeichnet!
Und jetzt der Hammer:schoppenhauer schrieb:
Im Gegensatz zu Xin postest du das aber wenigstens anständig und ohne andere Personen als dumm zu bezeichnen.
Also bezeichnet Xin andere Leute als dumm und das magst du nicht? Okay, ist ja verständlich. Aber wie rechtfertigst du dann deinen Abschiedsgrund: "jetzt wirds mir zu dumm." Damit beschimpfst du hier auch alle als dumm!
-
Anscheinend will man hier die Disku unbedingt weiterführen. Dabei wollt ich eigentlich garkeine anzetteln. Ich betone NOCHMALS dass mein einziges Begehr hier war einen Ersatz für Reflections in Java zu finden. Der Grund für die Diskussion ist lediglich dass kein Mensch hier zugeben will, dass einiges in Java einfach besser gelöst ist, als in C++. Und anscheinend nicht einmal, dass es Dinge an C++ gibt, die man verbessern könnte.
Hier scheinen sich einige Leute gerne wichtigzumachen...
Frage: Bist du zufällig Xin selber, der sich hier nur nicht eingeloggt hat?Ich habe HINREICHEND Begründungen angegeben, die Vorteile von Java gegenüber C++ sind. Ich KANN meinen Standpunkt vertreten - und das hab ich auch gezeigt.
Abgesehen von dem Geschwindigkeitsproblem (das sich im Übrigen dank GCJ zur Not lösen lässt - es ist ein Problem des Compilers und nicht der Sprache selber) sind die meisten Punkte hier sowieso Ansichtssache gewesen.Ich habe Xin btw erst als n00b bezeichnet nachdem er ausfallend wurde.
Der Satz "Leute wie Dich braucht die Welt!" war eine Ironie und ist als direkte Beleidigung gegen Xin zu verstehen. Ich habe DREIMAL versucht wieder freundlich zu sein, anscheinend wollte das Xin aber nicht. Drum hab ich mich in diesem Post mal auf sein argumentatives Haudrauf-Niveau begeben.
"Mir wird es hier zu dumm" bezog sich allerdings auf die sinnlose Diskussion hier, die Xin veranstaltet. Die anderen Leute die hier gepostet haben haben wenigstens ein wenig Kultur beim Posten. Ich habe keine Lust mir den Schmarrn von Xin hier noch länger anzuhören. Drum hab ich auch eingestellt, dass ich bei Antworten hier nicht mehr benachrichtigt werde. Leider find ich keine Möglichkeit, meinen Account auf diesem Forum zu löschen. Aber ist ja egal.
Um Xin's Worte zu benutzen:
Schönes Leben noch.
-
schoppenhauer schrieb:
Anscheinend will man hier die Disku unbedingt weiterführen. Dabei wollt ich eigentlich garkeine anzetteln.
So, please, don't feed the trolls.
@Moderator: Bitte Thread schließen.
schoppenhauer schrieb:
Frage: Bist du zufällig Xin selber, der sich hier nur nicht eingeloggt hat?
Nopes.
schoppenhauer schrieb:
Der Satz "Leute wie Dich braucht die Welt!" war eine Ironie und ist als direkte Beleidigung gegen Xin zu verstehen.
Danke für den Hinweis mit der Ironie. Ich hätte es beinahe falsch verstanden.
schoppenhauer schrieb:
Leider find ich keine Möglichkeit, meinen Account auf diesem Forum zu löschen.
Ich weiß auch nicht, wie man sich aus dem Forum wieder austrägt. Sollte das ein Problem für Dich darstellen, bin ich sicher, dass die Moderatoren oder Admins Dir gerne weiterhelfen.
-
schoppenhauer schrieb:
Im Gegensatz zu Xin postest du das aber wenigstens anständig und ohne andere Personen als dumm zu bezeichnen. Obgleich ich keine Diskussion anzetteln wollte, bin ich dieser auch nicht abgeneigt, hat doch jeder das Recht auf seine Meinung, und ich habe auch nicht erwartet, dass ich auf einem C++-Forum viele Java-Befürworter finde.
Falls du noch lust hast
:
Desweiteren hab ich auch nichts gegen Destruktoren, sie täten Java auch als zusätzliches Hilfsmittel gut, um etwas weniger RAM zu brauchen. Aber leider - viele C++-Programme sind da nicht optimal geschrieben, und führen keine Destruktoren aus. Sie geben also Speicher, den sie eigentlich nicht mehr brauchen, nicht frei. Für sowas ist Garbage-Collecting ideal. Das wäre möglicherweise eine optionale Erweiterung für C++, die Sinn ergäbe.
Hi schoppenhauer,
danke für die Blumen
Ich hoffe, daß Du Dich von solchen persönlichen Angriffen doch nicht verscheuchen läßt. Ich finde es sehr erfrischend, gepflegt über Java kontra C++ zu debattieren.
Vielleicht liest Du ja doch noch diesen Kommentar. Gerne würde ich noch was über die Vorteile von Destruktoren sagen.
Destruktoren geben nicht nur Speicher frei, sondern können beliebige Resourcen frei geben. Da ich viel mit Datenbanken zu tun habe, nehme ich gerne eine Transaktion als Beispiel. Ich habe eine Datenbankbibliothek, in der ich ein Objekt vom Typ Transaktion definiere. Der Destruktor führt automatisch ein Rollback durch, wenn nicht vorher explizit ein Commit aufgerufen wurde. Da brauche ich kein finally-Block, der schon mal vergessen werden kann. Und das ist insbesondere bei einem Connectionpool fatal. Man stelle sich einmal vor, in einem Pool sind Connections, die eine fehlgeschlagene Transaktion halten:(
Weitere Kandidaten für Destruktoren sind Filedescriptoren, bzw. Sockets oder Shared libraries (womit wir wieder beim Ursprünglichen Thema sind).
Ich habe in meiner Bibliothek cxxtools (http://www.tntnet.org/cxxtools.hms) eine Klasse cxxtools::dl::Library. Diese hält eine Referenz auf eine shared library und entlädt sie automatisch, wenn die letzte Referenz gelöscht wird.
Java hat den Vorteil einer sehr umfangreichen Standardbibliothek, was aber streng genommen kein Sprachfeature ist.
Dein Argument, daß ich einfach mit gcj nativen code erzeuge und damit die gleiche Geschwindigkeit erreiche, wie C++ stimmt so nicht so ganz. Es gibt in C++ viele Sprachkonstrukte, die sehr maschinennah sind und damit sehr einfach in optimalen Code gewandelt werden können. Ich kann beispielsweise mit der Sprache Java einfach nicht bestimmen, ob ein Objekt auf dem Stack oder auf dem Heap angelegt werden soll. Da hilft auch ein gcj nicht. Oder nehmen wir so Sachen wie std::copy. Das ist eine Template-Funktion, die im Falle von einfachen Datentypen durch ein memcpy abgebildet wird und dadurch optimal durch entsprechende Maschinenbefehle ausgeführt werden kann. Das kann ich mit Java einfach nicht formulieren. Da fehlen mir die Ausdrucksmittel.
In Sachen Geschwindigkeit gibt es allerdings dennoch eine Sache, wo Java punkten kann. Und zwar wird ja der Maschinencode zur Laufzeit generiert und dadurch kann der Code für den aktuellen Prozessor optimiert werden. Zur Optimierung stehen noch reale Zugriffsmuster zur Verfügung, die bei C++ nur durch force-feedback-compilierung erreicht werden können, was aber erheblichen Entwicklungsaufwand bedeutet. Da kann es im Einzelfall durchaus Geschwindigkeitsvorteile geben.
Tntnet
-
schoppenhauer schrieb:
(Mein letztes Wort in diesem Thread - jetzt wirds mir zu dumm. Gibts denn in diesem Forum keine Mods?)
Doch, aber auch die sollen gerüchteweise manchmal an Orten mit eingeschränkter Internet-Konnektivität unterwegs sein.
Und manche davon glauben angeblich sogar, dass große Jungs (und Mädels) eigentlich keine Babysitter brauchen sollten, aber offensichtlich bin ich da etwas zu naiv. Nachdem in diesem Thread nichts mehr weitergeht, mach ich einfach mal zu. (Das ist übrigens ein besseres Kriterium beim Schließen, als die Tatsache, dass Du keine Lust mehr auf den Thread hast.)
Wer seinen Account löschen lassen möchte, weil ich zu schnell oder zu langsam reagiert habe oder irgendjemand etwas Böses gesagt, mit Sand geworfen oder das Lieblings-Spielzeugauto des Nachbarn kaputtgemacht hat, kann sich selbstverständlich an Marc++us wenden.
edit:
tntnet: Tut mir leid, dass ich hier unterbreche, wenn Du gerne weiterdiskutieren möchtest, dann schreib einfach eine Mail, ja?