C++ vs. Java [Update]
-
Hoi!
ich habe von meinen Professor heute gehört, dass es in Java 1.5 Templates geben soll.
Was ist dann besser C++ oder Java?
-
Sehr gute Frage ... ich bin schon sehr gespannt auf die Antworten
-
Was ist dann besser C++ oder Java?
Ganz klar Java, denn:
"Java has the blazing speed of Smalltalk and the elegant simplicity of C++."Oder etwas länger formuliert:
Java, the virtual success. Java improves on C++, adding some fundamental features such as
garbage collection, tightly integrated thread support, and the ever popular
"Write Once, Debug Everywhere" model
But while Java managed to get a few things right,
or at least better, it hugely misses the boat in some very fundamental areas:
there is just enough type checking to get in your way, but not enough to ensure your safety.
There is no genericty (templates or similar), there is no support for invariant assertions
(as in Eiffel), it's not as flexible as Objective C or Smalltalk, not as elegant as Eiffel,
and not as fast as C++.Disclaimer:
Dies ist kein persönlicher Angriff. Ich habe diesen Text mit einem Auge eingefügt. Ich habe ihn *NICHT* selbst verfasstm denke aber, dass er eine Menge Wahrheit enthält .
Ich bin *NICHT* der Meinung, dass Java schlecht ist oder das C++ besser als Java ist.
Ich halte Fragen wie diese für sinnlos solange sie nicht in einem konkreten Kontext gestellt werden.
Ich bin ein Fan der Sprachvielfalt.
Ich entschuldige mich hiermit im Voraus falls sich ein Java-Programmierer durch den von mir geposteten Text angegriffen oder diskreminiert fühltDer letzte Satz war eine Provokation und muss nicht ernst genommen werden.
-
Na ja so sieht das dann aus ... Preview davon gibt es bereits.
[java]import java.util.LinkedList;
import java.util.Collections;class Test {
public static void main(String[] args) {
// Integer list
LinkedList<Integer> xs = new LinkedList<Integer>();
xs.add(new Integer(0)); xs.add(new Integer(1));
Integer x = xs.iterator().next();
Integer mb = Collections.max(xs);// string list
LinkedList<String> ys = new LinkedList<String>();
ys.add("zero"); ys.add("one");
String y = ys.iterator().next();// string list list
LinkedList<LinkedList<String>> zss = new LinkedList<LinkedList<String>>();
zss.add(ys);
String z = zss.iterator().next().iterator().next();
}
}[/code][ Dieser Beitrag wurde am 28.11.2002 um 16:36 Uhr von CengizS editiert. ]
-
@ CengizS : Weißt du zufällig,...
- ob es auch Generics mit primitiven Datentypen geben wird? ...also etwa
[java]
LinkedList<int> xs[/code]
Oder kann man die nur gebrauchen, um sich das Casten zu sparen? - wann mit Java 1.5 zu rechnen ist?
- ob es auch Generics mit primitiven Datentypen geben wird? ...also etwa
-
CengizS wo hast du den beispiel kode her?
-
Hallo,
die Spezifikation der Generics sieht die Nutzung der primitiven Datentypen nicht vor - dies kann sich allerdings ändern - nichts ist fix.
Wann mit JDK1.5 zu rechnen ist kann ich leider auch noch nicht sagen. Das mit den Generics lässt sich allerdings bereits testen mit dem aktuellen JDK.
-
hm was sagt volkard und Marc++us dazu?
-
erlauben die generics auch generische Funktionen?
Gibt es einen Grund warum primitive Datentypen verboten sind?
Wo ist der sinn eines generischen Containers in Java? Nur um sich das casten zu ersparen?
-
Original erstellt von Shade Of Mine:
Gibt es einen Grund warum primitive Datentypen verboten sind?Dass sie verboten sein sollen hast Du dir doch aus den Fingern gesaugt, oder? Da steht nur drin, dass es in der Design-Phase nicht berücksichtigt ist und nichts von einem Verbot. Vielleicht kommt das ja auch
-
Original erstellt von CengizS:
Dass sie verboten sein sollen hast Du dir doch aus den Fingern gesaugt, oder? Da steht nur drin, dass es in der Design-Phase nicht berücksichtigt ist und nichts von einem Verbot. Vielleicht kommt das ja auchdu hast vorher geschrieben die nutzung von primitiven datentypen ist nicht vor gesehen...
und warum ist das so?
-
Aus dem Text ...
----------------------------------/snip/---------------------------------------
It is explicitly not required that the systema) Provide downward binary compatibility: It is not necessary that class
files compiled under the generic compiler should run on previous releases, whether they use generics or not.b) Support the use of primitive types as type arguments: While allowing the use of primitive types (e.g., int, boolean) as type arguments would be nice, it should not be a goal of the design. The separation of primitive and reference types is a fundamental property of the Java programming language.
----------------------------------/snap/---------------------------------------Es ist also eine "Zuständigkeitsfrage". Erst wenn man sich über die Trennung von primitiven und Referenztypen in irgendeiner Form einigt würde es sinnvoll sein die Generics danach auszurichten.
[ Dieser Beitrag wurde am 29.11.2002 um 10:55 Uhr von CengizS editiert. ]
-
Was ist dann besser C++ oder Java?
Was ist besser ein Porsche oder ein dicker LKW?
Wenn man angeben will, sicherlich der Porsche, wenn man aber große gegenstände Transportieren will der LKW.
-
Was ist besser ein Porsche oder ein dicker LKW?
Und welche Sprache entspricht jetzt dem Porsche in deiner Analogie? Und welche dem LKW?
-
Porsche == C++
dicker LKW == Java
-
Jo, das hängt doch einzig und allein von der Problemstellun ab. Ich mein, niemand wird auf die Idee kommen, mit Java Fifa 2004 zu programmieren oder mit Javas BigInt ein PI-Programm.
-
Und wofür ist Java dann gut geeignet??
-
Wie schon gesagt wurde, für große Programme. Hinzu kommt, daß Java absolut plattformunabhängig ist, wenn für versch. Plattformen die VM implementiert ist. So sieht z.B. ein Klickibunti Swingprogramm unter Windows haargenau 1:1 exakt so aus wie unter Linux, weil die Komponenten von Java auch noch selber gezeichnet werden. Außerdem gefällt mir persönlich bei Java, daß man wirklcih alles unter einem Hut hat. Fensterbibliothek, Threads, Netzwerkprogrammierung, alles einfach. Man muss keine externen Libs nehmen.
-
((DefaultListModel)m_list.getModel()).addElement(((Unit)iter.next()).getName());
Aber wenn dann sowas dabei rauskommt würde ich echt von Java abraten :p
-
Original erstellt von Doktor Prokt:
Wie schon gesagt wurde, für große Programme. Hinzu kommt, daß Java absolut plattformunabhängig istzum hundertstenmal: java IST eine plattform.
-
Original erstellt von volkard:
zum hundertstenmal: java IST eine plattform.nö eine virtuelle maschine