Das Gegenteil von "Conceptual integrity" ist dann womöglich eine unsinnige Anhäufung von "Special Cases"?
"This is a special case!" Im Zusammenhang mit jener Software (siehe Unbeschreiblich mies) habe ich das inzwischen so oft gehört, dass es quasi den Normalfall darstellt. Wenn hier irgendwas "normal" funktionieren würde, das wäre ein Spezialfall (und fast schon eine Sensation...)!
Von Anfang an wurde scheinbar unverdrossen Spezialfall auf Spezialfall, und Sonderlösung auf Sonderlösung zu unsinnigen Spezialfallbergen und Sonderlösungsschutthalden gestapelt und getürmt, auf denen man jetzt ständig ausrutscht und stolpert. Unwegsames Gelände also. Selbst ein simples Konzept wie ein "Container, der Seiten enthält", wurde zunächst begrifflich bis zur Unkenntlichkeit entstellt, und dann noch zusätzlich programmtechnisch verstümmelt. Immer mit bester Absicht, natürlich...
Wednesday, October 18, 2006
Conceptual integrity
Noch ein netter Gedanke. Stammt aus dem legendären Buch Mythical man month. Meint sowas wie "konzeptionelle Einheitlichkeit", oder anders ausgedrückt:
"better to have one good idea than many bad or uncoordinated nonstandard ideas"Also, am besten mit einem simplen und klaren Konzept auskommen, und das durchziehen. Und da wären wir eh schon wieder bei Wie gehe ich mit Komplexität um? (Nämlich am besten gar nicht. Von Haus aus vermeiden.)
Nach all den Jahren...
Ruby Beispiele kommen in der Regel so daher:
Aber siehe da, es gibt das eigenclass - xmpfilter: automagic Test::Unit assertions/RSpec expectations and code annotations Tool. Aus solchem Ruby Code:
folgender wunderbarer Output:
Ich hatte dieses Tool schon mal vor längerem entdeckt, aber auch wieder vergessen, weil es nicht unter Windows funktionierte, und nun: Es geht einfach! Wunderbar!! Nach all den Jahren!!!
Im Kommentar sieht man gleich das Ergebnis der Ausführung der jeweiligen Programmzeile: Sehr schön, informativ, aber auch ein wenig mühsam jede Zeile mit dem entsprechenden Ergebnis zu versehen.a, b = "foo", "baz"
a + b # => "foobaz"
a.size # => 3
Aber siehe da, es gibt das eigenclass - xmpfilter: automagic Test::Unit assertions/RSpec expectations and code annotations Tool. Aus solchem Ruby Code:
wird nach Aufruf von xmpfilter.rb -a example_02.rba = 1
10.times do |i|
i ** 2 # =>
a += i
end
A = 1
A = 1
folgender wunderbarer Output:
D.h. nach "# =>" wurden die Ergebnisse der Ausführung von "i ** 2" beim Schleifendurchlauf eingefügt, und die Zeile, die eine Warnung hervorruft, wurde direkt mit der Warnung als Kommentar vermerkt.a = 1
10.times do |i|
i ** 2 # => 0, 1, 4, 9, 16, 25, 36, 49, 64, 81
a += i
end
A = 1
A = 1 # !> already initialized constant A
Ich hatte dieses Tool schon mal vor längerem entdeckt, aber auch wieder vergessen, weil es nicht unter Windows funktionierte, und nun: Es geht einfach! Wunderbar!! Nach all den Jahren!!!
Tuesday, October 17, 2006
Wie gehe ich mit Komplexität um?
Ein kurzer Gedanke letztens: Ob vielleicht das eigentlich bezeichnende, unterscheidende, besondere Merkmal an IT, an der Beschäftigung mit Software ist, dass ich ganz allgemein mit Komplexität konfrontiert bin und wie ich damit umgehe...
Ob ich sie überhaupt erkenne, ob ich sie ahne, aber ignoriere, ob ich mit letzten Kräften mit der Komplexität kämpfe und verzweifelte Siege erringe, usw...
Oder ob ich, wie steht es so schön hier:
Ob ich sie überhaupt erkenne, ob ich sie ahne, aber ignoriere, ob ich mit letzten Kräften mit der Komplexität kämpfe und verzweifelte Siege erringe, usw...
Oder ob ich, wie steht es so schön hier:
Managing Complexity - The aim of Designing Code:lieber simpel anfangen und dann darum kämpfen simpel zu bleiben!
"you start with something simple and then battle with it to keep it simple"
Wednesday, October 04, 2006
Begriffsverwirrung MVC/MVC1/MVC2
Die Zutaten: MVC, MVC1, MVC2, MVC Model1, MVC Model 2, Model 1, Model 2, JSP, Servlet...
Zur Frage, was denn der Unterschied zwischen MVC1 und MVC2 sei, ergibt sich z.B., nur auszugsweise:
Bitte nicht MVC1 mit Model 1, und MVC2 mit Model 2 verwechseln, aber bitte beachten, dass Model 2 eigentlich MVC (ohne 1 und 2) darstellt, und bitte nicht verwirren lassen, dass manchmal von Model 1 MVC, oder Model 2 MVC gesprochen wird, was überhaupt nichts zu bedeuten hat, weil entweder Model 1 oder MVC 1 gemeint ist, oder Model 2 oder MVC 2, wobei Model 2 eher nur MVC(ohne 1 oder 2), aber dennoch ....?
Also, haben wir jetzt irgendwas gelernt? Vielleicht,
Zur Frage, was denn der Unterschied zwischen MVC1 und MVC2 sei, ergibt sich z.B., nur auszugsweise:
- "It's model 1 and model 2 (not MVC1& MVC2), and model 2 is synomonous with MVC, which is preferable for its flexibility."
(Was? MVC1 ist nicht gleich Model 1, MVC2 ist nicht gleich Model2, aber Model 2 ist gleich MVC (ohne 1 oder 2)?). - Struts and Java Server Faces are based on model 2 MVC.
(Ist Model 2 MVC etwas anderes als MVC2, oder Model 2? Welche feinsinnige Variante lauert da?) - Further to this there is also model2X which uses the JSP to create XML which is then transformed using an XSLT stylesheet; thereby seperating presentation from content generation
(Ach du dicke Tüte, jetzt kommt so ein Schlaumeier mit noch einer Variante daher....model2x...XML, XSLT...). - And there is Pull MVC and Push MVC, rock the Pull MVC vote.
(Oje, noch einer, nein, bitte keine push/pull-Debatten) - In MVC1 the business Logic and presentation logic will be presented in the same page where as in the case of MVC2 the business logic and presentation logic will be seperated. (Aha!)
Bitte nicht MVC1 mit Model 1, und MVC2 mit Model 2 verwechseln, aber bitte beachten, dass Model 2 eigentlich MVC (ohne 1 und 2) darstellt, und bitte nicht verwirren lassen, dass manchmal von Model 1 MVC, oder Model 2 MVC gesprochen wird, was überhaupt nichts zu bedeuten hat, weil entweder Model 1 oder MVC 1 gemeint ist, oder Model 2 oder MVC 2, wobei Model 2 eher nur MVC(ohne 1 oder 2), aber dennoch ....?
Also, haben wir jetzt irgendwas gelernt? Vielleicht,
- dass ähnlich klingende Begriffe nicht unbedingt etwas Ähnliches bedeuten.
- dass sich mit 2 Zahlen (1, 2) und 2 Wörtern (Model, MVC) ca. x (ne ganz Menge) Kombinationen bilden lassen und man sich sicher sein kann, dass man in einer Diskussion früher oder später ausnahmslos allen begegnet: MVC, Model, MVC1, MVC2, MVC Model, MVC Model 1, Model 1, Model 2....
- dass es immer mindestens einen gibt, der den Unterschied zwar auch nicht genau erklären kann, aber
- ganz genau weiß, dass die eine (oder andere) Variante besser ist
- ungefragt eine dritte Variante ins Spiel bringt
- aus unerfindlichen Gründen auf "Push"- und "Pull"-Aspekte hinweist und entschieden für eins davon eintritt
Tibet-Terrier?
Ich habe das zunächst für einen Witz oder Missverständnis gehalten, eine Hundeart namens "Tibet-Terrier" (ein Dalai Lama der Terrier, oder wie...)! Aber siehe da, natürlich gibt es eine, siehe z.B. Tibet-Terrier - Wikipedia
Und was soll das jetzt? Keine Ahnung. Vielleicht: Wenn man einen Terrier, der gar keiner ist, will, dann könnte man vielleicht einen Tibet-Terrier nehmen.
"Der Tibet-Terrier, in Tibet hieß er Tibet-Apso oder auch Doki-Apso, ist ursprünglich ein Hütehund (...). Er stammt ursprünglich aus Tibet, aus Höhen von um die 4500 m."1930 brachte eine englische Ärztin zwei dieser Hunde aus Tibet mit, 1937 wurden sie als Rasse anerkannt. Aber, was passierte da:
"Dort wurde als Rassebezeichnung fälschlicherweise statt Tibet-Apso Tibet-Terrier eingetragen, obwohl der Tibet-Terrier nichts vom Charakter eines Terriers hat."Ojeoje, der Tibet-Terrier heißt zwar so, ist aber gar keiner! Ist ja auch egal, auf jeden Fall scheint er ein netter zu sein:
"Diese Rasse ist auch für Anfänger geeignet, wenn sie sich mit den Ursprüngen der Rasse beschäftigt haben und wissen was diese für die Haltung bedeuten. Im Zweifel sollten Anfänger eine Hundeschule besuchen, denn Tibet Terrier sind so intelligent, dass sie sich dumm stellen können, wenn sie zu bestimmten Dingen keine Lust haben."Interessant: ...so intelligent, dass sie sich dumm stellen können... Das erinnert mich an irgendwas... Aber egal, dafür, dass ich bis vor kurzem bei Terrier maximal an Yorkshire-Terrier gedacht, und Tibet-Terrier ganz klar für einen Witz gehalten hätte, gibt es ziemlich viele, auf Terrier - Wikipedia habe ich ca. 50 gezählt! Vom Airedale-Terrier bis zum Zwergbullterrier. Vom American Hairless Terrier über den Tibet-Terrier (der ja gar keiner ist, aber egal... (ja, gibt es da noch mehr, die eigentlich keine sind? (Ach, egal!))) bis zum Yorkshire Terrier.
Und was soll das jetzt? Keine Ahnung. Vielleicht: Wenn man einen Terrier, der gar keiner ist, will, dann könnte man vielleicht einen Tibet-Terrier nehmen.
Begriffsverwirrung...
Nur zu meiner Erinnerung: Einen Beitrag, den man unbedingt mal schreiben müsste, wäre die Verwirrung rund um Begriffe wie ModelViewController/MVC/MVC2 und Multi-Tier/Three-Tier/N-Tier und ähnliches.
Subscribe to:
Posts (Atom)