|
|||
Archiv 2004, Februar Nihil tam difficile est, quin quaerendo investigari possit
|
|||
14.02.2004 Nihil novi sub sole: DMP – schon wieder etwas, was passt. Mein Problem bei meinem Kernel war, dass ich noch kein (funktionierendes) Konzept für Mehrdateien-Objekte installiert hatte. Die gesamten Fenster, Tasks und Reports basierten auf einer einzigen Datei. Das war auch der Grund, warum ich das Problem mit „Rollen“ ansprach, denn meine komplexen Komponenten, die immer mit persistenten Objekte liiert waren, sind an der Stelle noch nicht flexibel genug. Das Wissen um ihre Zusammenhänge, das im DMP beschrieben wird, scheint mir zwar das zu sein, was ich mit meinen Input-/Output-Metadaten bearbeite, noch habe ich freilich keine Idee, wie ich dies in ein übergeordnetes Modell bringen soll, sodass ein Generator die Metadaten (für die existierenden Kernel-Einheiten) produzieren kann. Das, so denke ich mir eben, werde ich über die Rollen erledigen können. Ansonsten? Deprimieren mich meine Überlegungen über die Zugewinnfunktion der Intelligenz, auch wenn ich Intelligenz und Wissen sicher mit weniger Worten als sonst jemand erklären kann. 15:15 Dixi: there is
an end of the matter; everything that could be said has been said
– for today 12.02.2004 IKI: IKI – nichts ist sicherer versteckt als Worte auf dem Internet. Ich kann hier bloggen und schreiben, was ich mag, den nächsten Nobelpreis, den dümmsten Schwachsinn, die größte Beleidigung, den infamsten Betrug: Die einfache Tatsache von 3 Milliarden Websites vernichtet die Information, die ich in meinen Worten ablege. Genau wie die Elementarteilchen oder die Partikel der Thermodynamik keine Information liefern können: weil sie ununterscheidbar sind. Zwar werde ich von GoogleTM gefunden, doch der Cache bei Google scheint wohl entgegen meiner „hochprofessionellen“ Metadaten-Vorgabe von enormer Überlebensfähigkeit zu sein. Freilich würde selbst eine tagesgenaue Abfrage durch die Suchmaschinen wenig an der Tatsache ändern, dass ich gar nicht auffindbar bin – in der Masse, ohne Bekanntheitsgrad, ohne „Multiplikatoren“ oder sonstige „Booster“ kann ich Tagebuch führen wie in meinem Schlafzimmer. Die Wahrscheinlichkeit, dass es dort gelesen würde, wäre sicher sogar höher. Eine Frage der Auffindbarkeit – ganz wie bei SOA oder überhaupt allen informativen Problemen (Stichwort „Datenschrott“, „Datengrab“). Das nautische Problem (Navigationsproblem) ist, sind wir ehrlich, inzwischen die schmerzhafteste aller unserer Aufgaben in unserer hochmodernen Informationsgesellschaft, die vor lauter Informationswut Information in solchen Massen erzeugt, dass sie sie effektiver vernichtet als jede andere Gesellschaftsform. Merkwürdig. Obwohl ich diesen Blog keinesfalls führte, um gelesen zu werden – da rechnete ich mir nicht wirklich Chancen aus, unabhängig von der Nautik – sondern als Dokumentation und Nachweis für mich über den Fortschritt eines Projektes, bei dem mein Glaube an mich mir deutlich sagt, dass ich Patente berühre an der vordersten Front der IT-Entwicklung und demnach, deutschem Recht gemäß, den „Stand der Technik“ aufgrund von „Veröffentlichung“ heranziehen muss, um zu demonstrieren, dass meine Ideen von nirgend woher geklaut sind: Weil ich das nicht nötig habe. Weil meine Lösungen auf meinem eigenen Mist wachsen. Weil niemand heutzutage noch genügend Information aufnehmen kann, um überhaupt an all die neuen „fremden Lösungen“ zu kommen. Weil Lösungen in Aufgabenstellungen begründet liegen und nicht in amerikanischen Superhirnen. Weil Patente für Ideen nur dazu dienen, „Freigabeerklärungen“ für Ideen zu erzwingen und damit „Ideen-Engpässe“ schaffen mit dem ganz ökonomischen Grund, dass „Verknappung“ die Preise erhöht und der ganz „informativen“ Folge, dass die Verknappung den Fortschritt hemmt, der immer eine breite Basis braucht (an vielen Studien in USA längst nachgewiesen, wie nicht zuletzt auf den von mir angeführten Links belegt wird): bestes Positiv-Beispiel Java versus C++, bestes Negativ-Beispiel: Microsoft und Netscape (©/®, beides eingetragene Firmen-/Markennamen). Na ja gut, ich kann damit leben. Ich lebe damit, dass ich als einzige Person weiß, was Information ist und dass mich deshalb absolut verständlicherweise kein Mensch ernst nimmt und erst recht keiner hinhört, ich lebe damit, meine Ideen als Weisheit letzter Schluss von hoch bezahlten Experten der Industrie unter tollen Namen und mit viel Beifall zu entdecken (die Universitäten kommen wohl nicht mehr dem rapiden Tempo nach)... und ja, ich bedaure mich dafür sehr... weil ich jedoch nicht zaubern kann, muss ich es dabei bewenden lassen – beim Selbstmitleid. Und kann mich wieder der Zugewinnfunktion der Intelligenz widmen, die mir wegen des IKI und wegen der Datengrab-Problematik der Industriegesellschaft wieder einfiel, weil nämlich höhere Intelligenz nicht immer nur gewinnt, sondern ab einer bestimmten Grenze auch wieder verliert, beschrieben eben durch diese Zugewinnfunktion der Intelligenz. Eine Abschätzung wäre mal ganz hübsch, schätze ich. 14:54 Dixi: there is
an end of the matter; everything that could be said has been said
– for today 11.02.2004 Jonathan Schwartz, SUN: Roadmap – was für ein schöner Ausdruck für das, was die ML-Methode produziert. Genau um dieses Roadmap sprawl (Wucherung) zu vermeiden, muss nämlich „coordination force“ berücksichtigt werden. Denn: you have no choice but to build your own. Du kommst nicht um Koordination herum, wenn ein paar unabhängige Objekte miteinander als Informationsverarbeitung auftreten sollen: Die hat nämlich (notwendig) immer einen Zweck, Arbeit zu erledigen, denn Information ist Wirkung und „verbraucht“ deshalb immer Energie. Wer sie aufdecken oder verwenden will, muss deshalb immer Arbeit investieren – deshalb kann auch ein reines Datum, eine Variable, ein einfacher Zustand niemals Information sein, sondern höchstens einen Hinweis darauf geben, wie viel Information er enthält, wie viel Arbeit also etwas oder jemand hineinsteckte, um ihn zu erzeugen. SOA! Das ist mein neues Zauberwort – das ist mein Kernel, endlich ein vernünftiger Fachausdruck, der mich nicht sofort in die Laienschublade stopft. 15:24 Dixi: there is
an end of the matter; everything that could be said has been said
– for today 10.02.2004 IT-Weisheit: Ok – bei meinen Zeitfressern habe ich nun die Suche soweit fertig, dass sie ergänzende Datei-Suchen durchführen kann, dort die bisher gezielt ausgewählten Angaben in der Statusleiste anzeigt, genauso wie das rufende Fenster, und bei den ergänzenden Suchen auch die Vorgaben aus dem früheren Suchfenster mitberücksichtigt. Wohlgemerkt – nur aus dem letzten vorherigen Suchfenster, denn diese Suche, die ich im aktuellen Fenster anzeige, ist nicht die gesamte Suche, die vom allerersten interessierten Fenster gestartet wurde. Diese „Detailsuche“ hier soll nur meinen Anwendern helfen, ihre Auswahl genau zu treffen. Haben sie das getan, müssen sie es notieren – und im allerersten Fenster, dort, wo sie ihre eigentliche Verarbeitung treiben, dann beauftragen. Klingt kompliziert? Ich hoffe, dass es das nicht ist. Andererseits komme ich hier nicht um Komplexität herum... denn, wie gesagt: Ich muss schließlich Stichworte hinzufügen können bei Zeitfressern und diese machen überhaupt gar keinen klitzekleinen Sinn, wenn sie nicht normiert sind. Freie Stichworte sind nur freie Texte und wie die 4fF-Methode so hübsch zeigt, taugen diese Art von Datenfeldern nicht wirklich etwas für die Strukturierung der Daten. Ja sicher gibt es in vielen Applikationen dauernd Textfelder, sind aber nichts weiter als Alibi-Funktionen, rein datentechnisch gesehen – denn wozu sollen sie gut sein? Außer einer Volltextsuche lässt sich nichts damit anfangen und wenn nur einfach die winzige Tatsache berücksichtigt wird, dass eine Sprache Millionen von Worten hat und jedes Wort zumeist nicht nur viele Schreibweisen erlaubt, inklusive von Fehlern, sondern noch einige Synonyme hat, dürfte klar sein, dass sich damit kein vernünftiges informatives Gerüst daraus erstellen lässt. Dazu muss es nämlich erst einmal „Information“ sein – identifizierbar und wiederholbar. Wenn aber ein Inhalt durch zig Wörter beschrieben wird, ist er nicht mehr identifizierbar durch das Wort: Mehrdeutigkeit ist hier das Schlagwort, während Identifizierbarkeit Eindeutigkeit benötigt. Also muss ein Stichwort in einer Datei mit festgelegten Ritualen untergebracht sein, um Sinn zu machen, also muss ich bei meinen Zeitfressern schon eine weitere Datei suchen können. Und natürlich könnte ich dies, wie es üblich in der Programmierung ist, durch einen schönen, quietschbunten und furchtbar intuitiven Einzelfall tun. Dann aber muss ich berücksichtigen, dass Stichworte als Sprachelemente notwendig sprachabhängig sind. Und Deutsch ist nun mal leider nicht gerade das, was man so eine Weltsprache nennt. Wenn ich also heutzutage Software mache, dann kann ich doch nicht, weil es die Oma schon immer so machte, nur in Deutsch denken. Ich muss daran denken, dass Stichworte eben übersetzt werden können, also muss ich auch über Texte suchen können. Und natürlich... lässt sich auch das in dem Suchfenster Zeitfresser + Stichworte noch einzelfalltechnisch unterbringen... wird langsam freilich so groß, dass ich wohl doch irgendwo noch Zusatzfensterchen brauche. Und dann will ich ja dort auch nicht alle Datenfelder aller drei Dateien anbieten, würde doch reichlich wuchtig werden... dann jedoch könnte es vorkommen, dass genau die Dateifelder meine Anwender gerade mal interessieren, die ich weggelassen habe... deshalb denke ich, dass unterm Strich meine Lösung nicht nur flexibler und weittragender ist als jede Einzelfall-Lösung, sondern effektiv auch einfacher im Angesicht des Problems. Denn jedes Fenster sieht gleich aus. Haben die Anwender einmal kapiert, wo es lang geht – haben sie es immer und immer kapiert, egal, welche Datei nun gerade durchforstet wird. Standardisierung heißt das auch gelegentlich und wird allgemein als nützlich angesehen. Zurück. Noch offen ist im Moment, dass ich den Anwendern die Möglichkeit gebe, je nach Bedarf verschieden viele Dateifelder zu sehen, über die sie suchen können, im Moment muss ich freilich wieder an Java gehen. Muss vorwärts kommen. Und habe die inneren Klassen mal wieder vor Augen. Ich fragte mich beim ersten Drüberstolpern, wozu die denn gut sein sollten, jetzt fällt mir jedoch auf, dass sie „wie lokale Variable“ benutzt werden können. Erinnert an die Unterscheidung von Objekten in Variable und Handlungsträger, nicht wahr? Ich schätze deshalb, so aus dem Bauch heraus, dass diese inneren Klassen für mein UML/Kernel-Projekt insoweit interessant sein könnten, wie ich diese Unterscheidung Variable und Handlungsträger mache. Handlungsträger sind, wie gesagt, vergleichbar mit Rollen: Sie erledigen in Teamwork einen Auftrag. Variable stellen dagegen das „Fußvolk“ des Teams dar. Sie erfüllen zwar wichtige Funktionalitäten, können dies jedoch – ohne Abstimmung, überall - tun, weil sie problem-unspezifisch sind. Wie zum Beispiel Sprachaufbereitung oder Betriebssystem-Funktionalitäten, die bei allen Software-Aufgaben gleichermaßen anfallen und deshalb auf keinen Fall von einer einzigen Aufgabe geprägt sein dürfen. Sie, die Variablen, müssen deshalb problem-unspezifisch sein, um ihren Job für alle anderen auch erledigen zu können, während Handlungsträger diese ganz spezifische Aufgabe abarbeiten müssen und deshalb hochgradig problem-spezifisch sind. Ist ein Frage der notwendigen Kommunikation: Handlungsträger müssen sich immer mit anderen Teamworkern abstimmen, da sie ihre Aktivitäten am Zustand des Gesamtsystems ausrichten müssen, Variable dagegen sind Sackgassenkomponenten, namenlose Erfüllungsgehilfen, die irgendwie irgendetwas liefern, was im Moment gerade anfällt. Handlungsträger müssen also interagieren, Variable Befehle ausführen. Und genauso, wie sich eine Systemgrenze durch einen rapiden Abfall von Kommunikation realisiert, so kann auch der Unterschied zwischen Handlungsträgern und Variablen durch die „Menge an Kommunikation“ recht einfach bestimmt werden. Na ja gut, recht einfach – wie ich das in UML mache, ist mir noch nicht ganz so klar. Ich muss es aber, denn die Effektivität der Problemlösung wird nur durch die Handlungsträger bestimmt, nicht durch die Variablen. Diese können wegen ihrer Problemunabhängigkeit wohl immer als optimiert vorausgesetzt werden und als Sackgassen erfüllen sie praktisch automatisch die Dreiecks-Formation der ML-Methode. Ist noch ein offenes Problem in der Methode: die Ausgrenzung von austauschbaren, problem-unspezifischen Funktionalitäten habe ich bisher stillschweigend den Programmierern überlassen. Sollte ich ändern. 14:35 Dixi: there is
an end of the matter; everything that could be said has been said
– for today 08.02.2004 Christian Morgensterns Galgenlieder, Schicksal: Na ja gut, in Schönheit sterben ist nun mal meine Sache. Ich konnte nicht widerstehen, die korrelierenden Datei-Zugänge und –Präsentationen zu vereinheitlichen, soweit es möglich war. Weil es aber nur „ein bisschen Arbeit“ war, notierte ich mir die Vertauschungen nicht, hatte ja kontrolliert. Leider einen Fall vergessen – und nun musste ich per Versuch&Irrtum die Sache wieder ausbügeln. Wie gesagt: Metadaten sind eine tolle Sache, solange sie korrekt sind. Shit... Du denkst noch, mach’ ne Sicherung, dann wieder, die letzte ist doch erst ein paar Tage her, wird’ schon nichts passieren, in fünf Minuten sichere ich. Und jetzt – ist die Source wieder hinüber. Studio hat eine merkwürdige Eigenart, bei mehreren offenen Tasks im Debug manchmal einfach die Sourcen der offenen Instanzen gleichzusetzen. Dann hast du zwei von derselben Art, nur leider, leider, fehlt eben die andere. Hoffnungsfroh glaube ich mich zu erinnern, in der fehlenden, der „Steuerzentrale“, nur die Definitionslisten der Datei-Zugänge und –Präsentationen und vielleicht den Trigger $GetDetails angepackt zu haben. Hoffen wir’s.... War wohl doch ein bisschen mehr. Wenn ich nicht so gerne Breakpoints als Merker setzen würde, hätte ich vielleicht lieber die Anwendung geschlossen und gesichert... Na ja, scheint so, als hätte ich langsam die Hauptsache wieder. Nur noch die Vorbelegung aus der Verknüpfung zwischen den Dateien ist bei meinem kleinen Suchfenster noch hinüber – und die Verarbeitung der hinterlegten Feldnormierungen ist wieder weg. Das aber muss mit meinen letzten wirklichen Änderungen zusammenhängen und zeigt mir mal wieder, wie ungeheuer weittragend die einfache kleine Tatsache ist, dass Information Anfangs- und Endzustände hat. Das nämlich macht die Reihenfolge in einer Wirkungskette so einflussreich oder mit einfachen Worten gesagt: Was zuerst kommt, mahlt zuerst. Was ich mit Feldnormierung meine? Das sind die Listen oder Dateien, die hinter manchen Dateifeldern stehen, beispielsweise Länder oder Sprachen. In den meisten Applikationen wird hier ganz selbstverständlich der Tatsache Rechnung getragen, dass Länder nicht von Anwendern erfunden werden können, dass sie schlicht und einfach bereits existieren. Also werden diese längst existenten Dinge in eigenen Dateien oder Listen (hier als primitive Standarddateien gemeint) hinterlegt, damit wertemäßig „normiert“ und nur noch zur Auswahl angeboten. Das läuft bei mir, wie es sich gehört, über die Feldlisten der Dateien – und das ist irgendwie zerhagelt worden. Wie es sich herausstellt, erfolgte dies durch die Umordnerei der Befehle, weil ich seinerzeit, lang, lang ist’s her, feststellte, dass meine Anwender ihre Zugänge zu den Dateien selbst wählen sollten, was natürlich den Zugang und seine sprachabhängige Aufbereitung isolieren musste, um ihn gezielt ansprechen zu können. Nachdem ich nun meine Puzzlestückchen wieder in der rechten Reihenfolge angeordnet habe, stelle ich fest, dass es keinen Sinn macht, die durch die Join-Angaben vorbelegten Suchkriterien aus den vorherigen Datei-Suchanforderungen in der ganz normalen aktuellen Suchkriterienliste zu belassen. Das verwirrt nur, egal wie bunt ich es anmale. Also werde ich diese Angaben doch separieren müssen, sodass meine Anwender wirklich frei wählen dürfen - in allem, was ihnen angeboten wird zur Suchauswahl, den Rest verberge ich stillschweigend, auch wenn ich mir bei der Sprachauswahl der Texte nicht so ganz im Klaren bin. Und was soll ich ihnen aus den vorherigen Vorauswahlen zeigen? Alle Angaben, die ich später für meinen SQL benötige? Wozu? Nein, ich werde nur zeigen, was definitiv und vorsätzlich selbst ausgewählt wurde. 09.02., 10:02 Dixi:
there is an end of the matter; everything that could be said has
been said – for today 06.02.2004 Die Fliege oder Das Handwerk der Datenbank-Programmierung, Objekt: Handlungsträger kontra Variablentypus: Wow – ich benutzte ja nicht besonders gern das Wort „geil“, dazu ist einerseits mein Allgemeinwissen hinsichtlich Päderastie und afrikanischer Beschneidung zu ausführlich und andererseits meine Abneigung gegen „das, was alle tun“ zu groß – aber als ich heute das Drucken über hundsnormale Java-Klassen probierte und gerade nicht jedes Detail spezifizieren musste, da entfuhr es mir schon. Ich denke sowieso, dass Java, trotz einiger wirklich bedenklicher Unkenrufe, die ich vernahm, als Entwicklungsumgebung unschlagbar ist und bisher bereits mehr an neuartigen Konzepten ermöglichte, als C++ es je wird können, unbeachtlich dessen weiterer Verbreitung. Warum? Weil Java durch seine gemeinsame Klassenbibliothek – das Riesenmanko von C++ - eine gemeinsame „Systemumgebung“ schafft, die C++ eben nicht besitzt. Weil Java durch seine moderne Ausrichtung sich dem Problem unterschiedlichster Betriebsumgebungen gestellt hat und damit der Webprogrammierung gewaltig entgegenkam, was schließlich auch eine Motivation bei der Schaffung von Java war, und weil das Web sich nicht in einem „totalitären“ Programmierstil bearbeiten lässt, sondern nur in einem „demokratischen“, wirklich objektorientierten Stil von „autarken, interagierenden Objekten mit gemeinsamem Ziel“. Wie viele C++-Programmierer benutzen denn all die schönen OO-Spezialitäten praktisch nur für „flexible Variable“ und gestalten den Gesamtaufbau ihrer Software immer noch mehr in C denn in ++? Weil Java eine beliebte Sprache in der Open Source ist, einer Gemeinschaft aus „autarken, interagierenden Objekten mit gemeinsamem Ziel“ Und später, abends.... ...dämmert es mir, dass es genau das ist, was ich will und tun werde – unter Punkt 5 in der Projektbeschreibung zwar eigentlich genauso beschrieben, aber von mir selbst „wieder vergessen.“, deshalb noch mal klargestellt. Was ich vergaß? Dass es genau dieses Problem war, das mich 1999 bewog, Information zu verstehen. Ich hatte damals voller Stolz meinen Kernel dem amerikanophilen Bekannten vorgestellt, der als Programmier-Guru angesehen wurde. Er neigte deshalb dazu, nicht zuzuhören und alles zu verbessern, bis mein Kernel-Exemplar, das ich ihm gegeben hatte, nicht mehr funktionierte. Wie gesagt, Metadaten und das Verständnis der gesamten Kommunikation sind eben existentiell in dieser Form von Programmierung. Wütend warf er mir das Zeug vor die Füße, um es mal blumig zu beschreiben. Sehr frustrierende Erfahrung. Ich verstand damals aber – wieder einmal – dass zwar Computer schneller geworden sind mit dem Denken, leider nicht die Menschen, und dass es wohl endlich an der Zeit wäre, wenn man Menschen mit all ihren emotionalen Bedürfnissen unterstützen würde beim Denken. Das müsste den gesamten Prozess der Software-Entwicklung gewaltig auf Trapp bringen. Dass ich mir genau mit diesem Vorhaben jede Möglichkeit, Unterstützung von Menschen zu bekommen, vermasselte, dämmerte mir erst sehr viel später. Ist auch kein Wunder, nicht wahr? Menschen (incl. meiner selbst) mögen es nun mal nicht, ersetzt zu werden und … weil „nicht sein k a n n, was nicht sein d a r f“ (Christian Morgensterns Palmström)… habe ich unrecht. Nomen est omen: Das Gedicht, aus dem dieser Spruch stammt, heißt „die unmögliche Tatsache“. Ich konnte dennoch die ML-Methode erstellen und sie sogar trotz beschränkter Mittel soweit automatisieren, dass sie bei wenig umfangreichen Software-Aufgaben imstande ist, Programmierer zu unterstützen. Funktioniert. Ich stellte damals eben nur fest, dass es nicht wirklich Sinn macht, ein Modell zu erzeugen, dass dann unabhängig davon realisiert wird. Warum? Weil immer irgendetwas übersehen wird, das erst bei der Realisierung zu Tage tritt. Das aber kann in einem System, das per definitionem hochgradig verknüpft ist, zu ganz unterschiedlichen Wirkungsminima führen. Oder im Klartext: Es kann eben das gesamte Modell verändern. Also musste ich eine „Rückwirkung“ der Realisierung auf das Modell als unverzichtbar erachten und exakt das ist es, was MDA prädestiniert. So also bin ich auf dieses Projekt gekommen – und das ist mir, dank Javas Toolkit, jetzt wieder eingefallen. Und das ist es wohl auch, warum ich trotz meines UML-Java-Projektes unbeirrt an meinem Studio-Projekt Zeitfresser weiterarbeite (abgesehen davon, dass es fertig werden soll). Nun ja, ein menschliches Gehirn ist eben auch eine Informationsverarbeitung und zwar mit Abstand die effektivste Maschinerie unserer schönen blauen Erde. Das Bewusstsein ist nur die jüngste Hierarchie-Ebene, zu der eben nicht immer alles vordringt. Und vordringen darf – ML-Methode. Dieser Fall hier war jedoch einfach der einer noch nicht vollständigen Verarbeitung, schätze ich, denn erst dann, wenn du etwas programmieren kannst, hast du es umfassend verstanden. Auch das ist ein Grund für mein Projekt. 13:48 Dixi: there is
an end of the matter; everything that could be said has been said
– for today 04.02.2004 Alte Programmiererweisheit: Bevor ich die angestrebte Fixierung durchführe, lege ich noch ein paar Texte an. Sieht einfach adretter aus, wenn irgendwelche sinnvollen Bezeichnungen dastehen anstatt der mehr oder minder normierten Feldnamen. Wovon ich rede? Bei den Zeitfresser-Suchvorgaben, bei denen ich nichts anderes tue als die Datenfelder zusammengehörender Dateien anzubieten, damit die Anwender ihre jeweiligen Suchwünsche darin unterbringen, muss ich die Verbindung zwischen den einzelnen Dateien noch realisieren. Als Metadaten sind sie bereits angelegt, das heißt ich weiß längst, wie das SQL-Statement auszusehen hat, das mir den Join durchführt – meine Anwender wissen aber noch nicht, dass manche ihrer Felder durch ihre vorherigen Schritte nicht mehr zu ihrer völlig freien Verfügung stehen. Andererseits darf ich nicht zu rigoros sein, schließlich möchte ich, dass die Anwender die Freiheiten des SQL auch ausnützen können. Beim Herumspielen, um auf passende Ideen zu kommen, fällt mir auf, dass meine Fenster – als einfache kleine Tools angelegt, sich weder größenmäßig noch lokal verändern lassen. Natürlich ist das nur eine Einstellung bei Studio, ich frage mich jedoch gerade, ob das nicht Sinn macht und so bleiben sollte. Denn die zusätzlichen Datei-Suchmöglichkeiten pflastern dadurch nicht den ganzen Bildschirm voll und bieten immer nur die letzte Auswahl direkt an. Das verbirgt Komplexität, weil zwar alle Möglichkeiten offen sind, jedoch hübsch der Reihe nach. Könnte gar nicht so übel sein, werd’s dabei belassen. Gefällt es nicht, kann ich’s immer noch ändern – schließlich ist mein ganzes System darauf ausgelegt, in ständigem Wandel weiter zu funktionieren. Nachdem ich ein wenig mit meinen Metadaten gespielt habe, (wie gesagt, ich neige dazu, schnell zu vergessen), bin ich mit dem Ergebnis zufrieden... außer dass es mir zu kompliziert erscheint, alle Datenfelder zur Suche anzubieten – was also tun? Ich muss es irgendwie vereinfachen: Sicher werden Poweruser meine aktuelle Variante vorziehen mit all ihren Möglichkeiten, die meisten freilich sind keine Poweruser. Also muss ich meine Suche differenzierter gestalten können: Ich muss verschiedene „Tiefen der Suche“ sprich verschieden viele Datenfelder zur Suche anbieten, also doch mehrere Zugangs-Arten anbieten. Und wieder einmal bewahrheitet sich der alte Spruch, dass einmal keinmal ist oder dass hinter jeder Konstante eine Variable steckt. Nun ja gut, ob ich die Fensteraufbereitung mit diesen oder jenen Metadaten durchführe, macht keinen Unterschied – und ich will meine Anwender bloß nicht verstören. Deshalb werde ich ihnen die Join-Angaben der Dateien auch noch netter gestalten. 16:44 Dixi: there is
an end of the matter; everything that could be said has been said
– for today 03.02.2004 Physik der Information, Eigenschaft: ein einstelliges Prädikat: So wie es aussieht, kann ich meine bestehende Access-List-Ermittlung verwenden, muss sie nur mit einem weiteren Parameter versorgen – hat schon was für sich, in Typen zu programmieren statt in Einzelfällen. Es ist schlicht leichter, wenn du nur einmal von dem Irrglauben abkommst, dass du so sehr viel schneller wärst im quick&dirty-Verfahren. Das stimmt in den ersten Anfängen zwar wirklich, dann aber... Und genau das will ich zeigen. Sauber währt am längsten – Stichwort: LKW-Maut. Warum ich nämlich jetzt soviel schneller bin? Weil ich die ganzen Access-Weisen typisiert habe und dann nur noch Metadaten die Einzelfall-Steuerung machen lasse. Für meinen kombinierten SQL-Zugang habe ich mir also einen neuen Zugang bestimmt, der jetzt „nur noch“ eingelesen werden muss. Klar muss ich diesen Spezialfall dann auch im Typus des Dateizugriffs für die SQL-Statements einbauen, das aber funktioniert dann für alle und beliebige Kombinationen, denen es völlig egal ist, ob es Stichworte sind, die mit Texten verbunden werden sollen oder Zeitfresser, die via Stichworten gesucht werden sollen. Du musst also nur noch Fäden verknüpfen, die eigentlich schon da sind. Immer wieder muss zwar etwas angepasst oder oft auch nur „geglättet“ werden, nie jedoch das gesamte System – immer nur ein recht kleiner Ausschnitt. Auch Kleinvieh macht Mist, selbstverständlich, was aber erstaunlich ist, ist die einfache Tatsache, wie rasch ergänzbar ein solches System ist und wie fehlerresistent. Sicher, mit falschen Metadaten kracht dir alles um die Ohren, andererseits ist nach dem zigsten integrierten Einzelfall der Typus doch reichlich robust. Zurück zum Google-Experiment: Eingeweihte kennen sich mit den diversen Suchmaschinen aus, ich freilich gehöre nicht dazu und stelle nun fest, dass Google wohl ungefähr eine Woche als Aktualisierungszyklus hat. Ich hatte in meinen Projektbeschreibungen das amerikanische Modell des Gesetz des Stärkeren erwähnt (the winner takes it all), das heute so verführerisch für alle Führungskräfte geworden ist – wieder einmal. Das ist wohl wie Krebs unausrottbar, ich weiß nicht, das wie viel Hundertste Mal in der Menschheitsgeschichte eine freiheitlich-liberale Menschheitsordnung durch diese Alpha-Denkweise zunichte gemacht wurde. Dabei ist die demokratische Systembauweise die effektivste für eine Informationsverarbeitung (siehe ML-Methode) und dass dies auch für Menschen zutrifft, wird durch die moderne Archäologie in wachsendem Maße unterstützt. Rein „informativ“ gesehen ist es also kein Wunder, dass nur und ausschließlich der demokratischste Menschentyp überlebte in einer wandelbaren Zeit, in der die genetische Anpassungsfähigkeit längst keine Chance mehr hatte – und nur noch das Gehirn die erforderliche Lernfähigkeit aufbringen konnte. Genau das ist die Herausforderung, die unsere High-Tech uns übrigens heute auch stellt und dem das „Wusste die Oma schon“-Prinzip einfach nicht standhalten kann. Stichwort: „Zugewinnfunktion der Intelligenz“ ist nicht linear, sondern hat definitiv einen Scheitelpunkt. Das letzte Mal überwanden wir diesen Scheitelpunkt durch die signifikante Erhöhung der Kommunikation, die Erfindung der Sprache – mir scheint freilich, als wäre es wieder soweit. Doch dazu vielleicht irgendwann später. Zurück zum amerikanischen Modell: Mir ist sehr deutlich bewusst, dass in den 30er Jahren des vorherigen Jahrhunderts es ganz besonders die Amerikaner gewesen waren, die soziale Sicherheit als bestes Mittel gegen die damals herrschende Armut einsetzten - im schmerzhaften Gegenteil zu den Deutschen, die auf Führermentalität und Gehorsam setzten (mit all den vorhersehbaren Folgen, wenn auch der Umfang des Grauens erstaunlich-entsetzlich war, den das Ausschalten des deutschen Gehirnes hervorrief). Deshalb korrigierte ich meine Bemerkungen auf „das moderne amerikanische Modell“. Das geschah am 29.01.2004 und ist bisher noch nicht in Googles Such-Pufferung eingegangen. Ist nichtsdestoweniger reichlich flott für über 3 Milliarden Seiten, alle Achtung. Apropos flott: Während ich hier einsam und alleine versuche, ein winziges MDA-System zu entwickeln und dabei mehr als die Hälfte entweder schon habe oder wegen der Winzigkeit nicht brauche, schleichen die großen, manpower- und kapitalstarken Firmen im Schritttempo weiter. Sie haben zwar keine rechte Ahnung, warum es überhaupt funktioniert, was sie tun (niemand von denen kann Information exakt bezeichnen), die evolutionäre Best-Practices-Vorgehensweise scheint freilich noch lange nicht ausgereizt zu sein. Nun ja, ehrlicherweise demonstriert unser eigener, hochkomplexer Körper ja, wie weit Mutation/Selektions-Lernvorgänge kommen können. Trotzdem. Es ist schmerzhaft zu sehen, dass dir die Zeit davonrennt. Ich kämpfe hier mit unglaublichen Kleinigkeiten, mit falschen Formatierungen, mit Seach Engines und mit den Niederungen von Java - verzeiht mir, liebe Java-Fans, es ist auch keinerlei Abwertung beabsichtigt: Doch wenn du versuchst, mit OMG, mit Sun, mit IBM und Borland® , mit Millionen von Entwicklern und Milliarden von Dollarn/Euros als Einzelperson Schritt zu halten... ...ist das ein unmögliches Projekt und du bist nichts weiter als Münchhausen... und du würdest dir aus tiefstem Herzen wünschen, dass dir all der Kleinkram von Bildchenmalen, Netzzugriffen oder gar Datenkonvertierung und diese Unsäglichkeit überladener Prozeduren nur wegen ein paar unterschiedlicher Parameter erspart bliebe, dass du wie Münchhausen dich am eigenen Zopf aus dem Sumpf ziehen könntest oder die Superkräfte seiner Diener aufweisen würdest. Hoffentlich finde ich in J2EE eine Stütze meines Alters. Dafür fand ich eine Bestätigung meines bisherigen Ansatzes: Wenn ich UML nutzen will und über „Profiles“ oder „Cartridges“ oder sonst wie zu benennende „vorgefertigten Programmteile“ zur fertigen Software kommen will, dann muss ich mich, wie immer, beschränken. IKI – Infinity kills Information und zwar einfach, weil Masse Unterscheidbarkeit behindert, was ein unverzichtbares Element von Information ist. Aber das wissen wir längst (zumindest intuitiv). Ich wollte mich vorerst beschränken auf UML-Klassen und Kollaborationen, weil hier die Natur der Information – Anfangs/Endzustände und übergangsverursachende Wirkung – bereits völlig abgedeckt sind. Nun lese ich, dass ein erfolgreiches MDA-Projekt (fast) genau dies tat: Es beschränkte sich auf Klassen, Kollaborationen und Aktivitätensgraphen. Wie gesagt: in der Kürze liegt die Würze oder Klasse statt Masse. Obwohl – ich das Gefühl habe, Rollen, realisiert als Assoziationen, müsste ich ebenfalls noch in den Griff kriegen. Das jedoch hat wohl etwas mit Persistenz zu tun, wenn ich mir meine aktuellen Kernelsysteme so ansehe. Was das heißt? Nun, in allen Informationsverarbeitungen hast du das Problem von Stabilität und Dynamik, weil Information eben nichts weiter ist als „stabile Dynamik“. Du hast immer Identitäten, die wechselwirken – und diese Identitäten sind definitiv persistent, sonst wären sie nicht „dauerhaft“ und damit keine Identität. Denn im Klartext: Was nützt es, Lieschen Müller über ihre Haarfarbe zu definieren, wenn Lieschen Müller dauernd ihre Haare färbt? Identitäten haben den Zweck, Objekte wieder erkennbar zu machen, das aber verlangt zwangsläufig, dass sie auch in späteren Situationen schlicht denselben Inhalt aufweisen, den ich in meinem Erinnerungsspeicher abgebildet habe. Dann kann ich in einem einfachen Vergleich (in memoriam Gottfried Wilhelm Leibniz, 1646-1716: Das Prinzip von der Identität des Ununterscheidbaren = Was nicht unterschieden werden kann, ist gleich) feststellen, ob das neuerlich auftauchende Objekt tatsächlich dasjenige ist, dessen Identität ich mir früher mal gemerkt habe. Der Witz dabei ist, dass das Objekt sich völlig verändern darf und keinerlei Ähnlichkeit mehr mit seinem früheren Zustand mehr haben muss – bis eben auf diese eine einzige, stabile, eindeutige und unveränderliche Eigenschaft, die ich als Identität des Objekts in meinem Gedächtnis in Stein meißelte. Das heißt, dass auch in Software die zentralen Objekte speicherbar sein müssen, genauso wie ihre Wechselwirkungen. Warum? Weil auch Information regelmäßig ist, wie gesagt, und Regelmäßigkeit ist ebenfalls abbildbar, sonst würde Informationsverarbeitung keinen Sinn machen. Habe ich das Beispiel des Apfels nicht schon erwähnt? Wer würde Äpfel essen, wenn sie einmal nahrhaft, das andere Mal giftig und das dritte Mal neutral wären und das in völlig zufälligem Muster? Wie hätte die Evolution ihre Tiere überhaupt lehren können, Äpfel zu essen? Lehre funktioniert nur wegen der Wiederholbarkeit von Vorgängen (neben der Identifizierbarkeit, natürlich). Was das mit Rollen zu tun hat? Nun, die Realisierung über Assoziationen zeigt das doch schon. Ein Anfangszustand ist doch nicht an die spezielle Regel gebunden oder mit anderen Worten: Aus einem einzigen Anfangszustand können bei Anwendung unterschiedlicher Regeln unterschiedliche (und immer noch den Anforderungen der Information genügende) Endzustände hervorgebracht werden. Zur Klarstellung: Regel ist hier als wiederholbarer, eindeutig bestimmbarer Prozess gemeint, der sich genau aus dieser Eigenschaft heraus trotz seiner Dynamik in stabilen Formen abbilden lässt, zum Beispiel in einer Formel oder einem Computerprogramm. Und das ist das, was der Begriff „Rolle“ kennzeichnet: eine Kombination von Anfangszustand und Regel. Persistente Objekte sind nur Zustände mit der Möglichkeit, verändert zu werden, und welche Rolle sie wann spielen, hängt von der Regel ab, in deren Wirkungsverlauf sie integriert sind, entweder als Anfangs- oder Endzustand. Das aber ist mir bisher noch nicht gelungen, vernünftig in einem ML-Schema abzubilden. Bisher konnte ich nur ein Schema erstellen für persistente Objekte, die eine einzige Rolle spielen. Das genügt mir natürlich nicht. Zurück zum Kommentar-Problem: Ich bin eifrig am Buzzflash-Lesen und die haben das Problem der Kommentierung über eine Mailbag gelöst. Ich schätze, das liegt zum Teil an der Masse der Kommentare, die sicher jeden Server zum Überlaufen bringen würde und an der Hitzigkeit der Debatte im aktuellen Amerika, in dem die alten freiheitlichen Ideale einen wohl aussichtslosen Kampf gegen das Alphatum führen. Da angeblich sogar bezahlte Störenfriede gegen die Liberalen antreten, ist das moderierte Veröffentlichen von Kommentaren sicher angebracht. Keines dieser Probleme ist meins – aber Mail kann ich kriegen und deshalb werde ich eine eigene Email-Adresse anlegen und eine Mail-Site installieren. Das wird zwar ein gutes Licht auf das Interesse werfen, das ich erwecke, andererseits stört mich die völlige Kommentarlosigkeit sehr, ohne dass ich im Moment dieses Feature so richtig bequem installieren könnte. 14:55 Dixi: there is
an end of the matter; everything that could be said has been said
– for today 02.02.2004 Faust, Der Tragödie zweiter Teil: GoogleTM und Yahoo® finden mich bereits – ich denke, das reicht mir völlig. Google ist momentan Marktführer in den Search Engines und selbst wenn Yahoo seine eigene Engine anwirft, werden beide zusammen immer noch den Löwenanteil abdecken. Damit ist meinem Bedürfnis nach „Offenheit“ völlig Genüge getan – schließlich befindet sich dieses Bedürfnis im direkten Konflikt mit meiner Abneigung, unter Beobachtung zu stehen. Übrigens – Google ist wirklich aktuell: Der Eintrag vom 27.01.2004 ist bereits verfügbar, alle Achtung. Meine vorherige „Lieblingsadresse“ bei den Search Engines, FAST (© 2004 Overture Services, Inc), scheint mir dagegen gewaltig an Boden verloren zu haben. Während ich dort früher praktisch gleichwertige Ergebnisse feststellte und somit die etwas schlichtere Aufbereitung von FAST wählen durfte ohne Verlust von Information, sind heute die Unterschiede schon ziemlich auffällig. Und wenn du fast jedes zweite Mal bei Google nachprüfst, ob das fehlende Resultat bei FAST tatsächlich auf dem Nichtvorhandensein der Information beruht, dann kannst du auch gleich googlen. Ok – bin aber (trotz nur 62k) nicht mit dem Ladezeitverhalten der Anmerkungen einverstanden. Andererseits will ich nicht mit den Google-Ergebnissen in Konflikt geraten, wenn ich das Dokument teile. Also? Ein Experiment: Ich ändere den Titel der HTML-Site, hatte ich bisher noch nichts Vernünftiges angegeben – wann wird dies in die Suchergebnisse einfließen? Dann könnte ich mich aber jetzt nach den Kommentarmöglichkeiten umsehen? Wie war das noch? Jsoft: Die Website sind ganz ansprechend aus, im Moment läuft aber gerade MyDoom herum und ich bin deshalb vielleicht ein wenig übervorsichtig – ich will doch eigentlich nur einen Text empfangen können. Ich weiß, dazu gehört die ganze Netzverbindung dazu, vielleicht probier’ ich’s ja mal mit JavaScript? Muss freilich jetzt noch warten, habe wieder viel zuviel Zeit an Dinge verbraten, die gar nichts mit dem zu tun haben, was ich denn tun möchte. Und wenn es auch noch nicht das „richtige“ Projekt ist, so sind es wenigstens die „Zeitfresser“, die mir helfen, die Prozesse in einer kleinen Datenbank-Anwendung immer noch mehr und mehr zu simplifizieren, bis ihre „reinste“ Natur sich herausschält. Denn diese kann ich später für das „richtige“ Projekt verwenden – und was ich bis jetzt an Java sehe, kann jede Vereinfachung nur von höchstem Vorteil sein. Wo war ich da nur stehen geblieben? Die Suchfenster bauen sich schon für die zusammengehörigen Dateien auf – ja, ich muss die Metadaten für die einzelnen Dateien noch integrieren, irgendwie den Fenstern beibringen, dass nicht mehr alle Felder frei sind, sondern eben durch die Vorauswahl der rufenden Dateien bereits eingeschränkt. 14:27 Dixi: there is
an end of the matter; everything that could be said has been said
– for today 01.02.2004 Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650: Do’s and Don’ts of Web Site Design, Part 2: einer der vielen „Emailizer“, die ich immer wieder in meinem Briefkasten finde, gab mir einen interessanten, ganz praktischen Tipp: Eine Site sollte nicht mehr als 60k aufweisen, all denjenigen zuliebe, die mal keine so gute Verbindung haben. Mir selbst war aufgefallen, dass im Laufe des Januars die Ladezeiten ganz erheblich angewachsen waren und der kurze Blick auf die Größe zeigte denn auch, wie vernünftig dieser Tipp wirklich ist. Ich werde also, gegeben den Fall, ich bleibe bei meinem jetzigen „verkürzten“ Blogsystem via OpenOffice und dem praktischen FTP-Client (FileZilla), die Monate einfach teilen, schätze ich, auch schon für den Januar. BTW: Erfahrung aus der Praxis: So regelbasiert (und dadurch kompakt) deine Anwendung im Inneren sein muss, um erweiterbar und pflegeleicht zu sein, so primitiv und in Stein gehauen muss sie nach außen aussehen. Das heißt ein höchstens dreidimensionaler Zugang mit klaren, verständlichen Alltagsbegriffen. Bloß um alles in der Welt die Komplexität der dahinter steckenden Applikation verbergen! Oberstes Muss für eine Software, die nicht nur genutzt, sondern gerne genutzt werden soll: lieber weniger können, dafür einfacher zu bedienen sein Oder mit anderen Worten: Wenn schon keine einfach Matrix als Schaltstelle für deine Anwender genügt, dann wenigstens Multiple-Choice - und wenn immer es geht, „freie Fragen“ vermeiden. Warum? Weil mehr Menschen auf die Straße gehen für eine Glaubenssache denn für eine neue wissenschaftliche Entdeckung und das hat seinen Grund. Die Unterscheidung in regelbasiert und ritualisiert findet sich nämlich überall in der Informationsverarbeitung, in der Mathematik (syntaktisch, semantisch), in der Biologie (DNA, Neuron), in der Datenstrukturierung der EDV (feste Datenstruktur, XML), und beruht auf der Tatsache, dass Information wiederholbare, identifizierbare Wirkung ist, fixierbar durch Anfangs- und Endpunkt und ein stabiles, also abbildbares Regelwerk. Und so lässt sie sich nun entweder über eine Regel mit einem erlaubten Anfangspunkt-Wertebereich oder eben auch durch eine Menge von Anfangspunkt-Endpunkt-Beziehungen festhalten. Der erste Weg hat den Vorteil, dass via Regel eben alle Anfangs-Endpunkt-Beziehungen abgedeckt sind, der zweite lässt sich viel, viel leichter... auswendig lernen. Der erste ist variabler und kompakter (wie eben eine Software-Applikation sein soll) und einfacher an eine Erweiterung des Anfangs-Endpunkt-Wertebereiches anzupassen, der zweite ist für die Masse der Anwender oft der einzig gangbare Weg. Zumal das Prinzip „wie die Oma es schon machte“, sich in der bisherigen, nur wenig veränderlichen Menschheitsgeschichte so bewährt war, dass es bis heute in der Bevölkerung der Welt das Grundprinzip jeder Vorgehensweise ist: Mach es wie deine Vorgänger und zwar genau. Wer kennt nicht die Studenten in den naturwissenschaftlichen Vorlesungen, die nach „konkreten Beispielen“ verlangen? Es ist genau das: Ein informatives Regelwerk, ein Typus, ein Potential, erbaut mit seinen erlaubten Anfangswerten, seinen Randbedingungen, einen Raum an Möglichkeiten, der ganz genauso gut dargestellt werden kann – als die einzelnen Möglichkeiten selbst, als Masse von Einzelfällen. Und Leute, denen die „Mehrdimensionalität“ eines Regelwerkes zu unhandlich ist, ziehen eben die klare Auflistung der konkreten Einzelfälle vor. Wie gesagt: für Anwender erlaubt, für Softwerker nicht. Warum? Weil ein solcher Einzelfall-Sammel-Mechanismus sich nur für langfristig stabile Probleme lohnt, denn er reagiert höchst schwerfällig auf Neuvorkommen desselben Typs. „Das hat doch gar nichts damit zu tun“ – Wer kennt sie nicht, diese Standard-Einwendung eines Einzelfall-Strategen? Während Typ-Strategen ihr Regelwerk einfach mit den neuen Anfangsbedingungen durchspielen, um festzustellen, ob das Regelwerk auch hier sauber anwendbar ist, kann der Einzelfall-Stratege den Fall nicht in seinem Repertoire auffinden und damit nicht als zugehörig erkennen. 14:27 Dixi: there is
an end of the matter; everything that could be said has been said
– for today
|
|