"Programmierer haben nicht aus Fehlern gelernt"

25.02.2002

CW: Wie sehen Sie die Zukunft von .NET?

MEYER: Es ist das klassische Zusammenprallen zweier Titanen, wobei auf der einen Seite .NET und auf der anderen Seite die Java-Welt steht. Wenn Microsoft seine Strategie klug umsetzt und die Message von .NET als die Lösung vieler Probleme in der Softwareentwicklung nicht zu reißerisch verkauft, dann kann es funktionieren. Es ist eine große Chance für Microsoft. Allerdings halte ich es nicht für besonders geschickt, sich nur auf die Web-Services zu beschränken, denn .NET hat für Programmierer sehr viel mehr zu bieten. Aber das ist offenbar nun einmal die Art und Weise, wie bei Microsoft Marketing funktioniert.

CW: Gefährden Sie nicht die Übertragbarkeit von Eiffel auf andere Plattformen, wenn Sie in die .NET-Version Eigenschaften einbauen, die durch die Common Language Runtime vorgegeben werden, die aber auf anderen Plattformen nicht realisierbar sind?

MEYER: Eiffel ist sehr portierbar, es läuft unter anderem auf allen wichtigen Unix-Derivaten und auch unter VMS. Das bezieht sich nicht nur auf die Programmiersprache, sondern auch auf die Bibliotheken. Die Portierbarkeit von Eiffel ist für uns daher sehr wichtig. Die weltweite Eiffel-Community ist in diesem Punkt sehr konservativ, so dass wir, wenn wir ein Feature in die .NET-Version einfügen, genau darauf achten, dass es auch auf allen anderen Plattformen zur Verfügung steht. Wir haben mit Indexing für Eiffel ein Verfahren entwickelt, das ähnlich den Attributen bei .NET das Hinzufügen von Features erlaubt, ohne dass man den Sprachkern und damit die Semantik modifizieren muss.

CW: Ist Objektorientiertheit überhaupt noch ein Feature, durch das sich Programmiersprachen unterscheiden können? Es ist doch inzwischen schon bei simplen Scriptsprachen zu finden.

MEYER: Es gibt einen Kern von Eigenschaften, der in praktisch allen Programmiersprachen ähnlich implementiert wird. Auf der höheren Ebene unterscheidet sich Eiffel hingegen in wichtigen Punkten. Ein Beispiel ist die Mehrfachvererbung, die von vielen OOP-Sprachen nicht unterstützt wird, oder unser Design-by-Contract. Und da wäre etwa die Idee der Agenten, die Funktionsbausteine darstellen, die an andere Objekte übergeben werden können, wie beispielsweise die Delegate-Klasse bei .NET. Das sind wichtige Bereiche, in denen sich die verschiedenen OOP-Sprachen sehr stark unterscheiden.