learning how to learn

Sternzeit 1290,4

Während des unkalkulierbaren Einflusses des schwarzen Loches hatten wir also unserem Grizzly beigebracht, wie man mit einem Bodum Kaffee kocht. Das war keine triviale Aufgabe gewesen, musste er doch erst lernen, wie man lernt. Wir hatten ihm Geschichten erzählt, gewiss, aber die mussten auch irgendwann in einen Algorithmus münden. Also dachten wir in etwa so :

– beschreibe das Problem so genau wie möglich
– zerlege das Probleme in kleinere Teilschritte
– finde heraus, wie man von einem Schritt zum nächsten gelangt.
– führe eine weitere Abstraktionsebene ein
– beschreibe die zu erfolgenden Lernschritte so genau wie möglich
– beginne mit dem ersten Schritt
– lasse die zu absolvierenden Lernebenen aufeinander aufbauen

Diese Methode war vielleicht nicht für schwerwiegende Transformationsaufgaben tauglich, beim Kaffeekochen jedoch hatten wir Erfolg gehabt. Lediglich Milch oder Zucker mussten wir noch selbst beisteuern. Da wir ja nun von Günther befreit waren, konnte also auch Bernie seinen schwarzen Kaffee wieder geniessen. Lediglich die Maulwurfine bereitete ihm doch erhebliches Kopfzerbrechen, war sie doch etwas abweisend geworden und unterhielt sich gern nächtelang mit dem Delphin. Das war gewiss eine wichtige Aufgabe, war doch sein Liebeskummer wieder durchgeklungen, aber Bernie dachte doch, sie müssten sich gegenseitig feedbacken. Also klinkte er sich heute Nacht einfach in das Gespräch ein. Die Dreierkombination machte es nicht einfacher. Im Morgengrauen hatten sie allerdings so lange gerungen, dass sie sich alle mit dem gebildeten Konsens zufriedengeben konnten. Für morgen Nacht würde die Maulwurfine ein weiteres Mal Kekse backen, und sie würden eine gemeinsame Botschaft in die Heimat absenden, um den Delphinkontakt nicht abbrechen zu lassen. Als die Fledermaus also am nächsten Morgen ihren Weckdienst versah, sah sie im Logbucheintrag den Wunsch der Dreiergruppe, nicht geweckt zu werden. Damit würde der Octopus sicher einverstanden sein, gab es doch auch soetwas wie psychosoziale Seelsorgeebenen. Wie gut, dass sie bald den ersten Planeten des Systems besuchen würden. Das würde auch etwas Abwechslung in die Mission bringen. Von Klasse-M konnte allerdings nicht die Rede sein. Die Mannschaft machte den Trabant-Transporter für morgen startklar. Die Motivation, das Vertrauen und die Sicherheit wuchsen von Tag zu Tag. Zudem wurde alles dokumentiert, das ging ihnen schon fast ein wenig auf den Senkel, der Octopus hatte sich allerdings mit dem Ameisenbär auf diese Vorgehensweise geeinigt und folgllich vertraten sie ihre Position nachvollziehbarerweise im Plenum. Sie waren Pioniere, das sahen alle so. Logmodus-off.

Datenbankquerelen

Die Normalisierung, beinahe wäre mir die Normalisierung entfallen. Ein verzeihbares Detail, wenn man die Zeit (8 Jahre) berücksichtigt, die die Ausbildung zurückliegt. Ein unverzichtbares Detail des Datenbankentwurfes allerdings. Also deklarieren wir (nein, keine Variable) es als einen schweren Faux-Pas.

Verpflegung und Smokestuff ist genügend vorhanden, nein, der Autor muss weder Hunger leiden, noch frieren (fällt im Sommer auch schwer).

Einige technische Details zum verwendeten Equipment.

  • 700 MHz-Rechner
  • Debian squeeze
  • Panasonic toughbook
  • slitaz lightweight Linux edition
  • Billighandy
  • Vodafone Mobilkommunikationsvertrag
  • Flatrate 6000
  • ein Kopf

Der Kopf ist allerdings ein sehr verzichtbarer Bestandteil, denn notfalls würde ich einfach mit dem kleinen Zeh weiterdenken. Auch wenn dieser Blogbeitrag keine erkennbare Pointe hat, so hat er trotzdem seine Berechtigung. Notfalls aus dokumentarischen Gründen.

Es sind circa 8 Mitbewohner, circa 7 Arbeitskollegen und einige Pfund behandelnde Professionelle involviert. Da noch die wahren Verhältnisse eruieren, zumal nach Jahrzehnten, dürfte auch dem gewieftesten Ermittler doch einige Mühen bereiten. Zudem könnte erschwerend hinzukommen, das Legalisierungsprinzip nach Sparta eingetrichtert bekommen zu haben.

Blogbeitrag Ende.

Oh, die Datenbank, ich wollte nochmal auf die Datenbank zu sprechen kommen. Auf Konsistenz wird großer Wert gelegt und es dürfen keine erkennbaren Redundanzen eingebaut werden. Auf Fremdwörter zu verzichten dürfte mir einigermaßen schwer fallen. Konsistenz dürfte bedeuten, dass keine vorhandenen Beziehungen zwischen atomaren Bestandteilen der zu Grunde liegenden Daten vernachlässigt werden dürfen und redundant heisst schlicht und einfach überflüssig.

P.S. Ende.

Algorithmus Cross-Reference-Generator

01. Zwinge den Programmierer des zu untersuchenden Quelltextes durch entsprechende
Voraussetzungen in deinem Programm, in seinem Quelltext die Variablen zu deklarieren,
damit sie entsprechend indiziert werden können.
02. Lege das zu suchende {([keyword])}, das bei der Variablendeklaration verwendet wird, fest.
03. Beispielhaft wird ab hier das keyword {([var])} verwendet.
04. Lies die erste Zeile [0] ein.
05. Wiederhole 4. bis [EOF].
06. Nun haben wir einen Stringarray zeile [index] vor uns mit max (zeile) = [zeilenzahl – ­1]
07. Finde erste Deklaration von Variable var [0].
08. Notiere die Zeilenzahl der Deklaration.
09. Erhöhe den Zähler von [var]
10. der spacebar ist char [32] und Capital A char [65]
11. hiermit handelt es sich um einen ascii­Zeichensatz
12. finde zweites Vorkommen von var [0] bis kein Vorkommen mehr, also präzisiere:
13. baue Index Vorkommen [var[0],j] auf
14. entsprechend baue Array Vorkommen [var[i,j]] auf mit i[0] = 0 und i [max] = Anzahl verschiedener Variablen -1
15. hiermit handelt es sich um zwei Arrays, die als Zähler i und j haben und deren Maximum um
eins kleiner ist als die Zählervariable.
16. Du hast hiermit die einzulegenden Intervalle festgelegt.
17. Hiermit werden wir uns im Folgenden auf eine exemplarische Vorgehensweise beschränken.
18. Gib die gefundenen Variablen aus. Der Algorithmus wird durch das penible Abarbeiten der
Arbeitsschritte erreicht.
19. Suchstring kann als Parameter ?q=suchstring an den URL übergeben werden.
20. Exemplarisch substring (‘keyword’, 2, 4) = ‘ywor’
21. Sei Zeile 1 zeile (0)
22. wenn ‘var’ gefunden prüfe auf whitespace und extrahiere den variablennamen
23. //**kern/core** if (substr(zeile,i,3) == ‘var’) {hit = substr(zeile,i+4,len(varname(j))}
24. prüfe auf v
25. bei erfolg prüfe auf a
26. bei erfolg prüfe auf r
27. bei erfolg prüfe auf [space]
28. extrahiere bis zum nächsten [space] den variablennamen
29. nun haben wir einen array variablenname [i] vorliegen mit i = Anzahl der Variablen ­- 1
30. ersetze Suchstring ‘var’ durch Suchstring (Variablenname [i])
31. durchlaufe den Variablennamenarray
32. bei Vorkommen von Varaiblenname [i] notiere Treffer und Zeilennummer
33. Gib die Treffermatrix aus
34. ggf. schreibe Treffermatrix in Datei ‘file’