ruby vs python (is: Programmierung)

Ingo Lütkebohle iluetkeb at gmail.com
Tue Nov 9 23:04:10 CET 2004


On Tue, 9 Nov 2004 16:56:53 +0100, Martin Baehr
<mbaehr at email.archlab.tuwien.ac.at> wrote:
> in pike wäre das dann starke? kapselung. also nicht zu durchbrechen.
> ein entscheidender grund für mich pike zu verwenden.

Python basiert auf dem Prinzip, Fehler zu vermeiden aber wenn der
Entwickler sich unbedingt in den Fuss schiessen will... Dann geht das
meistens eh irgendwie, siehe unten.
 
> > In C++ kann man sie deklarativ durchbrechen, 
> was heisst das?

Das "friend" Schlüsselwort kann in einer Klassendeklaration verwendet
werden, um den angebenen Methoden, Funktionen oder Klassen beliebigen
Zugriff zu gewähren.  Das ist die vorgesehen Art und Weise sowas zu
machen, weil mans eben manchmal braucht.

Der "Trick" der hier beschrieben wurde, ist natürlich nur Ausdruck der
Tatsache, dass man bei Maschinencode eh keine sinnvollen
Beschränkungen auferlegen kann.  Wer unbedingt will, liest sich die
Objektdatei manuell rein, lädt die Methode beim Namen und ruft sie
auf.  Sowas muss die Laufzeitumgebung verhindern, nicht die
Programmiersprache.

Man kann auch in C++ mit dem PIMPL-Idiom (siehe Google) die Sache
etwas schwerer machen, aber wirklich verhindern kann sowas nur eine
sichere Maschine.

> ein modul in pike ist eine klasse von der es nur ein (globales) objekt gibt.

Jedes Modul ist eine Extra-Klasse? In Python ist das Modul auch ein
Objekt mit demselben Typ wie alle Module.
 
> was mir hier noch interessant erscheint is, das in java zwei objekte vom
> gleichen typ sind wenn sie die gleiche klasse haben, während in pike nur
> die implementierte schnittstelle vergleichen wird.

Was heisst für Dich gleicher Typ?  Ein Java-Objekt hat mehrere Typen
(den der Klasse und aller implementierten Interfaces), aber nur eine
Klasse.  Man kann es überall dort verwenden, wo *eine* der
implementierten Schnittstelle verlangt wird.
 
Typen scheinen übrigens immer noch ein sich entwickelndes Thema zu
sein, ich habe da von diversen neuen Entwicklungen gehört (ohne mich
genauer damit beschäftigt zu haben).  "Typinferenz" ist das Stichwort,
wenn jemand mal etwas googlen will.  Angeblich alle Vorteile der
Deklaration ohne sie hinschreiben zu müssen oder so.  Wers glaubt ;-)

> und ein konstruktor ist doch auch ein konzept aus der objektorientierten
> programmierung.

Genau das wollte ich damit sagen ;-)

Ingo



More information about the Linux mailing list