C++ vs. Java [Update]
-
Original erstellt von Shade Of Mine:
in java kannst du ja auch nicht einfach einer funktion den namen einer funktion aus der standard library geben, oder?Dazu das Stichwort: Reflection
-
Original erstellt von Gregor:
**
Wenn es in Java zu Namenskonfikten kommt, dann meckert der Compiler. Ansonsten ist das in Java ja auch etwas ander gelöst. Es gibt ja keine Namespaces, sondern nur Packages, in denen Klassen stehen. Dadurch kommt es wohl insgesamt zu weniger Konflikten. Ich hatte zumindest erst an einer Stelle damit Probleme, als ich zwei Packages eingebunden habe, die beide eine Klasse mit gleichem Namen enthielten. Dann muss man halt genauer sagen, was man aus welchem Package haben will. Wenn man beide Klassen haben möchte, dann gibt man jeweils noch explizit den Packagenamen an....aber anscheinend weiß Kingruedis Compiler ja, was er machen soll, wenn er auf sowas stößt. Er erlaubt halt etwas mehr, als der Standard. ...und solche Dinge passieren doch auch, wenn man alles Standardkonform macht. Gibt es da z.B. nicht so eine Geschichte mit Templates, die laut Standard erlaubt ist, die viele Compiler aber nicht unterstützen?**
kingruedis Compiler hatte das Problem mit den doppelten Namen nicht. Da jede Standard-Header-Datei jede andere einbinden DARF, kann es sein, dass dein Compiler die Header mit less eingebunden hat, seine nicht.
Haette er (wie du so schoen schreibst) nicht das ganze Package eingebunden (sprich den namespace std; nicht geoeffnet) haette es auch keine Probleme gegeben.
Jo, templates sind so eine Sache fuer sich... Die sind viel zu neu und unerforscht, als dass die Compilerhersteller viel Wert darauf gelegt haben. Allerdings aendert sich das momentan ziemlich drastisch...
und auf das 'export'-feature, welches du vermutlich meinst, kann man sowieso verzichten, da es bisher AFAIK nur ein Compiler kann.
-
Original erstellt von Gregor:
...und wo eben das "Fernbedienung-Beipiel" kam: Da es ja für alles C++-Compiler geben soll, zeig mir doch mal bitte nen Link zu nem Compiler für ne Fernbedienung.Sorry, da kenn ich mich nicht aus.
Aber mein Vater programmiert die Steuerung von Scheinwerfern. Also diese kleinen Motoren die Scheinwerfer in Theatern drehen und schwenken - dafuer verwendet er zwar C (weil er kein C++ kann) aber prinzipiell hat er auch einen C++ Compiler.ist zwar nicht das selbe wie eine Fernsteuerung, allerdings gibt es auch ein Schaltpult, welches die Scheinwerfer steuern kann - da ist die Steuerung ebenfalls in C geschrieben.
Ist zwar nicht das selbe wie eien Fernbedienung, aber ich denke doch in etwa aehnlich. (einen C++ Compiler fuer so ausgefallene Sachen findet man allerdings nicht leicht - ist ja auch logisch, da er keine breite Masse anspricht, aber wenn du auf diesem Gebiet arbeitest, dann weisst du auch woher du einen Compiler bekommst - zumindest hatte mein Vater noch nie Probleme damit)
-
Interessant! Hätte ich garnicht gedacht. Naja: Sowas ist zumindest nicht ein Anwendungsgebiet für Java. Entsprechend gibt es für soetwas natürlich auch keine JVM. ...und mit Sicherheit kannst du deinen Mozilla auch nicht für die Scheinwerfersteuerung kompilieren, oder?!
-
Tja was ist wohl besser? C++ oder Java?
Es kommt IMHO bei der Sprachenwahl immer darauf an, was man machen will. Will man z.B. ein Betriebssystem programmieren, so ist Java eher ungeeignet. Möchte man hingegen ein Programm für den Web-Browser (Applet) erstellen, so ist C++ leicht im Nachteil.
-
Vor kurzem hab ich ein Interview von einem Siemens-Menschen zu C++ und Java gehört. Er meinte, dass in seinem Bereich zeitkritische und hardwarenahe Programme in C++ geschrieben würden, da die Performance besser und Hardware-Zugriffe möglich seien. Für andere Anwendungen wird Java verwendet, wegen der besseren Wartbarkeit.
Wenn man unbedingt will, kann man natürlich auch da anderer Meinung sein.
-
Sowas ist zumindest nicht ein Anwendungsgebiet für Java.
Urprünglich wurde Java genau dafür entworfen: einfache hardware-nahe Programmierung von irgendwelche Geräten.
Hat sich dann aber in ne ziehmlich andere Richtung entwickelt.
[ Dieser Beitrag wurde am 04.12.2002 um 10:51 Uhr von kartoffelsack editiert. ]
-
Original erstellt von Kauz01:
**Vor kurzem hab ich ein Interview von einem Siemens-Menschen zu C++ und Java gehört. Er meinte, dass in seinem Bereich zeitkritische und hardwarenahe Programme in C++ geschrieben würden, da die Performance besser und Hardware-Zugriffe möglich seien. Für andere Anwendungen wird Java verwendet, wegen der besseren Wartbarkeit.Wenn man unbedingt will, kann man natürlich auch da anderer Meinung sein.**
was macht Java den besser wartbar? vielleicht kann man da was für c++ abkucken
-
@Dimah
Dachte ich's mir doch, dass jemanden motzt.
-
Original erstellt von Dimah:
was macht Java den besser wartbar? vielleicht kann man da was für c++ abkuckenIch führe das einfach mal auf 2 Punkte zurück :
1. C++ ist viel komplexer als Java. Natürlich spiegelt sich das auch in den Programmen wieder. Wenn man Probleme auf viele verschiedene Arten lösen kann, dann findet man auch viele verschiedene Lösungen in den Programmen. C++ ermöglicht dem Programmierer auch eine bessere Kontrolle über das, was eigentlich gemacht wird. Entsprechend hat der Programmierer aber auch mehr Verantwortung. Er muss sich z.B. darum kümmern, dass keine Speicherlecks entstehen. Bei Java muss man sich um solche Dinge nicht kümmern.
2. Mir wird oft gesagt, dass hinter C++ in etwa folgende Philosophie steckt:
Der Programmierer weiß, was er tut, außerdem soll C++ möglichst schnell sein. Da es Zeit kostet, auf Fehler zu prüfen, und der Programmierer eh weiß, was er tut, wird Code halt so geschrieben, dass er schnell ist und nicht Fehlertolerant.
Es ist doch kein Wunder, dass durch soetwas unwartbarer Code entsteht. Wartung? Warum denn? Der Programmierer weiß auch schon am Anfang, was er tut!
-
Hallo,
also ich kann keine Aussage darüber treffen ob Java-Code oder C++ Code besser wartbar ist, ich weiß aber, dass eine Sprache allein nicht darüber entscheidet, ob etwas wartbar ist oder nicht macht.Wenn du den Faktor Mensch vergisst, rennst du am Ziel vorbei. Schlecht ausgebildete Programmieren können auch in LupenRein++(tm) miese Programme schreiben.
Ich bin bisher immer davon ausgegangen, dass Java leichter zu erlenen ist als C++. Mittlerweile bin ich mir da aber nicht mehr so sicher. Es gibt kaum was schlimmeres als Java-Programme von Programmierern die das Prinzip der OOP nicht verstanden haben.
Und das man in C++ sehr leicht grausame Programme schreiben kann, ist hier wohl auch jedem klar
-
Und das man in C++ sehr leicht grausame Programme schreiben kann, ist hier wohl auch jedem klar
Sprichst du damit auf dich selber an?
-
Original erstellt von HumeSikkins:
**
Wenn du den Faktor Mensch vergisst, rennst du am Ziel vorbei. Schlecht ausgebildete Programmieren können auch in LupenRein++(tm) miese Programme schreiben.
**Jo! Das stimmt wohl. Da stellt sich die Frage, ob man für C++ deutlich besser ausgebildet sein muss, um guten Code zu schreiben, als für Java. ...das wird ja auch oft genug gesagt. ...und daran anschließen sollte man die Frage, ob C++-Programmierer normalerweise tatsächlich deutlich besser ausgebildet sind, als Java-Programmierer.
-
Hi,
ich muss jetzt im Studium "zwangsweise" Java lernen,bin da aber nicht böse drüber.
Ob dieses oder jenes Problem jetzt besser mit C++ oder Java gelöst werden kann,kann doch nur derjenige entscheiden der beides gelernt hat.
Ich denke die Hälfte aller "Java ist zu langsam Motzer" redet nur irgendwas nach was sie irgendwo mal gelesen haben,ohne wirklich zu wissen warum das so ist!
Aus OOP-Sicht muss,meiner Meinung nach,der C++ Programmierer verantwortungsvoll mit den gegeben Freiheiten der Sprache umgehen.In Java ist das Klassenkonzept halt konsequenter umgesetzt,ob das ein Vorteil sein muss,ist eine andere Frage.MfG Spacelord