Re: Anfangsbuchstaben in Großbuchstaben ändern [OT]
Am Montag 14 August 2006 00:46 schrieb Bjoern Schliessmann:
> Funktionen sind aber in Java beispielsweise keine Objekte.
Es gibt in Java auch gar keine Funktionen. Die Dinger heißen in Java
Methoden und gehören untrennbar zur Klasse.
> Ja, in Java kann man es sich so einfach machen, da dort nur
> Klasseninstanzen Objekte sind ... ;)
Das ist eigentlich wenn man Corba und ähnliches was noch pre OOP ist
ausklammert die gängige Definition von Objekt im Zusammenhang mit
Programmiersprachen.
> Hast du dich nie gefragt, warum man in Java schreiben muss
>
> int a = 5;
int genießt Wertesemantik. Einem int kann man keinen Zeiger zuweisen.
> aber bei Objekten
>
> Integer a = new Integer(5);
einer Referenzvariable kann man nur Referenzen zuweisen. Das ist völlig
Analog zu C++.
> In C++ geht beides, und man kann sich aussuchen wo und wie man das
> Objekt haben möchte.
>
> int a1 = 5;
> int& a2 = new int(5);
Da vergleichst Du Äpfel mit Birnen. Die erster Version ist analog zu
Java. Ein gewöhnlicher int. Das zweite geht so nicht (wie Andreas ja
schon angemerkt hat) da müsste eine Pointervariable stehen. Pointer
gibt es in Java aber nicht, ergo geht das auch nicht.
> string b1("Honk");
> string& b2 = new string("Honk");
Hier sieht das genau anders herum aus. Die erste Variante erzeugt eine
Objektvariable in Wertesemantik. Das geht in Java nicht. Das zweite
einen Pointer auf ein Objekt (In Java eine Referenz). Aus
Analogiegründen verwendet man in Java dann dieselbe Syntax wie in C++.
> In Java ist das "new" IMHO völlig überflüssig und macht die Sprache
> uneinheitlich.
Das ist offensichtlich falsch.
> Was sind denn die Stärken der Sprache Java? Dass Operatorüberladung
> und Mehrfachvererbung verboten sind?
Ob Mehrfachvererbung (von Klassen) ein Feature ist ist sehr umstritten.
Sicher ist, das Mehrfachvererbung einen ganzen Batzen von
Konsistenzproblemen , Schwierigkeiten für die statische Typsicherheit
und dynamische Bindung mit sich bringt.
> Dass jede Klasse zwangsweise in eine eigene Datei muss?
Das ist für mich durchaus ein Feature. So finde ich eine Klasse auch in
einem Projekt, das ich nicht selbst geschrieben habe schnell und
zuverlässig.
> Dass jeder Anfänger auf die CLASSPATH-Geschichte reinfällt? :)
Welche CLASSPATH-Geschichte? Wenn Du die Tatsache meinst, das die VM
gerne wissen mag wo die Klassen liegen... das ist gut dokumentiert.
Welche Umgebungsvariablen jetzt für welchen Compile, Link und Execute
Schritt wirklich nötig sind habe ich noch nicht verstanden und auch
leider noch nicht in der Doku gefunden, also setzte ich halt alle...
> Für mich ist Java ein kastriertes C++.
In Java hat man den prozeduralen Teil abgeschnitten, der die
Abwärtskompatibilität zu C darstellt und Dinge wie Pointerarithmetik
und Mehrfachvererbung, die z.B die statische Typsicherheit gefährden,
weggelassen.
> Vielleicht sehe ich auch nur die verborgenen Vorteile dieser Sprache
> nicht, also wenn jemandem welche einfallen, nur her damit.
Java ist gut zu überschauen. Insbesondere durch die Einschränkungen ist
der Code IMHO wesentlich besser zu lesen als C++. Das Konzept ist
tatsächlich Objektorientiert und es gibt eine Standardisierte
Klassenbibliothek. Und es gibt sicher noch mehr. (Klar es gibt auch
schwächen, sonst würde ich für meine Diplomarbeit wohl auch lieber auf
Java zurückgreifen...)
> Vorteil von Java als Plattform ist sicher die Portabilität und die
> Möglichkeit der Benutzung auf WWW-Seiten. Das hat aber mit der
> Sprache selbst nichts zu tun.
Das stimmt so nicht. Pointerarithmetik z.B. kann auf unterschiedlichen
Plattformen durchaus zu unterschiedlichen Ergebnissen führen. Ein Grund
warum M$ in .net managed Code verbietet Pointerarithmetik zu betreiben.
Gruß Chris
--
A: because it distrupts the normal process of thought
Q: why is top posting frowned upon
Reply to: