Monday, January 23, 2006

Grundschulgutachten, die 2.

Ich persönlich halte das verbindliche Grundschulgutachten in NRW für eine unglaublich schlechte Idee wie ich hier ausführlich dargestellt habe. In Zukunft wird der Lehrer im Zweifelsfall ausdrücklich gegen den Willen der Eltern bestimmen welche Schulform das Kind maximal besuchen darf. Bisher wurden nur Empfehlungen ausgesprochen. Die Entscheidung des Lehrers zählt mehr als der gemeinsame Wille des Kindes und der Eltern. Interessant in dem Zusammenhang ist folgendes Zitat der FDP-Landtagsfraktion:

Wir wollen, [...] daß Eltern die Möglichkeit erhalten, die geeignete Schule für ihr Kind frei wählen zu können. Eltern treffen die beste Entscheidung für ihr Kind.
Dies steht so Wort für Wort in dem "Argumentationspapier - Aufhebung Schulbezirksgrenzen" der Landtagsfraktion.

Bei dem einem Thema  treffen die Eltern die beste Entscheidung für ihr Kind. Bei dem anderem Thema auf einmal nicht? Wie kann man sich nur klarer selbst widersprechen?

Wednesday, January 18, 2006

Attributüberdeckung in Java

Mal lernt einiges über eine Programmiersprache, wenn man diese als Tutor anderen Studenten beibringen will.
Folgender Code in Java funktioniert und gibt die Zeichenfolge "4454″ auf der Konsole aus.

class A {
public int attribut;

public A() {
attribut = 5;
}

public void test() {
System.out.print(attribut);
}
}

class B extends A {
// überdeckt attribut von Klasse A
public int attribut;

public B() {
attribut = 4;
}

// überschreibt Methode
public void test() {
System.out.print(attribut);
}
}

public class Test {
public static void main( String[] args ) {
B b = new B();
System.out.print(b.attribut); // gibt "4" aus
b.test(); // gibt "Attribut: 4" aus

A a = (A) b;
System.out.print(a.attribut); // gibt "5" aus !
a.test(); // gibt "Attribut: 4" aus !
}
}

Dieses Verhalten erscheint auf dem ersten Blick ganz und gar nicht logisch. Eigentlich hätte man die Ausgabe "4444″ erwartet, da es sich immer um das gleiche Objekt vom Typ B handelt.

Aber:
Java bindet die Methoden dynamisch. Deswegen wird bei a.test() auch die Methoden der Klasse beaufgerufen. Soweit ist dies allgemein bekannt.

Neu war mir, dass Unterklassen neue Attribute mit dem Namen eines Attributes der Oberklasse definieren können. Dann wird das Attribut der Überklasse "überdeckt".
Dabei werden Attribute nicht dynamisch sondern statisch gebunden. Deshalb wird bei a.attribut der Attributwert 5. Dies ist der Wert, den die Eigenschaft attribut der Klasse A hat.

Schon sehr seltsam, dieses Verhalten.

Thursday, January 12, 2006

Singleton mit protected Konstruktor

In der Vorlesung Modellbasierte Softwareentwicklung sollten wir in der Übung eben ein Template zur Generierung des Codes für ein Singleton-Pattern angeben.

Ein Kommilitone hat ein Template mit protected-Konstruktor angeben. Ein Beispiel eine Klasse, die aus dem Template erzeugt werden könnte, ist:

package mbse;

public class Singleton { private static Singleton instance = null;

protected Singleton() {
}

public static Singleton getInstance() {
    if(instance == null) {
        instance = null;
    }
    return instance;
}

}

Immerhin kann man von der Klasse direkt keine weiteren Instanzen erzeugen. Soweit dies ja schon mal keine naive Implementierung.

Auf die Nachfrage von mehreren Studenten, dass der Konstruktor doch private sein müsse, wurde nur reagiert mit dem Hinweis, dass dies eine Implementierungsalternative wäre. Nein, dies ist es nicht. Mit einem protected-Konstruktor kann die Singelton-Eigenschaft einfach aus gehebelt werden.

Mit einem protected-Konstruktor kann jeder von der Klasse eine neue Klasse ableiten. Diese Klasse könnte wie folgt aussehen:

package other;

import mbse.Singleton;

public class SubSingleton extends Singleton { public SubSingleton() {

}

}

Von dieser Klasse lassen sich durch den public-Konstruktor einfach beliebig viele Instanzen erstellen. Die Eigenschaft, dass nur eine Instanz der Klasse existiert wurde damit sehr einfach aus gehebelt. Wenn sich dieser Code in einer API befinden würde, dann wäre dies möglicherweise kritisch. Aber auch aus Versehen könnte so etwas passieren, wenn einem anderem Entwickler nicht bewusst ist, dass es sich um ein Singleton handelt.

Wenn Singelton (meist ist dies keine so gute Idee), dann doch bitte nur mit private-Konstruktor.

Tuesday, January 10, 2006

Filmtipp: Jarhead

Mein Filmtipp ist im Moment der neue Film von dem Regisseur von "American Beauty" Sam Mendes: Jarhead.

Der Film spielt im 2. Golfkrieg Anfang der neunziger Jahre aus der Sicht eines jungen US-Marine. Er zeigt, dass harte und entwürdigende Training in den USA und das monatelange Warten in der Wüste von Saudi-Arabien. Er zeigt, die Langeweile des Wartens und wie die Soldaten aus der Mischung aus Langeweile, Waffen und Demütigung langsam verrückt werden. Am Ende kommt der junge Soldat aus dem Golfkrieg heim und hat nicht einen Schuß abgegeben. Der Film ist definitv keine Komodie, auch wenn es vielleicht in dem nicht so geglückten Trailer so scheint. Es ist genau dann nicht mehr witzig, wenn es ernst gemeint ist.

Spiegel Online hat ein Interview mit dem Regisseur veröffentlicht. Spannend fand ich daran, dass beim Dreh ähnliche Probleme bestanden haben wie bei den Soldaten in dem Film:

Die Arbeit mit den Schauspielern war der wahre Kampf. Im Film geht es um einen Haufen Männer, die sechs Monate in der Wüste darauf warten, in den Kampf ziehen zu können. Wir waren ebenso lang in der Wüste, und die Darsteller verloren mit der Zeit jeden Sinn dafür, woran sie überhaupt teilnahmen. Wenn Männer zu lange unter sich sind, kann das nicht gut ausgehen. Es gab viele Kämpfe, zu viel Wettbewerb, zu viel Machtgehabe, zu viel Testosteron. Ich habe dagegen aber nichts unternommen, sondern nur versucht, die Stimmung für den Film einzufangen.
Besonders gut fand ich an dem Film, dass der den Wahnsinn zeigt, aber ohne polemisch zu werden. Wie es bei den politischen Filmen der letzten Zeit leider so oft der Fall ist. Auch hierzu äußert sich der Regisseur in dem Spiegel-Interview. Auf eine Frage des Interviewpartners warum die Einstellung von Mendes zum neuen Irak-Krieg nicht im Film deutlich wird, sagt er
Ich halte es für ziemlich einfach, sich hinter einer Meinung zu verstecken. Deswegen wollte ich keine Polemik wie Michael Moore drehen, die ohnehin von nur wenig Interesse und nach einem Jahr schon wieder vergessen wäre. Hätte ich Swoffords Buch auf diese Weise interpretiert, hätte ich Verrat begangen. Er beschreibt einen Marine, der die Marines hasst, gleichzeitig aber weiß, dass sein Job ihm bei der Selbsterkenntnis und dem Verstehen der Welt geholfen hat. An meinen Film soll man sich noch in 20 Jahren erinnern.
Auch Telepolis hat eine Kritik über den Film veröffentlicht. Auch Telepolis folgt dem Vorbild des Films und verzichtet weitgehend auf Polemik, wie man sie leider doch öfter mal bei Telepolis lesen kann.

Friday, January 06, 2006

2006 ist Jahr der Informatik

Endlich mal eine gute Entscheidung der neuen Bundesregierung. Sie hat das Jahr 2006 zum "Jahr der Informatik" erklärt.

In der Pressemitteilung heisst es:

Ziel des Informatikjahres ist es, das Bewusstsein für die zahlreichen Anwendungen und Möglichkeiten der Informatik zu schärfen. Auch die Bedeutung der Informatik als Faktor für die wirtschaftliche Entwicklung Deutschlands wird thematisiert. Darüber hinaus soll die Faszination einer noch recht jungen Wissenschaft vermittelt werden.
Weiterhin wird Informatik als Kern und Motor von Innovation bezeichnet. Mein Eindruck ist leider, dass die Informatik ihre Innovationskraft etwas verloren hat und andere Wissenschaftsbereiche derzeit aufmerksamer verfolgt werden. Ein Beispiel hier ist die Nanotechnologie. Dies liegt vielleicht auch daran, dass mittlerweile jeder einen Computer zu Hause hat und man deshalb meint man hat alles was die Informatik bietet schon gesehen. Es ist wohl schon jedem Informatikstudent passiert, dass man gebeten worden ist einen Fehler bei Windows 98 zu beheben, wenn man gesagt hat, dass man Informatik studiert. Auch Sätze wie "Ich kann auch HTML" habe ich schon gehört. Die Unkenntnis in der Bevölkerung, was Informatik eigentlich ist, scheint mir sehr hoch zu sein. Vielleicht kann da dieses "Jahr der Informatik" vielleicht etwas helfen.

Wie oben schon erwähnt, scheint der große Hype um Informatik vorbei zu sein. Mein Indikator dafür ist es, dass in der Zeitung "Technology Review" kaum noch Artikel über Informatik erscheinen sondern Themen wie Bio-Technologie beherrschent sind. Auf der anderen Seite hat Informatik eine große Bedeutung als Querschnittswissenschaft. Neue Entdeckungen und Erfindungen in anderen innovativen Bereichen sind ohne den Einsatz von Kenntnissen aus der Informatik kaum mehr möglich.

Weiterer Link zum Informatikjahr:

Monday, January 02, 2006

Bachelor/Master

Wieso meckert eigentlich jeder über die Umstellung auch Bachelor/Master?

Es ist absolut unbestritten, dass viele Studiengänge an vielen Universitäten mit der Umstellung absolut nicht klar kommen oder klar gekommen sind. Bei mir in Paderborn haben es die Verantwortlichen für Wirtschaftsinformatik und Wirtschaftswissenschaften wohl in den Sand gesetzt. Während es bei Informatik eigentlich sehr gut geklappt hat.

Zum Beispiel:

Hier das absolute Chaos:

  • Neue Unterrichtsformen, von denen die Dozenten keine Ahnung haben wie'€™s gehen soll...
  • Jede Aufgabe muss im Team gelöst werden (man soll ja Teamfähigkeit trainieren); die Prüfungen werden in Einzelarbeit gelöst (und wer soll noch wissen wie man eine Aufgabe alleine löst)
  • Zusammenlegen aller (in meinem Fall: Wirtschafts)Studiengänge für die ersten drei Semester -> jeder soll von allem lernen... Das Problem: man lernt von allem, aber nichts so, dass man es verwenden könnte...
  • Prüfungen gibt es nun am Ende der Semester (wäre ja Positiv), nur wissen wir bis jetzt nur in den seltensten Fächern, wie die Prüfung aussehen wird, und welchen Leistungsnachweis wir dafür erbringen müssen (Semester-Ende: Februar 06, Prüfungen im März)... Könnte doch noch knapp werden...
Oder:
Das schlimmste ist ja, dass KEINER der Studenten (an meiner FH) das Bachelor-Modell will. Jeder will den vergleichbaren Diplsomstudiengang - der ist fachlich fundierter, klarer strukturiert, und in der Wirtschaft bekannt... Sprich: für den Studenten wesentlich Vorteilhafter
Beide Zitate sind jetzt aus dem heise-Forum, aber ich bin sicher, dass man problemlos tausende weitere solche Zitate finden könnte, da sie die häufigsten Vorwürfe wiederspiegeln.

Dies sind Fehler der Universität oder des Fachbereichs. Ich sehe da keine allgemeinen Konstruktionsfehler an den Abschlussen. Bei mir in der Paderborn wurde der Umstieg vor zwei Semester gemacht und es hat eigentlich sich gut funktioniert. Man hat die Chance genutzt um die Prüfungsordnung zu überarbeiten. Nicht jede Neuerung war gut (Notenfreiheit beim Softwaretechnikpraktikum - 300 Stunden für "nichts"), aber doch zumindest die meisten (Umstellung von "Praktikum" auf "berufpraktische Tätigkeit"). Dies soll zeigen es geht auch besser. Wenn die Universität bzw. das entsprechende Institut bereit ist ordentliche Regelungen und Übergangsregelungen zu schaffen. Dort sollte die Kritik angesetzt werden und weniger bei den neuen Studiengängen. Häufig gleitet BSc/MSc-Kritik auch in den Antiamerikanismus. Die blöden Amis haben uns da mal wieder etwas aufgeschwatzt, unser tolles Diplom war doch überall so beliebt.

Nun mal zu den einzelnen Vorwürfen aus den Zitaten. Ich behaupte nicht, dass die Autoren mit ihren Erfahrungen in ihrem Fall unrecht haben. Dies bezweifele ich nicht im Ansatz. Ich möchte nur mal aufzeigen wie es meiner Erfahrung nach für den Studiengang "Informatik" an der Universität Paderborn gelaufen ist.

  1. Neue Unterrichtsformen von denen die Dozenten keine Ahnung haben: Das ist ein Problem der Dozenten und der internen Fortbildung. Im Ansatz haben wir so etwas in Paderborn auch. Zumindest gibt es viele Dozenten, die noch nicht gemerkt haben, dass die Prüfungen für kleine Veranstaltungen (3 Punkte) auf 2 Stunden begrenzt wurde.
  2. Teamarbeit: Und? Also ich halte das für sinnvoll. Es spielt natürlich auch eine Rolle, dass man versucht auf diese Weise den Aufwand für die Korrektoren noch so hoch werden zu lassen.
  3. Zusammelegung der Studiengänge: Auch dies scheint mir eher ein Problem des konkreten Fall zu sein und weniger ein allgemeines Problem. Ich bin mir noch nicht sicher, ob eine Ausrichtung auf "Alles lernen, aber nur wenig" gut oder schlecht ist. Auf der einen Seite sollte eine fertiger Student jeden Bereich zumindest im Ansatz kennen, auf der anderen Seite muss dann die Tiefe der Themen darunter leiden. Mit der Umstellung auf BSC/MSc für Informatik in Paderborn wurde auch eher die Breite gestärkt als die Tiefe.
  4. Prüfungen am Ende des Semester: Dieses Prinzip haben wir in Paderborn seit Studentengedenken. Ich sehe es eigentlich auch sehr positiv, auf der anderen Seite werden die Semesterferien dadurch stark verkürzt und man hat weniger Zeit zum Geld verdienen.
  5. Welcher Leistungsnachweise?: Dies ist ein Problem, dass ich immer wieder von viele Studiengängen höre. Manche Universitäten kriegen einen ordentlichen Plan wohl irgendwie nicht richtig hin. Wenn man es schon nicht schafft dort ordentliche und verlässliche Informationen für alte Studiengänge bereit zu stellen, dann ist es leider auch keine Wunder, wenn es bei den neuen auch Probleme gibt. Bei mir gibt es dieses Problem eigentlich nur im "Studium Generale".
  6. Kein Student will dasEin Semester nach Einführung gab es bei uns zumindest schon ca. 30 - 40 Studenten im 3. Semester, die in die neuen Studiengänge gewechselt sind. So schlecht scheint das Angebot zum Wechsel nicht aufgenommen worden zu sein, obwohl die Regelstudienzeit um ein Semester verlängert wurde.
  7. Fachlich fundierter: Die Regelstudienzeit wurde wie gesagt auf zehn Semester erhöht. Dafür hat man nun mehr Freizeitveranstaltungen im "Studium Generale". Man wurde etwas in den Wahlmöglichkeiten eingeschränkt. Insgesamt würde ich sagen, dass sich bei uns an dem fachlichen Fundament, dass aufgebaut werden soll, nicht viel geändert hat.
  8. Klar strukturiert: Jede Umstellung ist eine Chance für die Verantwortlichen aus den Erfahrungen mit den alten Prüfungsordnungen zu lernen. Bei uns ist die Struktur klar zu erkennen.
  9. in der Wirtschaft bekannt: Zum Zeitpunkt der Einführung war dies auch bestimmt der Fall, aber schon bald wird sich das Bild geändert haben. International scheinen die Vorteile der neuen Abschlüsse wohl klar zu überwiegen.
Fazit Es geht mir nicht darum bei beiden Autoren im heise-Forum etwas vorzuwerfen oder ihnen zu unterstellen, dass sie nicht die Wahrheit sagen. Ich bin sicher, dass sie tatsächlich diese Erfahrungen gemacht haben. Ich bin aber absolut sicher, dass diese schlechten Erfahrungen ein Fehler der Umstellung auf die neuen Abschlüsse ist, sondern dass es sich dabei um Fehler der individuell Verantwortlichen an den entsprechenden Hochschulen handelt. Man sollte die Fehler dieses Personen vorwerfen und die Schuld nicht in dem Bolonga-Prozeß suchen.

Sunday, January 01, 2006

The Daily WTF - Howto do not für Programmierer

Die Webseite Daily WTF ist ein Internetforum über schlechten Stil.
Schlechten Programmierstil.

Guten Stil beim Programmieren halte ich für sehr wichtig. Alle Kommilitonen aus dem Softwaretechnikpraktikum und auch meine Studenten aus meiner Übungsgruppe können davon ein Wort singen.
Und genau es halb finde ich eine solche Seite auch mal richtig gut.

Dort werden alle vergehen gegen den guten Programmiergeschmack gesammelt. Verstöße gegen Lesbarkeit und Wartbarkeit werden dokumentiert.

Meine zwei Lieblingsbeispiele bisher sind:

  1. Prgamatically Registering: Mit folgendem Visual Basic Code wurde versucht eine OCX-Komponenten beim Betriebssystem zu registrieren. Anstatt den ordentlichen Bibliotheksbefehl zu verwenden wird die Registierung über "Start"-"Ausführen" als Kommandozeilenbefehl durchgeführt.

    Private Declare Function SetCursorPos Lib "user3" (ByVal x As Long, ByVal y As Long) As Long
    Private Declare Sub mouse_event Lib "user3" (ByVal dwFlags As Long, ByVal dx As Long,
    ByVal dy As Long, ByVal cButtons As Long,
    ByVal dwExtraInfo As Long)
    Private Const MOUSEEVENTF_ABSOLUTE = &H8000 ‘ absolute move
    Private Const MOUSEEVENTF_LEFTDOWN = &H2 ‘ left button down
    Private Const MOUSEEVENTF_LEFTUP = &H4 ‘ left button up

    Private Sub Register(OCXName As String)
    SetCursorPos 32, Screen.Height / 15 - 10
    mouse_event MOUSEEVENTF_ABSOLUTE, 32, Screen.Height / 15 - 10, 1, 1
    mouse_event MOUSEEVENTF_LEFTDOWN, 32, Screen.Height / 15 - 10, 1, 1
    mouse_event MOUSEEVENTF_LEFTUP, 32, Screen.Height / 15 - 10, 1, 1
    SendKeys ("R")
    SendKeys ("regsvr32 " & OCXName)
    SendKeys (vbKeyReturn)
    End Sub

  2. Ebenfalls ein Fall für den schlechtesten Code ist Quadrasort. Ein vierfacher Buddlesort zum Sortieren von YYYYMMDDHH.ext-artigen Dateinamen. Collections.sort erledigt dies mit genau einem Aufruf.

Ich bin ein entschiedener Gegner von dem Auffassung in der Informatik den Programmieren an der Basis die Hauptschuld an schlechter Software zu geben und auch an dem Trend die Arbeit des Programmierers als Trivialität abzutun.
Trotzdem oder gerade deshalb ist so eine Sammlung von Beispielen wie man es nicht programmieren soll amüsant.
Thomas hat vorgeschlagen diese Seite auch den Studenten im ersten Semester zu zeigen. Dort würden Sie auf lustige Art und Weise etwas lernen.
Da würde ich aber eher das Code Reading-Konzept befürworten.