ein object auf die festplatte schreiben?



  • Dravere schrieb:

    ...
    Allerdings ja, ich würde mit dir auch übereinstimmen, dass Java extrem abhängig von einer Maschine ist...

    Genau das meine ich ja auch die ganze Zeit ... nur dass ich das anscheinend bis auf Badestrand niemandem vermitteln konnte.

    Dravere schrieb:

    ...

    Simon2 schrieb:

    - noch, wo es auf eine Plattform festgelegt sei.

    Das hat niemand gesagt, dass hast du irgendwie geschlussfolgert 😉

    Grüssli

    Das habe ich auch nicht geschlussfolgert, sondern in den Zusammenhang Deiner Differenzierung gestellt:

    Dravere schrieb:

    @Simon2,
    Verwechselst du nicht zwei Dinge?
    Der Maschine nah <-> An die Maschine gebunden
    ...

    Meine Aussage: Egal, um welche Eigenschaft es geht (maschinennah, maschinengebunden) -> ich sehe sie nicht bei C++.

    Aber ich kann mich ja einfach mal festlegen: In meinen Augen ist Java deutlich maschinengebundener (an die JavaVM) als C++ (an irgendeine Plattform).
    Und sie auch ist maschinennäher (an der JavaVM), weil die Sourcestruktur in jedem Fall sehr der Binärstruktur der Maschine (JavaVM) ähnelt ... wo es in C++ lediglich ermöglicht wird.

    Natürlich ist es nicht möglich, mit Java auf die "darunterliegende Maschine" (x86) zuzugreifen ... ebensowenig man mit C++ EPROMS brennen kann. 😉

    Ich glaube, die grundlegende Uneinigkeit besteht darin, welche Maschine man meint, wenn man von Maschinennähe und -abhängigkeit redet.

    Gruß,

    Simon2.



  • audacia schrieb:

    ..Es war eher im Sinne von "das ist alles" gemeint. Für Diskussionen bin ich meistens offen :)...

    So habe ich es von Dir auch verstanden, weil ich Dich hier aus Diskussionen kenne....
    ... ich kenne nur leider (eher in anderen Foren) Andere, die das tatsächlich so wie von mir skizziert verwenden (auch gerne als "FAKT" o.ä. tituliert).

    Danke nochmal für die Klarstellung.

    Gruß,

    Simon2.



  • @Simon2: Deine Definition von maschinennah ist mir noch nie begegnet. Hast du dazu noch irgendwelche Quellen außerhalb dieses Forums, (die sogar auch noch sagen das Java maschienennäher ist)?
    Das Dravere schreibt ist das was auch ich unter maschinennah verstehe.

    Dravere schrieb:

    Simon2 schrieb:

    - weder, wo C++ maschinennah

    Maschinen nah ist es insofern, da du mit "rohem" Speicher herumspielen kannst. Programmiert wird mit sehr Maschinen nahen Konstrukten. Zeiger, Funktionszeiger, Bytestrukturen usw. du kommst mit allen diesen Sachen in C++ deutlich stärker in Berührung, als es zum Beispiel in Java der Fall ist, da Java dir solchen Zugriff nicht gewährt. Java hält dich von der Maschine fern 😉

    Und das Java genau zu den JVMs passt, ist irgendwie logisch, weil die JVMs für Java geschrieben wurden.



  • hahaha. schrieb:

    ...Und das Java genau zu den JVMs passt, ist irgendwie logisch, weil die JVMs für Java geschrieben wurden.

    Zu welchen Maschinen passt denn C++ Deiner Meinung nach?

    Gruß,

    Simon2.



  • Zu welchen Maschinen passt denn C++ Deiner Meinung nach?

    hihi, streng genommen zu seiner Runtime ... also zur runtime die mit dem compiler mitgeliefert wurde. wobei es mehrere runtimes sein koennen (multithreaded, 64bit support ... etc) und es den spezialfall gibt, das die runtime in das binarie zugelinkt (statisch gelinkt) werden kann.

    Oder Meinst du die Sprache an sich ?

    die eigentliche Hirarchie ist doch :

    C-Runtime(BS spezifisch) + C - Interface zum OS (WinApi, Posix ..)
    C++ Runtime(Kompiler Spezifisch)
    C++ Binary

    Also laeuft C++ eigentlich auch in Maschine quasi, oder ?

    Gabs auch ned Java COmpiler ... also wo die Java binaries gleich mit ihrer runtime zusammen verpackt wurden ? waer aehnlich zum statisch gelinkten C++ Binary.

    Wobei die C++ Runtime sicher viel weniger macht, und den Titel VM sicher ned verdient ^^

    Ciao ...



  • RHBaum schrieb:

    Zu welchen Maschinen passt denn C++ Deiner Meinung nach?

    hihi, streng genommen zu seiner Runtime ...

    int main() {   return 3; }
    

    Welche Runtime?

    RHBaum schrieb:

    ...Oder Meinst du die Sprache an sich ? ...

    Ich spreche von der Sprache ... so wie hahaha..
    Und zu der scheint ja seiner Meinung nach ganz selbstverständlich eine "Maschine zur Sprache" zu geben (natürlich ohne, dass die Sprache mit dieser Sprache "verheiratet" sei ...).

    Gruß,

    Simon2.



  • Also ich meint nur von den abhaengigkeiten her bezogen ...

    Der hauptunterschied sollt eh klar sein ... C++ kompiler erzeugen Maschinencode, der direkt auf der CPU laufen kann ...
    Java BCode kann nur in der JVM laufen ...

    Somit stellen die runtimes (c++) nur gewisse Funktionalitaet und schnittstellen an externe sourcen bereit ...

    Welche Runtime?

    Ja zeig mir deine Compiler und linkereinstellungen den compiler, den nutzt ^^
    Wie gross ist denn dein binary geworden ?
    Soll das eigentlich nen C oder nen C++ Programm sein ? Uebersetzt das im C oder C++ Mode ?

    Und zu der scheint ja seiner Meinung nach ganz selbstverständlich eine "Maschine zur Sprache" zu geben (natürlich ohne, dass die Sprache mit dieser Sprache "verheiratet" sei ...).

    Mit der Maschine meinst Du ... ?

    IMHO so ganz unrecht hat er in der Konsequenz auch ned.
    C und C++ ham standards. Um die Gegebenheiten eines BS / Kernels an die Standards anzupassen brauchst immer so was wie eine runtime. Oder was glaubst wer Dir Stdin Stdout ... FILE ... etc zur verfuegung stellt.
    Fuer den User ist der Unterschied zwischen der VM und der Runtime gar ned so gross.... wenn man mal von der Performance und dem Handling(plattformabhaengigkeit) absieht.

    Ciao ...



  • RHBaum schrieb:

    Der hauptunterschied sollt eh klar sein ... C++ kompiler erzeugen Maschinencode, der direkt auf der CPU laufen kann ...
    Java BCode kann nur in der JVM laufen ...

    C++-Compiler könnten auch Bytecode erzeugen, Java-Bytecode kann direkt auf einem Prozessor laufen (*klick*, ist insofern auch "Maschinencode").

    Der Unterschied ist imo eher, dass die Form des Java-Bytecodes vorgegeben ist, die Form des C++-Outputs nicht.



  • @Simon2: Das ist das Konzept von Java, dass es auf einer VM läuft. Das hat aber nichts mit maschinennah zu tun, oder wo ist die Quelle die maschinennah so beschreibt wie du? (Die Frage hast du oben geschickt überlesen.) Oder ist dein "verheiratet" jetzt doch wieder nicht maschinennah?



  • 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.


Anmelden zum Antworten