Welche Programmiersprache für das internet



  • Original erstellt von kingruedi:
    Java hat den Vorteil, dass man kein Probleme beim portieren hat

    Schon klar 🙂
    Ich wollte nur mal klarstellen, das Java ne eigene Plattform ist und nicht Plattformunabhaengig.

    Nimm zB mal ein POSIX kompatibles C Programm. Welche Probleme wirst du bei der Portierung von *BSD nach Linux haben? Keine, oder? 😉

    Man muss halt aufpassen, dass es portabel bleibt... Schau dir mal dein ESELC an. Laeuft zwar noch nicht unter Windows, aber ist am besten Weg 😉 (Der Standard rult)



  • jetzt sagt doch mal was zur seite 😉



  • @Shade
    [OT] geht es auch noch nicht mit dem ICC? 😞 Aber die GCC Ports sollten es schlucken :p

    @SuperSchlumpf
    Die Seite enthält eine grobe Einführung in die POSIX Sockets. Hat aber ne Menge an Mängel. Für den Anfang reicht es vielleicht.

    Wenn du was vernünftiges lernen willst, musst du dir das Buch "Programmieren von UNIX Netzwerken" von W. Richard Stevens kaufen. Das ist in dem Punkt das Pflicht Werk für Jeden!



  • Original erstellt von Shade Of Mine:
    **
    Ich wollte nur mal klarstellen, das Java ne eigene Plattform ist und nicht Plattformunabhaengig.
    **

    Java ist eine Programmiersprache und keine Plattform. :p 😉 Wenn überhaupt, dann kannst du die JVM als Plattform bezeichnen. Das stimmt in einem gewissen Maße. Die JVM ist eine Art virtuelle Plattform, mit deren Hilfe letztendlich von der darunterliegenden Plattform abstrahiert wird. Es ist im Prinzip eine Schicht, die zwischen der Plattform und dem Programm liegt. Allerdings ist diese "Schicht" durch die JIT-Kompilierung wohl "dünner" geworden, weshalb Java-Programme inzwischen auch schneller als früher laufen. Die JVM gibt es für eine ganze Menge realer Plattformen, ein Java-Programm kann auf allen diesen Plattformen plattformunabhängig laufen. Es gibt keine Probleme mit den Größen primitiver Datentypen,...!



  • OK, dann sagen wir die JavaVM ist eine Plattform.

    Somit ist Java nicht Plattformunabhaengig, da die Plattform Java VM (wie sie auch immer heissen mag) benoetigt wird.

    Es ist eine Moeglich, ein Programm auf vielen Systemen laufen zu lassen. C/C++ verwendet einen anderen Ansatz.



  • Welchen Ansatz verfolgt denn C++?

    [ Dieser Beitrag wurde am 23.10.2002 um 20:00 Uhr von Gregor editiert. ]



  • Original erstellt von kingruedi:
    **
    [OT]

    @SuperSchlumpf
    Die Seite enthält eine grobe Einführung in die POSIX Sockets. Hat aber ne Menge an Mängel. Für den Anfang reicht es vielleicht.

    Wenn du was vernünftiges lernen willst, musst du dir das Buch "Programmieren von UNIX Netzwerken" von W. Richard Stevens kaufen. Das ist in dem Punkt das Pflicht Werk für Jeden!**

    ahhh , sehr gut 🙂 thx, einige haben mir nun dieses buch empfohlen, muss ja echt was herhalten 🙂

    allerdings habe ich bei amazon geguckt, die rezensoren schreiben über die übersetzung und haben beispiele gegeben; das klingt übel. werde mir mal die engl. vers ansehen, hat ja gute kritiken 🙂

    THX! hast du dieses buch? wenn ja beschreib mal ein wenig worum es geht , wie es aufgebaut ist und welche beispiele es gibt 🙂



  • http://www.kohala.com/start/unpv12e.html

    schau dir die Seite an, da steht alles über das Buch



  • Original erstellt von kingruedi:
    **http://www.kohala.com/start/unpv12e.html

    schau dir die Seite an, da steht alles über das Buch**

    boarh krass , hab mir mal das Inhaltsverzeichnis angeschaut.... scheint ja recht umfassend zu sein, werde mir das dingen auf jeden fall mal ausleihen , thx für den link 🙂



  • Original erstellt von Gregor:
    [QB]Welchen Ansatz verfolgt denn C++?

    Java verlangt eine VM
    C++ verlangt einen Compiler

    Theoretisch ist es moeglich ein Programm nur durch den Compiler auf der neuen Plattform zu jagen und es ist fertig.

    Praktisch gesehen, ist es natuerlich nicht so einfach. (aber Unix <-> Windows ist durchaus nicht zu kompliziert)



  • Was habt ihr den mit immer mit Sockets ? Nimm Perl und LWP::UserAgent, damit hast Du den Bot in 10 Zeilen fertig...

    MfG
    Stefan



  • @<SaS>
    über Perl kann man sich eh streiten. Also ich mag Perl nicht besonders und kann Perl auch niemanden empfehlen. (Kann gerne ein paar Dinge zum Thema Perl mit die besprechen, dann aber in einem Extra Thread, da der hier sonst OT wird)

    Mit der entspr. Lib hat man das in C auch in 10 Zeilen gemacht.



  • Original erstellt von Shade Of Mine:
    **Java verlangt eine VM
    C++ verlangt einen Compiler
    **

    Ein Compiler auf vielen Plattformen reicht aber noch nicht aus. Wenn das Programm z.B. ein GUI hat, dann bauchst du eine Bibliothek von einem Drittanbieter. Auf die Portierbarkeit dieser Bibliothek hast du keinen Einfluss. Gleiches gilt wohl für Threads, Sockets,...! (AFAIK)

    Hinzu kommt noch, dass man wohl selbst relativ stark darauf achten muss, dass das Programm auch auf unterschiedlichen Plattformen das gleiche Verhalten zeigt. Wenn das Programm von einem 32-Bit-System auf ein 64-Bit-System portiert werden soll, dann muss man z.B. darauf achten, dass sich die geänderten Größen der primitiven Datentypen nicht negativ auswirken. Ich habe in Stroustrups Buch gesehen, dass er es empfiehlt, etwas in der folgenden Art zu machen :

    typedef int int32;
    typedef short int16;
    ...

    Aber selbst dann muss man zumindest noch an einer Stelle des Sourcecodes eränderungen vornehmen, damit es keine Probleme bei der Portierung gibt (Wenn sich die Größe von z.B. int ändert).

    [ Dieser Beitrag wurde am 24.10.2002 um 02:32 Uhr von Gregor editiert. ]

    [ Dieser Beitrag wurde am 24.10.2002 um 02:33 Uhr von Gregor editiert. ]



  • Original erstellt von Gregor:
    **Ein Compiler auf vielen Plattformen reicht aber noch nicht aus. Wenn das Programm z.B. ein GUI hat, dann bauchst du eine Bibliothek von einem Drittanbieter. Auf die Portierbarkeit dieser Bibliothek hast du keinen Einfluss. Gleiches gilt wohl für Threads, Sockets,...! (AFAIK)
    **

    Jo, man muss halt Cross Plattform Libs verwenden.

    Aber ob man sich auf einen Anbieter verlässt der die VM portiert oder einen Anbieter der die Lib portiert ist auch schon egal.

    Notfalls kann man eine Lib selber portieren, eine Java VM wohl kaum.

    Aber selbst dann muss man zumindest noch an einer Stelle des Sourcecodes eränderungen vornehmen, damit es keine Probleme bei der Portierung gibt (Wenn sich die Größe von z.B. int ändert).

    Ne, wieso? Jede Plattform hat solche typedefs. ich muss nur die eine Datei durch die neue ersetzen 😉

    Sicher, in Java ist das portieren leichter, aber es ist dennoch nicht Plattformunabhängig! (weil es die Java-Plattform (Java VM oder wie auch immer) voraussetzt!)



  • Original erstellt von <SaS>:
    **Was habt ihr den mit immer mit Sockets ? Nimm Perl und LWP::UserAgent, damit hast Du den Bot in 10 Zeilen fertig...

    MfG
    Stefan**

    perl habe ich schon von verschiedenen leuten gehört, ich mache es aber nicht, ganz einfach weil ich da erst alle grundlagen beherrschen muss, und dann erst mit sockets da anfangen kann. bei C beherrsche ich schon die nötigen grundlagen, kann also direkt mit sockets anfangen



  • Original erstellt von Shade Of Mine:
    **
    Notfalls kann man eine Lib selber portieren, eine Java VM wohl kaum.
    **

    Notfalls kannst du natürlich auch die JVM portieren! 🙂 ...die JVM Spezifikation ist offen! 😃 Zudem wird die JVM alleine von Sun schon für etwa 10 Plattformen angeboten. Hinzu kommen noch diverse JVMs von anderen Herstellern, so z.B. von Apple für den Mac.

    Wie "verfügbar" sind denn Bibliotheken für die unterschiedlichen Plattformen? Sieht das ähnlich aus?

    Ne, wieso? Jede Plattform hat solche typedefs. ich muss nur die eine Datei durch die neue ersetzen 😉

    Hmmm... genau diese eine Stelle meinte ich! 😉

    Sicher, in Java ist das portieren leichter, aber es ist dennoch nicht Plattformunabhängig! (weil es die Java-Plattform (Java VM oder wie auch immer) voraussetzt!)

    In Java muss man seine Programme garnicht portieren. Das ist der Unterschied. Man schreibt sich ein Programm und führt es unter Windows aus. Dann zieht man es sich auf nen Linuxrechner und kann es auch dort ausführen. Dann überspielt man es auf sein iBook und kann es auch da ausführen. ...und weil man es auch in der Uni auf ner Sun nutzen will, überspielt man es sich einfach auf die Sun und kann es auch da ausführen etc.

    Das ist das, was ich unter "Plattformunabhängigkeit" verstehe und genau das ist bei Java-Programmen möglich. 🙂



  • @Gregor
    Dein Programm läuft auf deinem Windows PC gut, dann willst du es auf Linux laufen lassen, da hast du aber eine veraltete VM installiert und du erhälst nur Fehler. Auf deinem EBook ist die VM zu neu und Dinge die du benutzt werden gar nicht mehr unterstützt. Und auf der SUN in der UNI ist gar keine VM drauf und du hast auch kein Root-Zugang.

    Das ist was Shade (und ich auch) meinen. Du bist von der JVM Platform abhängig, also nicht Platformunabhängig.



  • Naja! Ich habe diese Erfahrung, dass man nicht an die richtige JVM herankommt halt noch nicht gemacht. An der Uni habe ich diverse JVMs von Java 1.1 bis 1.4 zur Verfügung, Auf dem Windows-Rechner ist bei mir, wie auf dem Linux-Rechner eine JVM 1.4 drauf (...und ein iBook habe ich garnicht! :p :(). Andere Leute, die ich kenne, haben auch meistens eine JVM 1.4 auf dem Rechner. Ich sehe da also kein Problem. Wer keine passende JVM hat, der kann sich in 15 Minuten eine runterladen und installieren. ...kann man auch ein größeres C++-Programm in 15 Minuten auf eine andere Plattform portieren?! Ich glaube nicht! :p 😉



  • @Gregor
    entweder hast du den Kern meiner Aussage nicht verstanden oder du versuchst dich einfach nur dumm rumzuschiffen.

    Java ist Plattform abhängig und zwar von der JVM. Fertig aus, mehr will ich nicht sagen. Entweder du verstehst es nun, siehst es ein oder lebst weiter mit deiner Phantasie.



  • OK! Das kann man natürlich so sagen. ...trotzdem würde ich die JVM nur als "virtuelle" Plattform bezeichnen. Der Unterschied zu einer "echten" Plattform ist folgender :

    Die JVM kannst du in küzester Zeit auf den unterschiedlichsten Plattformen installieren. Man kann die darunterliegenden Plattformen aber nicht mal eben so auswechseln, nach dem Motto : Ich habe ein Windows-Programm geschrieben, habe hier aber leider nen Mac zur Verfügung, aber das macht ja nichts, da ich mir jetzt einfach mal nen neuen Windows-Rechner kaufe und den Mac wegschmeiße.

    Hmmm... vielleicht kann man sagen : Java-Programme laufen auf einer größtenteils plattformunabhängigen (Zwischen-)Plattform, da es die JVM für die verschiedensten Plattformen gibt.

    ...und bitte erzähl mir nichts von irgendwelchen Phantasien : Ich erzähl dir auch nicht, wie lächerlich die Portabilität von C++-Programmen ist, was man ja an dem einen Programm aus dem anderen Thread gesehen hat : Man nimmt nen anderen Compiler und schon geht garnichts mehr. Da müssen sogar Funktionen umbenannt werden, weil irgendein Compiler wohl mal wieder nicht standardkonform genug war. Ich stelle ja noch nichtmal die Geschwindigkeit von C++-Programmen in Frage, obwohl das C++-Vergleichsprogramm in dem anderen Thread mehr als die 5-fache Laufzeit des Java-Programms hatte. Ich stelle auch nicht die Fehleranfälligkeit von C++-Programmen in Frage, obwohl selbst bei diesem 50-Zeilen Programm diverse male ein Programm mit falschem Output kam. :p SCNR 🙂


Anmelden zum Antworten