C++ vs. Java - Kleine Fallstudie gefällig?
-
Was ich mal wirklich interessant fände, wenn sowohl für Java als auch für C++ eine typische Aufgabe gestellt würde, die auf die entsprechende Programmiersprache zugeschnitten ist. Also irgendwas Leistungshungriges mit schönem Interface für C++ und eine Web-Anwendung (oder so) für Java.
Allein die Aufgabenstellung fände ich schon nett, ich hab nämlich ehrlich gesagt nicht so die Ahnung, was ein "typisches" Java-Programm so macht; habs nur in der Uni und da ist der Aufgabenbereich noch nicht besonders spezialisiert...Naja, und die Programme werden dann halt von irgendwem in beiden Programmiersprachen geschrieben, obwohl ich da einen Wettbewerb für unsinnig halte. Aber ich fände es einfach mal lehrreich zu sehen, wie dann ein entsprechendes Java-Programm aussieht, oder eben das C++-Programm im Java-Bereich.
-
Badestrand schrieb:
Was ich mal wirklich interessant fände, wenn sowohl für Java als auch für C++ eine typische Aufgabe gestellt würde, die auf die entsprechende Programmiersprache zugeschnitten ist.
Wäre imho relativ albern, da es ein leichtes wäre eine auf C++ zugeschnittene Aufgabe zu finden, welche in Java nicht realisierbar wäre (ohne das eigene Konzept zu brechen). Umgekehrt gibt es ja praktisch nichts was in C++ technisch nicht reaslisierbar wäre (vom evtl. Aufwand mal abgesehen).
-
Wenn du die Innereien eines typischen Java-Programms sehen willst, geh einfach auf Sourceforge und lad dir die vielen Java-Projekte runter. Das gleiche gilt für C++.
-
yellow submarine schrieb:
Was wollt ihr jetzt genau machen, was für Aufgaben?
Wie soll das ablaufen? Aufgaben stellen und dann schauen wer schneller fertig ist?Die Anwendungsstruktur ist in groben Zügen im Opening beschrieben; natürlich ist die nur ein Vorschlag.
Es ist natürlich ein konstruierter Fall aber es sind imho einige Elemente enthalten die typischen Anfoderungen der Praxis entsprechen.Eine Applikation die sowas bräuchte wäre eine Bilddatenbank mit Textbausteinen zur Bildbeschreibung die Hierarchien zwischen den Bausteinen ermöglicht.
"Schneller" ist bei einem solchen Vorhaben zunächst mal zu definieren. Wir haben ja alle noch kleinere Nebenbeschäftigungen
, also könnte es, wenn überhaupt, nur um Manntage die innerhalb eines zu vereinbarenden Zeitspanne anfallen.
Wichtiger fände ich dass man analysiert worauf am meisten Zeit mit den jeweiligen Sprachen verwandt wurde; wo die Hauptschwierigkeiten lagen und was andererseits von in einer Sprache leicher zu implementieren ist als in der jeweils anderen.
Beantwortet dies Deine Frage ausreichend?
---
Es wurde ferner vorgeschlagen dei Hauptstärken der Sprachen jewils in eigenen Anwendungen zu untersuchen. Ds halte ich für wenig aussagekräftig; vielmehr wird man z.B. beim Thema I/RPC und Stringverarbeitung und ggf. Rendering der Graphikdateien (wenn's das denn wird) notwendigerweise alle jeweiligen Trümpfe ausspielen müssen.
Grüsse
*this
-
Tim schrieb:
Badestrand schrieb:
Was ich mal wirklich interessant fände, wenn sowohl für Java als auch für C++ eine typische Aufgabe gestellt würde, die auf die entsprechende Programmiersprache zugeschnitten ist.
Wäre imho relativ albern, da es ein leichtes wäre eine auf C++ zugeschnittene Aufgabe zu finden, welche in Java nicht realisierbar wäre (ohne das eigene Konzept zu brechen).
Es gibt doch genug Aufgaben, welche auf C++ zugeschnitten sind, aber auch ohne allzuviel Aufwand in Java realisierbar sind.
Das ist doch ein Thread, wo Java und C++ verglichen werden sollen. Ich glaube nicht, dass man eine Aufgabenstellung findet, die fair ist in Bezug auf gleichwertige Anforderungen an Java und C++. Außerdem scheint ja allen klar zu sein, dass C++ bei einigen spezifischen Aufgaben einfach schneller ist als Java, man dafür in Java einige Aufgaben schneller und einfacher realisieren kann.
Warum dann also nicht zwei Aufgabenstellungen, die genau das untermauern und den Unterschied darstellen, also darlegen, wie groß der Performance-Unterschied in der C++-Aufgabe ist und wieviel mehr Aufwand die Umsetzung von C++ für die Java-Aufgabe ist?
Ist schließlich nur ein Vorschlag, aber scheint mir eigentlich logisch :pAso, und ich will ja gar nicht die Innereien für ein typisches Java-Programm sehen, sondern nur die Aufgabenstellung
-
Badestrand schrieb:
Das ist doch ein Thread, wo Java und C++ verglichen werden sollen. Ich glaube nicht, dass man eine Aufgabenstellung findet, die fair ist in Bezug auf gleichwertige Anforderungen an Java und C++.
doch, mein vorschlag von seite 1
-
Hey, stimmt, hatte ich nach den 9 Seiten glatt wieder vergessen
Also einen SQL-Server mit beiden Programmiersprachen oder wie? Auch als Dienst? Ist auch ne gute Idee, ich wäre dafürWas hältst du davon, Gast++? Schließlich ist das dein Thread und wär eigentlich mal cool, wenn was entschieden werden würde
-
Badestrand schrieb:
Hey, stimmt, hatte ich nach den 9 Seiten glatt wieder vergessen
Also einen SQL-Server mit beiden Programmiersprachen oder wie? Auch als Dienst?
Was hältst du davon, Gast++? Schließlich ist das dein Thread und wär eigentlich mal cool, wenn was entschieden werden würde@rapsoo; @Badestrand:
Hättet Ihr Interesse an der Java-Version mitzuentwicheln?
Würde mich sehr freuen!@all:
Meine Ideen zum Applikationsthema und zur Architektur habe ich ja bereits dargelegt; ein SQL-Server erschiene mir persönlich auch ohne Parser als zu aufwendig und auch Java gegenüber etwas unfair; Java ist nicht dafür ausgelegt OS-Ressourcen so effizient zu verwalten wie dies native Anwendungen können.Ein SQL Server hat ja
- eine eigene Threadmimik
- ein eigenes dediziertes Ressourcenmanagement (Caching, Shared Memeory...)
- ein eigenes Dateiformat; manche sogar ein eigenes Dateisystem ("RAW-Devices")
...Dieser Topos ist eher mit einem Betriebssystem denn mit einer "Business-Anwendung" zu vergleichen; und mir somit auch zu systemnah (s.a meinen Opener)
Wie schon in dem Fahrplan auf S.7 dargelegt fehlen Absichtserklärngen vor allem von Javaentwicklern; da liegt bislang nicht eine einzige vor. Es bringt nichts ohne ein Placet von jener Seite die Themen festzuzurren und deshalb werde ich diesen Fehler auch nicht machen.
Grüsse
*this
-
Gast++ schrieb:
Java ist nicht dafür ausgelegt OS-Ressourcen so effizient zu verwalten wie dies native Anwendungen können.
also ne, immer diese vorurteile...
--> http://java.sun.com/j2se/1.5.0/docs/api/java/nio/package-summary.html
--> http://java.sun.com/j2se/1.5.0/docs/api/java/nio/channels/package-summary.html
-
Gast++ schrieb:
Wie schon in dem Fahrplan auf S.7 dargelegt fehlen Absichtserklärngen vor allem von Javaentwicklern; da liegt bislang nicht eine einzige vor.
frags du hier
http://www.java-forum.org/de/ oder hier http://forum.javacore.de/Nen SQL Server finde ich auch übertrieben. Da muss man schon sehr viel wissen um sowas richtig zu machen. Da gehts ja dann nur darum wer sich besser mit dem Thema auskennt und nicht welche Sprache er verwendet.
Sollte schon was einfacheres sein, wo man nicht vorher sich ewig einarbeiten muss.
-
Glaub ich nicht, dass das so schwierig ist. Das Programm muss doch nur intern eine Tabelle verwalten und per TCP/IP auf einem entsprechenden Port Anfragen entgegennehmen. Diese werden halt geparst, weil sie aus Text bestehen und die Operation ausgeführt, wovon es imho gar nicht sooo viele gibt; man könnte die Kommandos ja auch auf bestimmte begrenzen. Oder jemand listet mal alle auf, die es so gibt.
Mir fallen spontan nur "Datenbank-erstellen", "Tabelle-erstellen", "Spalte-hinzufügen", "Zeile hinzfügen", "Wert setzen mit 'Spalte A=Bla, Spalte B=Blubb', Wert=50'" und bissl mehr ein, wieviel gibts da so?Wir müssen ja nicht unbedingt Benutzer-Verwaltung usw dazunehmen, einfach nur ein Admin-Passwort.
Jo, ich könnte gerne bei der Java-Fraktion mitmachen, hätte aber nicht mehr als eine Stunde Zeit am Tag und bin hab in meinem ganzen Leben nicht mehr als 50 Stunden in Java programmiert
Aber wie gesagt, ich kanns versuchen
-
Badestrand schrieb:
Mir fallen spontan nur "Datenbank-erstellen", "Tabelle-erstellen", "Spalte-hinzufügen", "Zeile hinzfügen", "Wert setzen mit 'Spalte A=Bla, Spalte B=Blubb', Wert=50'" und bissl mehr ein, wieviel gibts da so?
Es gibt ne ganz Menge aufwendiger Statements die man bauen kann. Joins, inner selects,... und alles mit and or ... kombinieren
War die Idee ne eigene DB zu bauen oder die anfragen an eine vorhandene weiterzuleiten?
-
wie ich ebenfalls auf seit1 sagte waere das einfachste XML zu benutzen. da sollte es fuer jede sprache genug libs geben.
queries sollten auch etwas komplexer sein duerfen da das die sprache dann fordert (z.b. mehrere tabellen kombiniert )
-
Du willst also ne eigene DB bauen. Halte ich für viel zu aufwenig. Es gibt außerdem doch schon viele DBs in Java und C++ die man vergleichen kann.
-
Also ne DB entwicklen ist ja wohl der totale Blödsinn. Sorry das ich das sagen muß. Aber es geht in jedem Java vs. C++ Thread darum, das die Mehrheit der Entwickler schneller mit Java etwas fabriziert. Und da geht es nunmal eher darum, eine DB anzusprechen und nicht eine DB zu entwickeln. Ich bezweifel mal stark, das die Mehrheit der Informatiker DBs implementieren, oder? Die Mehrheit wird eher sogenannte Businessanwendungen designen und dann implementieren.
Und ob man mit C++ eine DB implementieren kann, steht außer Frage. Ich wette, 99% der heutigen DB-Systeme sind in C++ oder mit Legacycode noch in C. Da müssen wir hier im Forum bestimmt nicht noch Fallstudie machen.
-
Da muss ich Artchi recht geben. Java wird immer für Code-Monkey Aufgaben angepriesen. Es in ein anderes Umfeld zu schieben wäre unfair.
Aber im Grunde halte ich nicht viel von der Fallstudie...
-
Badestrand schrieb:
Glaub ich nicht, dass das so schwierig ist.
Jo, ich könnte gerne bei der Java-Fraktion mitmachen, hätte aber nicht mehr als eine Stunde Zeit am Tag und bin hab in meinem ganzen Leben nicht mehr als 50 Stunden in Java programmiertAber wie gesagt, ich kanns versuchen
@Badestrand:
Toll dass Du mitmachst!
Gilt Deine Zusage auch wenn sich die Teilnehmer mehrheitlich gegen eienen SQL-Server entscheiden?@all:
Wenn alle Stricke reissen würde ich bei Java mitcoden.
Aber wirklich nur wenn's sonst gar nicht geht!
(Eigentlich wollte sehr gerne ich beim C++-Team mitmachen)
Damit hätten wir jetzt in beiden Teams minimale Mannstärke für eine Minianwendung.Ein Problem ist aber dass meine Java-Praxis auch nicht die grösste ist; das Javateam bräuchte eigentlich zumindest auch einen Experten.
Grüsse
*this
-
Ich würde mich auch anbieten, bei der C++ Seite mitzumachen.
Allerdings kenne ich mich zwar in C++ aus, das heißt aber nur in Standard-C++ (keine großartigen anderen Bibliotheken für Sockets, GUI, Threads, etc.). Außerdem habe ich noch nie bei einem größeren Projekt (mit mehr als 2 Leuten
) mitgemacht.
Felix
-
Die Idee mit einer Fallstudie finde ich gut, da ich bisher in der Praxis noch nichts vergleichbares in der Art gesehen habe - bisher basieren die "Behauptungen" immer auf subjektiven Meinungen.
Ich denke ein Großteil der Software die heutzutage entwickelt wird, sind die klassischen Unternehmslösungen. Ich finde auch das dieser Bereich aus anderen Gründen repräsentativ für viele Sprachmerkmale ist, da moderne Enterprise System weit mehr können müssen als Daten aus SQL Datenbanken auslesen und in einer GUI darszutellen. Mein Vorschlag wäre ein klassisches modernes Enterprise System:
1.) Die Software muss mit mind. 2 versch. Datenbanksystemen lauffähig sein
- Ein freies OSS System wie Postgres oder MySQL
- Ein kommerzielles wie Oracle oder DB22.) Es soll mind. auf Linux und Windows System laufen(x86, x86-64). Sowohl die Clients, wie auch der Server.
3.) Es sollte eine Mehrschichtarchitektur zum Einsatz kommen, Web- und GUI Frontends sollen vorhanden sein. Kommunikation erfolgt über eine verteiltes Objektprotokoll der Wahl.
4.) Das System soll parallel auf mehreren Servern betrieben werden können(HA, Skalierbarkeit, etc.)
Das sind die typischen Randbedingungen die ein System heutzutage erfüllen sollte. Gleichzeitig werden auch verschiedene Bereiche abgedeckt: Datenbankenzugriffe, Netzwerkzugriffe, Objektverteilung, GUIs, etc..
Bemerkung: Durch das verteilen auf mehrere Schichten, lassen sich auch hervorragend automatisiert Tests und Benchmarks erstellen.
Bemerkung 2: Ein Baispflichtenheft halte ich für sehr wichtig, da es exakt festgelegt sein muss, was das System später können muss.Was haltet ihr davon?
-
Irgendwie ist es doch witzlos, Java und C++ anhand einer 0815-SQL-Applikation zu vergleichen. Angenommen, du hast dann 2 Lösungen, was willst du vergleichen? Die Performance hängt primär vom SQL-Server ab, die Implementierungszeit und Qualität von der Erfahrung des Authors im Umgang mit entsprechenden Libraries und Tools. Wobei anteilsmäßig eher wenige C++ - Entwickler sich täglich mit SQL-Anwendungen herumschlagen müssen (gibt schließlich genug interessante Arbeit) wärend die Javaleute fast nichts anderes tun als das.