hallo again Christoph,
Vielleicht nur noch mal zur Verdeutlichung meines Standpunkts: Aus klassischen
OO-Sprachen (egal, ob prototypisch oder klassenbasiert) ...
was waeren denn das fuer sprachen - zumindest in der prototypenfraktion laesst
sich doch nur »Self« zum vergleich heranziehen. in den klassenbasierten sprachen
bin ich nicht so bewandert, kenne mich eigentlich nur mit »JAVA« aus und wuesste
auch nicht, welche sprache(n) dort als *klassisch* bezeichnet werden koennte(n) -
vielleicht ja doch wieder C++ ?;-)
... ist man es gewohnt, eine komplexe Vererbungshierarchie aufzubauen. In
JavaScript tut man (zumindest ich ;)) das in der Regel nicht. Daher ist
JavaScript keine klassische OO-Sprache.
au backe ... , ... wie die durch eine sprache zur verfuegung gestellten konzepte
schlussendlich genutzt werden, steht und faellt doch zuallerersteinmal mit dem
anwendungs(um)feld, der art der dortigen problemstellungen und deren moeglicher
komplexitaet sowie der grundsaetzlichen loesbarkeit einer aufgabe innerhalb der
vorhandenen rahmenbedingungen.
und wenn ich Deiner argumentation folgte, und »Self« als klassisch klassenlose
OO-sprache heranzoege, zerfiele doch das argument komplexer vererbungshierarchien
als kriterium klassischer 00-sprachen gleich wieder.
Weiterhin wird man in JavaScript nicht dazu gezwungen, objektorientiert zu
Programmieren. Also ist es keine reine OO-Sprache, obwohl Objekte ein integraler
Bestandteil des Sprachkerns sind.
in welchen sprachen der OOP wird man denn dazu gezwungen 00 zu programmieren?
und dass mein ich nicht als theoretischen scheingegenargument. OO ist eine denke,
ein geistiger werkzeugkasten, um komplexe probleme moeglichst effizient zu loesen.
jede sprache, die es mir ermoeglicht, aufgaben auf dem wege der OOP zu loesen,
darf auch als sprache der OO bezeichnet werden.
und wenn eine sprache auch noch anderen programmierparadigmen genuegt, disqualifiziert
sie dies dann natuerlich fuer das brustschildchen *_reine_ objektorientierte sprache*.
was bleibt dann aber zur etikettierung noch uebrig? - »Smalltalk«? ...
... ich weis es nicht, und ich finde es ebenfalls muessig, soetwas auszudiskutieren.
aber wenn man dies fuer eine sprache - wie hier zum bsp. fuer JavaScript - tut, dann
sollten die argumente schon stichhaltiger sein.
man kann aeusserst effizient programmieren, wenn man sich gar nicht erst
auf die von »constructor.prototpe« als fata morgana unscharf am horizont
versprochene emulation einer klassenbasierenden vererbung einlaesst.... man bleibe in seiner komoden funktionalen oase und preise deren
immerfrischen quellen [apply] und [call].Aber dieser Programmierstil ist dann nicht mehr OO, da Daten und Funktionalität
nicht in einem Paket zusammengefasst werden, sondern Funktionalität aus beliebiger
Quelle nach gutdünken hinzugemischt wird. ...
was ist an schnittstellenvererbung und objektkomposition nicht OO?
»Die am häufigsten mißverstandene Programmiersprache der Welt« - zitat aus dem nachwort:
» Zwei Leitsätze der "Gang of Four" für den erfolgreichen Einsatz von Entwurfsmustern
lauten: "Programmiere auf eine Schnittstelle hin, nicht auf eine Implementierung."
(klassenbasierte vs. Schnittstellen-Vererbung) und "Ziehe Objektkomposition der
Klassenvererbung vor." (Vererbung vs. Komposition) - JavaScript unterstützt diese
Programmierparadigmen.«
... Was zugegebenermaßen ziemlich praktisch ist ...
na also - es ist sogar richtig sexy
(habe ich bereits erwähnt, dass ich JavaScript - trotz aller Ecken und Kanten - mag?).
... ich hab' dich auch lieb ...
Über die genaue Klassifikation der Sprache Java/ECMA-Script lässt sich sicherlich
noch herrlich, aber letztlich sinnlos weiterdiskutieren. Aber hey, solange man Spaß
daran hat und dank Bänderriss auch keine andere Freizeitbeschäftigung, stehe ich dazu
gerne weiter zur Verfügung ;)
... ach noe lass mal - wie gefaellt Dir denn »Ruby«s vererbungskonzept so?... ;-)
ps
Über die genaue Klassifikation der Sprache Java/ECMA-Script lässt sich sicherlich
noch herrlich, aber letztlich sinnlos weiterdiskutieren.
ich denke wirklich, dass die Formulierung am ende dieses postings sehr belastbar ist.
so long - peterS. - pseliger@gmx.net
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
ie:( fl:) br:> va:( ls:& fo:) rl:) n3;} n4:} ss:} de:µ js:} mo:? zu:]