Hallo, Stefan!
Wie mach ich das mit Iteratoren so elegant wie mit einer Schleife?
firstIndex to: lastIndex do: [:index | (catalog at: index) showOn: aStream ]
Jetzt du!
Workspace öffnen:
'dies ist ein Beispiel' select: [:each | each isVowel ]. <ALT-P>
nicht mogeln. Wie kriege ich mit einem Iterator die Einträge aus der Liste? Wenn ich deinem Beispiel folge, frage ich jeden Katalogartikel nach seiner Position. Die sollte der aber eigentlich nicht kennen, denn gemäß OO-Prinzip Verkapseln und Verstecken, weiß der einzelne Artikel nicht, dass er in einer Liste gesammelt ist.
Du meinst Traits, oder Iteratoren mit anonymen Funktionen, um das Problem der Kapselung zu umgehen?
http://web.cecs.pdx.edu/~black/publications/refactoringsACM.pdf womit wir bei Pattern der "funktionalen Programmierung" wären .... Aber Du hast schon recht, zwei Schleifen meist besser....
Ich bin in Bayern zur Schule gegangen und hab hier auch fürs Lehramt studiert. Mit mir musst du langsam reden. Was ist der Inhalt und die Oberfläche der Funktion 1/x?
Sorry, die Funktion rotiert um die x-Achse.
Wo ist das Problem? Du kannst die Farbe doch gar nicht reinschütten, weil
Nunja, ich wollte nur auf das Problem hinweisen, daß ich bei einem solchen Körper begrenztes Volumen bei unendlicher Oberfläche habe, von mir aus kann man das auch bei x=100 deckeln und ich brauche mehr als 3.14 Liter Farbe, wenn ich das Teil anmale, als wenn ich es ausgieße und den Rest rausschütte. Ein logisches Paradoxon.
Logische Widersprüche in der Mathematik kenne ich zuhauf....
Wissen wir seit Gödel, dass es so was geben muss. Aber was hat das mit der Verstehbarkeit eines Systems zu tun, das du nie selbst erfinden könntest?
Ochja.... ich finde Mathematik zwar verständlich, es ist aber ein sehr unlogisches Handwerkszeug.... im Studium habe ich mich daher auf eine neue Art Mathe eingelassen, Differenzialformen - Symplektische Algebra ... hat mir normaler Mathematik nix mehr zu tun ... siehe Skript Zwirnbauer ....
Lisp durchsucht bei Mehrfachvererbung ja die Klassenhierarchie in einer vordefinierten Reihenfolge. Die erste Oberklasse wird genommen.
Was meinst du damit? Wofür wird die "erste Oberklasse" genommen?
Muß das Beispiel mal rauskramen ...
Bei C++ muß der Klassenname vorangestellt, also genau bestimmt werden. Unter bestimmten Voraussetzungen, gerade im Zusammenhang mit Grabage-Collection und Mehrprozessorsystemen gibt es gigantische Schwierigkeiten, auch beim Compilerbau ... daher -> Konzept wackelig.
- Bei C++ oder Lisp?
Lisp und auch bei C++ kann man so richtig Mist bauen damit.
- Hab ich mit GC bei Einfachvererbungs-Sprachen wie Smalltalk nicht die gleichen Probleme? Was hat GC überhaupt mit Vererbung zu tun?
Alles bläht sich enorm auf, und im Falle der Mehrfachvererbung, sogar rekursiv, wird es mit dem RAM kritisch ... das hat Auswirkungen auf die GC. Ist komplizierter zu erklären ... siehe Google.
- Nur weil die Implementation nichts taugt, muss ein Konzept nicht wackelig sein.
Ok. Sind meine Erfahrungen bisher ...
Außerdem kann es passieren, daß die Laufzeit des Programms explodiert, völlig unvorhergesehen, z.B. dann, wenn sich die Katze in den Schwanz beißt, sprich Oberklassen von Unterklassen umdefiniert werden.
Was heißt, dass Oberklassen von Unterklassen umdefiniert werden?
Jein. Die Instanzen mussen sich verändern. Im Falle dessen, daß Klassen auch Objekte sind, verändern sich die Klassen dann ja auch mit. Je nach Implementierung...
Viel Zeugs eben, das das System unheimlich langsam macht. Rails ist das Vista der Ruby-Webframeworks. Vor vielen Jahren hat Avi Bryant ein Framework namens IOWA in Ruby begonnen, das er Kirk Haines vererbt hat. In nächster Zeit wird's da endlich die offizielle Version 1.0 geben und von der Geschwindigkeit und dem Ressourcenbedarf her ist das um Klassen besser.
Aha, danke für den Hinweis.
Gemstone war nicht ganz billig, als ich das letzte Mal nachgeschaut hab. Was mach ich, wenn ich das Geld nicht hab?
Gemstone fragen, ob die Dir als Lehrer kostenlos eine geben, für Unterricht. Haben die kein Problem mit, denke ich.
Ich nehme dabbledb, das geht noch schneller. Aber was kann ich jetzt? Was hab ich dabei gelernt? Hab ich mich durch das Anklicken vorgefertigter Komponenten irgendwie weiterentwickelt?
Kenne ich leider nicht
dabbledb.com, IIRC. Von Avi Bryant, baut auf Seaside auf.
Aha, fein, schaue ich mir an.
300 GB Textdaten? Unter 1/10 Sekunde? Mit Squeak? Cool. Wie groß ist denn da die Indexdatei?
Mit Squeak noch nicht probiert, aber mit Glimpse habe ich Benchmarks gefahren. Die Indexdatei schwankt etwas entsprechend der Verschiedenheit der Dateninhalte und der Größe der Datenbank.... aber liegt bei 1.5-5% des Datenvolumens. Nur - die Indizierung dauert ellenlange ... verbraucht sehr viel Speicher. Google macht das ebenso - die Server selber sind Cluster und recht klein. Die Indexer sind mächtig.....
s.
Guido
stepken (14.03. 00:56):
Ich bin in Bayern zur Schule gegangen und hab hier auch fürs Lehramt studiert. Mit mir musst du langsam reden. Was ist der Inhalt und die Oberfläche der Funktion 1/x?
Sorry, die Funktion rotiert um die x-Achse.
Wo ist das Problem? Du kannst die Farbe doch gar nicht reinschütten, weil
Nunja, ich wollte nur auf das Problem hinweisen, daß ich bei einem solchen Körper begrenztes Volumen bei unendlicher Oberfläche habe, von mir aus kann man das auch bei x=100 deckeln und ich brauche mehr als 3.14 Liter Farbe, wenn ich das Teil anmale, als wenn ich es ausgieße und den Rest rausschütte. Ein logisches Paradoxon.
Ich persönlich sehe das Problem darin, dass die Zahl der Liter als Raummaß mit der Zahl der m^2 der Oberfläche verglichen wird. Mein Kühlschrank hat hinten einen Kondensator, in den weniger Kühlmittel reinpasst als ich Farbe fürs Anstreichen brauchen würde. Und mein Kühlschrank ist ein Liebherr, kein Paradoxon.
Lisp und auch bei C++ kann man so richtig Mist bauen damit.
Natürlich. Aber auch bei Einfachvererbung ist das möglich. Heutzutage sind Klassenhierarchien flacher als früher, weil mehr mit Komposition gearbeitet wird als mit Vererbung. Wenn aber "richtig Mist" gebaut wird, dann liegt es entweder an einer unsauberen Implementation des Konzepts oder an einem Programmierer, der das Handbuch nicht gelesen hat.
- Hab ich mit GC bei Einfachvererbungs-Sprachen wie Smalltalk nicht
die gleichen Probleme? Was hat GC überhaupt mit Vererbung zu tun?
Alles bläht sich enorm auf, und im Falle der Mehrfachvererbung, sogar rekursiv, wird es mit dem RAM kritisch ... das hat Auswirkungen auf die GC. Ist komplizierter zu erklären ... siehe Google.
hm... versteh ich nicht. Was hat die tatsächliche Referenzierung eines Objekts für einen Zusammenhang mit seiner Abstammung? Ich gebe gerne zu, von GC oder Compilerbau nicht wirklich was zu verstehen, aber ich sehe das als zwei unabhängige Konzepte an.
Außerdem kann es passieren, daß die Laufzeit des Programms explodiert, völlig unvorhergesehen, z.B. dann, wenn sich die Katze in den Schwanz beißt, sprich Oberklassen von Unterklassen umdefiniert werden.
Was heißt, dass Oberklassen von Unterklassen umdefiniert werden?
Jein. Die Instanzen mussen sich verändern. Im Falle dessen, daß Klassen auch Objekte sind, verändern sich die Klassen dann ja auch mit. Je nach Implementierung...
Äh... so wie in Smalltalk? Auch hier sehe ich den Zusammenhang mit Mehrfachvererbung nicht. Bitte erleuchtet mich, Ahnungshabende :-)
Gemstone war nicht ganz billig, als ich das letzte Mal nachgeschaut hab. Was mach ich, wenn ich das Geld nicht hab?
Gemstone fragen, ob die Dir als Lehrer kostenlos eine geben, für Unterricht. Haben die kein Problem mit, denke ich.
jo... Microsoft macht das auch so. Nur blöd, dass ich leider nur den Fisch für heute in der Hand halte und nicht gelernt hab, selbst zu fischen.
s.
squeak-ev@lists.squeakfoundation.org