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.
scala
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.
Kojo Home - eine Umgebung ala Processing mit Scala als Scriptsprache. Sehr interessant, weil es wie Processing auf mehreren Plattformen läuft, schnell visuelle Ergebnisse liefert aber nicht auf Java aufbaut, sondern auf einer modernen Multiparadigmensprache. Ausserdem bietet es gleich vom Start weg eine kleine Schildkröte wie in Logo an. Schildkröten sind cool.
Squeryl - das sieht sehr interessant aus, erinnert stark an LINQ (was nicht unbedingt schlecht ist, auch wenns von Microsoft kommt). Es macht auf jeden Fall Sinn die Features von Scala zu benutzen um einen ORM zu bauen, der deutlich über normale Java ORMs hinaus geht.
twitter's gizzard - könnte mal interessant werden, ein Framework zur Verteilung und Replikation von Daten über verschiedenste Backends. Gizzard kümmert sich ausschließlich um das Sharding und die Replication, der Datestore selber wird davon losgelöst behandelt, ist daher für verschiedenste Szenarien interessant.
Scala: Post-Functional, Post-Modern, or Just Perl++? - interessanter Post der einige der Punkte aufgreift die mich auch bei der Betrachtung von Scala stören. Ich mag besonders die Bezeichnung als Perl++, denn das ist genau der Eindruck der sich mir aufdrängt immer wenn ich in Scala tiefer einstiege. Auch Perl hat mich immer fasziniert, aber spätestens als ich größere Projekte damit gebaut habe und die advanced Features von Perl intensiver benutzt habe, kamen mir dann doch so einige Zweifel über die Wartbarkeit des Ergebnisses - ganz besonders unter dem Aspekt die Arbeit einem meiner Kollegen zu übergeben für die weitere Betreuung. Damals habe ich den Wechsel zu Python durchgezogen, weil es mir viele der Features in einem wesentlich saubereren Sprachkonzept geboten hat. Ich glaube das könnte auch erklären warum ich mit Scala einfach nicht warm werde, auch wenn vieles davon mich fasziniert.
Squeryl — Introduction - das müsste ich auch mal angucken, denn von den bisherigen Persistenz-Layern für Scala war ich nicht so begeistert. Und gerade für erste Experimente will ich eigentlich nicht gleich eine Webanwendung mit Lift bauen, sondern vielleicht einfach nur mal ein paar Tools die ich bisher anders gelöst habe mit Scala neu schreiben.
Scala 2.8.0 Beta 1 | The Scala Programming Language - Scala macht sich auch fertig für die nächste Release. Die Erweiterungen und Änderungen klingen recht gut - und der Impact auf bestehende Sourcen scheint gering zu sein.
A Postfunctional Language - in letzter Zeit gibts häufiger mal Diskussionen, ob Scala wirklich eine funktionale Sprache ist. Hier die Aussagen dazu vom Erfinder von Scala selber, Martin Odersky.
Introducing Akka - Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Actors - schöner Überblick über ein recht interessantes Projekt in Scala (hab glaub ich schon mal drauf gelinkt) das STM, distributed Actors und das Erlang Supervisor Modell für Scala liefert. Sollte ich mir unbedingt mal angucken.
ScalaCheck User Guide - interessanter Ansatz für ein Unittest-Tool. Basiert auf den Ideen von QuickCheck für Haskell. Mir gefällt vor allem der Ansatz Tests als Eigenschaften zu deklarieren und dann Zufallsdaten (oder kontrollierte Testdaten) zu generieren und zu gucken ob diese Eigenschaften tatsächlich passen. Das ganze passt besonders gut zu rein funktionalem Code, da durch fehlende Seiteneffekte Funktionen sehr viel einfacher mit Zufallsinputs testbar sind.
technically.us Git - sling.git/blob - project/build/AssemblyProject.scala - nette kleine custom task für sbt um standalone-jars zu erzeugen.
Play framework - ein recht interessantes Framework für Java im Stile von Django oder Rails. In der Dev-Version 1.1 unterstützt es auch Scala für die Viewfunktionen, was dann wieder ganz interessant ist, denn egal wie nett das Framework ist, ich werd mir nicht Java roh antun.
alandipert's step - ein Pico-Framework für Websites-Dengeln mit Scala. Sieht ganz witzig aus gerade für einfache REST Webservices in Scala.
Enterprise scala actors: introducing the Akka framework - klingt ein bischen wie OTP (die Serverplatform für Erlang) für Scala. Könnte sehr interessant werden, mal beobachten.
ScalaCL: Reap OpenCL’s benefits without learning its syntax (Scala DSL for transparently parallel computations) - und wer mal mit OpenCL spielen will, der wird hier fündig, ganz ohne sich in die Hardware-Tiefen hinabbegeben zu müssen.
Spde - und dann gibts auch noch eine Verquickung von Scala und Processing. Ebenfalls recht interessant zum Rumspielen.
Neat Graphics with Scala Processin - genau das richtige um mal mit Scala rumzuspielen, eine Processing-Version in Scala statt Java, aber mit dem ganzen Grafik-API.
robey's kestrel at master - loosely ordered, reliable message queueing. In Scala. Klingt sehr interessant, könnte für einige Projekte brauchbar sein, zumal es einfach das memcache Protokoll als Zugang benutzt, so dass schon viele Clients für verschiedenste Sprachen verfügbar sind. Scala und sein Umfeld an Projekten wird immer interessanter für mich.
simple-build-tool - ein interessantes Build-Tool für Scala, das nicht auf XML-Orgien aufbaut. Maven find ich irgendwie erschreckend monströs - und ganz ehrlich, das Editieren von XML-Files betrachte ich als Zumutung.
Dev Thoughts: Scala: Program like you mean it. - interessanter Artikel über einige der netten Seiten von Scala.
Dispatch → Guide - Library zum Zugriff auf Webservices (RESTful) aus Scala.
NetBeans 6.7 setzt Fokus auf Maven- und Kenai-Integration - im Zuammenhang mit der Scala-Unterstützung für Netbeans (leider noch nicht für die aktuelle Version) könnte es auf Dauer interessanter als Eclipse für mich sein.
scala.xml - wie man mit Scala XML verwurstet (recht interessant, Scala kann direkt XML einbetten in den Source)
Lift Web Framework - für Scala. Angelehnt an Ideen von Seaside, Rails, Django und Erlyweb. Klingt zumindestens gut.
The Scala Programming Language - klingt interessant. Nicht das es noch eine weitere Programmiersprache unbedingt braucht, aber diese hat einige interessante Ansätze und die wirklich glatte Integration in Java und .NET Welten hat einen echten Vorteil: die verfügbarkeit von vielen Bibliotheken. Ob allerdings der funktionale Charakter von Scala noch überlebt wenn man ihn mit diversen Java-Klassen verbindet?