Mittwoch, 25. Mai 2011

100 Fortbildungen


... die ich mal machen möchte.

  • Programmieren lernen mit Groovy
  • Schulverwaltung mit Moodle
  • Projektmanagement
  • Wissensmanagement im Internet
  • Socialnetworx@school
  • Chinesisch
  • Arabisch
  • Allgemeinbildung heute
  • Kreatives Schreiben lehren
  • email-Rhetorik
  • Die Portfolio Methode
  • Fächerübergreifender Unterricht
  • Speedreading
  • Supervision als eSession
  • praktische Archäologie
  • Physical Computing
  • Literaturgeschichte der Kinder- und Jugendliteratur
  • Hacking
  • Comics lesen
  • Aufmerksamkeit trainieren
  • Linux-Desktop
  • Grenzfälle literarischer Werke
  • kulturelle Bildung
  • soziale Filter
  • Selbstorganisation
  • Semantic Web
  • Türkisch für Anfänger
  • Russisch für Anfänger
  • neue Schreibformen
  • Zusammenarbeiten mit dem Netz
  • Philosophie
  • Das Mittelalter, historisch betrachtet
  • Sponsoring
  • Lyrik
  • international vergleichbare Abschlüsse
  • Südamerika am Ende des 20. Jhdts.
  • Das Kunstwerk im Video-Spiel
  • Programmieren mit JavaScript
  • Animationsfilme
  • Desktop-Korrektur
  • Verwaltung-Online
  • Video-Schnitt ...

Montag, 18. Januar 2010

Über Medienpädagogik und Mediendidaktik


Das Rezipieren von Inhalten, die Artikulation von Verstehensprozessen und das Produzieren neuer Inhalte sind Grundfähigkeiten, über die man sowohl in einer vom Buch als auch in einer multimedial geprägten Welt verfügen muss, wenn man von sich behaupten möchte, irgendeine Form von Bildung genossen zu haben. Da besteht überhaupt kein Unterschied zur Zeit vor 250 Jahren, als die Bürgerskinder begannen vogelwilde Dramen zu lesen.

Der "Digital Native" ist so gesehen im gleichen Maße ein potentielles Opfer der menschlichen Kultur, wie es schon Rousseaus 'Emile' war. Heute wie damals besteht die Befürchtung, durch die wahllose Neukombination von unter Umständen verdorbenen Versatzstücken der Kultur könne der heranwachsende menschliche Geist Schaden nehmen. Formen der Gewalt, die heute ausgeübt wird, heißen z.B. Cybermobbing, Abstumpfung der Gefühle durch Konsum von Brutalität und Aggression, Verführung zu rechtsextremen Ideen, Raub der Lebenszeit. Aber außer Cybermobbing geht das alles mit Büchern auch. Man vergleiche den süchtigen WoW-Spieler mit dem "Bücherwurm" - sind die in unserer Vorstellung nicht beide gleich bleich und weltfern?

Von der Seite der Produktion sind aber die Form der Texte und ihre vielfältige Verknüpfung mit Bild und Ton neu. Die traditionelle Erzählung hat einen mehr oder minder sinnstiftenden oder sinnzerstörenden Anfang und Schluss, aber sie überlässt es völlig dem Leser oder Hörer, so genannte "Anspielungen" auf andere Erzählungen - ggfs. auch Bilder - zu vermuten, also intertextuelle Beziehungen zu erkennen. Der Text des 21. Jahrhunderts ist dagegen nach Innen völlig offen, da er an beliebigen Stellen durch Links auf andere Medieninhalte verweisen kann. Diese Implosion der Semantik wird erst dann wieder verschleiert, wenn der Text gedruckt wird. Solange der Text online ist, trägt er durch beständige Rekursion der Inhalte dazu bei, Meme zu stabilisieren, deren schiere Existenz - isoliert betrachtet - völlig irrwitzig bis brutal sein kann. Man denke an Flaschenkatzen.

Neu sind natürlich Phänomene wie "Cybermobbing". Cybermobbing funktioniert aber nur, weil es eine Diffusion der moralischen Erwartung in die sozialen Netzwerke gibt. Würden z.B. die Mitglieder bei Facebook sich gegenseitig nur als Projektion von Pixeln betrachten, dann gäbe es viele interessante Wortwechsel via Internet nicht. Versuche von "Cybermobbing" wären absolut gegenstandslos, weil deren Opfer die Meinung realer anderer Menschen in der Online-Community fürchten und nicht die bunten Pixel. Hybridformen wären denkbar, wenn Computer endlich den Turingtest bestehen. Dann darf man auf Situationen wie in Bladerunner warten, auch ohne einem Nexus 6 in die Augen schauen zu müssen, denn es könnte ja immer auch die Instanz eines Netzagenten sein, mit der man fröhlich parliert. Ob das aber dann den großen Unterschied macht, ist schon wieder fraglich. Schließlich akzeptiert der Kinobesucher bei Filmen wie "Avatar" in Sekundenbruchteilen die fiktive Wirklichkeit, ohne sich bei jedem Blatt zu fragen, ob das jetzt eine reale Vorform hatte oder frei erfunden ist. Ebenso nehmen alle Teilnehmer sozialer Netzwerke an, dass ihr Gegenüber menschlich ist, und unterstellen menschliches Verhalten. Das bedeutet, sie knüpfen mehr oder weniger starke Gefühle und Erwartungen an ihr virtuelles Gegenüber, sie wünschen oder befürchten bestimmtes Verhalten und sind enttäuscht, wenn sie nicht bekommen, was sie sich versprochen haben. Man bleibt grundsätzlich verletzbar.

Die Implosion der Semantik und die Diffusion der moralischer Erwartung machen Medienpädagogik und Mediendidaktik wichtig. Medienpädagogik und Mediendidaktik haben die Aufgabe aufzuklären und Medienverwahrlosung zu bekämpfen, indem sie Wege zur Selbstverteidigung des menschlichen Geistes gegen den medialen Overkill zeigen. Im Unterschied zur rein beschreibenden Wissenschaft verfolgen sie ethische Ziele, die durch die Gesellschaft definiert werden.

Mittwoch, 6. Januar 2010

Textadventure

Textadventures gehören zum Urgestein der Computerspiele. Eines der ersten ist "Adventure" von William Crowter, danach kommt schon sehr schnell Zork in verschiedenen Versionen. Das reizvolle an Textadventures ist das Fehlen einer graphischen Oberfläche und die Notwendigkeit, sich die Räumlichkeiten selbst vorzustellen, um die enthaltenenn Aufgaben zu lösen.

Vgl. zu Genre http://de.wikipedia.org/wiki/Adventure und http://de.wikipedia.org/wiki/Adventure_(1976). Hier gibt es den originalen Fortran-Quelltext: http://jerz.setonhill.edu/if/crowther/. Manche der alten Textadventures kann man wieder online spielen: vgl. http://www.ifiction.org/games/index.php?cat=2.

Zu jedem folgenden Schritt im Textadventure gehört notwendig die Interaktion des Spielers. Anders als bei gängigen 3d-Spielen mit komplexer Graphik schaut man also nicht erst 20 Minuten zu, bis der im Spiel enthaltene 3D-animierte Film endlich abgelaufen ist.
Bei Textadventures muss man immer zuerst eine Vorstellung von die Miniaturwelt im Spiel machen, also sich eine Bandbreite von möglichen Spielverläufe ausdenken. Im nächsten Schritt muss man die Verläufe bewerten und eine Entscheidung für einen gewünschten Verlauf treffen. Dann muss man eine Vermutung aufstellen, wie man denn nun diesen Verlauf auslösen kann und schließlich muss mann es ausprobieren. Wenn es geklappt hat, bestärkt das denn Spieler in seiner Vorstellung von der Spielewelt, wenn nicht, kann er entweder die Art ändern, wie er einen bestimmten Spielverlauf auslösen wollte, oder er kann die Vorstellung von der Welt modifizieren.
Dieser Prozess ist dann für den Spieler erfolgreich, wenn er ihn möglichst individuell gestalten kann. Das bedeutet, die Interaktion mit dem Spieler muss so aufgefangen werden, dass möglichst wenige oder wenigstens eindeutige Sackgassen entstehen. Ein Maximum der Interaktion ist erreicht, wenn ein Spieler die eingeschlossene Welt während des Spielens völlig frei verändern kann.

Fragment eines Textadventures ist Miniaturversuch, diese Interaktivität nachzubasteln. Es gibt eine Eingabezeile, deren Inhalt in einer Schleife an eine Parser-Funktion übergeben wird. Der Parser versucht aus der Zeichenkette Wörter zu erkennen und sie nach einer einfachsten Grammatik in eine Reihe von Funktionen umzuwandeln. Die Funktionen ihrerseits rufen Methoden von Klassen auf, die festgelegt sind. Es gibt: Orte, Botschaften, Maschinen, Werkzeuge und Links. Die Links sind dabei die Verbinder zwischen den Orten. Botschaften, Maschinen und Werkzeuge können zu einem Ort gehören. Alle diese Objekte werden über XML-Dateien definiert, die in diversen Unterordnern abgelegt sind. Und eigentlich bräuchte ich beim momentanen Stand nur noch einen eingebauten Editor zum Verändern der Welt durch Hinzufügen oder Bearbeiten von XML-Dateien. Zum Beispiel soll ein Spieler, der denkt, dass er gerne in der Hütte ein Bild an der Wand hängen hätte, das einen beim Daraufzugehen an einen Ort portiert, welcher der Beschreibung des Bildes entspricht, dass der Spieler sich so ein Bild also machen kann. Und dann hätte ich gerne, dass man sich beim Spiel anmelden kann und über Netzwerk mit anderen zusammenspielen.
- Naja. Das kann dauern. Wahrscheinlich müsste man auch überhaupt das Konzept der Links als Verhältnisse zwischen Objekten im Gegensatz zu den Objekten neu überdenken.

Sonntag, 6. Dezember 2009

Text und Programm III

2. Ist jeder Text ein Programm?

b) Ein Gedicht

Dies ist meine Mütze,
dies ist mein Mantel,
hier mein Rasierzeug
im Beutel aus Leinen.

Konservenbüchse:
Mein Teller, mein Becher,
ich hab in das Weißblech
den Namen geritzt. [...]

Aus: Günter Eich, Inventur.

Vgl. http://www.philosophia-online.de/mafo/heft2007-1/Jo_Eich.htm.

Oder http://de.wikipedia.org/wiki/Inventur_(G%C3%BCnter_Eich)

Wenn man mit diesem Gedicht Ähnliches versucht, wie mit einer Einkaufliste, stößt man doch recht schnell an seine Grenzen. Mit den ersten zwei Versen wiederholt sich eine Form, im dritten Vers wird ein Teil der Form aus V1 und V2 einfach weggelassen. Der vierte erweitert den dritten. Der fünfte Vers ist dann noch kürzer, aber der Leser ahnt inzwischen auch so, was das einzelne Wort bedeuten kann.

Für menschliche Interpreter ist das alles kein besonderes Problem, weil man die Form des Gedichts im Vollzug lernt um den Inhalt zu erschließen, während man mögliche Bedeutungen mit seiner eigenen Lebenswirklichkeit abgleicht. Am Schluss bleibt man dann bei einer Interpretation hängen, die im Vergleich mit anderen Interpretationen anderer Menschen noch nicht mal die Wahrscheinlichste seien muss. - Erst wenn man dann mit anderen die Interpretation diskutiert, kann man zu einer oder mehreren Deutungen finden, die man weitgehend teilt.

Vergleichbares in der Maschinensprache hätte man, wenn man z.B. das Ende einer Schleife offenlassen könnte, weil der Interpreter dann schon irgendwie merkt, dass die Schleife fünf Codezeilen vorher zu Ende gewesen sein müsste.

Schluss: Nicht jeder Text ist ein Programm. Vielmehr sind Programme ganz spezielle maschinenlesbare Texte. Ihre Variabilität ist an die Fähigkeit der Maschine gebunden, Texte zu verstehen und ggfs. sinnvoll zu ergänzen. Diese Fähigkeit ist bislang recht gering.

- So richtig neu ist diese Erkenntnis jetzt auch nicht. Aber es ist doch überraschend, welche Wege es nimmt, wenn man mal etwas für sich plausibel machen möchte.

Mittwoch, 4. November 2009

Text und Programm II

2. Ist jeder Text ein Programm?

Das würde man ablehnen wollen, denn es gibt so viele verschiedenartige Texte, dass einfach gar nicht alle Texte Programme sein können. Die Bandbreite möglicher Texte variiert zum Beispiel vom Einkaufszettel über die Packungsbeilage der Kopfschmerztablette oder die Bedienungsanleitung für Kühlschränke bis hin zu Lyrik, Epik und dramatischen Werken.

a) Einkaufszettel
1 Paket Butter
1 Packung Toastbrot
2 Liter Milch
1 Tube Zahnpasta, ...

Man könnte das tatsächlich als ein Programm verstehen, weil die Abfolge der Punkte auf dem Einkaufszettel einer Aufforderung entspricht, jeden der Punkte zu kaufen. Das einfache Programm lautet etwa:

for a,b,c in zettel:
Kaufe a Stück nach b Maßeinheit von c Sache

Der Einkaufszettel ist also in seiner Kurzform als Programm denkbar, wenn wir annehmen, dass die enthaltenen Anweisungen implizit formuliert sind. Eine Maschine kann daher Einkaufszettel lesen und die implizierten Anweisungen ausführen, wenn sie weiß, dass ein Zettel ein Einkaufszettel sein soll. Was auf dem Einkaufzettel steht, ist dabei unerheblich, da man jeden Schleifendurchgang mit einer Fehlerbehandlung absichern könnte. Die Maschine startet dann oben, liest anschließend die einzelnen Punkte und versucht jeweils eine Ausführung. Am Ende des Einkaufszettels endet auch das Programm.

Montag, 2. November 2009

Text und Programm I

1. Sind alle Programme nicht auch Texte?

Wenn das stimmen soll, dann muss jedes Programm alles haben, was ein Text auch hat. Hervorstechende Textmerkmale sind die Kohäsion, die Kohärenz und die Situationsabhängigkeit.

a) Kohäsion
Die Syntax bei Programmen ist zwar variabel, aber nicht beliebig. Die Abfolge einzelner Anweisungen und Kontrollstrukturen ist grundsätzlich frei. Aber wenn eine Kontrollstruktur begonnen wird, muss sie auch beendet werden. Oder man muss Zuweisungen so schreiben, dass sie von rechts nach links funktionieren. Beachtet man das nicht, ist das Programm defekt. Überhaupt kann man defekte, d.h. nicht interpretierbare oder nicht kompilierbare Programme erzeugen,indem man die Syntaxregeln missachtet. In diesem Sinn darf man also von Kohäsion sprechen: Es gibt einen grammatischen Zusammenhang in Programmen, der falsifiziert werden kann.

b) Kohärenz

Kohärenz meint den Bedeutungszusammenhang, die durchgängig wahrnehmbare semantische Ebene. Man könnte das als Zustandsdeutungen in einem Programm suchen. Ein Programm operiert auf der Annahme einer Reihe von Zuständen, die je nach Programmablauf verändert werden können. Das Programm funktioniert nur dann richtig, wenn die Zustände immer gleich interpretiert, das heißt die Zustandsvariablen immer im gleichen Sinn verwendet werden. Ein Gegenbeispiel ist die Änderung der Zählvariable einer ForNext-Schleife aus dem Inneren der Schleife heraus. Diese Operation wäre syntaktisch möglich, aber eine Verletzung der Kohärenz. Die Folge ist wieder ein defektes Programm. Auch Kohärenz existiert in Programmen.

c) Situationsabhängigkeit

Ein großer Teil der Programmierarbeit ist es, von der Situation, in der das Programm läuft, soweit zu abstrahieren, dass es tatsächlich immer läuft. Das bedeutet aber nicht, dass es immer gleich abläuft. Teilweise sind die Situationen auch nur bedingt vorhersehbar. Etwa lebt die Idee der MMPORGs ja davon, dass einzelne Spieler miteinander interagieren und nicht alle zentral mit der Instanz eines Rechenhirns. Programmierte Spiele brauchen also eine gewisse Distanz von den Eingabemöglichkeiten und müssen trotzdem eine möglichst große Bandbreite von Spielverläufen ermöglichen. Grundlage dafür ist die Fehlerbehandlung, das Werfen einer Ausnahme. Programme sind also situationsabhängig. Andere Situationen produzieren andere Abläufe.

Die Betrachtung von Kohäsion, Kohärenz und Situationsabhängigkeit zeigt also, dass jedes Programm auch ein Text ist.

Dienstag, 27. Oktober 2009

Mergesort

Das Sortieren einer Liste gehört zu den Standardübungen beim Programmieren.

Mergesort wurde zum ersten Mal von John von Neumann präsentiert. Vgl. Art. s.v. Mergesort in Wikipedia. Die Idee ist, dass eine Liste, die aus einem Element besteht, bereits sortiert ist. Um eine größere List zu sortieren, muss man also nur eine Liste teilen können, bis jeder Teil sortiert ist und dann die entstandenen Teile neu sortiert zusammensetzen.

Implementierung in Python am Beispiel von Zeichenketten:


# ein Zeichen in eine sortierte Kette einfuegen
def eins_sortiert_einfuegen(p,q):
z = 0
for n in q:
if p <= n:
return q[:z]+p+q[z:]
z = z + 1
return q+p

# viele unsortierte Zeichen in eine sortierte Kette einfuegen
def viele_sortiert_einfuegen(a, b):
y = 0
for n in a:
b = eins_sortiert_einfuegen(n, b)
return b

# zwei sortierte Ketten sortiert miteinander verbinden
def merge(a,b):
x = 0
for m in a:
t = 0
y = len(b)
for n in range(x, y):
if m <= b[n]:
b = b[:n]+m+b[n:]
x = n
break
if y == len(b):
b = b + m
x = n + 1
return b

def mergesort(zeichenkette):
a = len(zeichenkette)
if a > 1:
#return viele_sortiert_einfuegen(
mergesort(zeichenkette[:int(a/2)]),
mergesort(zeichenkette[int(a/2):])
)
return merge(mergesort(zeichenkette[:int(a/2)]),
mergesort(zeichenkette[int(a/2):]))
else: return zeichenkette

## Voruebung
print eins_sortiert_einfuegen("r", "abcmnopz")
print viele_sortiert_einfuegen("rdz", "abcmnopz")

## Sortierung
print mergesort("rio bravo john hugo")