Thread Ein paar Programmiertricks (39 answers)
Opened by roooot at 2008-03-22 23:16

murphy
 2008-03-27 21:06
#107562 #107562
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
KurtZ+2008-03-27 15:19:24--
Z.B. es gibt kein "class" Kommando, und die Klassen kann auch ich auch zur Laufzeit manipulieren. Private Methoden und Variablen muss ich ähnlich zu JS mit My und Closures simulieren.
[...]


Ich finde das ist etwas weit her geholt. Bei Perl heißt das Statement eben nicht class sondern package :-)

Wenn man Deiner Argumentation folgen will, dann kann man auch behaupten, dass man in Java die Klassen zur Laufzeit verändern kann (man muss dazu lediglich einen neuen Classloader definieren und den Binärcode der Klassen beim Laden anpassen, wofür es einige gute Bibliotheken gibt) und private Variablen nicht mal durch Closures emuliert werden können, da man die Zugriffskontrollen mittels Reflection komplett umgehen kann.

Ach ja, und in C++ kann man natürlich sowieso den Kernel anweisen, die Speicherseiten mit dem Code der Klassen schreibbar zu mappen, so dass man auch hier den Code zur Laufzeit verändern kann und mit etwas Zeigerarithmetik kommt man um jegliche Zugriffsbeschränkung für Instanzfelder herum.

Ist damit nun etwa bewiesen, dass C++ und Java keine echte klassenbasierte Objektorientierung haben?

Ich kann auch in Assembler Code generieren, der voll dem prototypenbasierten Objektmodell entspricht. Das geht da sogar einfacher als in C++. Ist Assembler deswegen eine Programmiersprache mit prototypenbasierter Objektorientierung?

Aber wie auch immer, ich glaube, wir kommen mit der Diskussion nicht nur vom Thema ab, sondern begeben uns auch langsam in den Bereich der reinen Geschmacksfragen. Und das sollten wir besser bleiben lassen...
When C++ is your hammer, every problem looks like your thumb.

View full thread Ein paar Programmiertricks