ein object auf die festplatte schreiben?
-
Uff ... Jetzt gehts wieder um den Wissenskampf. Ich hab die Seiten nur mal eben ganz schnell überflogen und ich denke ein Compiler passt net zu dem Thema Objekte. Da ich jetzt alles nur überflogen habe und nicht weiß ob er schon seine Antwort bzw. einen Link bekommen hab, kriegt er von mir auch nochmal was.
Ich denk mal, dass wonach du suchst, ist die Serialisation.
http://www.codesynthesis.com/products/xsde/c++/serializer/
http://www.osix.net/modules/article/?id=348
Ob das gute Beispiele sind, weiß ich nicht, aber der 1. Link sieht vielversprechend aus und ist der 1. Link in Google und kenne es nur aus C#.mfg
-
hihi, streng genommen zu seiner Runtime
Nö C++ gibts nicht nur hosted sondern auch freestanding. Bei letzterem gibt es zumindes keine Standardbibliothek mehr.
-
http://www.c-plusplus.net/forum/viewforum-var-f-is-3.html
Und macht ein Diskussions Post in C++ auf.
Am besten wird noch ein Off-Topic für so sinnlose Diskussionen erstellt. Ich dachte eigentlich immer die Mitglieder dieses Forum haben eine gewisse Reife, doch mit solchen Diskussionen und Posts die nicht zu dem Thema gehören, in denen es darum geht seine Dominanz in der Kategorie Wissen und seine allgemeine Intelligenz unter Beweiß zu stellen, zeigen dann doch das manche einfach nicht nachgeben können. Ihr seid doch alle so klug, wieso handelt ihr dann nicht nach dem guten alten Motto "der Klügere gibt nach" ? Es wird sowieso wieder ein ewig langer Thread, in dem am Ende niemand mehr weiß wie der Anfang war.
-
hahaha. schrieb:
@Simon2: Das ist das Konzept von Java, dass es auf einer VM läuft....
Mehr behaupte ich auch nicht.
Dann sind wir uns im ersten Punkt schon einig.Nun zum 2.: Nach welchem Konzept läuft C++ auf welcher Maschine?
Meine These: Gibt nichts Vergleichbares. Ergo: Weniger mit Maschine Verheiratet als Java.Zum Quellensuchen bin ich gerade zu faul ... seltsamerweise teilen aber immerhin die 10 Leute (darunter mehr Javafans als C++-Fans) aus meiner Abteilung meine Ansicht.
Gruß,
Simon2.
-
RHBaum schrieb:
...Mit der Maschine meinst Du ... ?
Die selbstgesteuerte Instanz, die das Programm Schritt für Schritt abarbeitet.
Da besteht IMHO schon ein gehöriger Unterschied zwischen einer VM und einer Runtime.
Ich bin seeeehr sicher, dass in meinem Beispiel der Overhead durch OS-Startup-Code etc. erzeugt wird und ein (nicht ganz dämlich eingestellter) Linker da keine Runtime dazulinkt.Gruß,
Simon2.
-
Simon2 schrieb:
Zum Quellensuchen bin ich gerade zu faul ... seltsamerweise teilen aber immerhin die 10 Leute (darunter mehr Javafans als C++-Fans) aus meiner Abteilung meine Ansicht.
Die dass Java mit der VM verheiratet ist, oder dass Java maschinennäher als C++ ist?
-
hahaha. schrieb:
...Die dass Java mit der VM verheiratet ist, oder dass Java maschinennäher als C++ ist?
Die, dass Java stärker mit (s)einer Maschine verheiratet ist als C++ mit irgendeiner.
Gruß,
Simon2.
-
Sie hören einfach nicht auf

Ladet euch ICQ und redet doch da weiter...
-
FreakY<3Cpp schrieb:
Sie hören einfach nicht auf

Ladet euch ICQ und redet doch da weiter...Jetzt muss ich nur wegen dir noch was schreiben...

-
Da ich ja irgendwie Auslöser zu dieser Diskussion war (ich hatte ja behauptet, dass C++ Maschinennäher sei als Java), möchte ich hier mal erklären, was ich damit meine.
Ein int ist unter C++ in seiner Grösse nicht festgelegt, sondern er repräsentiert die "natürliche" Ganzzahl der verwendeten Maschine. Er ist also von der Maschine abhängig, für der das Programm übersetzt wurde. Das bezeichne ich als Maschinennah. Dahingegen ist in Java die Grösse festgelegt. Unabhängig davon, wo das Programm laufen soll. Es abstrahiert daher die Maschine. Es ist daher nicht so Maschinennah. Die VM ist nicht die Maschine. Wenn ich zum PC-Händler gehe um mir eine Maschine zu kaufen, kaufe ich keine VM sondern einen PC.
Ein anderer Aspekt ist, dass ich in C++ praktisch alles machen kann, was auf dem Computer möglich ist. Mit Java kann ich nur das machen, was die VM abstrahiert hat (von JNI mal abgesehen). So kann ich beispielsweise keine named pipes erstellen, da die API das nicht hergibt. Ich kann auch nicht auf I/O-Ports oder bestimmte Speicherstellen zugreifen. All das geht mit C++. Daher bezeichne ich wieder C++ Maschinennäher als Java.
-
FreakY<3Cpp schrieb:
Sie hören einfach nicht auf

Ladet euch ICQ und redet doch da weiter...Warum sollten wir? (mal abgesehen davon, dass ich kein ICQ hab ...)
Gruß,
Simon2.
-
Hi tntnet,
schau an - da habe ich Dich gar nicht mißverstanden, sondern sehe es tatsächlich einfach anders.

tntnet schrieb:
...Ein int ist unter C++ in seiner Grösse nicht festgelegt, sondern er repräsentiert die "natürliche" Ganzzahl der verwendeten Maschine. Er ist also von der Maschine abhängig, ....
Du meinst vermutlich (etwas präzisiert): Der Wertebereich und die interne Darstellung sind maschinenabhängig.
Nun ist die Frage, ob man diese Eigenschaften als Teil der Defintion eines int's betrachtet oder nicht. Der C++-Standard tut das nicht ... und umgeht gerade dadurch einen Plattformbezug. (ob das gut oder schlecht ist, will ich damit nicht sagen)tntnet schrieb:
...Die VM ist nicht die Maschine. Wenn ich zum PC-Händler gehe um mir eine Maschine zu kaufen, kaufe ich keine VM sondern einen PC....
Ja - und wenn ich zum Motorradhändler gehe, bekomme ich noch was ganz Anderes.

Die Tatsache, dass PC-Händler keine VMs im Sortiment haben, finde ich ein sehr schwaches Argument dafür, dass etwas, was "Maschine" heißt, keine sei.
Gegenbeispiel: Wenn ich zu einem Chipkkartenhersteller gehe und eine "Maschine" verlange, bekomme ich eine Java-VM in Chipkartenform - also sogar in Hardware.Ich habe den Eindruck, dass Du (und hahaha.) einfach Dein sehr eingeschränktes Bild von "maschine(nnah)" pflegst und zum Standard erhebst. Es gibt so unglaublich viel mehr Maschinen, die man programmieren kann als nur x86er-PCs ... und das tut man auch in C++.
Auch C++ definiert sich einen "Maschinenbegriff" (was da z.B. "Speicher" genannt wird, ist im realen Leben ein sehr komplexes und hochgradig plattformabhängiges Zusammenspiel verschiedener Hard- und Softwarekomponenten und -Schichten), nur macht er sehr viel weniger Vorgaben an eine konkrete Plattform.
Grenzen hat diese Definition natürlich trotzdem (z.B. auf Maschinen, die kein Random-Access-Memory anbieten, wird sich ein Compiler mächtig die Finger brechen müssen), aber deutlich weniger als Java, das seine Maschinendefintion explizit mitliefert.
Deswegen kann man auch in Java "...praktisch alles machen kann, was auf dem Computer möglich ist. ..." - der Computer (="Berechner") ist eben die VM.... und deswegen (weil Java eine konkrete Maschinendefintion mitliefert) nenne ich Java "maschinennäher".
Wir können uns natürlich darauf einigen: Da Binary jeder Sprache ist näher auf der Maschine, auf der es weniger Emulationsschichten benötigt.
Gruß,
Simon2.
-
Simon2 schrieb:
Die Tatsache, dass PC-Händler keine VMs im Sortiment haben, finde ich ein sehr schwaches Argument dafür, dass etwas, was "Maschine" heißt, keine sei.
Gegenbeispiel: Wenn ich zu einem Chipkkartenhersteller gehe und eine "Maschine" verlange, bekomme ich eine Java-VM in Chipkartenform - also sogar in Hardware.Nur ist es dann halt keine virtuelle Maschien mehr, sondern echte Hardware. Und das konzept von Java ist halt, dass es auf einer VM läuft und nicht auf einer Hardware die das gleiche tut. Beim C++ Standard bestehst du auf strikte Einhaltung des theoretischen Konzepts, aber bei Java ignorierst du die Konzepte.
Ich habe den Eindruck, dass Du (und hahaha.) einfach Dein sehr eingeschränktes Bild von "maschine(nnah)" pflegst und zum Standard erhebst.
Und wahrscheinlich hat auch so gut wie alle anderen. Wenn man beim Programmieren von maschinennah redet meint man die Hardware und nicht VMs. Quellen zu deiner Interpretation lieferst du ja auch nicht.
-
das "hat" im Absatz muss weg.
-
hahaha. schrieb:
Simon2 schrieb:
......eine Java-VM in Chipkartenform - also sogar in Hardware.
Nur ist es dann halt keine virtuelle Maschien mehr, sondern echte Hardware. Und das konzept von Java ist halt, dass es auf einer VM läuft und nicht auf einer Hardware die das gleiche tut...
Das ist mir neu (und da fände ich eine Bestätigung durch eine Quelle oder Jemand Anderes auch gut), dass Java-programme nicht mehr Standardkonform sind, wenn sie auf einer "JavaVM-Hardware" laufen.
Übrigens: Ein C++-Programm bleibt auch dann standardkonform, wenn man es für x86 kompiliert und sie in einer x86-Emulation auf einer PPC-Hardware (oder JavaVM-Hardware) laufen lässt.
Was ist dann unter "maschinennah" zu verstehen?Gruß,
Simon2.
-
Es gibt keine VM-Hardware.
-
hahaha. schrieb:
Es gibt keine VM-Hardware.
Habe ich auch nicht geschrieben.
Es gibt auch kein "mibrot" .... wohl aber "Salamibrot". :p

BTW: War das jetzt schon die Antwort wuf meine Frage?
Gruß,
Simn2.
-
Simon2 schrieb:
Ich habe den Eindruck, dass Du (und hahaha.) einfach Dein sehr eingeschränktes Bild von "maschine(nnah)" pflegst und zum Standard erhebst. Es gibt so unglaublich viel mehr Maschinen, die man programmieren kann als nur x86er-PCs ... und das tut man auch in C++.
Fängst Du jetzt auch noch an, persönlich zu werden. Mein Bild ist eingeschränkt, aber Deins ist es nicht
. Zufälligerweise programmiere ich normalerweise noch nicht mal auf x86.Es ist nun mal so, dass ich mit C++ einfacher auf die Hardware zugreifen kann als mit Java. Und das definiere ich als Maschinennah. Nenn es von mir aus Hardwarenah oder wie auch immer.
Wenn ich für die Ausführung eines Programmes eine Abstraktionsschicht brauche (die VM), dann ist das Programm nicht mehr so nah an der Hardware sondern es sieht eben ein abstrahiertes Modell der Hardware. Dadurch kann ich nicht so einfach direkt auf die Hardware zugreifen.
-
tntnet schrieb:
[...]So kann ich beispielsweise keine named pipes erstellen, da die API das nicht hergibt. Ich kann auch nicht auf I/O-Ports oder bestimmte Speicherstellen zugreifen. All das geht mit C++. Daher bezeichne ich wieder C++ Maschinennäher als Java.
Und wie soll das alles mit C++ gehen?
-
tntnet schrieb:
...Fängst Du jetzt auch noch an, persönlich zu werden. ...
Entschuldige ... ich meinte "eingeschränkt" nicht im Sinne von "beschränkt/dämlich", sondern wirklich nur im wörtlichen Sinne von "reduziert auf einen bestimmten Spezialfall".
Tut mir leid, wenn ich Dir da zu nahe getreten bin.
Interessanterweise habe ich jetzt gerade hier einen Kollegen getroffen, der spontan Eure Ansicht teilte und so in der Kaffeecke und face2face kann man einfach etwas besser diskutieren.
Wir sind eigentlich zu folgendem Schluss gekommen:
Die Trennung zwischen Hardware und Software bzw. "Maschine" und "Emulation/Abstraktion" ist nicht wirklich konsequent aufzulösen (jedenfalls sobald man mit Hardware mehr meint als die Kondensatorebene). Er selbst erwähnte noch Prozessoren, die selbst intern mehrere Abstraktionslevel implementierenn (die tw. sogar updatebar sind) .... dementsprechend zerfällt der Begriff "maschinennah", sobald man versucht, ihn konsequent zu definieren.
Bestenfalls kann man noch die "Schichten" bis zu Kondensator zählen und danach "maschinennäher als" definieren .... aber da tun sich dann Java und C++ nicht mehr viel.Gruß,
Simon2.