Wird JAVA C/C++ vom Markt verdrängen?



  • Gast_neu == Troll des Jahres 😃 👍



  • gurkenesser schrieb:

    sag mal, gast (threadersteller), willst du uns eigentlich verarschen? du bist niveauloser als sat1. in einem c++ forum und einem java forum den gleichen thread zu starten, und dann auch noch fremde antworten aus den threads in dem jeweils anderen forum/thread als deine eigenen auszugeben ist unter aller sau.

    Tja, hättest vielleicht mal gründlicher lesen sollen.

    [...]und die Antworten hier posten

    😉

    Freie Meinungsäusserungen stehen nunmal nicht unter einem Copyright. Wer also will, dass seine Antworten nicht cross-gepostet werden, sollte dies besser sagen oder die Klappe halten. Sry, wenn ich damit einige auf den Boden der Realität zurückhole.

    Was das eigentliche Thema betrifft, ich finde solche Vergleiche ja immer recht wertlos. C++ vs. Java ist so sinnvoll, wie ein Vergleich von Äpfel und Birnen. Die Sprachen mögen sich zwar ähnlich sehen, haben aber ein vollkommen anderes "Backend". Von daher sind die sinnvollen Einsatzgebiete nicht unbedingt die gleichen. Und das wird sich auch in naher Zukunft nicht ändern. Ich sehe es zudem eher so, dass sich beide Sprachen mehr und mehr annähern werden. Deshalb könnte, genau wie diese Diskussion, der Einsatz irgendwann mal eine rein subjektive Entscheidung sein.



  • In Deutschland gilt aber das Urheberrecht bei geistigem Eigentum (was meine Postings sind), welches sich vom Copyright-Recht deutlich unterscheidet. Du solltest dich also besser informieren, was hier in Deutschland für Gesetze gelten.



  • Artchi schrieb:

    In Deutschland gilt aber das Urheberrecht bei geistigem Eigentum (was meine Postings sind), welches sich vom Copyright-Recht deutlich unterscheidet. Du solltest dich also besser informieren, was hier in Deutschland für Gesetze gelten.

    aber es stand irgendwo in den Forumregeln das man alle Postings nach belieben kopieren und weiterverwenden kann.



  • @Artchi: tut mir sehr leid, ich dachte das hätte ich ganz klar beschrieben im ersten Posting. Ich werde Deine Kommentare nicht mehr ins Java-Forum übertragen.

    @antigast: dankeschön für den Preis 🙂

    Zur Erklärung warum ich das ganze hier gestartet hatte. Ich war auf der Suche nach ein paar kompetenteren Antworten als es in den üblichen Java vs C++ Threads der Fall ist. Ich war auch sehr gespannt welche Community da realistischer die Einsatzgebiete der beiden Top-Sprachen abgenzt. Mir war auch klar dass ich als erstes die üblichen "troll nicht rum" antworten bekommen würde und viel rumnörgel, weil sie das Thema schon ein dutzend mal durch haben. Ich denke aber weiterhin, dass es doch viele interessiert die grade dabei sind sich auf eine der beiden Sprachen zu spezialisieren.

    Recht subjektiv halte ich die Kommentare hier für objektiver, mich erinnern da viele JAVA-User an Mac-Besitzer, die auf Teufel komm raus ihre Wahl für den heiligen Gral halten womit alles andere überflüssig wird.

    Ich danke allen die sich hier ernsthaft Gedanken gemacht haben und den Thread nicht einfach als "Troll" Versuch abgetan haben. Ich musste erstmal bei Wikipedia nachschauen was dieses Buzzword überhaupt bedeutet. Aber es scheint gerne und schnell geschrieben zu werden. Ist ja auch einfacher als sich sachlich mit dem Thema auseinander zu setzen. Wie nennt man eigendlich die Leute die immer gleich "Troll" schreiben?



  • DEvent schrieb:

    Artchi schrieb:

    In Deutschland gilt aber das Urheberrecht bei geistigem Eigentum (was meine Postings sind), welches sich vom Copyright-Recht deutlich unterscheidet. Du solltest dich also besser informieren, was hier in Deutschland für Gesetze gelten.

    aber es stand irgendwo in den Forumregeln das man alle Postings nach belieben kopieren und weiterverwenden kann.

    Du meinst diesen Abschnitt?

    Die Übertragung der Nutzungsrechte beginnt mit der Absendung des Beitrages. Die Forenbetreiber erhalten insbesondere das Recht zur elektronischen Speicherung der Beiträge in Datenbanken, so wie das Recht zur Vervielfältigung und Verbreitung in fotomechanischen Verfahren und im Wege der elektronischen Datenaufzeichnung auf Speichermedien, einschließlich der Programmierung, Speicherung, Aufnahme in Computerprogramme und der Übertragung auf weitere Datenträger oder Datenanlagen und der Einspeisung in Netzwerke und Online-Dienste.

    Damit ist der Forenbetreiber gemeint, soll heißen, Marcus darf meine Beiträge in SEINEM System vervielfätigen und kopieren. Da steht nicht drin, das ich einräume, das fremde außerhalb des Forums meine Beiträge wegkopieren dürfen.

    Das bekräftigt nochmal dieser Abschnitt der Forenregeln, das "gast_neu" explizit bei Marcus anfragen muß, ob er unsere Beiträge in einem Anderen Forum (das nicht zu den genannten Seiten gehört) vervielfältigen darf:

    Die Vervielfältigung der auf den Seiten www.c-plusplus.net, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz).

    Ich bezweifel, das gast_neu eine schriftliche Erlaubnis hat! 😃

    Das alles gibts auch nochmal so und in ähnlicher Form im dt. Urheberrecht nachzulesen. Denn das dt. Recht kann und darf man nicht aushebeln.

    Naja, Schwamm drüber. 😉



  • DEvent schrieb:

    - Annotations
    - Garbage Container
    - Threads
    - Generics
    - Reflection

    C++
    - pointers
    - templates
    - preprocessor ( ist eher ein Nachteil )

    Mal sehen was der nächste C++ Standard bringt, wenn er mal kommt.

    Naja, jetzt nehmen wir mal boost mit ins boot, wer ernsthaft C++ programmiert kommt da nicht drum rum:

    Java:
    - Annotations // wasn des?
    - Garbage Container // gibts für C++ auch, und mit Smartpointern hat man auch keinen zusätzlichen GC im Hintergrund
    - Threads // boost::thread ist auf dem Weg das vollständig zu ersetzen
    - Generics // templates sind in C++ mächtiger, auch wenn Generics einiges Bietet was auch für C++ interessant wäre.
    - Reflection

    C++
    - pointers
    - templates
    - preprocessor ( ist eher ein Nachteil )// naja, muss nicht sein, man muss ja nicht MFC-like überall makros nutzen, aber sonst sinnvoll

    Mal sehen was der nächste C++ Standard bringt, wenn er mal kommt.

    Die Frage nach dem nächsten C++ Standard ist in der Tat interessant,
    wann kommt eigentlich der erste Java ISO Standard mal raus?

    phlox



  • phlox81 schrieb:

    Die Frage nach dem nächsten C++ Standard ist in der Tat interessant,
    wann kommt eigentlich der erste Java ISO Standard mal raus?

    Hi. Java wird nicht durch eine Standardisierungsorganisation, wie der ISO standardisiert. Das heißt aber nicht, dass es nicht standardisiert ist. Es gibt sehr genaue Dokumente darüber, wie die Sprache definiert ist, wie die JVM definiert ist usw.. Jeder kann diese Dokumente nutzen, um sich seine eigene Implementierung der Sprache zu schaffen.

    Siehe da:

    Was genau erwartest Du jetzt eigentlich von einem Standard bei einer Organisation wie der ISO, was durch solche offen zugänglichen Dokumente nicht abgedeckt wird?



  • Naja, Java ist ein Industriestandard, das ist ein Unterschied zu einem Standard (zu deutsch "Norm"). Schau doch mal warum Java kein ISO- und auch kein ECMA-Standard werden konnte: weil SUN noch viele Rechte an Java behalten wollte, angefangen bei dem Markennamen "Java" bis hin zur Bestimmung wie Java weiter entwickelt wird.

    Was heißt das, für den Anwender von Java? Er muß z.B. Lizenzgebühren für die Marke Java abdrücken... ein Beispiel nur!

    Was wäre aber, wäre Java ISO-Norm? Genau, SUN würde praktisch alle Rechte an Java verlieren. Aber der Anwender könnte somit ohne Problem den Namen Java auf seine Produkte drauf pappen. Ich kann z.B. in meine C++ Anwendung in den Info-Dialog schreiben: "Diese Software wurde mit C++ entwickelt." Keiner kann von mir Lizenzgebühren verlangen.

    Weiterhin muß eine ISO-Norm von mehrere Ländern/Firmen in einem gemeinsamen Gremium und Komitee weiter entrwickelt und verabschiedet werden. SUN hätte hier keine Bestimmungsgewalt mehr, da andere Firmen immer ein Veto bei bestimmten Features einlegen könnte.

    Genau das ist z.B. beim letzten ISO-C++-Komitee-Meeting in Berlin passiert: viele Compilerhersteller haben ein bestimmtes Features (im Bereich Mathematik) des TR1-Draft aus Kostengründen abgelehnt. Gut, d.h. im C++0x-Standard wird dieses Feature nicht rein kommen, obwohl andere es gerne drinn gehabt hätten.

    AT&T, Bjarne Stroustrup und HP haben z.B. damals ebenfalls ihre Rechte an C++ und die STL (bzw. eine Abwandlung davon) an die ISO abgetreten. Diese können heute davon nicht mehr direkt profitieren. Eigentlich nur Ruhm und Ehre...

    Die Boost-Libs die in den TR1 rein gekommen sind (z.B. Smartpointer) gehören jetzt NIEMANDEM mehr rechtlich. Sind jetzt in der ISO-Norm drin.

    Also, es ist schon ein Unterschied, ob es ein Standard ist oder "nur" ein unverbindlicher Industriestandard.



  • Gregor schrieb:

    Hi. Java wird nicht durch eine Standardisierungsorganisation, wie der ISO standardisiert. Das heißt aber nicht, dass es nicht standardisiert ist. Es gibt sehr genaue Dokumente darüber, wie die Sprache definiert ist, wie die JVM definiert ist usw.. Jeder kann diese Dokumente nutzen, um sich seine eigene Implementierung der Sprache zu schaffen.

    Darf ich dann das Java-Logo oder ein "Java Powered" oder "Designed for Java" oder "Java Compatible" auf mein Produkt (z.B. JVM und Runtime) pappen?

    Ich denke mal nicht. SUN will irgendwelche Zertifizierungsgebühren haben, damit ich das machen dürfte. Wennn dem nicht so ist, dann würde es SUN höchstens _dulden_. Aber sie könnten morgen ihre Meinung ändern.

    Lasse mich aber gerne eines besseren aufklären.



  • Artchi schrieb:

    Also, es ist schon ein Unterschied, ob es ein Standard ist oder "nur" ein unverbindlicher Industriestandard.

    "Unverbindlich" ist wohl eher der Standard bei der ISO, ECMA oder ähnlichem. Da Sun den Markennamen Java besitzt, hat es Kontrolle darüber, was sich Java nennen darf. Bei Standards, die bei der ISO oder ECMA oder so vorliegen, interessiert das einfach keinen. Das Resultat sind zum Beispiel Compiler, die nicht standardkonform sind. Damit hatte C++ ja lange Zeit zu kämpfen. Bei Java hat man letztendlich eine Garantie, dass da, wo Java draufsteht auch Java drin ist. ...oder zumindest, dass jede Implementation von Java durch eine ganze Reihe Kompatibilitätstests gegangen ist.

    Deine Argumentation bezüglich Suns Kontrolle beüglich der Entwicklung von Java stimmt nicht mit der Realität überein. In der Realität wird Java durch den Java Community Process www.jcp.org weiterentwickelt. Dem gehören einige hundert Firmen an und auch die Entscheidungen, was zum Beispiel in eine Javaversion aufgenommen wird, werden da von Gremien getroffen, in denen Vertreter mehrerer Firmen sitzen. Sun hat da auch nur eine einzige Stimme und kann dort überstimmt werden. ...und da werden durchaus auch bestimmte APIs und so weiter abgelehnt.

    Gedankenspiele wie "Sun könnte den JCP auflösen, wenn es keine Lust mehr darauf hat", kann man sicherlich auch durchspielen. Man sollte sie aber auch als das sehen, was sie sind: Gedankenspiele. Die Realität sieht momentan so aus, dass der JCP existiert und es ist nicht abzusehen, dass der in irgendeiner Form irgendwann aufgelöst wird.

    Weiterhin erfolgt die Entwicklung von Java sehr transparent. Man kann sich beispielsweise jede Woche einen neuen "Snapshot" der nächsten Javaversion runterladen, kann ihn diskutieren, auf Fehler aufmerksam machen, Fehlerkorrekturen vorschlagen usw.. Die Entwickler, die an Java arbeiten, sind da sehr nah an der Nutzergemeinde dran. Die hören, was in den entsprechenden Foren usw. vorgeschlagen wird und setzen sich auch mit der Community auseinander. Was will man mehr?



  • Artchi schrieb:

    Darf ich dann das Java-Logo oder ein "Java Powered" oder "Designed for Java" oder "Java Compatible" auf mein Produkt (z.B. JVM und Runtime) pappen?

    Ich denke mal nicht. SUN will irgendwelche Zertifizierungsgebühren haben, damit ich das machen dürfte. Wennn dem nicht so ist, dann würde es SUN höchstens _dulden_. Aber sie könnten morgen ihre Meinung ändern.

    Lasse mich aber gerne eines besseren aufklären.

    Wie schon im Beitrag eben gesagt: Das darfst Du natürlich nicht. Du musst aber keine Zertifizierungsgebühren zahlen, sondern die Tests bestehen, die glaube ich im "Java Compatibilitiy Kit" enthalten sind. Das kostet. ...wobei ich meine, mal gehört zu haben, dass Sun das für offene Implementierungen durchaus auch kostenlos macht. Dazu kann ich aber nichts genaues sagen.

    ...und meiner Meinung nach hätten andere Sprachen durchaus auch eine striktere Kontrolle des Standards nötig.



  • Naja, jetzt nehmen wir mal boost mit ins boot, wer ernsthaft C++ programmiert kommt da nicht drum rum:

    Das ist ja das Problem an C++, man kommt nicht drum herum irgendwelche Libs zu nehmen. Bei Java kommt alles "von Haus aus".

    Bei Java habe ich eigentlich sowas wie synchroniced gemeint.
    Java ist halt neuer als der letzte C++-Standard. Hat natürlich auch andere Ziele als C++.

    Ich hoffe der nächste C++-Standard wird:
    - Die Header-Include-System rausschmeisen und durch eine Art packages ersetzen.
    - Generics hinzufügen
    - Threads in der Sprache unterstützen
    Das sind so die wichtigsten Dinge die ich an C++ misse.

    templates sind in C++ mächtiger, auch wenn Generics einiges Bietet was auch für C++ interessant wäre.

    Ich habe nicht den Eindruck das Templates mächtiger sind. Kann man mit Templates Klassen dynamisch zur Laufzeit erzeugen? Gibt es eine Typüberprüfung bei Templates?

    Ich erinnere mich noch an die 5 Zeilen langen Compiler-Fehler wenn ich mal den falschen Typ in eine STL-Klasse geschrieben habe. Da kann man dann ewig rumrätzeln weil das oft nicht eindeutig ist.

    Man kann zwar mit Generics nicht solche Tricks wie die 100ste Potenz zur Compilerzeit ausrechnen, aber wer braucht sowas schon? Wenn ich sowas brauche mach ich mir eine Lookup-Table.



  • DEvent schrieb:

    Naja, jetzt nehmen wir mal boost mit ins boot, wer ernsthaft C++ programmiert kommt da nicht drum rum:

    Das ist ja das Problem an C++, man kommt nicht drum herum irgendwelche Libs zu nehmen. Bei Java kommt alles "von Haus aus".

    Das wird auch in C++ bald der Fall sein, denn boost findet starken Einzug im C++ Standard bzw. hat schon im TR1 und TR2 Einzug gefunden.

    Ich hoffe der nächste C++-Standard wird:
    - Die Header-Include-System rausschmeisen und durch eine Art packages ersetzen.
    - Generics hinzufügen

    Ich sehe ja irgendwie, dass du über die neue Typsicherheit in Java begeistert bist, aber in C++ braucht imho keiner wirklich Generics.

    - Threads in der Sprache unterstützen

    Siehe boost.

    templates sind in C++ mächtiger, auch wenn Generics einiges Bietet was auch für C++ interessant wäre.

    Ich habe nicht den Eindruck das Templates mächtiger sind. Kann man mit Templates Klassen dynamisch zur Laufzeit erzeugen?

    Ich schätze, du weißt, dass man es nicht kann. Aber weißt du auch, dass sie dafür nicht gedacht wurden? Denn bei Templates passiert ALLES zur Compile Time.

    Gibt es eine Typüberprüfung bei Templates?

    Wie meinen? Einen String in einen int-vector einfügen usw. klappt nicht, wenn du darauf anspielst.

    Man kann zwar mit Generics nicht solche Tricks wie die 100ste Potenz zur Compilerzeit ausrechnen, aber wer braucht sowas schon? Wenn ich sowas brauche mach ich mir eine Lookup-Table.

    Machst du dir auch ne Lookup Table, wenn du n Policy-basiertes Klassendesign möchtest?

    MfG

    GPC



  • @Devent! Die unverständlichen Fehlermeldungen haben nichts mit C++ zu tun, sondern sind die Schuld des Compiler-Herstellers. Das erstmal als wichtiger Punkt! Weiterhin hast du geschrieben "Damals"... eben! 😃 Damals, wir haben aber heute. Und schau dir mal den VC++ 8.0 an, der hat viel verständlichere Template-Fehlermeldungen. Verbessert wurden sie auch schon im VC++ 7.1 und sind noch besser geworden. D.h. hier wird kontinuierlich dran gearbeitet. Was auch zeigt, das z.B. MS seinen C++ Compiler ernst nimmt und was somit die Position von C++ im Markt stärkt.



  • DEvent schrieb:

    Ich habe nicht den Eindruck das Templates mächtiger sind. Kann man mit Templates Klassen dynamisch zur Laufzeit erzeugen? Gibt es eine Typüberprüfung bei Templates?

    Ich kenne auch noch nicht die volle Vielfalt von Templates, aber allein das, was Alexandrescu in seinem ersten Kapitel von Modern C++ Design macht und was ich schon über Policies, Traits, Metaprogramming etc. gelesen hab, bringt mich zu der Überzeugung, dass Generics da nicht mithalten können. Ich freu mich schon auf den Tag, an dem mein Modern C++ Design ankommt 🙂



  • Denn bei Templates passiert ALLES zur Compile Time.

    Das stört mich halt. Ich will mich Situationen dynamisch zur Laufzeit anpassen. Wieso kann man nicht beides intergrieren? Templates und Generics.

    Wie meinen? Einen String in einen int-vector einfügen usw. klappt nicht, wenn du darauf anspielst.

    Ich meinte, dass es manchmal verlangt wird das ein Template-Typ ein bestimmtes Interface hat, also bestimmte Methoden implementiert. Manche Klassen sollen halt nicht jeden x-beliebigen Typ haben können. Mit Templates kann ich das nicht eingrenzen. Es wird nur beim Compilieren an der Zeile 10567 irgendein komischer Fehler angezeigt. Meistens in einer fremd-Lib dessen Quellcode ich ja nicht kenne.

    Die unverständlichen Fehlermeldungen haben nichts mit C++ zu tun, sondern sind die Schuld des Compiler-Herstellers.

    ok wenn sich das gebessert hat. Mit damals hab ich vor 4 Jahren gemeint.



  • DEvent schrieb:

    Denn bei Templates passiert ALLES zur Compile Time.

    Das stört mich halt. Ich will mich Situationen dynamisch zur Laufzeit anpassen. Wieso kann man nicht beides intergrieren? Templates und Generics.

    Was willst du denn dynamisch machen, was nicht mit Polymorphie geht?

    Ich meinte, dass es manchmal verlangt wird das ein Template-Typ ein bestimmtes Interface hat, also bestimmte Methoden implementiert. Manche Klassen sollen halt nicht jeden x-beliebigen Typ haben können. Mit Templates kann ich das nicht eingrenzen. Es wird nur beim Compilieren an der Zeile 10567 irgendein komischer Fehler angezeigt. Meistens in einer fremd-Lib dessen Quellcode ich ja nicht kenne.

    Constraints sollen AFAIK mit dem nächsten Standard kommen.



  • Gast_neu schrieb:

    Wie nennt man eigendlich die Leute die immer gleich "Troll" schreiben?

    Registrierte? 😃
    Nein, das Problem ist einfach, dass in der Vergangenheit immer wieder Leute durch solche Threads trollen wollten. Und das sind idR Unregs. Von daher hast du als Unregistreierter schon mal schlechte Karten. Wenn du es mit dem Thema aber wirklich ernst meinst, dann solltest du solche Kommentare einfach ignorieren.

    DEvent schrieb:

    Das ist ja das Problem an C++, man kommt nicht drum herum irgendwelche Libs zu nehmen. Bei Java kommt alles "von Haus aus".

    Das kann man aber auch positiv für C++ auslegen. Dort kannst du halt nehmen, was du willst. Bei Java _musst_ du das nehmen, was "von Haus aus" dabei ist. Von dem all-inclusive Paket Java profitieren eigentlich nur Anfänger.

    DEvent schrieb:

    Ich habe nicht den Eindruck das Templates mächtiger sind. Kann man mit Templates Klassen dynamisch zur Laufzeit erzeugen?

    Wozu sollte man das in C++ wollen? Klassen sind nichts anderes als Schablonen. Diese als "lebendige" Dinger anzusehen, ist nicht wirklich sinnvoll. Oder meinst du das mehr in Richtung Reflection? Das ist dann aber ein anderes Thema. Ich kann da eigentlich nur immer wieder sagen, das statische Typsystem von C++ ist kein Bug, sondern ein Feature. 😉

    DEvent schrieb:

    Ich erinnere mich noch an die 5 Zeilen langen Compiler-Fehler wenn ich mal den falschen Typ in eine STL-Klasse geschrieben habe. Da kann man dann ewig rumrätzeln weil das oft nicht eindeutig ist.

    Ja, das stört sicherlich viele Leute (mich eingeschlossen). Aber wie Artchi schon sagte, das ist nicht das Problem der Sprache, sondern der Compiler. Und daran wird in Zukunft sicherlich noch einiges gemacht. Es gibt ja auch schon jetzt Tools, die diese Template Fehlermeldungen filtern und nur die wichtigen Informationen in lesbarer Form ausspucken.

    DEvent schrieb:

    Man kann zwar mit Generics nicht solche Tricks wie die 100ste Potenz zur Compilerzeit ausrechnen, aber wer braucht sowas schon? Wenn ich sowas brauche mach ich mir eine Lookup-Table.

    Die Stärken von Templates liegen aber auch an ganz anderen Stellen. Meta Programmierung ist ja nur eine spezielle Anwendung davon.



  • DEvent schrieb:

    Wie meinen? Einen String in einen int-vector einfügen usw. klappt nicht, wenn du darauf anspielst.

    Ich meinte, dass es manchmal verlangt wird das ein Template-Typ ein bestimmtes Interface hat, also bestimmte Methoden implementiert. Manche Klassen sollen halt nicht jeden x-beliebigen Typ haben können. Mit Templates kann ich das nicht eingrenzen. Es wird nur beim Compilieren an der Zeile 10567 irgendein komischer Fehler angezeigt. Meistens in einer fremd-Lib dessen Quellcode ich ja nicht kenne.

    Das ist jetzt schon möglich:

    template <typename T>
    struct Foo;
    
    template< >
    struct Foo<int> {
      //...
    };
    
    template< >
    struct Foo<double> {
      //...
    };
    

    Jetzt lässt er für Foo nur Instantierungen für int und double zu.

    EDIT: Rechtschreibfehler korrigiert...

    MfG

    GPC


Anmelden zum Antworten