Lektionen aus Advent Of Code 2019 mit Java 13

Advent Of Code 2019 Fortschritt

Bei der diesjährigen Advend Of Code-Herausforderung kam ich 12 Tage weit bis der Vor-Weihnachtsrummel Überhand nahm. Das ist eine neue persönliche Bestleistung, danke auch an Bruder R. für den Ansporn.

Ich habe als Programmiersprache Java 13 eingesetzt. Maven und JUnit, sowie die Java-Entwicklungsumgebung von Visual Studio Code haben mich dabei hervorragend unterstützt.

Eine Spezialität von Advent Of Code ist dass jede Aufgabe in zwei Teilen gestellt wird: Erst nach dem erfolgreichen Lösen des ersten Teiles erfährt man die restlichen Anforderungen.

Zusätzlich gabe es auch dieses Jahr eine Meta-Aufgabe: Das Schreiben einer einfachen virtuellen Maschine über mehrere Tage hinweg.

Schreib dein Annahmen als Kommentar in den Code

Gerade die Zwei-Teilung der Aufgaben macht es wichtig, alle getroffenen Annahmen im Code entsprechend zu dokumentieren.

Wer hingegen schon im ersten Teil versucht allen möglichen neuen Anforderungen des zweiten Teils zu antizipieren, wird vielen unnützen Code schreiben. Der einfachere Ansatz ist es sich an die aktuelle Aufgabe zu halten. Erst wenn die neuen Spezifikationen bekannt sind, ist es Zeit die getroffenen Annahmen zu überprüfen.

Unittesting beruhigt

Die virtuelle Maschine welche in den ersten 10 Tagen entsteht wird mit jedem Tag komplizierter. Da beruhigt es ungemein alle Beispiele (und vorangegangene Aufgaben) als Unittests für die aktuelle Implementation zu einer Testsuite zusammengefügt zu haben.

Java 13 ist angenehm

Mit jeder neuen Java-Version kommen mehr praktische Features in der Sprache an. Die 13 macht deutlich mehr Spass als alles was vor Version 8 war.

(Natürlich eignen sich für Advent Of Code dynamische Sprachen wie Python oder Ruby was die Implementationsgeschwindigkeit angeht noch immer tausendmal besser…)

Ich freue mich bereits auf nächstes Jahr und bin schon gespannt, welche Sprache ich nächsten Dezember wählen werde.

Zahlen zur Smartphones in der Schweiz

Interessante Zahlen vom Internet Briefing zum Thema Mobile Commerce bei der SBB via der Anzahl der installierten SBB Fahrplan-Apps.

  • 1.3 Millionen Installation auf iPhones/iOS
  • 130 000 Installationen unter Android
  • 12 000 Installationen unter Windows Phone 7
  • Und 240 000 Installationen als Java-Applikation (Davon schätzungsweise 50% von SBB-Angestellten, da die obengenannten Systeme nicht im internen Warenkorb erhältlich sind.)

Der Siegeszug der Android-Telefone scheint in der Schweiz noch nicht angekommen zu sein.

Wo sind all die Windows-Entwickler?

Die Applikation ist bereits 15 Jahre alt und hat schon mehr als einen Technologiewechsel gesehen: Angefangen bei Delphi, besteht sie heute hauptsächlich aus Visual Basic-Code, sieht aber noch aus wie zu Windows 3.11-Zeiten.

Dieses Mal ist es an mir in den Code-Dschungel vorzustossen, aufzuräumen und sie schreiend und um sich schlagend ins nächste Jahrhundert zu schleppen. Für mich als Webentwickler ein besonders spannendes Projekt; habe ich doch noch nie nur eine Zeile Code für Windows geschrieben.

Kein Problem, sage ich mir, und schicke als erstes eine Mail in die Runde meiner IT-Freunde und ehemaligen ETH-Mitstudenten: Wer hat Erfahrungen mit Windows-Entwicklung und kann mir ein paar Ratschläge zur Technologiewahl geben?

Offenbar niemand.

Eine Auswahl der Antworten: „Ich mache nur noch Webapplikationen mit Ruby.“ – „Java.“ – „Bin gerade an einer iPhone-Applikation.“ – „Java.“ – „Server-Entwicklung unter Linux.“ – „Java.“…

Wo sind all die Windows-Entwickler hin? Wird Microsoft jetzt definitiv abgehängt? Irgendwie kann ich das nicht ganz glauben, aber im Moment verlassen Generation um Generation von Informatikern mit ihren MacBooks die Universitäten und lassen Windows zunehmend im Regen stehen. Ist Google mit ihrem browserbasiertem Betriebssystem Chrome OS tatsächlich näher am Puls der Zeit?