Why TLS is crappy by Design

Jeder der das Internet benutzt, der nutzt auch TLS, besser bekannt unter dem alten Namen SSL. TLS sorgt dafür, dass eine HTTP Verbindung zwischen dem Client und einem Server verschlüsselt ist. Alle Daten die ich an die Website übermittel und vice versa können nicht von Dritten mitgelesen werden. Insbesondere nach den Enthüllungen von Edward Snowden sollte jeder Betreiber einer Website TLS standardmäßig zur Verfügung stellen.

TLS selbst gilt als (weitgehend) sicher. Daran möchte ich auch nichts rütteln.Was jedoch einerseits ein Sicherheits Feature ist, ist gleichzeitig auch ein großes Problem. Wenn zwischen Client und Server erstmal eine Verbindung aufgebaut wurde, dann werden sämtliche Inhalte verschlüsselt übertragen. Sobald eine TLS Verbindung einmal aufgebaut ist, dann ist es unmöglich zu unterscheiden, für welche Domain das eingehende TLS Paket ist. Wenn man auf einem Server unter der gleichen IP Adresse mehrere Domains betreibt, z.B. foo.example.com und bar.example.com, und beide (Sub-)Domains verschiedene Zertifikate mit unterschiedlichen Schlüsseln zur Verschlüsselung der Verbindung verwenden, dann kann der Server später nicht unterscheiden, ob ein eingehendes verschlüsseltes Paket für foo.example.com oder für bar.example.com bestimmt ist.

Grundsätzlich ist dieses Verhalten gut, da ein Angreifer nicht sehen kann, welche URIs der Client abrufen möchte. Es führt aber auch zu gewaltigen Problemen:

Wenn man eine Reihe von Servern betreibt, auf denen eine Webapplication in mehreren Instanzen läuft und Kunden über my-instance.awesome-company.com zugreifen, dann ist es wünschenswert einen Loadbalancer zu betreiben, der alle Anfragen an *.awesome-company.com entgegen nimmt und jede Anfrage an den Server weiter reicht, auf dem die angeforderte Instanz betrieben wird (eine Aufteilung der Kunden auf isolierte Instanzen ist aus Datenschutz Gründen wünschenswert oder sogar erforderlich). Durch HTTPS wird das leider unmöglich: Aus einem verschlüsselten Paket kann man später nicht mehr feststellen, an welche Instanz dieses weitergeleitet werden muss.

Bisher ist die einzige Möglichkeit das Problem zu umgehen der Einsatz eines TLS Reverse Proxies. Hier baut der Client eine verschlüsselte Verbindung zum Loadbalancer auf. Dieser entschlüsselt die Nachricht und kann dann anhand des HTTP Headers erkennen, für welche Instanz das Paket gedacht ist. Der Loadbalancer schickt dass Paket dann über eine neue Verbindung entweder im Klartext oder über eine neue TLS Verbindung an den Instanz Server weiter. Umgekehrt schickt der Instanz Server seine Antwort an den Reverse Proxy, der diese dann an den Client weitergibt. Dieses Model hat zwei nennenswerte Probleme: Zum einen bietet die TLS Verbindung hier keine echte Ende-zu-Ende Verschlüsselung. Daten können auf dem Load Balancer entschlüsselt und ggf. manipuliert oder von Dritten gelesen werden. Zum anderen müssen die Daten vom Loadbalancer zum Instanz Server neu verschlüsselt werden. Das kostet zusätzliche Ressourcen und damit zusätzliches Geld. Es kommt daher nicht selten vor, dass die Verbindung vom Loadbalancer zu den Background Servern nicht verschlüsselt ist.

Eine mögliche Lösung wäre die Erweiterung von TLS. Dazu in einem späteren Post mehr.

Classmind – Informationsmanagement für Ihre Schule

Ich hatte vor einiger Zeit bereits über eines meiner Projekte geschrieben. In diesem Projekt geht es um die Entwicklung einer modernen und flexiblen eLearning-und Verwaltungsplattform für Schulen. Classmind unterstützt neben klassichen eLearning Komponenten (Aufgaben, Arbeitsmaterial, Kommunikation, …) die Schule bei der Verwaltung.

Die Lehrerinnen und Lehrer profitieren von modulen wie einem digitalen Klassenbuch (Verspätungen, Fehlstunden, …), einem Modul zur Notenverwaltung und natürlich der Arbeitsersparnis durch die eLearning Plattform.

Auch die Schulleitung profitiert von der schnelleren und komfortableren Notenverwaltung, die u.a. auch das automatische Erstellen und Drucken von Zeugnissen am Schuljahresende ermöglicht.

Nicht zuletzt profitieren natürlich auch die Schüler von Classmind. Dazu gehören ein individueller Stundenplan, der automatisch über Ausfälle und Änderungen informiert, eine Übersicht der eigenen Leistungen, die für mehr Transparenz sorgt, und natürlich alle Vorteile der eLearning Plattform wie dem Frage-und Diskussionsmodul für Aufgaben und Arbeitsmaterial.

Classmind ist von der internen Architektur so aufgebaut, dass eine Schule nach Bedarf weitere Module zu dem Kernsystem dazubuchen kann. Das können z.B. Module für Kurswahlen, Lehrmittelverwaltung oder Stundenplanverwaltung sein. Es ist denkbar, dass es zu einem späteren Zeitpunkt auch für Drittanbieter eine Möglichkeit geben wird Module für Classmind zu entwickeln.

Neben den Aspekten der einfachen und übersichtlichen Bedienbarkeit, der Modularität und Flexibilität legen wir einen besonderen Focus auf die Einhaltung des Datenschutzes. Hierzu arbeiten wir seit Herbst des letzten Jahres mit dem Hessischen Datenschutzbeauftragtem zusammen. Dieser unterstützt uns in Fragen Datenschutz, damit wir alle Vorgaben und Regelungen einhalten, die für die Verarbeitung von Pädagogischen-und Verwaltungsdaten gelten. Entsprechend fallen auch unsere technischen Maßnahmen aus: Vollverschlüsselte Datenübertragung, Rollenbasierte Zugangskontrolle und in der Zukunft Zwei-Faktor Authentifizierung für besonders sensible Daten, die derzeit noch nicht erhoben werden.

Zum aktuellen Zeitpunkt befinden wir uns in einem Pilotprojekt mit einer Schule, dass auch von HDSB begleitet wird. In dieser Pilotphase testen wir Classmind im realen Schuleinsatz, um Fehler zu beseitigen. Parallel dazu erweitern wir Classmind um weitere Funktionen. Dabei haben alle Teilnehmer der Pilotphase, aber auch sonstige Lehrerinnen und Lehrer sowie Schüler, die Möglichkeit mitzubestimmen, welche Funktionen Classmind in Zukunft bekommen soll.

Ab dem Sommer wird Classmind im begrenzten Umfang für weitere Schulen zur Verfügung stehen. Wir werden uns dann zunächst auf wenige Schulen konzentrieren (~5-10) um auch weiterhin guten Support leisten zu können.

Ein Closed Beta Zugang ist auf Anfrage möglich.

Die erste Frage der Kollegin

Die erste Frage einer neuer Kollegin an meiner Schule war, wie man denn die Überwachungssoftware der Schulcomputer findet und wie man sie benutzt.

Ich finde es ja gleichsam erstaunlich, erschreckend und traurig, dass gerade neue Lehrerinnen und Lehrer die frisch von der Uni kommen als erstes danach fragen, wie man denn die Computer überwacht, an denen die Schüler arbeiten. Natürlich hat man als LehrerIn ein Interesse daran, dass die Schüler im Unterricht am Computer nicht nur auf Facebook oder Youtube unterwegs sind, sondern tatsächlich auch etwas arbeiten. Ich war bloß bisher der Meinung, man würde als LehrerIn in der pädagogischen Ausbildung lernen, mit solchen Situationen umzugehen, indem man die Schüler zum arbeiten motiviert. Nicht dass man die Schüler überwacht. Es ist traurig, dass stattdessen ein “wir müssen den Schüler mit dem komischen Internet auf die Finger schauen” rauskommt.

P.S. Eine solche Software gibt es in meinem Netzwerk nicht und solange ich hier BOFH bin wird es das auch nicht geben.

Sparangebot für Schulen – oder auch “wie ziehe ich meinem Kunden Geld aus der Tasche”

Man hört ja immer wieder, dass Windows Lizenzen Geld kosten. Man hört auch, dass Schulen meistens kein Geld für Investitionen in ihre IT haben. Glücklicherweise haben sich ein paar schlaue Menschen zusammengesetzt und in einem Rahmenvertrag ein Sparmodel erarbeitet, damit Schulen beim Kauf von Windows Lizenzen Geld sparen. Das sieht dann so aus:

Wenn ich normale Win 8 Pro Lizenzen kaufe (Win 7 Pro Downgrade inklusive) liege ich bei ca. 90€ pro Platz. Bei 40 Plätzen wären das dann 3600€. Einmalig. Ist nicht gerade billig.

Aber glücklicherweise gibt es ja ein Sparangebot!

Ein Rahmenvertrag mit Microsoft mit einem gewissen Institut über die die Schulen hier die Lizenzen beziehen können sieht vor, dass teilnehmende Schulen vergünstigte Lizenzen bekommen. Klingt super.
Eine Lizenz für Win7 Pro kostet dann pro Platz nur noch 50€, also knapp die Hälfte. Pro Jahr. Dafür kann man auf das jeweils aktuelle System updaten, ohne das neue System komplett bezahlen zu müssen. Allerdings kann ich wenn ich 40 Computer habe nicht sagen, ich brauche 40 Lizenzen. Nein, ich muss für fast doppelt so viele Plätze zahlen, da sich die Platzanzahl nicht nach den eigentlichen Installationen richtet, sondern nach einem seltsamen Schlüssel, der die Anzahl der unterrichtenden Lehrer und der in der Schulverwaltung Angestellten als Basis nimmt. Würde dann etwa 3500€ machen. Pro Jahr. Und selbstverständlich ist eine Lizenz nicht übertragbar und darf nicht weiterverkauft werden.
Achja, und das gilt nur, wenn man bereits eine andere Windows Lizenz gekauft hat. Sonst muss man pro Lizenz nochmal eine einmalige Gebühr bezahlen, die einen dann zur Nutzung des Spaarabos berechtigt. Wären in diesem Fall dann nochmal etwa 800€ (einmalig).

Nehmen wir an, dass die 40 Lizenzen vier Jahre lang betrieben werden. Wir kämen dann bei dem Sparmodel auf 14.000€ für die vier Jahre. Bei Lizenzen aus dem Supermarkt zahlen wir in den vier Jahren teure 3600€.

Kann man sich auch so vorstellen, als müsste ich mit einen 1er BMW kaufen, um dann einen 3er BMW mieten zu können, wobei die Jahresmiete dem halben Neupreis des 3er BMWs entspricht. Und natürlich muss ich auch gleich noch einen BMW für meine Frau, meine beiden Kinder (2 und 4 Jahre alt) und meine Schwiegermutter (92, blind und taub, unaustehliche Schreckschraube) dazu mieten (nicht zu vergessen die 1er BMWs die ich vorher noch kaufen muss!). Und selbstverständlich darf ich die Autos nicht weiterverkaufen, da diese explodieren, wenn ein nicht autorisierter Fahrer versucht diese zu starten.

Natürlich könnte das Sparmodel dann günstiger werden, wenn ich sehr viele Lizenzen brauche. Denn dann zahle ich ja trotzdem nur 72 mal den Grundbetrag und nicht pro Installation. Rechnen wir das einmal hoch. Ich gehe für die Rechnung von folgenden Parametern aus (persönlicher Erfahrungswert):

  1. Auf je 15 Schüler kommt ein Lehrer
  2. Auf je 100 Schüler kommt ein weiterer Verwaltungsangestellter (Sekretärin, Hausmeister, Schulpsyschologe, …)
  3. auf je 10 Schüler kommt ein Schul-PC
  4. Pro Supermarkt Lizenz 90€ bzw. 50€ beim Sparmodel

Dann kommt man darauf, dass bei einer erwarteten Laufzeit von 4 Jahren das Sparangebot in jedem Fall mindestens doppelt so teuer ist, wie der “Supermarktpreis”.  Hat man eine heterogene Umgebung, bei der ein Teil der PCs unter Linux o.ä. lauft, dann geht die Differenz noch viel weiter auseinander. In dem o.g. Beispiel sind das immerhin 3600€ zu 14.000€. Das macht eine Differenz von 10.400€!

Rechnet man weiter und berücksichtigt Updates des Betriebssystems, dann sieht die Situation wie folgt aus: Im Schnitt gibt es alle 2-3 Jahre ein neues Windows System. Wenn man annimt, dass das neue System im Supermarkt genau so viel kostet wie das vorherige (immer 90€ ) und man alle zwei Jahre das System erneuert, dann liegen die Kosten des Sparmodels und dem einfachen Kaufen der Lizenzen im Supermarkt etwa auf dem gleichen Level (das Sparmodell ist immer noch 10% teurer).
Nun ist es allerdings sehr unwahrscheinlich, dass eine Schule immer sofort nach dem Erscheinen eines neuen Betriebssystems aktualisiert. Gründe hierfür sind manigfaltig: Inkompatibilität mit verwendeter Software, unzureichende Hardware für ein neues System, Gewohnheit, Kinderkrankheiten eines neuen Systems, …). Wenn man diesen Faktor mit betrachtet, dann wird praktisch keine Schule die Möglichkeit der regelmäßigen, “kostenfreien” Updates in Anspruch nehmen.

Wenn man all dies betrachtet, dann ist das “Sparangebot” eine reine Abzocke.

Menschen für Projekt gesucht: Essen, Gemeinschaft, Nachhaltigkeit

Ich suche Menschen die Lust haben an einem spannenden Projekt mitzumachen:

Das Projekt bietet allen die mitmachen die Möglichkeit, an einer interessanten Sache mit zu arbeiten.
Der Fokus liegt nicht darauf schnell eine große Menge an Geld zu verdienen, sondern vielmehr nachhaltige Möglichkeiten zu schaffen, die sich teilweise auch bis in den wohltätigen Bereich erstrecken.
Inhaltlich geht es darum eine neue Plattform zu entwickeln, die (im weitesten Sinne) sehr viel mit Essen zu tun hat, aber auch der Punkt gemeinschaftlich spielt eine Rolle. Mehr Details gebe ich gerne bei persönlicher Ansprache.

Um das Projekt umzusetzen suche ich Leute die folgendes mitbringen:

- Spaß gemeinschaftlich an einem Projekt zu arbeiten
- Spaß und Freude an gutem Essen
- Kreativität
- Skills in den Bereichen
- (Web-) Entwicklung
- Webdesign
- Datenbankdesign
- Grundlegende Sicherheitsmechanismen
- App Entwicklung (Android/iOS)
- Bereitschaft sich in die Themen einzuarbeiten
- Kochen & Essen

Es ist nicht nötig in allen Bereichen Skills Stufe 20 zu haben, wichtig sind besonders Spaß und Kreativität. Man muss kein Informatiker sein, um bei dem Projekt helfen zu können. Auch wenn Du im ersten Moment vielleicht denkst, das kann ich alles nicht, dann bedeutet es nicht, dass du keine Bereicherung für das Projekt sein kannst.

Ich freue mich über alle Interessierten.

P.S. Da meine Reichweite begrenzt ist, würde ich mich sehr freuen, wenn ihr das hier an Leute weitergeben könntet, die ihr kennt und die ggf. Interesse haben könnten.

Umstieg auf Owncloud

Owncloud ist eine freie Open Source Lösung um seine eigene (private) mini Cloud aufzusetzen. Der Name Cloud ist dabei insofern irreführend, dass es eigentlich keine Cloud (mehrere im Intener verteilte Hosts) ist, sondern eine Software die verschiedene Dienste wie Dropbox, Kalender-und Adresssynchonisierung und Andere bereitstellt.

Owncloud kann man sich frei runterladen und auf dem eigenen Server installieren. Als Server kann entweder ein ausrangierter PC oder z.B. ein Raspberry Pi dienen, der von zu Hause aus über den normalen DSL Anschluss mit dem Internet verbunden ist. Alternativ kann man natürlich auch einen Server irgendwo im Rechenzentrum mieten und Owncloud darauf betreiben. Die Installation ist sehr einfach und dank einer ausführlichen Dokumentation auch ohne fundiertes Hintergrundwissen möglich.

Hat man Owncloud installiert, so kann man Owncloud verwenden um seine Kalender und Adressbücher zwischen mehreren Geräten zu synchronisieren. Dazu bietet Owncloud auch noch die Möglichkeit Dateien ähnlich wie bei Dropbox oder anderen Anbietern zwischen verschiedenen Geräten abzugleichen. Für alle gängigen Betriebssysteme gibt es hierzu entsprechende Client Software.

Der große Vorteil gegenüber Herstellerspezifischer Lösungen hat man hier selbst die Kontrolle über seine Daten, externe Dienstleister haben keinen Zugriff. Owncloud unterstützt auch direkt out of the Box eine Serverseitige Verschlüsselung: die eigenen Daten sind auf diese Weise zunächst ein Stück weit geschützt. Dennoch empfiehlt es sich sensible Daten weiterhin mit zusätzlichen Tools wie Truecrypt zu verschlüsseln, um eine echte Ende zu Ende Verschlüsselung zu haben. Denn bei der reinen serverseitigen Verschlüsselung liegt auch der Schlüssel irgendwo auf dem Server. Ein Angreifer der die Kontrolle über den Server übernimmt wäre so in der Lage die verschlüsselten Daten zu lesen.

Soweit hat mein Wechsel auf Owncloud reibungslos funktioniert. Auf allen Clients funktioniert der Sync ohne Probleme.

eLearning als Ergänzung zum Schulunterricht

Aus gegebenen Anlass möchte ich gerne ein paar Zeilen über ein Projekt schreiben an dem ich mit zwei Kollegen seit ein paar Monaten arbeite: Eleanor.

Eleanor ist der Arbeitstitel für eine eLearning Plattform. Nun gibt es bereits eine ganze Reihe an verschiedenen Lösungen die alle eine eLearning Plattform bereitstellen. Moodle, Olat und Ilias sind nur drei relativ bekannte Vertreter einer ganzen Familie von Produkten. Alle Lösungen haben ihre eigenen Stärken und Schwächen. Alle diese Plattformen haben jedoch eins gemeinsam: sie sind auf den Einsatz in der Hochschule konzipiert.
Nun kann man diese Plattformen natürlich auch in der Schule einsetzen. Möchte man nur die verschiedenen Kurse (=belegte Unterrichtsfächer) online nachbilden und über diese virtuellen Klassenräume beispielsweise Unterrichtsmaterial bereitstellen sind diese Lösungen ausreichend. Möchte man jedoch darüber hinaus auch verschiedene Verwaltungstätigkeiten die in der Schule anfallen über diese Plattformen abwickeln so ist das meistens nicht möglich oder mit einem hohen Aufwand verbunden.

Mit Eleanor wollen wir diese Lücke schließen. Neben dem althergebrachtem virtuellen Klassenzimmer – ein konservatives Modell – bringen wir eine Reihe von neuen Konzepten und Möglichkeiten in den Schulalltag.

Das versprochene Ziel von Eleanor ist die Verbesserung der Kommunikation zwischen Schülern und Lehrern sowie zwischen Lehrern. Dabei versuchen wir nicht ein schulinternes Soziales Netzwerk zu schaffe. Soziale Netzwerke gibt es genug. Und weder Schüler noch Lehrer wollen außerhalb des Unterrichts viel Zeit in einem uncoolen Schulsystem verbringen. Deshalb reduzieren wir die nötige Interaktion mit Eleanor auf ein Minimum. Eleanor läuft im Hintergrund und unterstützt Schüler und Lehrer bei ihrer Arbeit ohne dabei aufdringlich zu werden. Sowohl für Schüler als auch für Lehrer wird Eleanor den Schulalltag erleichtern, insbesondere Lehrer die zusätzlich zum Unterricht noch verschiedene Verwaltungsaufgaben in der Schule haben.

Eleanor ist wie viele andere eLearning Lösungen eine Webapplikation. Hierdurch erreichen wir eine maximale Kompatibilität mit den verschiedenen Betriebssystemen. Da Eleanor auf unseren Servern betrieben wird muss sich der Nutzer nicht mit technischen Fragen auseinander setzen. Wenn ein Server nicht richtig funktioniert, dann wird er von uns schnellstmöglichst ersetzt. Im Idealfall merken die Nutzer hiervor garnichts.
Damit alle Daten die mit der Zeit anfallen möglichst sicher sind nutzen wir keine große Cloudlösung bei der Server weltweit verteilt sind, sondern setzen auf eine in Deutschland betriebene Infrakstruktur.

Noch möchte ich nicht zu genau auf die einzelnen Details und Funktionen von Eleanor eingehen. Hierzu wird sehr bald die Gelegenheit kommen da wir uns stetig der ersten stabilen Version nähern (das erste Release ist für Ende dieser Woche geplant).

Eleanor ist keine freie Software. Wir haben uns bewusst hierfür entschieden. Auf diese Weise können wir selbst entscheiden wie wir Eleanor weiterentwickeln (wir haben sehr konkrete Pläne für die Zukunft) und wir können garantieren, dass eine Weiterentwicklung auch wirklich stattfindet. Zusätzlich können wir nur so einen entsprechenden Service und eine kurze Reaktionszeit bei Problemen und Bugs anbieten.

Auch nach dem ersten Release wird Eleanor noch nicht für den Produktivbetrieb zur Verfügung stehen. Da wir eine hohe Qualität garantieren wollen werden zunächst nur wenige Schulen an einer geschlossenen Beta Phase teilnehmen.

Wir haben zwar sehr konkrete Vorstellungen in welche Richtung sich Eleanor entwickeln soll, dennoch nehmen wir gerne Wünsche und Vorschläge für Änderungen und Ergänzungen an. Hierdurch können wir eine optimal an den Schulalltag angepasste Lösung schaffen. Daher kooperieren wir bereits seit dem ersten Entwicklungstag mit Lehrern und Schulen, um nicht an der Relität vorbei zu entwickeln.

Wer sich für die Teilnahme an der Beta Phase interessiert, egal ob Sie eine Schule repräsentieren oder privat interessiert sind, kann gerne per E-Mail Kontakt mit mir aufnehmen.

Man of Steel

Gestern gesehen: “Man of Steel”

Ich bin ja nun wirklich kein Fan von Superman. Aber diese Superman Verfilmung hatte großes Potential, da der Film anders an die Geschichte rangeht als die vorherigen Filme.
Die ersten Zehn Minuten des Films waren sehr gut, die nächste halbe Stunde war auch noch gut. Anschließend wurde es leider immer schlechter. Zur Mitte gibt es einen absoluten Tiefpunkt der auch gegen Ende nur minimal besser wird. Endlose Prügeleien zwischen Superman und seinen Artgenossen die auch aus der Hand von Michael Bay oder Roland Emmerich hätten kommen können.
Insgesamt kann man sagen die zu grundeliegende Handlung war gut, wurde aber sehr viel schlechter umgesetzt als möglich gewesen wäre. Besonders die Hintergründe zur Herkunft von Superman und seinem Volk waren vielversprechend. Die Special Effects waren ordentlich, 3D hat mehr gestört als das es einen Gewinn gebracht hat (ziemliche Unschärfe besonders in den Kampfscenen) und auch die verdammte Wackelkammera die alle Actionscenen des Films begleitet nervt gewaltig.
Schauspielerisch war der Film in Ordnung, Russel Crowe als der leibliche Vater von Superman war eine gute Besetzung.

Man kann sich den Film anschauen, aber die 8.1 Punkte hat er eigentlich nicht verdient. Persönlich gebe ich dem Film 6/10

http://www.imdb.com/title/tt0770828/

Programmieren in der Schule

Heute ist es in der Schule üblich im Informatikunterricht in der Oberstufe den Schülern eine Programmiersprache beizubringen. Ich selbst durfte Delphi lernen, an anderen Schulen wird Java oder Python gelehrt. Aber welche Programmiersprache ist am besten dafür geeignet in der Schule gelehrt zu werden?

Delphi

Die Programmiersprache Delphi basiert im Ursprung auf Pascal, einer in den frühen Siebzigern entwickelte Programmiersprache. Pascal wurde zu seiner Zeit extra mit dem Fokus entwickelt eine Lehrsprache zu sein: Pascal war einfach zu erlernen.
Das heutige Delphi (auch Object Pascal) erweitert das prozedurale Pascal um Objektorientierung und andere Features.
Auch Delphi ist für einen Anfänger leicht zu erlernen. Der große Nachteil: Delphi ist auf Windows beschränkt. Mit Kylix gibt es zwar auch die Möglichkeit Delphi unter Linux zu verwenden, allerdings nicht nativ sondern nur über eine Virtuelle Maschine.
Die Bedeutung von Delphi außerhalb des Lehrumfeldes ist eher gering (derzeit Platz 15 im Tiobe Index mit Tendenz nach unten) und das moderne Delphi konzentriert sich auf das .NET Framework von Microsoft und ist damit wieder nur unter Windows Betriebssystemen sinnvoll einsetzbar.
Insgesamt halte ich Delphi auf Grund dieser Einschränkungen nicht mehr für eine zeitgemäße Programmiersprache zur Lehre in Schulen.

Python

Die dynamische Programmiersprache Python hat in den letzten Jahren große Verbreitung erfahren. Python hat keine statischen Variablen, für den Programmieranfänger sicherlich eine Erleichterung. Andererseits kommt man schnell in die Versuchung Variablen unterschiedlicher Typen durcheinander zu werfen.
Python unterstützt sowohl die prozedurale als auch die objektorientierte Programmierung, sogar funktionale Programmierung wird unterstützt.
Auf Grund der Syntax wird der Schüler von Anfang an dazu gezwungen saubere Einrückungen im Code zu machen und nicht wie Kraut und Rüben zu programmieren. Python bietet dazu eine große Anzahl an Bibliotheken für sehr viele Bereiche.
Der Python Interpreter gibt dem Programmierer detailierte Informationen für das Debugging. Besonders für Programmieranfänger ist das Wünschenswert.
Zugute kommt noch, dass Python Plattformunabhängig und freie Software ist.

PHP

PHP, Sünde oder Segen? Die Sprache PHP ist eine besonders im Bereich der Webentwicklung weit verbreitet. Auch PHP ist ähnlich wie Python dynamisch typisiert. PHP ist freie Software und unter allen Plattformen verfügbar und sehr einfach einzurichten.
Auch in PHP bleibt es dem Programmierer überlassen, ob er einen strukturierten oder objektorientierten Ansatz wählt.
Ein besonders großer Vorteil für Anfänger: PHP verzeiht dem Programmierer sehr viel. Man kann einige Fehler machen und dennoch tut das Programm am Ende wie es soll. Aber genau hier liegt auch das Problem: Man wird als Anfänger nur mit sehr viel Disziplin lernen sauber zu programmieren. Genau das macht es für den Anfänger wieder ungeeignet.

Java

Die Sprache Java ist besonders im Business Bereich und bei der App Entwicklung unter Android sehr weit verbreitet (Tiobe Index Platz 1). Ein großer Vorteil von Java ist die Plattformunabhängigkeit. Nicht nur die Entwicklungswerkzeuge sind für alle Plattformen kostenlos verfügbar, sondern ein Java Programm ist (zumindest in der Theorie) ohne Anpassung auf allen Plattformen für die es eine JVM gibt lauffähig.
Auch für Java gibt es eine ganze Reihe von Bibliotheken und Modulen für eine Vielzahl von Aufgaben.
Der Nachteil von Java als Lehrsprache ist die hohe Lernschwelle für Einsteiger. Java ist vollständig objektorientiert. Mit ein wenig Klempnerei ist es zwar auch möglich mehr oder minder strukturiert zu programmieren, aber Java ist klar für objektorientierte Programmierung designt. Für den Einsteiger mit keinerlei Programmiererfahrung ist das nicht der richtige Ansatz.

C++

 Die Eierlegende Wollmilchsau. C++ ist ebenfalls weit verbreitet (Tiobe Index Platz 4). Viele andere Programmiersprachen (darunter Java, C#, D, …) sind syntaktisch an C++ angelehnt. Kann man einmal C++ programmieren, so fällt es einem relativ einfach andere Sprachen die an C++ angelehnt sind zu lernen.
C++ ermöglicht es dem Programmierer sehr frei zu entscheiden, welches Programmiermodell er nutzt. Ein strukturierter Ansatz ist genauso möglich wie ein objektorienterter.
Für C++ gibt es eine große Reihe an Bibliotheken und der C++ Compiler g++ ist für alle Plattformen als freie Software erhältlich.
Aber auch C++ bietet für den Anfänger eine sehr große Hürde. Anders als die oben genannten Sprachen muss man sich in C++ per Hand um die Speicherverwaltung kümmern. Das ist besonders für Anfänger schwierig.
Hat man jedoch einmal verstanden wie C++ funktioniert, so wird man auch mit anderen Programmiersprachen oftmals ohne große Probleme zurechtkommen. Gleichzeitig lernt viel darüber wie ein Computer intern arbeitet.

Schlussfolgerung

Die perfekte Programmiersprache um sie in der Schule zu lehren gibt es nicht. Ein Kompromiss wäre die Differenzierung zwischen Anfängern und Fortgeschrittenen.

In der neunten und zehnten Klasse sollte für alle Schüler verpflichtend der Informatikunterricht stattfinden. In diesen beiden Jahren werden die Grundlagen der Programmierung mit der Sprache Python gelehrt. So ist die Einstiegshürde für alle Schüler möglichst niedrig gehalten.

In der Oberstufe können Schüler das Fach Informatik freiwillig weiterführen. Neben theoretischen und allgemeinen Aspekten der Informatik sollte hier in Q1 eine Vertiefung der bisherigen Programmierkenntnisse stattfinden. Als Sprachen stünden hier Java oder C++ zu Auswahl. Auch wenn mein persönlicher Favorit C++ ist würde ich dazu tendieren Java zu lehren. C++ in einem Halbjahr zu lehren würde nicht funktionieren, dafür ist die Sprache einfach zu komplex.

BOINC – Verteiltes Rechnen für die Wissenschaft

Ich habe mich in den letzten Tagen mit dem großartigen Projekt BOINC auseinandergesetzt:
BOINC – Verteiltes Rechnen im Hintergrund. Nutze die Ressourcen deines Computers die du gerade nicht brauchst um bei wissenschaftlichen Projekten zu helfen.

Ein üblicher PC nutzt wenn er eingeschaltet ist nur einen kleinen Bruchteil seiner Leistung. Wenn man sich anschaut das der standard PC heute mit zwei, vier oder mehr Kernen daherkommt und nicht selten eine leistungsfähigen Grafikkarte im Computer steckt ist das eine ganze Menge Rechenpower die nicht genutzt wird. Der BOINC Client, den man einfach und kostenlos runterladen kann, nutzt die Ressourcen die man gerade nicht braucht um an von dir bestimmten Projekten mitzurechnen.
Schaut man z.B. gerade einen Film oder ist auf Facebook & Co. unterwegs hilfst du bei der Forschung nach neuen Medikamenten, der Optimierung des LHC oder der Suche nach extraterrestrischem Leben. Brauchst du die Ressourcen selbst (zum Zocken, Arbeiten, …) pausiert BOINC automatisch und man hat die volle Leistung seines PCs für eigene Zwecke zur Verfügung.

Ich kann jedem empfehlen BOINC zu installieren um eines oder mehrere Projekte zu unterstützen. Die Liste ist lang und reicht von Krebsforschung und Proteinfaltung über Physikalische Simulation zur Erstellung von Astronomischen Modellen und der Suche nach extraterrestrischem Leben (SETI). Besonders die Nerds und Geeks da draußen haben meistens leistungsstarke Rechner von denen diese Projekte profitieren können.

Wer möchte kann sich auch einem Team anschließen oder ein eigenes gründen. So kann man beispielsweise an Challenges teilnehmen, bei denen man möglichst viel Rechenpower zur Verfügung stellt.

Auch für Unternehmen bietet es sich an auf den meist unterforderten PCs den BOINC Client zu installieren. Das kostet das Unternehmen nichts und ist gut für das Unternehmensbild.