Am Rande notiert ...

Scala Implicits – Not to be feared. Netter Foliensatz, der erklärt wofür die Scala Implicits alles benutzt werden und warum sie Sinn machen. Da Implicits ein eher oft außerhalb der Scala-Community schlecht verstandenes Feature sind, vielleicht ganz lohnend anzugucken.

n8han/giter8. Und noch ein praktisches Tool, diesmal nicht zwingend Scala-bezogen, aber sehr praktisch: auf github abgelegte Templates werden benutzt um Projektstrukturen anzulegen. Es gibt da dann auch ein Template für Android-Projekte die Scala verwenden.

Getting started · jberkel/android-plugin Wiki. Und hier das zentrale Element zur Scala-Programmierung für Android. Damit werden diverse sbt Befehle zur Verfügung gestellt, die sich um die Android-Integration und Delivery kümmern.

mpeltonen/sbt-idea. Hmm, interessant – ein sbt Plugin mit dem man Idea Projektstrukturen generiert. Damit kann man dann an den Stellen wo man die IDE benutzen will sie auf das gleiche Projekt loslassen. Zum Beispiel für die Remote-Debug-Einbindung ist die IDE dann doch recht nett.

Android-Programmierung mit Scala. Etwas gestelzte Sprache, aber dafür brauchbarer Inhalt. Der Artikel gibt einen netten Überblick darüber, was man gewinnt wenn man Scala für die Android-Programmierung einsetzt. Ich muss mir das ganze auch noch mal genauer angucken, denn die Tipperei bei Java geht mir manchmal dann doch ein wenig auf den Keks. Ausserdem klingt ein Workflow aus sbt und normalem Editor deutlich schlanker als die diversen Java IDE Umgebungen. Und einige Sprachfeatures von Scala schreien geradezu danach im Android Umfeld eingesetzt zu werden (vor allem Traits).

scalatra/scalatra. Das ist sowas wie Sinatra, nur eben nicht für Ruby sondern für Scala. Es hat direkte Unterstützung für Scalatest und bietet auch sonst einige nette Features und DSLs um schnell und simpel zum Ergebnis zu kommen – könnte gerade für die Erstellung von Webservices in Scala interessant sein.

scalaforandroid – Scala for Android. Und der Vollständigkeit halber auch ein Projekt zur Erstellung von Android-Anwendungen mit Scala. Scala braucht zwar auch eine große eigene Runtime-Library, aber in scalaforandroid wird ein Treeshaker (Proguard) eingesetzt, der bei der Paketerstellung nur die benutzten Klassen der Library überträgt und so das Volumen klein hält.

Typesafe Stack ist eine Distribution von Scala (2.9.0) und Akka (1.1, ein Actor-Framework für Scala mit diversen Tools zur Programmierung von verteilten Lösungen in Scala) zur einfachen Installation. Zusätzlich wird da noch auf sbt und Scala IDE for Eclipse (Beta der Version 2 nehmen, da diese komplett neu ist und die 1er nicht mit Scala 2.9.0 tut und auch nicht besonders gut ist) als Ergänzung hingewiesen. Installer gibts für Windows, OSX und Linux (man kann natürlich auf allen auch irgendwie selber installieren, aber mancher mag ja lieber normale Installationswege). Und wer will kann dort Support kaufen – und der Laden gehört Odersky, dem Scala-Erfinder und JVM-Sprachen-Guru. Eigentlich könnte Odersky auch gleich noch sein  Buch über Scala-Programmierung als PDF mit reinwerfen (in der ersten Auflage ist das auch frei).

Mixing it up: when F# meets C#. Da man ja nie in einem abgeschlossenen Raum programmiert, sind die Verbindungen zwischen Sprachen recht wichtig – und besonders auf Plattformen wie .NET und JVM. Die Abbildungen von F# Datentypen auf C# Datentypen und die Nutzung dieser sieht recht interessant aus. C# Daten von F# nutzen ist ja trivial, aber umgekehrt gibt es schon einige Besonderheiten. Eine Ähnliche Situation gibt es ja auch bei Scala und Java.

Scala 2.9.0 RC3 | The Scala Programming Language. Hmm, speziell die parallel collections klingen interessant – sozusagen map/reduce für Multicore auf lokale Datenstrukturen.

Jess, the Rule Engine for the Java Platform. Falls man mal eine Rules-Engine für Java braucht, Jess basiert in den Ideen auf dem Kern von CLIPS, welches ja nun schon seit einiger Zeit existiert (so Mitte der 80er), integriert aber eben in die Java-Welt. Eine Alternative wäre da auch noch Hamurabi, einer in Scala geschriebenen Rules-Engine die mit einer integrierten DSL mit Scala-Sprachmitteln aufwartet.

Akka Project. Und das hatte ich definitiv schon mal auf dem alten Blog, aber egal, im Fernsehen wird auch dauernd alles wiederholt. Und bei Akka hat sich ein Haufen getan in der letzten Zeit und es etabliert sich immer mehr als die zukünftige Plattform für ausfalltolerante Systeme auf der JVM. Viele Parallelitäten in den Ideen mit Erlang, aber eben mit der JVM-typischen breiteren Plattform (gibt einfach kaum was wofür es nicht irgendeine Klassenbibliothek für Java gibt und damit auch für Scala). Sehr interessant: Akka bringt eine Implementierung von Software Transactional Memory für die Java-Plattform.

Programming Scala. Hatte ich glaub ich schon mal, aber egal: das zweite online frei verfügbare Buch über Scala, über das ich heute gestolpert bin. Kann man ja auch gegenlesen mit dem anderen, ist aber auf ähnlichem Sprach-Stand (also vor 2.8).

ScalaQuery. Ja, Scala-Day heute. Eine der Sachen die mir bisher fehlten war eine gute Integration von Datenbanken, die von den DSL-Features und der Typsicherheit von Scala auch Gebrauch macht. Also nicht einfach nur per JDBC SQL durch die Gegend schicken, sondern sowas wie LINQ, nur eben für Scala. Das hier sieht schon recht nett aus.

Programming in Scala, First Edition. Und weil ich gerade Scala habe: die erste Auflage von Programming in Scala ist jetzt frei im Web verfügbar. Natürlich fehlt einiges das mit der aktuellen Scala-Version reingekommen ist (speziell die Container-Libraries sind ja doch anders in 2.8), aber um in die Sprache reinzulesen ist das trotzdem sicherlich ein guter Startpunkt.

Scala IDE for Eclipse. Hmm, so langsam scheinen die Werkzeuge sich dort zu entwickeln. Ich habe ja grundsätzlich nichts gegen Kommandozeilen und bin auf denen viel mehr zu Hause als in IDEs, aber für die allgemeine Akzeptanz von Sprachen sind IDEs dann doch recht praktisch. Und Scala ist immer noch eine der interessanteren Sprachen im JVM Umfeld, auch wenn es in der letzten Zeit recht ruhig darum geworden ist.

hotzen/ScalaFlow liefert eine sehr interessante Erweiterung zu Scala: dataflow Programmierung mit automatischer Auflösung über Continuations – man definiert Variablen, kann auf Variablenwerte zugreifen bevor denen Werte zugeordnet sind und das System selber sortiert alle Zugriffe und Zuweisungen in die passende Reihenfolge. Besonders interessant als Basis für parallelisierung, wenn partielle Bereiche eben sich erst später ergeben aber entsprechende Bearbeitungen vorher schon definiert werden sollen. Dataflow-Sprachen finden bei mir seit Prograph Interesse, die Integration in eine normale Sprache als Basis könnte durchaus interessant sein.

A Type-Safe Database Query DSL for Scala. Klingt interessant, ein bischen etwas zwischen LINQ und ORM für Scala. Sollte ich mir mal angucken wenn ich aus der Kälte zurück bin.

Monads Are Not Metaphors – Code Commit. Definitiv eine der besseren Erklärungen was ein Monad ist, die ich gelesen habe.