PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Objektorientierung nicht möglich?


huha
2003-10-03, 23:17:11
Hallo!

Eine Grundsatzfrage: Haltet ihr es für möglich bzw. sinnvoll, eine Programmiersprache zu entwickeln, die 100% Objektorientiert ist? Könntet ihr mit einer solchen Programmiersprache umgehen oder wäre euch das zu kompliziert?

Als Beispiel nehme ich mal Pseudocode:


nicht-OOP:

a = b + c
print a

voll-OOP:

a.value.add(2, b.value, c.value)
screen.print(a.value)


Bitte entschuldigt dieses grauenhafte Beispiel, aber mir fällt gerade ncihts besseres ein.
-huha

thop
2003-10-03, 23:23:48
Ruby is 100% OO.

Demirug
2003-10-03, 23:29:33
Operatoren wie + - = usw. sind durchaus mit der OOP vereinbar.

HellHorse
2003-10-03, 23:36:43
Das gibt es schon.
Smalltalk macht genau das. + ist bloss eine Nachricht, die an ein Integerobjekt geschickt wird mit einem anderen als Parameter.
Dort sind sogar Klassen Objekte.

Mystery
2003-10-04, 08:12:20
In Java geht ohne OOP auch nicht wirklich viel. Ist ja eigentlich nix anderes als Plattformunabhängiges cpp und smalltalk.
Ob jetzt ein zwanghaftes OOP bei sämtlichen Objekten Sinn macht bleibt dahingestellt.

Anders sieht es mit pseudo-OOP Sprachen aus wie z.B. Pascal die ab Version...ääh...6 (oder 5) OOP aufgesetzt bekommen haben und das dann nichtmal richtig funktioniert.
Es kommt also auch auf die Sprache an.

Funktionale Programmiersprachen sind aber immer noch am coolsten...SML vor ;)

HellHorse
2003-10-04, 22:35:35
Original geschrieben von Mystery
In Java geht ohne OOP auch nicht wirklich viel.

Naja, die ganze Arithmetik. :D
Original geschrieben von Mystery
...
Ist ja eigentlich nix anderes als Plattformunabhängiges cpp und smalltalk.
...

Smalltalk ist plattforumunabhängig und unterscheidet sich zum Teil klar von Java z.B. ist es typenfrei. Da gibt es die Smalltalk Eigenheiten, dass z.B. ein Codeblock auch ein Objekt ist und daher hin und hergeschoben werden kann. Und durch die komplette Objektorientierung werden so nette Sachen wie der Inspector möglich.
Original geschrieben von Mystery
...
Ob jetzt ein zwanghaftes OOP bei sämtlichen Objekten Sinn macht bleibt dahingestellt.
...

Auch wenn es auf den ersten Blick nicht so aussieht, ist es bei Zahlen eben schon geil.
Stell dir vor, du musst dich nicht darum kümmern ob die Zahl ganzzahl oder fp ist. Du brauchst dich auch nicht um die Genauigkeit zu kümmern. Das macht alles das System für dich.
So wäre z.B die erste Arianne 5 nicht abgekackt. ;D
Klar es ist langsamer. Aber man macht auch OO nicht wegen dem Speed. Und für irgendwas ausser gamen sollten wir die Rechenleistung von heutigen PCs schon bauchen :D

Zudem nervt das Java 2 Typensystem (primitiv und referenz) immer. Besonders im Umgang mit Collections oder EJB.

huha
2003-10-04, 23:54:48
Demirug: Führe das mal bitte etwas ausfürhlicher aus...
Es geht hier ja nur um die Theorie, da ich behaupte, daß man eine wirklich 100% OO-Programmiersprache - also eine, in der ALLES Objekte sind, die Eigenschaften, Funktionen etc. haben - zwar möglich wäre aber sich nur schwer zum eigentlichen Programmieren eignen würde.

Operatoren sind ja ein "Überbleibsel" aus nicht-OO-Zeiten, ein sehr nützliches zwar, aber ein Überbleibsel. Und da in einer voll-OO-SPrache alles Objekte sind, kann man gar nicht etwas aufrufen, ohne zu Spezifizieren, was man aufrufen will.

Anderer Pseudocode, der meine 'Idee' etwas detaillierter wiederspiegelt und gleichzeitig auch zeigt, daß man zwar Operatoren einsetzen kann, diese aber nicht mehr direkt, sondern nur noch als Funktionen von Objekten.


a.value.change(math.add(2, b.value, c.value).result)


Wobei mir irgendwie gerade auffällt, daß mich mein Pseudocode leicht an die reversive polnische Notation (von Taschenrechner) erinnert - zuerst werden die Variablen eingegeben und dann der Operator.

-huha

HellHorse
2003-10-05, 00:37:20
http://web.green.ch/marschall/pics/plus.png
http://web.green.ch/marschall/pics/adddigit.png

thop
2003-10-05, 01:01:06
Es geht hier ja nur um die Theorie, da ich behaupte, daß man eine wirklich 100% OO-Programmiersprache - also eine, in der ALLES Objekte sind, die Eigenschaften, Funktionen etc. haben - zwar möglich wäre aber sich nur schwer zum eigentlichen Programmieren eignen würde.
Hast du Tomaten auf den Augen? :) RUBY! Alles ist ein Objekt.

KiBa
2003-10-05, 01:31:14
@huha
ich weiss auch nicht, auf was du hinaus willst.
was hasst du z.b. gegen den ausdruck x = 7 + 3? 7 ist ein objekt (der klasse integer), + eine methode mit dem objekt 3 als parameter. das ist z.b. die idee von smalltalk, was ist daran nicht voll objekt-orientiert?
da smalltalk + als normale methode behandelt, passiert dann aber auch sowas: 1 + 2 * 3 ist dann nämlich 9. ob da nun + oder add oder sonstwas steht, ist für smalltalk nicht von belang, klammern brauchts da auch nicht...

Xmas
2003-10-05, 02:35:59
Original geschrieben von huha
Operatoren sind ja ein "Überbleibsel" aus nicht-OO-Zeiten, ein sehr nützliches zwar, aber ein Überbleibsel. Und da in einer voll-OO-SPrache alles Objekte sind, kann man gar nicht etwas aufrufen, ohne zu Spezifizieren, was man aufrufen will.
Erschließt sich mir genausowenig wie KiBa. Operatoren sind lediglich syntactic sugar für Methodenaufrufe, netterweise auch noch meist mit Präzedenz.

Also egal welche der folgenden Syntaxmöglichkeiten genommen wird, Objektorientiertheit ist bei allen möglich:
a = b + c
a.operator=(b.operator+(c))
a.assign(b.add(c))

Demirug
2003-10-05, 12:00:14
Original geschrieben von huha
Demirug: Führe das mal bitte etwas ausfürhlicher aus...
Es geht hier ja nur um die Theorie, da ich behaupte, daß man eine wirklich 100% OO-Programmiersprache - also eine, in der ALLES Objekte sind, die Eigenschaften, Funktionen etc. haben - zwar möglich wäre aber sich nur schwer zum eigentlichen Programmieren eignen würde.

Operatoren sind ja ein "Überbleibsel" aus nicht-OO-Zeiten, ein sehr nützliches zwar, aber ein Überbleibsel. Und da in einer voll-OO-SPrache alles Objekte sind, kann man gar nicht etwas aufrufen, ohne zu Spezifizieren, was man aufrufen will.

Wie Xmas schon sagt sind operatoren syntactic sugar. Im inneren sind das ganz normale Methode. Operatoren zu entferen stellt ja auch keinen Fortschritt dar.

Könnte man dadurch schneller programmieren? Nein
Wird der Code lessbarer? Nein
Verhindert es mögliche Fehler? Nein