<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Lehrerzimmer &#187; Informatik</title>
	<atom:link href="http://www.herr-rau.de/wordpress/kategorie/faecher/informatik/feed" rel="self" type="application/rss+xml" />
	<link>http://www.herr-rau.de/wordpress</link>
	<description>Herr Rau erzählt von sich und der Schule. Ein Lehrerblog.</description>
	<lastBuildDate>Sat, 11 Feb 2012 06:22:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>c-jump</title>
		<link>http://www.herr-rau.de/wordpress/2012/01/c-jump.htm</link>
		<comments>http://www.herr-rau.de/wordpress/2012/01/c-jump.htm#comments</comments>
		<pubDate>Mon, 30 Jan 2012 10:03:16 +0000</pubDate>
		<dc:creator>Herr Rau</dc:creator>
				<category><![CDATA[Informatik]]></category>
		<category><![CDATA[Spiele]]></category>

		<guid isPermaLink="false">http://www.herr-rau.de/wordpress/?p=3626</guid>
		<description><![CDATA[Vorgestern ging es um den Tag des digitalen Lernens. Etwas, das analog und digital zugleich ist, zeige ich hier &#8211; ein Brettspiel: Der Titel des Spiel ist ein Wortspiel mit &#8220;Ski&#8221; und der Programmiersprache &#8220;C&#8221;. Als Spiel ist es recht simpel: jeder Spieler kriegt eine oder zwei Figuren und bewegt sie nach Würfelwürfen den Kurs [...]]]></description>
			<content:encoded><![CDATA[<p>Vorgestern <a href="http://www.herr-rau.de/wordpress/2012/01/digilern-2012-lernen-mit-digitalen-medien-und-wettbewerb.htm">ging es um den Tag des digitalen Lernens</a>. Etwas, das analog und digital zugleich ist, zeige ich hier &#8211; ein Brettspiel:</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/c-jump_1.jpg" alt="" title="c-jump_1" width="550" height="323" class="alignnone size-full wp-image-3622" /></p>
<p><a href="http://www.herr-rau.de/wordpress/archiv/c-jump_2.jpg"><img src="http://www.herr-rau.de/wordpress/archiv/c-jump_2-550x342.jpg" alt="" title="c-jump_2" width="550" height="342" class="alignnone size-medium wp-image-3623" /></a></p>
<p>Der Titel des Spiel ist ein Wortspiel mit &#8220;Ski&#8221; und der Programmiersprache &#8220;C&#8221;. Als Spiel ist es recht simpel: jeder Spieler kriegt eine oder zwei Figuren und bewegt sie nach Würfelwürfen den Kurs entlang, bis alle im Ziel sind. Der Kurs besteht aus Kästchen mit jeweils einem Element der Programmiersprache C darin (und damit auch Java sehr ähnlich).<br />
Vor jedem Zug schaut man sich das Feld an, auf dem man steht, und wenn dort &#8220;x+2;&#8221; steht, würfelt man und zählt 2 dazu, und so viele Felder zieht man dann weiter &#8211; ebenso für x+3; und x++; und so weiter.<br />
Es gibt besondere Felder, etwa &#8220;if (x==1)&#8221; oder &#8220;switch(x)&#8221;. Diese Felder eröffnen alternative Skipisten abseits der blauen main()-Piste &#8211; man würfelt und schaut, ob die Bedingung erfüllt ist und wechselt abhängig davon zu einem anderen Pfad.</p>
<p><a href="http://c-jump.com/">Zu kaufen gibt es das hier</a>. Als Spiel ist das vermutlich nicht allzu spannend, die <a href="http://boardgamegeek.com/boardgame/18731/c-jump-computer-programming-board-game">Besprechung bei <em>boardgame geek</em></a> klingt eher mäßig. Ich habe auch noch keine Mitspieler gefunden. Aber Informatiker müssen das doch einmal ausprobieren. Wenn sich also mal in München ein paar zum Spielen treffen möchten, ich wäre dabei. (Interesse? Interesse?)<br />
Auf das Spiel bin ich gekommen durch eine Seite mit <a href="http://www.der-will-doch-nur-spielen.de/spiele-fuer-informatiker/">Spielen für Informatiker</a>. Da gibt es noch andere kuriose Spiele.</p>
<p>Ich hätte auch noch Ideen für Verbesserungen oder für weitere Spiele. </p>
<ul>
<li>Als Erstes stört mich der Umgang mit dem x. Das sollte nicht jedesmal neu erwürfelt werden, sondern fest bleiben und für alle Spieler gleich bleiben, bis es irgendwann geändert wird. Dazu legt man einen Bereich am Spielfeldrand fest, mit &#8220;x&#8221; beschriftet, auf dem man einen oder mehrere Würfel ablegt, deren Augenzahl dem aktuellen Wert von x entspricht.</li>
<li>Überhaupt: Bereiche am Spielfeldrand, die für Variablen stehen. Ein Bereich für x, y, z, mit Würfeln, die den aktuellen Wert angeben. Und einen weiteren Bereich, nummeriert von 1-6, der sechs Speicherzellen darstellt, in denen alles mögliche drin sein kann. (Weitere Würfel, oder eher kurze Wörter aus Buchstabenwürfeln?) Dann muss man sich nur noch einig sein, ob x den Zahlenwert angibt (etwa 1), oder auf den Inhalt der Speicherzelle (etwa mit der Nummer 1) verweist.</li>
<li>(Grundgedanke, zu erweitern: Den Zustand eines Objekts mit eienr Anzahl von Variablen-Würfeln auf dem Spielfeld angeben.)</li>
<li>Dann wäre es mir lieb, wenn die Spieler nicht auf demselben Kurs fahren würden, sondern auf verschiedenen Kursen &#8211; entweder mehrfach den gleichen, oder auch auf echt unterschiedlichen Kursen. Das wären dann, sagen wir, eigene Spielpläne, die man parallel nebeneinander legen könnte. Die Spieler wechseln sich auch nicht einfach ab, sondern ein Spinner (eine Drehscheibe, <em>scheduler</em> genannt) entscheidet, wer jeweils als Nächstes drankommt. Damit kommt man dem parallelen Arbeiten von Threads, sagen wir, näher.</li>
<li>Nächste Stufe: es gibt bestimmte Streckenteile, die doch von allen Strecken genutzt werden. Damit kann man das Erzeuger-Verbraucher-Problem modellieren.</li>
</ul>
<p>Andere Spiele, die ich im Blog vorgestellt habe und für die ich auch nie Mitspieler finde:</p>
<ul>
<li><a href="http://www.herr-rau.de/wordpress/2005/03/eleusis.htm">Eleusis</a></li>
<li><a href="http://www.herr-rau.de/wordpress/2005/04/wff-n-proof.htm">WFF &#8216;n Proof</a></li>
<li>(Und nur kurz in einem Kommentar erwähnt: <a href="http://www.herr-rau.de/wordpress/2009/01/formale-sprachen-teil-3-kontextfreie-sprachen.htm">Queries &#038; Theories</a>.)</li>
</ul>
<hr />
<p><small>Quelle: Herr Rau aus dem <a href="http://www.herr-rau.de/wordpress">Lehrerzimmer</a> 2012. |
<a href="http://www.herr-rau.de/wordpress/2012/01/c-jump.htm">Permalink</a> |
<a href="http://www.herr-rau.de/wordpress/2012/01/c-jump.htm#comments">3 Kommentare</a>
<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.herr-rau.de/wordpress/2012/01/c-jump.htm/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tabellenkalkulation, Funktionen, und Idee für ein Kartenspiel</title>
		<link>http://www.herr-rau.de/wordpress/2012/01/tabellenkalkulation-funktionen-und-idee-fuer-ein-kartenspiel.htm</link>
		<comments>http://www.herr-rau.de/wordpress/2012/01/tabellenkalkulation-funktionen-und-idee-fuer-ein-kartenspiel.htm#comments</comments>
		<pubDate>Wed, 18 Jan 2012 07:46:19 +0000</pubDate>
		<dc:creator>Herr Rau</dc:creator>
				<category><![CDATA[Informatik]]></category>

		<guid isPermaLink="false">http://www.herr-rau.de/wordpress/?p=3595</guid>
		<description><![CDATA[In der 9. Klasse arbeiten die Schüler mit Tabellenkalkulationsprogrammen, in meinem Fall Open Office Calc. Manchmal benutze ich auch das Wort Excel, aber immer auf der zweiten Silbe ausgesprochen, weil man ist ja Ober- und Englischlehrer. Excel, von to excel, und demnach ein Wortspiel mit ex-cell, wie in Zelle, gell. Dabei sollen die Schüler aber [...]]]></description>
			<content:encoded><![CDATA[<p>In der 9. Klasse arbeiten die Schüler mit Tabellenkalkulationsprogrammen, in meinem Fall <em>Open Office Calc</em>. Manchmal benutze ich auch das Wort <em>Excel</em>, aber immer auf der zweiten Silbe ausgesprochen, weil man ist ja Ober- und Englischlehrer. <em>Excel</em>, von <em>to excel</em>, und demnach ein Wortspiel mit <em>ex-cell</em>, wie in <em>Zelle</em>, gell.</p>
<p>Dabei sollen die Schüler aber nicht primär den Umgang mit solchen Tabellenkalkulationsprogrammen lernen, sondern das &#8211; allgemeinbildendere &#8211; Prinzip von Datenverarbeitung als <strong>Eingabe-Verarbeitung-Ausgabe</strong>. Es geht etwas rein ins System, das System macht irgendwas damit, und es kommt etwas heraus. Klingt einfach, ist aber oft zu übersehen. So funktionieren auch <strong>Funktionen</strong>, wie man sie aus der Mathematik kennt: eine Zahl geht rein, oder auch mehrere, und eine &#8211; häufig davon verschiedene &#8211; Zahl kommt heraus. Tabellenkalkulationsprogramme sind voll von solchen Funktionen:</p>
<ul>
<li><code>summe(zahl1; zahl2)</code> &#8211; zwei Zahlen gehen rein, eine kommt heraus, zum Beispiel gibt summe(4;5) als Ausgabe 9</li>
<li><code>wenn(bedingung; dann; sonst)</code> &#8211; drei Sachen gehen rein, eine kommt heraus, zum Beispiel bei wenn(b1>12; &#8220;ja&#8221;; &#8220;nein&#8221;)</li>
<li><code>zählenwenn(bereich; zahl)</code> &#8211; viele Sachen gehen rein, eine kommt heraus, zum Beispiel gibt mir zählenwenn(b1:b30;6) die Anzahl der 6er im angegebenen Bereich</li>
<li><code>abrunden(zahl1; zahl2)</code> &#8211; zwei Zahlen gehen rein, eine kommt heraus, zum Beispiel gibt abrunden(3,14159;2) als Ausgabe 3,14</li>
<li><code>code(text)</code> &#8211; ein Text geht rein, eine Zahl kommt heraus, nämlich die ASCII-Codierungsnummer des ersten Buchstabens des Eingabetextes</li>
</ul>
<p>Bei diesen Funktionen ist aber wichtig, dass ich die richtigen <strong>Datentypen</strong> als Eingabe wähle. <code>summe(4;5)</code> geht, weil beide Eingabewerte Zahlen sind und das bei <code>summe</code> so sein muss. <code>summe("Hallo";"Peter")</code> geht nicht, weil die Eingabewerte Text sind und nicht Zahlen.</p>
<p>Es gibt bei den gängigen Tabellenkalkulationsprogrammen &#8211; Wortungetüm, auf Englisch kürzer: spreadsheet &#8211; übrigens nur zwei Datentypen: <strong>Text und Zahl</strong>. Alles, was man in eine Zelle eingibt, läuft letztlich auf das eine oder andere hinaus. Eine Zahl, etwa die Zahl 2, kann ich darstellen als Währung, dann gibt es automatisch Nachkommastellen und ein Eurozeichen: 2,00 €; oder als Prozentwert, dann wird die Zahl 2 eben als 200,00% dargestellt. Ich kann sie aber auch, und das ist weniger bekannt, als Datum darstellen, dann steht da: 1.1.1900, oder als Boolescher Wahrheitswert, dann steht da WAHR. Aber im Grund bleibt das immer die unveränderte Zahl 2. Ich kann also auch damit rechnen: eine Zelle, in der das Datum 1.1.1900 steht, multipliziert mit einer Zelle, in der das Datum 2.1.1900 steht, ergibt den 5.1.1900, natürlich. Nicht dass das viel Sinn macht.<br />
Das Allgemeinbildende daran ist: 1. Daten bleiben gleich, auch wenn man sie verschieden darstellt. 2. Daten bedeuten erst dann etwas, wenn man sie interpretiert &#8211; ob eine 2 eine 2 ist oder WAHR oder der 1.1.1900 oder 48 Stunden oder Mitternacht, das ist Definitions- und Interpretationssache.</p>
<p>Funktionen kann man auch <strong>verknüpfen</strong>:</p>
<ul>
<li><code>abrunden(3,14159;2)</code> gibt 3,14, und </li>
<li><code>summe(abrunden(3,14159;2);2)</code> gibt 5,14, und </li>
<li><code>produkt(summe(abrunden(3,14159;2);2);2)</code> gibt 10,28</li>
</ul>
<p>und beliebig so weiter. Darstellen kann man das grafisch in <strong>Datenflussdiagramm</strong>. Das fällt nicht allen Schülern leicht.<br />
In so einem Diagramm steht ein eckiger Kasten für einen ein- oder ausgegebenen Wert, also eine Zahl oder einen Text. Die Funktionen werden durch Ellipsen dargestellt, aus der 1 Pfeil hinausgeht (zu einem Ausgabekasten oder zur Weiterverarbeitung in einen Eingang einer weiteren Funktion) und im Prinzip beliebig viele Pfeile hineingehen &#8211; sagen wir, 1-3, der Einfachheit halber.</p>
<p>Zum Üben heute habe ich heute meine Neuntklässler <strong>ins Schulhaus geschickt</strong>, solche Diagramme anlegen.</p>
<ul>
<li>Arbeitsmaterial dazu: Papier im Format DIN A5, Stifte, Handy.</li>
<li>Anlegen des Materials: auf jedes Blatt kommt entweder ein Kasten, der mit &#8220;Text&#8221; oder &#8220;Zahl&#8221; markiert ist. Oder es kommt ein Ellipse darauf, aus der unten jeweils ein Pfeil heraus und oben 1-3 Pfeile hinein gehen. Jeder Pfeil wird ebenfalls mit &#8220;Text&#8221; oder &#8220;Zahl&#8221; markiert.</li>
<li>Von diesen Blättern eine ganze Menge verschiedene anlegen.</li>
<li>Dann kann man diese Blätter zusammenpuzzlen. Die einzigen Legeregeln: 1. Pfeile dürfen nie in der Luft hängen, sondern müssen immer irgendetwas verbinden, und 2. man darf nur &#8220;Text&#8221; mit &#8220;Text&#8221; und &#8220;Zahl&#8221; mit &#8220;Zahl&#8221; verbinden.</li>
<li>Auftrag: im Schulhaus in Gruppen ein schönes großes Puzzles zusammenlegen, und überlegen, welche Funktionen die Ellipsen darstellen könnten. Fotografieren.</li>
</ul>
<p>Wenn man sich daran hält, kommen immer syntaktisch korrekte Diagramme heraus, die man fehlerfrei in der Tabellenkalkulation umsetzen kann. (Hat natürlich nicht bei allen geklappt.) In eckigen Kästen darf dabei immer nur eine Zahl oder ein Text stehen, sonst nichts, und schon gar nichts Zusammengesetztes wie &#8220;Maxis Alter = 12&#8243; &#8211; dazu neigen meine Schüler nämlich.</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/datenfluss.gif" alt="" title="datenfluss" width="550" height="733" class="alignnone size-full wp-image-3602" /></p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/flussdiagramm1.jpg" alt="" title="flussdiagramm1" width="550" height="413" class="alignnone size-full wp-image-3597" /></p>
<p>Datenflussdiagramme sind eigentlich für mehr gedacht als die Beschreibung von Funktionen, und auch die Angabe der Datentypen (&#8220;Text&#8221;, &#8220;Zahl&#8221;) ist nicht üblich. Aber ich wollte das explizit als Vorbereitung auf die zehnte Klasse. Dort bereiten nämlich Datentypen und die Java-Syntax von Funktionen den Schülern Schwierigkeiten, und überhaupt der Gedanke, dass in Funktionen etwas hinein- und etwas aus ihnen herauskommt. Vielleicht beginne ich die nächste 10. Klasse überhaupt nicht objektorientiert, sondern mache unmittelbar mit Funktionen und Datentypen weiter.</p>
<p>Zu Hause ist mir dann die Idee gekommen, ob man nicht ein Kartenspiel aus diesem Diagrammpuzzle machen kann. Ich habe mal ein paar Blankospielkarten genommen &#8211; so etwas sollte jeder Lehrer zu Hause haben, ist sehr inspirierendes Spielzeug &#8211; und darauf herumgekritzelt:</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/flussdiagramm2.jpg" alt="" title="" width="550" height="503" class="alignnone size-full wp-image-3598" /><br />
<small>(Um, denkt dabei noch jemand außer mir an <em>Illuminati!</em> von Steve Jackson Games?)</small></p>
<p>Grün steht dabei für einen Datentyp (sagen wir: Zahl), rot für einen anderen (Text). Rechtecke gibt es in grün und rot. Auf der Rückseite der Ellipsen/Funktionen-Karten ist noch einmal die gleiche Ellipse abgebildet, jetzt aber mit dem Namen einer Funktion, die zu deren Ein- und Ausgabepfeilen passt. Auf der Rückseite der obersten Ellipsenkarte könnte etwa <code>summe</code> stehen oder auch <code>aufrunden</code> oder das logische <code>und</code>, und vielleicht eine kurze Erklärung der Arbeitsweise dieser Funktion. (Oder sollte man doch mit mehr Datentypen arbeiten: Ganzzahl, Kommazahl, Text, Wahrheitswert?)</p>
<p>Fehlen nur noch Spielregeln. Ideen, noch völlig ungetestet:</p>
<ul>
<li>Jeder Spieler legt reihum eine passende Karte an, bis einer keine Karten mehr hat. Ein neues Diagramm darf erst angefangen werden, wenn das alte keine offenen Pfeile mehr hat.</li>
<li>Optional: Wenn das Diagramm fertig ist, werden die Ellipsenkarten umgedreht und auf jedes Zahl-Kästchen ohne Pfeil darauf (also jeden Eingabewert) kommt ein Würfel, frisch gewürfelt. Dann das Ergebnis ausrechnen und vergleichen. Wie man das bei Text machen könnte, weiß ich noch nicht.</li>
<li>Oder Romme-artig: man kann immer nur ganze und komplette Diagramme auf einmal auslegen, die aus mindestens drei Karten bestehen müssen. Mehr Karten bringen deutlich mehr Punkte, so dass es sich eventuell lohnt, noch nicht gleich alle kleinen Diagramme abzulegen.</li>
<li>Optional: Man kann bei ausgelegten Diagrammen anderer Spieler anlegen.</li>
<li>Anderes System: Sieben Karten kommen vom Stapel aufgedeckt in die Mitte. Welcher Spieler sagt als Erstes, wie viele davon man maximal in ein korrektes Diagramm einbauen kann? </li>
<li>Anderes System: Sieben Karten kommen vom Stapel aufgedeckt in die Mitte. Reihum wählt jeder eine davon und legt sie ans gemeinsam erstellte Diagramm an. Der Spieler, der eine Karte so anlegt, dass der folgende das Diagramm komplettieren kann, verliert.</li>
</ul>
<p>Das wäre doch mal etwas für eine Informatiker-Fortbildung. Ich hätte auch noch Ideen für andere Spiele.</p>
<hr />
<p><small>Quelle: Herr Rau aus dem <a href="http://www.herr-rau.de/wordpress">Lehrerzimmer</a> 2012. |
<a href="http://www.herr-rau.de/wordpress/2012/01/tabellenkalkulation-funktionen-und-idee-fuer-ein-kartenspiel.htm">Permalink</a> |
<a href="http://www.herr-rau.de/wordpress/2012/01/tabellenkalkulation-funktionen-und-idee-fuer-ein-kartenspiel.htm#comments">3 Kommentare</a>
<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.herr-rau.de/wordpress/2012/01/tabellenkalkulation-funktionen-und-idee-fuer-ein-kartenspiel.htm/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Hör- und Lesetipp: Lockdown &#8211; the coming war on general-purpose computing</title>
		<link>http://www.herr-rau.de/wordpress/2012/01/hoer-und-lesetipp-lockdown-the-coming-war-on-general-purpose-computing.htm</link>
		<comments>http://www.herr-rau.de/wordpress/2012/01/hoer-und-lesetipp-lockdown-the-coming-war-on-general-purpose-computing.htm#comments</comments>
		<pubDate>Sun, 15 Jan 2012 08:32:36 +0000</pubDate>
		<dc:creator>Herr Rau</dc:creator>
				<category><![CDATA[Fundstücke]]></category>
		<category><![CDATA[Informatik]]></category>

		<guid isPermaLink="false">http://www.herr-rau.de/wordpress/?p=3593</guid>
		<description><![CDATA[Lesetipp. Oder für Erörterungen in der Schule als Grundlage. Oder überhaupt für die Schule. Warum sind die Themen da so langweilig? Vor- und Nachteile von Fernreisen, oder vom Fernsehen (ja, das gibt&#8217;s immer noch) oder Internet, pffff. Also besser: Cory Doctorow, Lockdown &#8211; the coming war on general-purpose computing. (Der Link führt zu einer leicht [...]]]></description>
			<content:encoded><![CDATA[<p>Lesetipp. Oder für Erörterungen in der Schule als Grundlage. Oder überhaupt für die Schule. Warum sind die Themen da so langweilig? Vor- und Nachteile von Fernreisen, oder vom Fernsehen (ja, das gibt&#8217;s immer noch) oder Internet, pffff.</p>
<p>Also besser: <a href="http://boingboing.net/2012/01/10/lockdown.html">Cory Doctorow, Lockdown &#8211; the coming war on general-purpose computing.</a> (Der Link führt zu einer leicht gestrafften englischen Textfassung eines Vortrags, den es auch als Videoaufnahme und als deren deutsche Übersetzung gibt. Links dazu <a href="http://netzpolitik.org/2012/lockdown-the-coming-war-on-general-purpose-computing/">bei Netzpolitik</a>, wo ich auf den Vortrag aufmerksam gemacht wurde.)</p>
<p>Die These des Vortrags (und ja, der Vortrag ist nicht antithetisch; es ist nur in der Schule, wo wir antithetisches Argumentieren so in der Vordergrund rücken) ist die: der aktuelle Kampf um DRM (Digital-Rights-Management) und Software-Rechte (was darf ich mit meiner gekauften Musikdatei alles machen?) ist nur der Anfang; die nächste Frage wird sein: Was werde ich mit meinem Computer machen dürfen?<br />
<center>*</center><br />
Dazu etwas Hintergrund, kann man überspringen: <strong>Rechenmaschinen</strong> (<a href="http://de.wikipedia.org/wiki/Rechenmaschine">Wikipedia</a>) gibt es seit der ersten Hälfte des 17. Jahrhunderts. Das sind mechanische Maschinen, die zum Beispiel Zahlen addieren können. Man gibt ein paar Zahlen ein, dreht eine Kurbel, und kriegt das Ergebnis. Oder Multiplikationsmaschinen, oder Maschinen, die noch mehr Berechnungen ausführen können. Aber das waren alles Maschinen, die für eine bestimmte Art oder bestimmte Arten von Berechnung gebaut wurden, und mit denen nur genau diese möglich waren. Nachfolger dieser Maschinen bis weit ins 20. Jahrhundert hinein waren elektrisch und nicht mehr nur mechanisch, aber auch nur zu bestimmten Berechnungen fähig.</p>
<p>In den 1920er Jahren ging es in der Mathematik darum, was man überhaupt alles berechnen kann, und wie man das formalisieren kann. (Vorsicht, bin Laie und kenne mich da wenig aus. Das ist aber spannender, als es vielleicht klingt.) So ab 1930 herum überlegte sich Alan Turing dazu das Konzept der <strong>universellen Rechenmaschine</strong> oder Turing-Maschine. Das wäre eine Maschine, die anders als bisherige Rechenmaschinen nicht nur bestimmte Arten von Berechnungen ausführen kann, sondern alle. Eine Turing-Maschine kann alles berechnen, was man überhaupt berechnen kann.<br />
Das ist das theoretische Standbein des modernen Computers. Computer sind genauso mächtig wie Turing-Maschinen (aber auch nicht mächtiger, weil es mächtiger nicht geht). Das praktische Standbein des modernen Computers kommt aus der Ingenieurswissenschaft: Konrad Zuse baute sich die Z1 und später die Z3, den ersten programmierbaren Universalrechner, der eben alles berechnen konnte, was sich berechnen ließ.</p>
<p>Heute ist das selbstverständlich, dass ein Computer eine Maschine ist, die praktisch alles kann. Deshalb kann ich auf meinem <a href="http://de.wikipedia.org/w/index.php?title=Datei:IPod_Nano_in_its_Dock.jpg&#038;filetimestamp=20060718110116">uralten iPod</a> ja auch Doom installieren und spielen. Computer sollen und müssen auch ständig neue Sachen berechnen, an die man vorher nie gedacht hatte. Man installiert ständig neue Software, und laufende Programme verändern sich selber, und das Betriebssystem kriegt ein Update.<br />
<center>*</center></p>
<p>Zurück zu Doctorow: </p>
<p>Er beschreibt erst einmal sehr schön die Entwicklung des Versuchs, <strong>Software vor dem Kopieren</strong> zu schützen: zuerst war die Software verschlüsselt. Dazu musste man verhindern, dass jemand an den Schlüssel kommt. Dann musste man vebieten, dass dieser Schlüssel weitergegeben wurde. Dann musste man verbieten, dass man anderen sagte, wie man an solche Schlüssel kam. Und so immer weiter: verbieten, verbieten, verbieten. Man darf Verschlüsselungssoftware nicht analysieren, man darf verschlüsselte Software (also auch Musik) nicht illegal entschlüsseln, man darf anderen nicht sagen, wie das geht.</p>
<p>Nur dass das nicht funktioniert. Wer will, kann alles kopieren, basta.</p>
<p>Das sei aber nur der Anfang, so Doctorow. Im Moment möchte eigentlich vor allem die Film-, Computerspiel- und Musikindustrie, dass ich mit meinem universellen Computer nicht alles machen darf, was ich mit meinem universellen Computer machen kann. (Und der Staat erlässt Gesetze, die das bewirken sollen.) Bald werden andere Industrien dazu kommen.</p>
<p>Und sie alle werden sich wünschen, <strong>dass bestimmte Programme nicht laufen dürfen</strong> auf den Computern. Das geht aber nicht, weil diese Rechner nun mal universell sind. Das einzige, was man machen kann: man kann dem Benutzer verbieten, seinen Rechner als universelles Werkzeug zu benutzen. Man kann verbieten, andere Betriebssysteme aufzuspielen, man kann verbieten, sich anzuschauen, welche Prozesse gerade laufen, also was der Computer im Moment alles tut. Damit erteilt man dem Rechner aber die Lizenz, zu machen, was er will &#8211; also was seine Hersteller wollen, unkontrollierbar durch den Benutzer.</p>
<p>Wenn ich einen neues Handy kaufe, habe ich in der Regel keine vollen Rechte auf dem System. Das heißt, ich kann auch nicht kontrollieren, was das Ding eigentlich tut. (Also, <em>ich</em> kann das sowieso nicht, weil ich mich damit nicht auskenne. Aber es reicht ja, dass es andere gibt, die dazu in der Lage sind.) Noch ist es allerdings erlaubt und relativ einfach möglich, sich diese Rechte zu besorgen. Dann kann man theoretisch kontrollieren, was das Ding tut &#8211; insbesondere, was es vielleicht ohne Wissen des Benutzers tut.</p>
<p>Und das, so Doctorow, ist der nächste Schritt nach dem DRM. Noch kann und darf man sich Root-Rechte auf seinem Kindle und seinem iPad verschaffen. Gilt das auch für meinen zukünftigen <a href="http://www.youtube.com/watch?v=nik6bxZcm9Y">3D-Drucker</a>? Für mein elektronisches Schulbuch, Türschloss, Hörgerät, Lesebrille, und was noch alles auf uns zukommt?</p>
<hr />
<p><small>Quelle: Herr Rau aus dem <a href="http://www.herr-rau.de/wordpress">Lehrerzimmer</a> 2012. |
<a href="http://www.herr-rau.de/wordpress/2012/01/hoer-und-lesetipp-lockdown-the-coming-war-on-general-purpose-computing.htm">Permalink</a> |
<a href="http://www.herr-rau.de/wordpress/2012/01/hoer-und-lesetipp-lockdown-the-coming-war-on-general-purpose-computing.htm#comments">15 Kommentare</a>
<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.herr-rau.de/wordpress/2012/01/hoer-und-lesetipp-lockdown-the-coming-war-on-general-purpose-computing.htm/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Mailingliste für Informatiklehrer</title>
		<link>http://www.herr-rau.de/wordpress/2012/01/mailingliste-fuer-informatiklehrer.htm</link>
		<comments>http://www.herr-rau.de/wordpress/2012/01/mailingliste-fuer-informatiklehrer.htm#comments</comments>
		<pubDate>Mon, 09 Jan 2012 17:50:50 +0000</pubDate>
		<dc:creator>Herr Rau</dc:creator>
				<category><![CDATA[Informatik]]></category>
		<category><![CDATA[Zusammenarbeit]]></category>

		<guid isPermaLink="false">http://www.herr-rau.de/wordpress/?p=3587</guid>
		<description><![CDATA[Ich profitiere sehr von einer Englisch-Mailingliste, auf der ich bin (auch wenn ich wenig aktiv bin, da ich im vierten Jahr keine Englischklasse mehr habe). Dort gibt es regegn Austausch, eine Handvoll Mails am Tag, von denen ich manche lese, andere nicht. Manche enthalten Hinweise auf Neuigkeiten &#8211; Bücher, Fernsehsendungen, aktuelle Zeitungsartikel, auf didaktisches Material. [...]]]></description>
			<content:encoded><![CDATA[<p>Ich profitiere sehr von einer Englisch-Mailingliste, auf der ich bin (auch wenn ich wenig aktiv bin, da ich im vierten Jahr keine Englischklasse mehr habe). Dort gibt es regegn Austausch, eine Handvoll Mails am Tag, von denen ich manche lese, andere nicht. Manche enthalten Hinweise auf Neuigkeiten &#8211; Bücher, Fernsehsendungen, aktuelle Zeitungsartikel, auf didaktisches Material. Andere sind Fragen oder Antworten zu methodischen oder fachwissenschaftlichen Aspekten. Schön und praktisch, so etwas.</p>
<p>Für Deutsch bin ich auch auf so einer Liste, aber da ist viel weniger los. Keine kritische Masse, schätze ich. Oder sind die Englischlehrer kommunikativer &#8211; oder internetfreundlicher? Da könnte etwas dran sein.</p>
<p>Es gibt jetzt auch für Informatik eine neue Mailingliste, unter:<br />
<a href="http://www.schule.bayern.de/service/mailinglisten">http://www.schule.bayern.de/service/mailinglisten</a><br />
kann man sich anmelden. (Die Liste auswählen, die &#8220;Informatik&#8221; im Namen hat.)</p>
<p>Bin gespannt, wie internetaffin Informatiklehrer sind. Es gibt schon eine Mailingliste (<a href="http://www.zum.de/mailman/listinfo/informatik">ZUM-Informatik</a>), auf der ich auch bin, wo aber nicht viel los ist. Haben Informatiklehrer weniger Austauschbedarf oder gibt es einfach nicht genug solche Lehrer? Ich habe ja ein bisschen den Verdacht, dass Mathe-Physik-Lehrer, und aus dieser Richtung kommen die meisten Informatiklehrer noch, weniger interessiert am Austausch an sich sind. Dafür haben die an meiner Schule die engste Zusammenarbeit untereinander.</p>
<p><b>Nachtrag: Die Adresse der Englisch-Mailingliste ist: <a href="http://groups.yahoo.com/group/enpaed/">http://groups.yahoo.com/group/enpaed/</a></b></p>
<hr />
<p><small>Quelle: Herr Rau aus dem <a href="http://www.herr-rau.de/wordpress">Lehrerzimmer</a> 2012. |
<a href="http://www.herr-rau.de/wordpress/2012/01/mailingliste-fuer-informatiklehrer.htm">Permalink</a> |
<a href="http://www.herr-rau.de/wordpress/2012/01/mailingliste-fuer-informatiklehrer.htm#comments">1 Kommentar</a>
<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.herr-rau.de/wordpress/2012/01/mailingliste-fuer-informatiklehrer.htm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Processing</title>
		<link>http://www.herr-rau.de/wordpress/2012/01/processing.htm</link>
		<comments>http://www.herr-rau.de/wordpress/2012/01/processing.htm#comments</comments>
		<pubDate>Mon, 02 Jan 2012 15:02:16 +0000</pubDate>
		<dc:creator>Herr Rau</dc:creator>
				<category><![CDATA[Informatik]]></category>
		<category><![CDATA[Schule (mal machen)]]></category>

		<guid isPermaLink="false">http://www.herr-rau.de/wordpress/?p=3567</guid>
		<description><![CDATA[Bei Zurück in die Schule gefunden: Processing, eine Java-Programmierumgebung, mit der man Bilder erzeugen kann. Processing ist eine Lernumgebung und Einführung in das (Java-)Programmieren. Man kann damit einerseits voll objektorientiert schreiben, andererseits kann man genauso gut ohne Objektkrams die vorhanden Methoden benutzen, deren Überbau wunderschön transparent ist. (Fußnote: Transparent heißt überall anders soviel wie: &#8220;Durchsichtig, [...]]]></description>
			<content:encoded><![CDATA[<p>Bei <a href="https://zurueckindieschule.wordpress.com/2011/12/21/processing/">Zurück in die Schule gefunden</a>: <a href="http://processing.org/">Processing</a>, eine Java-Programmierumgebung, mit der man Bilder erzeugen kann. Processing ist eine Lernumgebung und Einführung in das (Java-)Programmieren. Man kann damit einerseits voll objektorientiert schreiben, andererseits kann man genauso gut ohne Objektkrams die vorhanden Methoden benutzen, deren Überbau wunderschön transparent ist.</p>
<p><small>(Fußnote: Transparent heißt überall anders soviel wie: &#8220;Durchsichtig, so dass man ins Innere blicken und die Zusammenhänge verstehen kann.&#8221; In der Informatik heißt transparent allerdings: &#8220;Durchsichtig, so dass man hindurchschaut und nichts sieht, also quasi unsichtbar und vor leicht zu verwirrenden Augen verborgen.&#8221;)<br />
</small></p>
<p>Man kann mit Processing neue Bilder zeichnen oder bestehende Bilder bearbeiten. Das kann man statisch machen oder dynamisch: dann werden daraus bewegte Bilder, entweder automatisch oder durch den Benutzer mit Maus oder Tastatur gesteuert. So kann man auch ganze Simulationen entwerfen, wenn man möchte. Man kann sich auch eine Methode schreiben, um die ausgegebenen Bilder zu speichern, die sieht so aus:</p>
<p><code>void mousePressed() {<br />
&nbsp;&nbsp;save("bild.jpg");<br />
}<br />
</code></p>
<p>Viel einfacher geht es wirklich nicht.</p>
<p>Ich wollte aber Filter schreiben, so wie man sie aus Bildbearbeitungsprogrammen kennt. Hier sind ein paar davon. Die Vorgehensweise ist meist die: Man lädt erst einmal das Originalbild in den Speicher und legt eine &#8211; noch leere &#8211; Zeichenfläche im gleichen Format an. Dann schaut man sich der Reihe nach jeden Pixel des Ursprungsbildes an, merkt sich dessen Farbe (bzw. den Rot-, Grün-, Blauanteil davon), verändert diese Farbe, und schreibt an dieselbe Position auf der Zeichenfläche einen Pixel mit der neuen Farbe.</p>
<p>1. Hier ein einfaches Weichzeichnen, das erste Bild ist das Original:</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/processing_original.jpg" alt="" title="processing_original" width="150" height="224" " /> <img src="http://www.herr-rau.de/wordpress/archiv/processing_blur_3.jpg" alt="" title="processing_blur_3" width="150" height="224" " /> <img src="http://www.herr-rau.de/wordpress/archiv/processing_blur_9.jpg" alt="" title="processing_blur_9" width="150" height="224" " /></p>
<p>Man ändert dabei jede Farbe so, dass man sich von einem Pixel und allen seinen umliegenden Nachbarpixeln (im ersten Beispiel nur die direkt umliegenden, im zweiten auch die in etwas weiterem Abstand) die Durchschnittsfarbe ausrechnet und diese dem Pixel zuweist. Das macht man mit allen Pixeln so und heraus kommt eine Weichzeichnung.</p>
<p>2. Hier eine Gammakorrektur. Die dient zu einer differenzierten Aufhellung oder Abdunklung von Bildern. Dabei wird nicht jeder Pixel im gleichen Maß heller oder dunkler gemacht, sondern es werden zum Beispiel die dunklen Pixel mehr aufgehellt als die (ja eh schon hellen) helleren. Im ersten Bild mit gamma=0.5, im zweiten gamma = 1.5:</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/processing_original.jpg" alt="" title="processing_original" width="150" height="224" " /> <img src="http://www.herr-rau.de/wordpress/archiv/processing_gamma_0.5.jpg" alt="" title="processing_gamma_0.5" width="150" height="224" " /> <img src="http://www.herr-rau.de/wordpress/archiv/processing_gamma_1.5.jpg" alt="" title="processing_gamma_1.5" width="150" height="224" " /></p>
<p>Hier sind einem die Nachbarn egal. Man wendet einfach auf den Rot-, Grün-, Blauteil jedes Pixels die überraschend einfache Funktion an:</p>
<p><code>farbeneu = (farbealt/255)<sup>gamma</sup> * 255</code></p>
<p>Die Zahl 255 kommt daher, weil es für jede Farbton 255 Möglichkeiten gibt. Der Wert des ursprünglichen Blauanteils (von 0-255) wird durch 255 geteilt, womit man diesen Anteil auf eine Zahl zwischen 0 und 1 normalisiert hat. Das wird dann mit dem Gammawert potenziert (bzw. je nach Definition auch dessen Kehrwert) und dann mit dem letzten Faktor wieder auf den ursprünglichen Raum (zwischen 0 und 255) gestreckt.</p>
<p>3. Gemischte weitere Filter:</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/processing_sharpen.jpg" alt="" title="processing_sharpen" width="150" height="224" " /> <img src="http://www.herr-rau.de/wordpress/archiv/processing_ellipsen.jpg" alt="" title="processing_ellipsen" width="150" height="224" " /> <img src="http://www.herr-rau.de/wordpress/archiv/processing_mosaik_9.jpg" alt="" title="processing_mosaik_9" width="150" height="224" " /></p>
<p>Der erste ist ein einfaches Schärfen: Man schaut sich wieder die Rot-, Grün- Blauwerte eines Pixels und seiner Nachbarn an und errechnet daraus wieder einen Durchschnitt. Allerdings werden vor der Berechnung die Nachbarn und der Pixel selber noch gewichtet: die Werte der 8 unmittelbaren Nachbarn werden zum Beispiel jeweils um 1 reduziert, die des zentralen Pixels um 9 erhöht &#8211; die Durchschnittswerte bleiben also gleich (das Bild wird insgesamt nicht heller oder dunkler), aber mit Betonung des Zentrums.</p>
<p>Der zweite zeichnet einfach an jede n-te Stelle des Bildes einen Kreis mit Durchmesser n von der Farbe des Pixels, der sich im Originalbild an dieser Stelle befindet. </p>
<p>Der dritte ist ein Mosaik. Man könnte zwar, ähnlich wie bei den Ellipsen, an jede n-te Stelle des Bildes ein Quadrat zeichnen, aber so wollte ich das nicht machen. Jeder Pixel sollte extra gezeichnet werden. Ich machte mir dazu folgende Skizze:</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/processing_mosaik1.jpg" alt="" title="processing_mosaik1" width="550" height="128" class="alignnone size-full wp-image-3576" /></p>
<p>Der erste Pixel in der Reihe (in der 0-Spalte) sei zum Beispiel rot. Die beiden Pixel rechts daneben sollten dessen Farbe annehmen. Die Pixel in den Spalten 3-7 sollten die Farbe des Pixels in Spalte 5 annehmen, und so weiter. (Für die y-Koordinate analog, das habe ich bald gemerkt.)<br />
<img style="float:right; margin-left:10px;" src="http://www.herr-rau.de/wordpress/archiv/processing_mosaik2.jpg" alt="" title="processing_mosaik2" width="58" height="244" class="alignnone size-full wp-image-3577" /><br />
Weil ich in Mathe nicht gut bin, zeichnete ich mir eine Tabelle auf: links die Position des Pixels, rechts die Position des Pixels, dessen Farbe angenommen werden sollte. f(linkeSpalte) = rechteSpalte. Der Rest ist einfach nur Rechnen. Mathekönner sehen das durch Überlegen, ich habe halt so lange herumgepfuscht, bis ich die entsprechende Funktion hatte. Die musste ich dann noch etwas verallgemeinern, damit sie nicht nur für die Rechnung mit den Mosaiksteinchen von Seitenlänge 5, sondern für beliebige Seitenlängen gilt. Sieht dann so aus:</p>
<p><code>xZentrumspixel = (x+size/2)/size*size</code> bzw.<br />
<code>yZentrumspixel = (y+size/2)/size*size</code>,</p>
<p>wobei <code>size</code> die Seitenlänge des Mosaiksteins ist. Und nein, das <code>/size</code> und <code>*size</code> kann man nicht einfach kürzen, da <code>x</code> eine Ganzzahl und die Divison in diesem Fall eine Ganzzahldivision ist &#8211; es wird immer abgerundet, der Rest verworfen.</p>
<p>Processing gibt&#8217;s für alle gängigen Betriebssystem, läuft unter Windows auch ohne Installationsrechte. Tutorials gibt es dort auch ein paar.</p>
<p><center>***</center></p>
<p>Anhang: So sieht ein vollständiger <em>Sketch</em> in Processing aus. Java-Code, ohne Klassendefinitionen, besteht aus 1 Attribut und den Methoden <code>setup()</code> und <code>draw()</code> und der Berechnungsmethode für das Mosaik, <code>mosaik()</code>. </p>
<pre>
PImage img; //Platz fuer das im Speicher gehaltene Bild

//einmaliges Aufrufen am Anfang
void setup() {
  img = loadImage("test.jpg"); //Laden des Bildes
  size(img.width, img.height); //Groesse der Zeichenflaeche
}

//das eigentliche Zeichnen
void draw() {
  //Pixel-Feld zur Verfuegung stellen
  loadPixels();
  //Zaehlschleife fuer alle Pixel mit x- und y-Koordinate
  for (int x = 0; x < img.width; x++) {
    for (int y = 0; y < img.height; y++ ) {
      //Berechnen der neuen Farbe - hier koennte man auch andere Methoden aufrufen
      color c = mosaik(x, y, 9);
      //Umrechnen der Koordinaten in Index des eindimensionalen Pixel-Felds
      int loc = x + y*img.width;
      //Aendern des Pixels im Pixel-Feld
      pixels[loc] = c;
    }
  }
  //Zeichnen aller Pixel
  updatePixels();
}

//Methode zur Farbberechnung beim Mosaik
color mosaik(int x, int y, int groesse) {
  //Koordinaten des Zentrums ermitteln
  int xZentrum = (x+groesse/2)/groesse*groesse;
  int yZentrum = (y+groesse/2)/groesse*groesse;

  //Umrechnen der Koordinaten in Index des eindimensionalen Pixel-Felds
  int loc = xZentrum + yZentrum*img.width;

  //sicher stellen, dass Bildgrenzen nicht ueberschritten werden
 loc = constrain(loc, 0, img.pixels.length-1);

  //Rot-, Gruen-, Blauanteile des Zentrumspixels speichern
  float rtotal = red(img.pixels[loc]);
  float gtotal = green(img.pixels[loc]);
  float btotal = blue(img.pixels[loc]);           

  // Rueckgabe der neuen Farbe
  return color(rtotal, gtotal, btotal);
}
</pre>
<hr />
<p><small>Quelle: Herr Rau aus dem <a href="http://www.herr-rau.de/wordpress">Lehrerzimmer</a> 2012. |
<a href="http://www.herr-rau.de/wordpress/2012/01/processing.htm">Permalink</a> |
<a href="http://www.herr-rau.de/wordpress/2012/01/processing.htm#comments">4 Kommentare</a>
<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.herr-rau.de/wordpress/2012/01/processing.htm/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Zustandsautomaten in der 10. Klasse</title>
		<link>http://www.herr-rau.de/wordpress/2011/12/zustandsautomaten-in-der-10-klasse.htm</link>
		<comments>http://www.herr-rau.de/wordpress/2011/12/zustandsautomaten-in-der-10-klasse.htm#comments</comments>
		<pubDate>Wed, 14 Dec 2011 09:53:54 +0000</pubDate>
		<dc:creator>Herr Rau</dc:creator>
				<category><![CDATA[Informatik]]></category>
		<category><![CDATA[Vorzeigbares]]></category>

		<guid isPermaLink="false">http://www.herr-rau.de/wordpress/?p=3538</guid>
		<description><![CDATA[Erst etwas Theorie, später gibt es etwas zu sehen. In der 10. Klasse entwirft und programmiert man einfache Zustandsautomaten. Die sehen auf dem Papier gerne mal so aus: Der Automat (hier ein Fahrstuhl) kann sich in verschiedenen Zuständen befinden. Er beginnt im Zustand Erdgeschoss (deshalb zeigt da ein Pfeil hin). Es gibt noch zwei weitere [...]]]></description>
			<content:encoded><![CDATA[<p>Erst etwas Theorie, später gibt es etwas zu sehen.</p>
<p>In der 10. Klasse entwirft und programmiert man einfache Zustandsautomaten. Die sehen auf dem Papier gerne mal so aus:</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/automatAufzug.jpg" alt="" title="automatAufzug" width="550" height="250" class="aligncenter size-full wp-image-3539" /></p>
<p>Der Automat (hier ein Fahrstuhl) kann sich in verschiedenen Zuständen befinden. Er beginnt im Zustand Erdgeschoss (deshalb zeigt da ein Pfeil hin). Es gibt noch zwei weitere Zustände, Keller und 1. Stock. Der Automat kann seinen Zustand ändern, das sind die Pfeile zwischen den Zuständen. Wenn der Automat im Zustand &#8220;Erdgeschoss&#8221; ist und die Aktion &#8220;Pfeil nach oben drücken&#8221; eintritt, dann springt der Automat in den Zustand &#8220;1. Stock&#8221;.</p>
<p>Es geht aber auch noch komplizierter:</p>
<p><a href="http://www.herr-rau.de/wordpress/archiv/automatMarsmaennchen.jpg"><img src="http://www.herr-rau.de/wordpress/archiv/automatMarsmaennchen-550x387.jpg" alt="" title="automatMarsmaennchen" width="550" height="387" class="aligncenter size-medium wp-image-3540" /></a></p>
<p>In diesem Automaten geht es um ein Marsmännchen, das im Zustand Mars (Nr. 4) beginnt. Je nach Aktion (j für Jupiter, p für Pluto, w für Weltall und so weiter) springt das Marsmännchen in einen neuen Zustand, wenn dieser Zustandsübergang laut Diagramm möglich ist.<br />
Allerdings gibt es noch zwei Feinheiten:<br />
1. Für manche Zustandsübergänge gibt es eine Bedingung, die erfüllt sein muss. Diese Bedingungen sind in rot angegeben. Das Marsmännchen hat nämlich eine gewisse Sprungkraft, am Anfang 10. Vom Mars zum Jupiter springen kann es nur, wenn (neben der auslösenden Aktion j) seine Kraft mindestens 1 beträgt, sonst wird nichts daraus.<br />
2. Und zuletzt gibt es manchmal, in dunkelgrün angegeben, noch weitere Aktionen, die neben dem Zustandsübergang ausgelöst werden. Im Fall vom Sprung von Mars zu Jupiter steht da etwa, dass sich die Kraft um 1 verringert, beim Sprung vom Weltall (Nr. 7) zum Mars (Nr. 4) sind es sogar 5 Punkte. Manche Reisen sind allerdings umsonst. Auftanken kann man nur auf dem Mond, wenn man den erreicht, wir die Kraft wieder auf 10 gesetzt. Wenn man irgendwo auf einem Planeten festsitzt und nicht genug Kraft hat um wegzukommen, ja, dann hat man Pech gehabt.</p>
<p>Einfacher ist das, wenn man es ausprobiert (Java-Applet, läuft also nicht überall):<br />
<iframe frameborder="0" scrolling=no width="500px" height="400px" src="http://www.herr-rau.de/wordpress/archiv/automat/index.html"></iframe><br />
Möglich sind die Eingaben: j, p, w (für Weltall), e, n (für Neumond), m und s &#8211; aber natürlich führen nicht alle immer zu einem Zustandsübergang.</p>
<p>Programmiert und gezeichnet haben den Marsmännchen-Automaten (abgesehen von der Ausgabe in einem Fenster, dazu später mehr) zwei Schülerinnen aus der 10. Klasse. Entstanden sind aber auch noch andere Automaten:</p>
<p><iframe width="420" height="315" src="http://www.youtube.com/embed/l-WHSqnzKGI" frameborder="0" allowfullscreen></iframe></p>
<p><iframe width="420" height="315" src="http://www.youtube.com/embed/ExWJaaJYRkU?rel=0" frameborder="0" allowfullscreen></iframe></p>
<p>Weitere Automaten:</p>
<ul>
<li><a href="http://youtu.be/-c6_v7gd-xA">Wasser</a></li>
<li><a href="http://www.youtube.com/watch?v=lBVhCLWOH-I">Hund</a></li>
<li><a href="http://www.youtube.com/watch?v=-4cYuK6RSpQ">Alltag</a></li>
<li><a href="http://www.youtube.com/watch?v=kI_TBI_T3WI">Poker</a></li>
<li><a href="http://www.youtube.com/watch?v=0mmG7Nrvqis">Boxer</a></li>
<li><a href="http://www.youtube.com/watch?v=l78Ot2EoEiI">Blume</a></li>
</ul>
<p>Programmiert haben die Schüler dabei nur den Automaten, und da vor allem die Zustandsübergangsmethode. Um die grafische Ausgabe habe ich mich gekümmert, und zwar so (siehe <a href="http://www.herr-rau.de/wordpress/2011/08/wie-ich-auszog-ein-spiel-zu-programmieren-2-das-mvc-entwurfsmuster.htm">Eintrag zu MVC</a>):</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/automat.png" alt="" title="automat" width="549" height="698" class="aligncenter size-full wp-image-3541" /><br />
<small>(Das ist kein Klassendiagramm, sondern die BlueJ-Oberfläche, gibt aber einen Eindruck der Verhältnisse wieder.)</small></p>
<ul>
<li>Das Marsmännchen (oder was auch immer) hat eine Methode <code>aktionEmpfangen(char)</code>. Je nach empfangener Aktion, abgekürzt durch einen einzelnen Buchstaben, ändert es seinen Zustand und teilt das daraufhin der Welt mit. Das Marsmännchen erbt nämlich vom Automaten auch die Sende-Fähigkeit.</li>
<li>Das Sekretariat (das auch ein Empfänger ist) empfängt die Nachricht über den neuen Zustand und wählt, dem Zustand entsprechend, eine neue Grafik aus, die dargestellt werden soll. Das ist die einzige Klasse, in der Schüler etwas schreiben  müssen: die Namen der Grafiken.</li>
<li>Die Hauptarbeit der Darstellung übernimmt das Fenster. Der Fensterboss ist nur dazu da, damit man ein- und dasselbe Programm sowohl als Applet (also in einer Webseite) wie auch als eigenes Programm ausführen kann. Das Fenster stellt Textfelder und Knöpfe zur Verfügung. Wenn ein Knopf gedrückt wird, die Information und eventuell der Inhalt des Textfelds an die Steuerung.</li>
<li>Die Steuerung wertet die Eingabe aus. Standardmäßig werden nur Eingaben angenommen, die 1 Zeichen lang sind; alles andere führt zu einer Rückmeldung, dass etwas nicht stimmt. Dieses eine Zeichen wird dann an den Automaten, also das Marsmännchen, weitergeleitet, das daraufhin eventuell seinen Zustand ändert &#8211; und immer so weiter. (Man könnte die Steuerung auch zu einem echten Übersetzer machen: dann müsste der Benutzer ganze Wörter eintippen, also etwa &#8220;Gehe zum Jupiter&#8221;, und die Steuerung würde das in ein &#8216;j&#8217; übersetzen und das an den Automaten schicken.</li>
</ul>
<p>Auf Interfaces (und Beobachtermuster) und Zustandsmodellierung mit eigenen Klassen habe ich verzichtet. Es reicht, wenn die Schüler in der 10. ein bisschen hineinschnuppern. Herunterladen kann man das BlueJ-Projekt <a href='http://www.herr-rau.de/wordpress/archiv/Automat_MVC.zip'>hier</a>, es ist aber sehr spärlich kommentiert, und im Fall des Fensters auch sehr schlampig. GUIs interessieren mich wenig.<br />
Wenn es nur um einfache Automaten ginge, könnte man den Schülern auch eine Benutzeroberfläche schreiben, wo sie nur ihre Bildernamen speichern und die Übergänge mit Mausklicks auswählen müssen, aber es geht ja auch darum, Programmierung zu üben.<br />
Zustandsautomaten kann man immer mal brauchen. Aus einem <a href="http://zurueckindieschule.wordpress.com/2011/12/12/mission-statement/">Kommentar beim Kollegen embee</a> habe den Hinweis auf die <a href="http://lameness-prevails.com/?p=62">Rolle von Zustandsautomaten bei Comptuerspielen</a>.</p>
<p>Wichtig war mir ansonsten auch, dass die Schüler ihr Produkt in einem kleinen Video vorstellen, auch wenn ich die nicht alle hier veröffentlichen darf.</p>
<hr />
<p><small>Quelle: Herr Rau aus dem <a href="http://www.herr-rau.de/wordpress">Lehrerzimmer</a> 2011. |
<a href="http://www.herr-rau.de/wordpress/2011/12/zustandsautomaten-in-der-10-klasse.htm">Permalink</a> |
<a href="http://www.herr-rau.de/wordpress/2011/12/zustandsautomaten-in-der-10-klasse.htm#comments">5 Kommentare</a>
<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.herr-rau.de/wordpress/2011/12/zustandsautomaten-in-der-10-klasse.htm/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Wo die kleinen Objekte herkommen</title>
		<link>http://www.herr-rau.de/wordpress/2011/10/wo-die-kleinen-objekte-herkommen.htm</link>
		<comments>http://www.herr-rau.de/wordpress/2011/10/wo-die-kleinen-objekte-herkommen.htm#comments</comments>
		<pubDate>Sun, 23 Oct 2011 04:14:23 +0000</pubDate>
		<dc:creator>Herr Rau</dc:creator>
				<category><![CDATA[Informatik]]></category>

		<guid isPermaLink="false">http://www.herr-rau.de/wordpress/?p=3459</guid>
		<description><![CDATA[Natur und Technik in der 10. Klasse. Eine Stunde habe ich neulich im weißen Labor-/Arztkittel begonnen. Das Thema war Informatik, Wo die kleinen Objekte herkommen. Ich habe das mit einer Analogie einzuführen versucht. Hier die Folien meiner Präsentation. Eine gängige Theorie der Herkunft wird gleich zu Anfang verworfen: Wie die Kinder entstehen, das wüssten die [...]]]></description>
			<content:encoded><![CDATA[<p>Natur und Technik in der 10. Klasse. Eine Stunde habe ich neulich im weißen Labor-/Arztkittel begonnen. Das Thema war Informatik, Wo die kleinen Objekte herkommen. Ich habe das mit einer Analogie einzuführen versucht. Hier die Folien meiner Präsentation.</p>
<p>Eine gängige Theorie der Herkunft wird gleich zu Anfang verworfen:</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/konstruktor2.jpg" border="1" alt="" title="konstruktor2" width="529" height="397" class="aligncenter size-full" /></p>
<p>Wie die Kinder entstehen, das wüssten die Schüler ja bereits:</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/konstruktor3.jpg" border="1" alt="" title="konstruktor3" width="529" height="397" class="aligncenter size-full" /></p>
<p>Wie sie auf die Welt kommen, hoffentlich auch:</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/konstruktor4.jpg" border="1" alt="" title="konstruktor4" width="529" height="397" class="aligncenter size-full" /></p>
<p>(Tatsächlich habe ich andere Bilder genommen. Je nachdem, was die Schüler der Klasse so vertragen.)</p>
<p>In der Informatik geht es aber nicht um kleine Kinder, sondern &#8211; beim objektorientierten Programmieren &#8211; um Objekte. Die kennen die Schüler schon. Sie kennen vor allem schon <em>Klassen</em>. Klassen sind die Vorlagen für später entstehende Objekte, so wie das DNA-Molekül (in seinen verschiedenen Formen) die Vorlage für spätere (verschiedene) Kinder ist. </p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/konstruktor5.jpg" border="1" alt="" title="konstruktor5" width="529" height="397" class="aligncenter size-full" /></p>
<p>Und demnach entspricht ein Objekt dann auch dem tatsächlich existierenden Kind:</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/konstruktor6.jpg" border="1" alt="" title="konstruktor6" width="529" height="397" class="aligncenter size-full" /></p>
<p>Und die Frage für Schüler ist nun: Was entspricht beim objektorientierten Programmieren dem Geburtsvorgang? Wie kommt man von der Vorlage zum Objekt?</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/konstruktor7.jpg" border="1" alt="" title="konstruktor7" width="529" height="397" class="aligncenter size-full" /></p>
<p>Die Antwort heißt: mit dem <strong>Konstruktor</strong>, und um dessen Einführung ging es in der Stunde. Irgendwann mündet das dann in Übungsphase und Hefteintrag, für Java:</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/konstruktor8.jpg" border="1" alt="" title="konstruktor8" width="529" height="397" class="aligncenter size-full" /></p>
<p>(Herunterladen der <a href='http://www.herr-rau.de/wordpress/archiv/konstruktor_lizenziert.odp'>Präsentation</a>, falls jemand das brauchen kann &#8211; andere Bilder kann man natürlich auch nehmen.)</p>
<p>Und das alles natürlich nur, weil diese weißen Laborkittel so kleidsam sind.</p>
<hr />
<p><small>Quelle: Herr Rau aus dem <a href="http://www.herr-rau.de/wordpress">Lehrerzimmer</a> 2011. |
<a href="http://www.herr-rau.de/wordpress/2011/10/wo-die-kleinen-objekte-herkommen.htm">Permalink</a> |
<a href="http://www.herr-rau.de/wordpress/2011/10/wo-die-kleinen-objekte-herkommen.htm#comments">4 Kommentare</a>
<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.herr-rau.de/wordpress/2011/10/wo-die-kleinen-objekte-herkommen.htm/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Der Informatiklehrertag letzte Woche</title>
		<link>http://www.herr-rau.de/wordpress/2011/10/der-informatiklehrertag-letzte-woche.htm</link>
		<comments>http://www.herr-rau.de/wordpress/2011/10/der-informatiklehrertag-letzte-woche.htm#comments</comments>
		<pubDate>Sat, 01 Oct 2011 17:37:40 +0000</pubDate>
		<dc:creator>Herr Rau</dc:creator>
				<category><![CDATA[Informatik]]></category>
		<category><![CDATA[Fortbildung]]></category>

		<guid isPermaLink="false">http://www.herr-rau.de/wordpress/?p=3433</guid>
		<description><![CDATA[Letzten Montag war also der ILTB (Informatiklehrertag Bayern) beziehungsweise der TdI (Tag der Informatik) 2011. Ersterer ist eine größere Veranstaltung und wird mehr oder weniger jährlich von jeweils einer anderen Uni veranstaltet. Letzterer ist eine kleinere Veranstaltung der Ludwig-Maximilians-Universität München und findet eigentlich immer Ende des Schuljahres statt &#8211; dieses Jahr fiel der allerdings aus, [...]]]></description>
			<content:encoded><![CDATA[<p>Letzten Montag war also der ILTB (Informatiklehrertag Bayern) beziehungsweise der TdI (Tag der Informatik) 2011. Ersterer ist eine größere Veranstaltung und wird mehr oder weniger jährlich von jeweils einer anderen Uni veranstaltet. Letzterer ist eine kleinere Veranstaltung der Ludwig-Maximilians-Universität München und findet eigentlich immer Ende des Schuljahres statt &#8211; dieses Jahr fiel der allerdings aus, weil <strike>der ILTB diesmal eben an der LMU war</strike> für den ILTB diesmal eben die LMU dran war &#8211; auch wenn das dann wegen Bauarbeiten an der Hochschule München stattfand.</p>
<p>Das ist das einzige Bild, das ich gemacht habe, noch ganz am Anfang, etliche Leute stehen noch bei der Anmeldung:</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/iltb2011_1.jpg" alt="" title="iltb2011_1" width="500" height="299" class="aligncenter size-full wp-image-3435" /></p>
<p>Was soll ich dazu sagen&#8230; an der Organisation war ich mit beteiligt, wenn auch nur als Juniorpartner, weil ich die Leute und Organisationen und Strukturen alle noch nicht kenne. Aber ich habe mitgekriegt, was es für eine Heidenarbeit ist, so etwas auf die Beine zu stellen. So lange ich das noch einigermaßen im Kopf habe, muss ich mir eine Checkliste aller zu erledigenden Punkte anlegen &#8211; falls ich je in die Situation kommen sollte, so etwas auszurichten. Eventmanagement wäre jedenfalls nichts für mich. Vieles hat geklappt, manches leider nicht, habe ich gehört, gerade mit der Technik. Das tut mir leid. Aber das wichtigste war für mich, Leute wiederzusehen. Eine Studentin, die vor eineinhalb Jahren bei mir im Praktikum war, eine Lehrerin, die vor dreieinhalb Jahren als Studentin <a href="http://www.herr-rau.de/wordpress/2008/03/dinner-for-some-einladung-zum-abendessen.htm">mit anderen Lehrern bei mir zum Essen</a> war, ein ehemaliger Kollege, der jetzt anderswo in der Schulleitung sitzt, zwei Leute aus meinem eigenen Informatik-Studiumsgang, und andere, die ich nur von Fortbildungen kenne. Sich so ein-, zweimal im Jahr zu sehen und über Schule und Unterricht zu plaudern, das ist schön. Auch wenn ich noch gar nicht viele Informatiklehrer kenne.</p>
<p>Es gab einen Hauptvortrag und danach Zeit für drei Workshops/Vorträge mit jeweils Kaffee- und Mittagspause dazwischen, verteilt auf sieben Schienen. Den Hauptvortrag hielt Michael Weigend von der Universität Münster: &#8220;Visualisierungen zur Veranschaulichung von Konzepten der Informatik&#8221;. Für mich behalten habe ich daraus:</p>
<ul>
<li>Informatikdidaktik arbeitet viel mit Metaphern.</li>
<li>Metaphern helfen, Konzepte zu verstehen.</li>
<li>Metaphern können auch Missverständnisse entstehen lassen oder erkennen helfen.</li>
<li>Beispiele für Metaphern: die Schublade für eine Variable; die Weiche für eine Entscheidung; der Toaster für eine Funktion (eine Sache geht rein in die <em>black box</em>, etwas anderes kommt nach einiger Zeit heraus); und sehr schön: die Spielkarte für eine Boolesche Variable.</li>
<li>Ein Bild zur Verdeutlichung dessen, dass Variablen Behälter für verschiedene Datentypen sind. Das Bild hat <strong>Michael Weigend</strong> in seiner Präsentation gezeigt, ich habe es hier mal für mich und meinen Unterricht übernommen und frech nachgebaut:<br />
<img src="http://www.herr-rau.de/wordpress/archiv/iltb2011_2.jpg" alt="" title="iltb2011_2" width="546" height="315" class="aligncenter size-full wp-image-3436" /><br />
(Zur Erklärung: Variablen kann man als Behälter sehen, so wie Schubladen. In den Schubladen ist etwas drin, das kann man herausnehmen und durch etwas anderes ersetzen. So ist das bei den Variablen auch. In vielen Programmiersprachen muss man festlegen, zu welchem Datentyp der Behälter gehört, also welche Art Sachen hineinpassen und welche nicht. In eine Variable vom Typ <em>int</em> passen in Java nur ganze Zahlen, in eine vom Typ <em>char</em> nur einzelne Zeichen. Also werde ich die Schüler Behälter sammeln lassen, die jeweils für bestimmte Inhalte gedacht sind.)</li>
</ul>
<p>Ich war in zwei Vorträgen/Workshops und habe einen geleitet/gegeben. Mit, hm, mittlerem Erfolg. Ich arbeite ja auch viel mit Metaphern und habe Videoclips dazu erstellt. Die habe ich gezeigt (und die von anderen auch, unter anderem zwei Schülervideos, die ich nicht veröffentlichen darf) und erklärt, mit welcher Software man so etwas erstellen kann und warum man das sollte. Gut im Verkaufen bin ich allerdings nicht. Ein Lehrer war da und hat einen eigenen kleinen Robot-Karol-Clip gezeigt, der sehr witzig war &#8211; aber viel Zeit kostet. Deshalb denke ich, die <em>Schüler</em> sollten Videos erstellen. Mein Systembetreuer hat mir versprochen, für dieses Schuljahr das kostenlose <strong>Camstudio</strong> auf den Schülerrechnern zu installieren, mit dem man auf einfache Weise den laufenden Bildschirm oder Teile davon abfilmen kann.</p>
<p>Damit und mit einem einfachen Headset-Mikrofon kann man zum Beispiel die Programmierprojekte vorstellen, die in der Q11 entstehen sollen:</p>
<p><iframe width="420" height="315" src="http://www.youtube.com/embed/CEXAOh1FQ7M" frameborder="0" allowfullscreen></iframe></p>
<p>&#8211; Getwittert wurde auf dem ILTB ebenso wenig wie auf der INFOS. Ich behaupte mal, Informatiklehrer machen <em>noch</em> weniger Social Media als andere Lehrer. Also nichts mit Web 2.0 oder so. Informatiklehrer haben auch keine lustigen Nerd-T-Shirts. Ich selber habe auch nur ein einziges Informatikshirt, mit einem öffnenen body-tag vorn und einem schließenden hinten. Aber das bräuchte ich inzwischen eine Nummer größer&#8230; Völlig anderes Publikum als auf der re:publica jedenfalls. Immerhin, so wurde mir versichert, Informatiker an Unis hätten solche T-Shirts. Aber auch die nutzten kein Web 2.0 &#8211; liegt das vielleicht daran, dass alles, was man nicht selbst geschrieben hat, verpönt ist? Aber das kann ein Vorurteil sein. Ich kenne ja gar keine Informatiker. </p>
<hr />
<p><small>Quelle: Herr Rau aus dem <a href="http://www.herr-rau.de/wordpress">Lehrerzimmer</a> 2011. |
<a href="http://www.herr-rau.de/wordpress/2011/10/der-informatiklehrertag-letzte-woche.htm">Permalink</a> |
<a href="http://www.herr-rau.de/wordpress/2011/10/der-informatiklehrertag-letzte-woche.htm#comments">4 Kommentare</a>
<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.herr-rau.de/wordpress/2011/10/der-informatiklehrertag-letzte-woche.htm/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Das Schuljahr beginnt, Projektsoftware, Datenschutzfragen</title>
		<link>http://www.herr-rau.de/wordpress/2011/09/das-schuljahr-beginnt-projektsoftware-datenschutzfragen.htm</link>
		<comments>http://www.herr-rau.de/wordpress/2011/09/das-schuljahr-beginnt-projektsoftware-datenschutzfragen.htm#comments</comments>
		<pubDate>Sun, 18 Sep 2011 10:22:33 +0000</pubDate>
		<dc:creator>Herr Rau</dc:creator>
				<category><![CDATA[Fundstücke]]></category>
		<category><![CDATA[Informatik]]></category>

		<guid isPermaLink="false">http://www.herr-rau.de/wordpress/?p=3412</guid>
		<description><![CDATA[Das Schuljahr beginnt, wenn auch langsam. Ich muss erst einmal den Informatik-Kongress letzte Woche verdauen, von dem ich mir mehr Anregungen geholt habe, als ich je umsetzen werden kann (und die ich erst einmal sortieren muss). Aber das ist okay, man braucht ja viele Möglichkeiten, Dinge im Unterricht umzusetzen, damit man auswählen kann, was gerade [...]]]></description>
			<content:encoded><![CDATA[<p>Das Schuljahr beginnt, wenn auch langsam. Ich muss erst einmal den Informatik-Kongress letzte Woche verdauen, von dem ich mir mehr Anregungen geholt habe, als ich je umsetzen werden kann (und die ich erst einmal sortieren muss). Aber das ist okay, man braucht ja viele Möglichkeiten, Dinge im Unterricht umzusetzen, damit man auswählen kann, was gerade passt.</p>
<p>Ein Höhepunkt war sicher der Vortrag von Stefanie Scherzinger über Methoden der Software-Entwicklung, vor allem Agile Softwareentwicklung (<a href="https://secure.wikimedia.org/wikipedia/de/wiki/Agile_Softwareentwicklung">Wikipedia</a>),  wie sie sie auch selber bei Google anwendet.</p>
<p>Für das Programmierprojekt in der Q11 (<a href="http://www.herr-rau.de/wordpress/2010/10/programmierprojekt-in-der-q11.htm">meine Beispiele</a>) braucht man tatsächlich irgendeine Art von Entwicklungsmethode. Bei uns war es einfach ein großes schwarzes Brett in Form eines GoogleDoc-Dokuments, auf das jeder Teilnehmer Lese- und Schreibzugriff hat.<br />
Aber die Formulierungen dort waren sehr allgemein: &#8220;Datenbank episch perfektionieren: episch angefangen&#8221; stand da oder &#8220;Bilder colorieren: episch erledigt&#8221;, mit dem Namen des aktuellen Bearbeiters.</p>
<p>Eine Möglichkeit der Verbesserung wäre, beim nächsten Mal das Projekt gleich <a href="https://code.google.com/intl/de/projecthosting/">bei Google Code zu hosten</a>. Der Vorteil: Man kann Aufgaben erstellen, kann sie Leuten zuweisen oder diese sich sie nehmen lassen, kann vor allem den Programmcode in verschiedenen Versionen zentral dort sammeln. Nachteil: Ist vielleicht etwas abschreckend für ein kleines Schulprojekt. Außerdem muss das Projekt <em>open source</em> sein &#8211; damit habe ich kein Problem, aber vielleicht die Schüler bzw. eigentlich sogar deren Erziehungsberechtigte.</p>
<p>Eine andere äußerst schöne Projektplanungssoftware ist <a href="http://trello.com">Trello</a>, hier <a href="http://lifehacker.com/5839942/trello-makes-project-collaboration-simple-and-kind-of-fun">bei Lifehacker kurz beschrieben</a>. Das ist nicht dazu gedacht, Softwareversionen zu verwalten, aber Projekte kann man damit intuitiv und einfach planen:</p>
<p><img src="http://www.herr-rau.de/wordpress/archiv/trello.jpg" alt="" title="trello" width="550" height="327" class="aligncenter size-full wp-image-3413" /></p>
<p>Man legt ein Projekt an (&#8220;board&#8221;), zu jedem Projekt können Teammitglieder senkrechte Listen hinzufügen, in meinem Beispiel: Ideen, Aufgaben, Aufgaben in Arbeit, Erledigtes. Jeder Liste kann man Karteikärtchen anfügen, die einen Titel haben, aber dazu noch Abstimmungen, Links, Dateianhänge und Checklisten enthalten können. Den Aufgaben können Teammitglieder zugeordnet sein, man kann Karteikärtchen auf andere Listen verschieben. Alles sehr einfach und übersichtlich. (Nur eine Terminverwaltung ist nicht dabei. Ist vielleicht okay, man kann ja Listen anlegen mit dem Titel &#8220;Zu erledigen bis + Datum&#8221;.)<br />
Nachteil: eine Anmeldung ist erforderlich. Das hätte ich gerne auf einem eigenen Server laufen.</p>
<hr style="width:50%;"/>
<p>Ansonsten noch gefunden (via Felix Schaumburg): <a href="http://www.sz-online.de/nachrichten/artikel.asp?id=2853149">&#8220;Lehrer spähen Schüler im Internet aus&#8221;</a>, und zwar indem die Lehrer einer Schule sich unter Pseudonym bei SchülerVZ, Facebook und einem regionalen Chat anmelden. Skandal.</p>
<p>Also, reden muss man schon mal darüber, ob das erlaubt ist. Aber eine Nummer kleiner geht auch. Wo habe ich neulich gelesen, dass ein Gesetzesentwurf vorbereitet wird, der es Firmen verbietet, bei Vorstellungsgesprächen dem Kandidaten in einem sozialen Netzwerk (gemeint: Facebook, aber natürlich überhaupt nicht abgrenzbar, dieser Begriff) nachzuforschen? Kann fast nur Deutschland gewesen sein.</p>
<p>Ähnlich die Argumentation der <em>Sächsischen Zeitung</em>:</p>
<blockquote><p>Zudem dringen die Lehrer in die Online-Privatsphäre der Jugendlichen ein: Viele Schüler laden persönliche Fotos hoch, lästern über Lehrer und Klassenkameraden, verwenden sogar Schimpfwörter</p></blockquote>
<p>Der Knackpunkt ist der Begriff &#8220;Online-Privatspäre&#8221;. Ich habe <a href="http://www.herr-rau.de/wordpress/2010/02/noch-einmal-oeffentlich-und-privat.htm">schon mal</a> darüber geschrieben: Schüler teilen die Welt in &#8220;schulisch&#8221; und &#8220;privat&#8221; &#8211; alles, was nicht schulisch ist, ist privat. Außerschulische Menschen teilen die Welt in &#8220;öffentlich&#8221; und &#8220;privat&#8221;. Es müsste klar sein, dass Internet in der Regel heißt: öffentlich. Wer Informationen privat halten möchte, kann das auch bei Facebook tun &#8211; muss sich aber selber darum kümmern.</p>
<p>Andererseits ist allen klar, dass eine Firma keinen Privatdetektiv damit beauftragen darf, bei einer Kandidatin herauszufinden, ob sie eventuell schwanger ist. Und mal schnell bei Facebook geschaut, ob da eine Schwangerschaft öffentlich gemacht wurde? Hm. Ich sehe das Problem. Deshalb stand in dem Gesetzesvorschlag &#8211; wo war das gleich wieder, zefix &#8211; ja auch, dass nur auf Erlaubnis des Angestellten auf bestimmten Webseiten nach ihm gesucht werden dürfte. Viele Leute wollen ja explizit, dass ihr Web-Profil gefunden wird.</p>
<p>Unrealistisch ist so ein Gesetz allemal.</p>
<p>Zurück zu den Lehrern: Ich würde mich wehren gegen eine Dienstanweisung, meinen Schülern bei Facebook hinterherzuschnüffeln. (<a href="http://wissen.dradio.de/frankreich-facebook-verweis-bei-cybermobbing.33.de.html?dram:article_id=9979">Geplant: Frankreich.</a>) In meiner Eigenverantwortung als Pädagoge: will ich bei Facebook machen dürfen, was a) nicht allzu verboten ist, b) nicht gegen meine pädagogischen Aufgaben verstößt und c) mir sinnvoll erscheint. Theoretisch muss ja jeder bei Facebook mit seinem echten Namen arbeiten. Aber schon sehr theoretisch.</p>
<hr />
<p><small>Quelle: Herr Rau aus dem <a href="http://www.herr-rau.de/wordpress">Lehrerzimmer</a> 2011. |
<a href="http://www.herr-rau.de/wordpress/2011/09/das-schuljahr-beginnt-projektsoftware-datenschutzfragen.htm">Permalink</a> |
<a href="http://www.herr-rau.de/wordpress/2011/09/das-schuljahr-beginnt-projektsoftware-datenschutzfragen.htm#comments">8 Kommentare</a>
<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.herr-rau.de/wordpress/2011/09/das-schuljahr-beginnt-projektsoftware-datenschutzfragen.htm/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>ISO 8859-1, UTF-8 und Wordpress</title>
		<link>http://www.herr-rau.de/wordpress/2011/09/iso-8859-1-utf-8-und-wordpress.htm</link>
		<comments>http://www.herr-rau.de/wordpress/2011/09/iso-8859-1-utf-8-und-wordpress.htm#comments</comments>
		<pubDate>Fri, 02 Sep 2011 04:34:01 +0000</pubDate>
		<dc:creator>Herr Rau</dc:creator>
				<category><![CDATA[Informatik]]></category>

		<guid isPermaLink="false">http://www.herr-rau.de/wordpress/?p=3377</guid>
		<description><![CDATA[(Theoretischen Teil überspringen und gleich zur Lösung der Aufgabe springen, die im Titel angekündigt wird. Aber das ist nur für technische Blogbastler interessant.) Inzwischen ist aus einem kurzen Eintrag ein langer geworden, und er erklärt nicht mehr das, was er am Anfang sollte. Ich sollte ihn wirklich kürzen und neu strukturieren. Der Unterschied zwischen Profi [...]]]></description>
			<content:encoded><![CDATA[<p>(<a href="#sql">Theoretischen Teil überspringen und gleich zur Lösung der Aufgabe springen, die im Titel angekündigt wird. Aber das ist nur für technische Blogbastler interessant.</a>)</p>
<p><small>Inzwischen ist aus einem kurzen Eintrag ein langer geworden, und er erklärt nicht mehr das, was er am Anfang sollte. Ich sollte ihn wirklich kürzen und neu strukturieren. Der Unterschied zwischen Profi und Amateur: ich werd&#8217;s einfach nicht tun. Trotzdem, für Informatik &#8211; Repräsentation von Information &#8211; wäre das schon praktisch.</small></p>
<h4>1. Einführung</h4>
<p>Wenn man am Computer etwas schreibt &#8211; im Textverarbeitungsprogramm oder im Blog &#8211; ist ein &#8220;a&#8221; nie nur ein &#8220;a&#8221;. Man drückt zwar die entsprechende Taste auf der Tastatur und ein &#8220;a&#8221; erscheint. Wenn man das dann speichert, wird ein &#8220;a&#8221; gespeichert. Sollte man meinen, aber das ist nicht so. Das hat jeder schon mal gemerkt, dem es die Umlaute beim Speichern verhagelt hat, oder der eine Mail kriegt, in der solche Sätze auftauchen:</p>
<blockquote><p>ich w�rde es begr��en, wenn du mir nicht so etwas schreiben w�rdest</p></blockquote>
<p>oder in der einem</p>
<blockquote><p>Viele GrÃ¼ÃŸe</p></blockquote>
<p>gewÃ¼nscht werden. (Sieht man auch immer wieder mal bei Track- oder Pingbacks in Blogs.)</p>
<p>Wer ist da schuld, was ist da passiert, wie kann man das vermeiden? </p>
<p>Einen ausgezeichneten Überblick zu diesem Thema gibt <a href="http://www.joelonsoftware.com/articles/Unicode.html">&#8220;The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)&#8221;</a>. Ich habe mich für diesen Artikel sehr bei ihm bedient &#8211; dort steht das alles noch viel ausführlicher und interessanter.</p>
<p>Hier eine Kurzfassung und ein paar wichtige Begriffe.</p>
<h4>2. ASCII</h4>
<p>Zeichen werden wie alles im Computer durch Zahlen repräsentiert. Ein früher Standard dazu hieß ASCII (<a href="https://secure.wikimedia.org/wikipedia/de/wiki/American_Standard_Code_for_Information_Interchange">Wikipedia</a>). Nach diesem Kodierungssystem werden für jedes Zeichen 7 bit reserviert, was einen Vorrat von 128 möglichen Zeichen ermöglicht. Die Zeichen mit den Nummern 0 bis 31 sind Sonderfälle, sogenannte nicht druckbare Zeichen, aber von Nummer 32 bis 126 sehen die Zeichen vertraut aus:</p>
<p><code>&nbsp;!"#$%&#038;'()*+,-./0123456789:;<=>?</code>&nbsp;&nbsp;&nbsp;<small>(Nr. 32-63)</small><br />
<code>@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_</code>&nbsp;&nbsp;&nbsp;<small>(Nr. 64-95)</small><br />
<code>`abcdefghijklmnopqrstuvwxyz{|}~&nbsp;</code>&nbsp;&nbsp;&nbsp;<small>(Nr. 96-126)</small></p>
<p>Das Zeichen mit der Nummer 32 ist das Leerzeichen, das große A hat die Nummer 65, die Tilde ist die Nummer 126. (Die Nummer 127, das letzte der 128 ASCII-Zeichen, ist wieder ein Sonderfall.)</p>
<p>Gespeichert wird ein Wort, zum Beispiel &#8220;Abel&#8221;, als Folge der ASCII-Zeichen-Nummern: 65-98-101-108.</p>
<p>Allerdings fehlen bei diesem System europäische Sonderzeichen &#8211; Buchstaben mit Umlauten und Akzenten und noch exotischeres Zeug. Zur Lösung gab es zwei Möglichkeiten: Entweder man schafft einen eigenen europäischen ASCII-Dialekt, bei dem die Nummer 93 eben nicht für &#8220;]&#8221; steht, sondern für &#8220;Ü&#8221;. Dann können auch Deutsche wunderbar schreiben, müssen dafür aber auf eckige Klammern verzichten. Außerdem müssen sich Sender und Empfänger von Texten (und jedes Textverarbeitungsprogramm für sich) darüber verständigen, ob ein Dokument oder auch nur ein Wort in amerikanischem oder europäischem ASCII zu lesen sein soll. Sonst liest der Amerikaner versehentlich &#8220;]bel&#8221; statt &#8220;Übel&#8221;, wenn er eine europäische Datei oder Mail  öffnet. Gespeichert wird das Wort ja als Folge der ASCII-Nummern der einzelnen Zeichen, also &#8220;93-98-101-108&#8243;, und ob das jetzt &#8220;]bel&#8221; oder &#8220;Übel&#8221; heißen soll, das kann der Computer nicht so einfach wissen, wenn man ihm es nicht sagt. Und ein Franzose oder Däne braucht wieder einen eigenen ASCII-Dialekt.</p>
<h4>3. ISO 8859-1</h4>
<p>Die andere Lösung war die, für jedes Zeichen 8 bit zu reservieren statt 7. Damit hat man immerhin einen Vorrat von 256 Zeichen zur Verfügung, muss also nicht zugunsten eines &#8220;Ü&#8221; auf ein &#8220;]&#8221; verzichten und kann beides benutzen. Die ersten 128 Zeichen blieben dabei parallel zu ASCII. Das ist praktisch, weil die in 7-bit-ASCII gespeicherten Dateien dann genauso gut von einem 8-bit-System gelesen werden können, ohne dass man irgendetwas umstellen muss. </p>
<p>Allerdings gibt es auch wieder verschiedene 8-bit-Varianten. MS-DOS hatte sein eigenes System, Windows wieder ein anderes. (Deshalb sehen die Umlaute in unter  MS-DOS erzeugten Dateien falsch aus, wenn man die Dateien als übliche Windowsdateien betrachtet.)</p>
<p>Verbreitet ist heute ISO 8859-1 (&#8220;Latin 1&#8243;, <a href="https://secure.wikimedia.org/wikipedia/de/wiki/ISO_8859-1">Wikipedia</a>). Da sind weiterhin für jedes Zeichen 8 bit reserviert; es gibt also 256 Zeichen, die ersten 128 entsprechen dabei ASCII &#8211; das ist praktisch. Man wird also weiterhin &#8220;65-98-101-108&#8243; als &#8220;Abel&#8221; lesen. Zu den anderen Zeichen gehören europäische Umlaute, Zeichen mit Akzent, skandinavischen Zeichen, und andere. Aber auch nicht alle: das Euro-Zeichen gehört nicht dazu. Aber auch da gibt es Aushilfen (etwa ISO 8859-15), so dass ISO 8859-1 ausreicht für (laut Wikipedia):</p>
<blockquote><p>Afrikaans, Albanisch, Baskisch, Dänisch, Deutsch, Englisch, Färöisch, Finnisch, Französisch, Irisches Gälisch, Isländisch, Italienisch, Katalanisch, Niederländisch, Norwegisch, Portugiesisch, Rätoromanisch, Schottisches Gälisch, Schwedisch, Spanisch, Swahili und Wallonisch.</p></blockquote>
<p>Kyrillisch geht mit ISO 8859-5, Mitteleuropäisch (darunter Ungarisch, Tschechisch, Polnisch) mit ISO 8859-2.</p>
<p>Viele polnische Seiten sind also, vermuten wir erst einmal, in ISO 8859-2 kodiert. Da ist das Zeichen Nummer 163 das hier: &#8220;&Lstrok;&#8221;. (Wird die gespeicherte Seite als ISO 8859-1 interpretiert, würde an derselben Stelle das Zeichen mit der ISO-Nummer 163 aber so dargestellt werden: &#8220;&pound;&#8221;.)<br />
Man kann das schnell mal ausprobieren: in jedem Browser kann man von Hand die Kodierung einstellen, in Firefox unter &#8220;Ansicht/Zeichenkodierung&#8221;. Da kann man dieselbe Seite mal so betrachten, als sie in ISO 8859-2 geschrieben, mal als sei sie ISO 8859-1. (Beispiel: <a href="http://www.bobibobi.13tka.com/">polnische Seite in ISO 8859-2 kodiert</a>.)</p>
<h4>Exkurs:</h4>
<p>Aber woher weiß der Browser denn am Anfang, wie er die Seite darstellen soll. Ob der Seitenersteller ein &#8220;&Lstrok;&#8221; oder ein &#8220;&pound;&#8221; darstellen will? Die Kurzfassung: im schlimmsten Fall rät er, aber normalerweise steht im Kopf einer sauber geschriebenen HTML-Seite, welche Kodierung der Browser zur Darstellung nehmen soll, etwa so:</p>
<p><code>&lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&gt;</code></p>
<p>(Bis zu dieser Stelle weiß der Browser aber noch nicht, wie die Seite kodiert ist, muss also stillschweigend davon ausgehen, dass er wenigsten diese Stelle schon mal richtig dekodiert hat. Interessante Frage, das.)</p>
<h5>Quizfrage</h5>
<p>Wie habe ich es denn geschafft, sowohl das Zeichen &#8220;&Lstrok;&#8221; als auch ein &#8220;&pound;&#8221; auf dieselbe Seite zu kriegen? Beide Zeichen sind doch die Nummer 163? Das geht mit reinem ISO 8859-1 tatsächlich nicht, und mit reinem ISO 8859-2 ebensowenig. Eine Lösung bietet HTML: da gibt es die Möglichkeit, Zeichen direkt auszuwählen:</p>
<ul>
<li>&amp;Lstrok; wird in HTML immer so dargestellt: &Lstrok;</li>
<li>&amp;pound; wird in HTML immer so dargestellt: &pound;</li>
<li>&amp;Auml; wird in HTML immer so dargestellt: &Auml;</li>
<li>&amp;ouml; wird in HTML immer so dargestellt: &ouml;</li>
</ul>
<p>Das funktioniert immer und unabhängig von der Kodierung, jedenfalls solange das &#038; und die folgenden Zeichen richtig erkannt werden, die deshalb alle aus dem gemeinsamen Zeichenvorrat kommen. Für viele Sonderzeichen gibt es in HTML solche festen Zeichen, <a href="http://de.selfhtml.org/html/referenz/zeichen.htm">hier eine Liste davon</a>.</p>
<p>Das ist aber nicht die einzige Lösung für dieses Problem.</p>
<h4>4. Unicode</h4>
<p>Meine eigene Seite ist jetzt aber gar nicht mal in ISO 8859-1 kodiert, und die meisten polnischen Seiten, die ich gefunden habe, sind ebensowenig in ISO 8859-2 kodiert, sondern in wieder etwas anderem: UTF-8.</p>
<p>Um das zu erklären, muss ich etwas zu Unicode sagen. Unicode geht die Sache mit den Zeichen von einer anderen Seite aus an: jedes Zeichen auf der Welt kriegt eine eindeutige Unicode-Nummer, einen sogenannten <em>code point</em>. Das sind zur Zeit laut Wikipedia über 109.000 Zeichen aus 93 Alphabeten, einschließlich Linear B, Phönizisch und I-Ging-Hexagramme. Die Zeichen des Voynich-Manuskripts und <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Tengwar">Tengwar</a> (Tolkiens Elbenschrift) sind aber noch dabei; für letzteres läuft gerade ein Aufnahmeantrag.<br />
<a href="http://www.babelstone.co.uk/Unicode/unicode.html">Hier kann man sie sich alle anschauen</a>. Platz ist im Unicode-System für mehr als eine Million Zeichen.</p>
<p>Das ist natürlich eine sprachwissenschaftlich und politisch nicht uninteressante Sache: was ist ein Buchstabe, was gehört zu einem Alphabet? Unicode wird deshalb auch kritisiert (Wikipedia <a href="https://secure.wikimedia.org/wikipedia/de/wiki/Unicode#Kritik">deutsch</a>, mehr bei <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Unicode#Issues">englisch</a>). Trotzdem ist das mit dem Unicode eine praktische Sache: jeder Buchstabe kriegt eine platonische Entsprechung als <em>code point</em>.</p>
<p>Der Buchstabe A des lateinischen Alphabets hat zum Beispiel den code point <code>U+0041</code>. Die Zahl ist dabei im Hexadezimalsystem zu lesen, 0041 entspricht im Dezimalsystem der Zahl 65. Wie schon damals im ASCII-Code&#8230; denn ja, die <em>code points</em> der lateinischen Buchstaben ohne diakritische Zeichen entsprechen den alten ASCII-Nummern. </p>
<p>Das Zeichen U+03B2 sieht bei mir im Browser so aus: &#x03B2;, das Zeichen U+00DF so: &#x00DF;. In manchen Schriftarten mögen die Zeichen sehr ähnlich sein, aber die Codierung macht klar: das eine ist ein beta, das andere ein sz/scharfes s. Wenn für das Unicode-Zeichen in meinem Browser kein Zeichensatz vorgesehen ist, sieht man stattdessen so etwas Komisches wie hier bei U+10900, dem ersten Buchstaben des phönizischen Alphabets: &#x10900. Zur Darstellung müsste ich mir dann wohl mal einen passenden Zeichensatz herunterladen.</p>
<p>(Fußnote: Zeichensätze auch für exotischere Unicode-Codepoints findet man leicht. Code2000 bzw. desssen Nachfolger &#8211; <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Code2000">Wikipedia dazu </a> &#8211; werden wohl nicht mehr weiter aktualisiert, versuchen aber, möglichst viele Zeichen darzustellen.)</p>
<h5>UTF-8</h5>
<p>Unicode ist allerdings erst mal nur ein Verzeichnis aller Zeichen und eine eindeutige Zuweisung eines <em>code points</em>. Wie man das dann speichert, ist wieder eine andere Frage, unsere alte Frage von oben, nur dass ich halt nicht &#8220;A&#8221; einer Zahl zuordnen muss (z.B. A=>65), sondern &#8220;U+0041&#8243; (z.B. U+0041=>65). </p>
<p>Da gibt es UTF-32, bei dem für jedes Zeichen 32 bit (4 Byte) reserviert werden. Damit kann man für jedes Zeichen aus einem Pool von 2<sup>32</sup> Buchstaben auswählen, also 4 294 967 296. Das reicht für alle Unicode-Zeichen, aber 32 bit pro Zeichen sind eine ganze Menge Platzverschwendung. Viel verbreiteter ist dagegen UTF-8: da sind die häufigsten Zeichen mit 8 bit kodiert &#8211; wir ahnen es schon, das sind unsere alten Freunde aus dem 7-bit-ASCII-Zeichensatz, nämlich die Unicode-Zeichen 0-127. Die weniger häufigen Zeichen sind dann im 16-bit-Bereich kodiert, darunter die Umlaute. Und die selteneren Zeichen sind bei UTF-8 mit bis zu vier Byte kodiert. Das heißt, dass ein Dokument aus hundert seltenen Zeichen viermal so viel Speicherplatz benötigen kann wie eines aus häufigen Zeichen. Selten jedenfalls aus amerikanischer Sicht.</p>
<p>(Fußnote: Hier <a href="http://www.fileformat.info/info/unicode/char/10900/index.htm">sieht man die verschiedenen Kodierungsmöglichkeiten</a> etwa von U+10900.)<a name="sql"></a></p>
<h4>5. MySQL-Datenbank von ISO auf UTF-8 umstellen, und wie ich überhaupt auf diesen Kram komme</h4>
<p>Das Blogsystem Wordpress speichert die Beiträge nicht als Datei auf einer Festplatte ab, sondern in einer <strong>Datenbank</strong>. Aber auch dazu muss man wissen, welche Kodierung zum Speichern verwendet wird &#8211; damit man die gleiche Kodierung zum Lesen verwenden kann. Wenn ich ein Dokument in ISO 8859-1 in der Datenbank speichere und danach beim Herauslesen als UTF-8 interpretiere, kriege ich Schwierigkeiten bei den Umlauten und Sonderzeichen, andersrum natürlich ebenso.</p>
<p><strong>Standardmäßig</strong> war <strong>früher</strong> bei Wordpress-Installationen <strong>ISO 8859-1</strong> als Kodierung für die Datenbank eingestellt. Das heißt, wenn ich ein &#8220;A&#8221; getippt habe, wurde das letztendlich als 65 gespeichert (hexadezimal: 41), wenn ich ein &#8220;ö&#8221; getippt habe, dann wurde das letztendlich als 246 gespeichert (hexadezimal: F6). Wenn ich den in der Datenbank gespeicherten Eintrag dann wieder lese, wird die 65 als &#8220;A&#8221; interpretiert (in ISO, aber auch in UTF-8 und in ASCII), die 246 wird als &#8220;ö&#8221; interpretiert &#8211; aber eben nur in ISO, nicht in UTF-8, wo ein &#8220;ö&#8221; durch 50070 repräsentiert wird (hexadezimal: c396) und 246 überhaupt nicht definiert ist. Dann werden stattdessen kleine Rauten mit Fragezeichen darin angezeigt.</p>
<p>(MySQL-Experten mögen mir die grobe Vereinfachung verzeihen.)</p>
<p><strong>Inzwischen</strong> ist die Standard-Kodierung bei Wordpress-Installationen <strong>UTF-8</strong>. Und das hat bei meinem ISO-Wordpress <strong>zu Problemen geführt</strong>. Ich weiß auch nicht, woran das liegt &#8211; aber immer wieder mal ist ein Blogbeitrag beim Speichern falsch kodiert worden. Alle Umlaute hat&#8217;s mir verhagelt. Das war sehr lästig. <a href="http://bueltge.de/wp-content/download/wk/utf-8_kodierungen.pdf">Auf dieser Tabelle</a> sieht man links das geschriebene Zeichen (ISO), rechts das, was gespeichert wurde (nämlich fälschlicherweise als UTF). Ich tippte ein &#8220;ü&#8221;, das nach ISO-Kodierung letztendlich als (hexadezimal) fc gespeichert werden müsste, tatsächlich wurde es aber nach UTF-Kodierung letzendlich als (hexadezimal) c3bc gespeichert &#8211; und aus diesen zwei Byte werden, wenn man das dann als ISO liest, eben Ã und ¼.</p>
<p>Also wollte ich meine Datenbank von ISO auf UTF-8 umstellen. Das ist aber gar nicht so einfach. Es gibt eine Reihe von Plugins dazu. Ich habe einige davon ausprobiert; <em> sie funktionieren alle nicht.</em> Das steht auch so bei Wordpress selber, wo diese Seite eine Anleitung dazu gibt, wie man die Kodierung der Datenbank umstellt:</p>
<p><a href="https://codex.wordpress.org/Converting_Database_Character_Sets">https://codex.wordpress.org/Converting_Database_Character_Sets</a></p>
<p>Und die Seite ist gespickt mit: &#8220;Tu&#8217;s nicht&#8221; und &#8220;Es ist schwierig&#8221;, und das ist tatsächlich auch knifflig. Sehr umständlich. Manche Spalten mancher Tabellen müssen in ein exotischeres Format kopiert werden, und von diesem wieder zurück ins andere Format kopiert werden. Aber nicht alle, und nicht alle gleich. Ich würde die Finger davon lassen.</p>
<p>Es geht nämlich auch einfacher, jedenfalls für schlichte Wordpressbenutzer wie mich.</p>
<p><strong>Deshalb hier meine schlichte Lösung für das Konvertieren einer Datenbank von ISO 8859-1 nach UTF-8:</strong></p>
<ol>
<li>Eine zweite, leere Datenbank anlegen. In die kommt später die UTF-8-Version, die Original-DB lassen wir unangetastet.</li>
<li>Die Originaldatenbank als SQL-Dump herunterladen.</li>
<li>Der SQL-Dump ist eine &#8211; möglicherweise lange &#8211; Textdatei im ISO-Format. Das war ja unser Problem. Diese ISO-Datei mit einem geeigneten Textverarbeitungsprogramm öffnen und als Unicode-Datei speichern.<br />
&#8211; Das geht bei Windows einfach mit <strong>WordPad</strong>: &#8220;Speichern unter&#8221;, Format &#8220;Unicode-Textdokument&#8221;. Das wird dann übrigens wohl eine UTF-16-Datei, mit zwei Byte pro Zeichen. Vielleicht geht das auch mit Word oder Writer oder Notepad++. Eine Schwierigkeit ist allerdings, dass man nicht unbedingt sieht, was da wirklich im Text steht, da ein ü sinnvollerweise immer als ü gezeigt wird, egal ob es tatsächlich so aussieht: Ã¼ (UTF) oder so: ü (ISO). Wobei &#8220;tatsächlich&#8221; natürlich das falsche Wort ist.</li>
<li>In der neu entstandenen Datei sollten jetzt alle Umlaute so komisch aussehen, nämlich durch zwei andere Zeichen repräsentiert &#8211; wenn ich die Datei nicht als Unicode-Datei betrachte.</li>
<li>Diesen neuen SQL-Dump jetzt in die frische Datenbank hochladen. Zuvor mit Suchen/Ersetzen schauen, ob beim Anlegen der Tabellen in den SQL-Befehlen als Zeichensatz oder Kollation ISO/Latin 1 angegeben ist; das muss dann natürlich raus. (Hier gab es bei mir Schwierigkeiten. Erstens, weil die Datei recht groß ist. Zweitens, einfach so. Aber der Download mit phpMyAdmin und der Upload mit <a href="http://www.heidisql.com/">HeidiSQL</a> danach hat geklappt.)</li>
<li>Fertig. Die config.php mit den Zugangsdaten zur zweiten Datenbank versehen und schauen, ob das Blog mit der neuen Datenbank funktioniert. Dabei muss man Wordpress in den Einstellungen sagen, dass ab jetzt UTF-8 gilt und nicht mehr ISO. Dann &#8211; aber erst dann &#8211; kann man die ursprüngliche Datenbank löschen.</li>
</ol>
<p>Das darf man alles bestimmt nicht. Und es führt zu grässlichen Datenbanken, Greueln im Auge des Herrn. Furchtbaren Hybriden oder so etwas. Ausprobieren auf eigene Gefahr, und ein paar SQL-Kenntnisse sind sicher hilfreich. Wer viel SQL kann, der wird sicher laut lachen und sagen, dass das alles doch viel einfacher geht.<br />
Aber was soll ich sagen: bei mir funktioniert&#8217;s.</p>
<p><strong><em>Anhang, nachträglich:</em></strong><br />
Mit einem Hex(adezimal)-Editor kann man sich anschauen, wie auf der Festplatte gespeicherte Dateien wirklich aussehen. (Na ja, wirklicher jedenfalls.) Hier zwei Textdateien in einem Hex-Editor dargestellt, die nur aus dem Text &#8220;Das ist ein Übel.&#8221; bestehen. Entschuldigung, ich wollte ein großes Ü drin haben.<br />
<img src="http://www.herr-rau.de/wordpress/archiv/iso_uni_hex.png" alt="" title="iso_uni_hex" width="507" height="494" class="aligncenter size-full wp-image-3399" /><br />
Die obere Datei ist in Windows-1225 gespeichert, das ISO-8859-1 sehr ähnlich ist. Das Zeichen &#8220;D&#8221; ist durch die Zahl 44 kodiert, das Zeichen &#8220;a&#8221; durch &#8220;61&#8243; (jeweils im Hexadezimalsystem). Pro Zeichen ein Byte. Der Editor ist so nett, rechts daneben gleich die gängige Entsprechung der Byte-Zahl anzuzeigen, so dass man nicht nur die tatsächlich gespeicherten Bytes sieht, sondern auch einen Hinweis darauf, wofür sie vermutlich stehen.<br />
Die untere Datei ist in Unicode-16 gespeichert. Da sind für jedes Zeichen 2 Byte (16 bit) reserviert. Das Zeichen &#8220;D&#8221; bzw. der Unicode-Codepoint U+0044 ist durch die zwei Zahlen &#8220;44&#8243; und &#8220;00&#8243; repräsentiert. Warum zwei Bytes/Zahlen? Weil das bei UTF-16 immer so ist. Aber welche Zahl kommt zuerst, die 44 oder die 00? Im Prinzip geht beides, und es gibt auch beide Varianten &#8211; die eine heißt <em>big-endian</em> und die andere <em>little-endian</em>. Um sicher zu gehen, dass man weiß, welche Version benutzt wird, steht gerne mal am Anfang einer UTF-16-Datei &#8220;FFFE&#8221; beziehunsgweise eben &#8220;FEFF&#8221;. Und ja, <em>big-endian</em> und <em>little-endian</em> <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Endianness#Etymology">stammen aus</a> Jonathan Swifts <em>Gulliver&#8217;s Travels</em>.</p>
<p>(In UTF-8 wäre das &#8220;D&#8221; nur durch die Ein-Byte-Zahl 44 kodiert, das &#8220;Ü&#8221; dagegen durch die zwei Bytes c3 und 9d. Und die obere Datei braucht nur halb so viel Speicherplatz wie die untere.)</p>
<hr />
<p><small>Quelle: Herr Rau aus dem <a href="http://www.herr-rau.de/wordpress">Lehrerzimmer</a> 2011. |
<a href="http://www.herr-rau.de/wordpress/2011/09/iso-8859-1-utf-8-und-wordpress.htm">Permalink</a> |
<a href="http://www.herr-rau.de/wordpress/2011/09/iso-8859-1-utf-8-und-wordpress.htm#comments">6 Kommentare</a>
<br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.herr-rau.de/wordpress/2011/09/iso-8859-1-utf-8-und-wordpress.htm/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

