ruby vs python (is: Programmierung)

Ingo Lütkebohle iluetkeb at gmail.com
Wed Nov 10 08:54:44 CET 2004


> das is ned der punkt, es geht eben um den laufzeit schutz.
> bei applikationsservern wie zope, sTeam, tomcat oder caudium/roxen is es
> wichtig zur laufzeit neue klassen einbaun zu können. und da is es schon
> von vorteil wenn man das so machen kann, das die anwender sich nicht
> gegenseitig in die suppe spucken können.

Ah, OK.  Da reicht aber reines private/protected/public im Allgemeinen
nicht aus.

Erstmal kurz zu Python: Man kann Variablen durch einen
Namenskonvention vor externem Zugriff schützen.  Dann musst Du
Ableiten, um dran zu kommen -- wie bei anderen Sprachen meistens auch.
 Der wichtige Unterschied -- gerade in Deinem Beispiel -- ist, dass
man das Ableiten auch dynamisch zur Laufzeit machen kann und ausserdem
per Introspektion jederzeit andere Klassen inspizieren kann.

Das gilt für Java im Prinzip ähnlich und deshalb benutzt Tomcat auch
seperate Class-Loader für unterschiedliche Applikationen.  Dadurch ist
der Code komplett unsichtbar für alles ausserhalb der eigenen
Applikation (und Tomcat), so dass sich auch Introspektion erledigt
hat.

In C++ geht sowas prinzipiell nicht (ein Pointer und man hat
verloren), in Python kann man das machen, muss dazu aber auf das C-API
zurückgreifen und unterschiedliche Interpreter instanziieren.  Das
sind quasi unabhängige Interpreter-Threads im selben Prozess, mit sehr
weitgehender (aber nicht vollständiger) Trennung.

> oder anders, um zwei klassen zu definieren die das selbe Interface
> implementieren, musst du das auch explizit definieren, oder?

Das ist in Java in der Tat so.  Wie kann man das denn statisch prüfen,
wenn es keine Deklarationen gibt?

Bei Python läuft es im Prinzip darauf hinaus, dass man Methoden
benutzt und wenn das Objekt sie hat ist alles fein, wenn nicht, gibts
'ne Ausnahme zur Laufzeit.

Zu Typdeklarationen, warum sie nicht reichen, was Testen bringt und
warum das manchmal die "fehlenden" Typdeklarationen mehr als aufwiegen
kann, ein klasse Beitrag von Bruce Eckel:
  http://mindview.net/WebLog/log-0025

Das Weblog von Bruce Eckel ist auch ansonsten eine wahre Fundgrube zu
Programmiersprachen.  He wrote the books ;-)

Ingo



More information about the Linux mailing list