Boekbespreking – Java Application Architecture – September 2013

Als er één programmeertaal is waarbij het lezen van een boek je enorm op weg kan helpen om de taal te leren, dan is het wel Scala. Van een JVM-taal verwacht je misschien veel (syntactische) gelijkenis met Java, maar bij Scala valt dat behoorlijk tegen.

Daarnaast is Scala als hybride taal (ondersteunt zowel het OO als het functionele paradigma) een erg uitgebreide programmeertaal en bevat het ook nog eens veel ‘syntatic sugar’, omdat de taalontwerpers het belangrijk vinden dat je dingen kort en krachtig kunt opschrijven. Allemaal aspecten waardoor je als beginner vaak geen touw kunt vastknopen aan code fragmenten die je onder ogen krijgt en het ‘al doende leren’ van Scala een behoorlijk frustrerende ervaring kan worden; iets wat je kunt voorkomen door te starten met een goed boek.

‘Scala for the impatient’ is een zeer toegankelijk boek, dat is opgebouwd uit zo'n twintig goed behapbare hoofdstukken, die zelden langer zijn dan 10 bladzijden. Het is echt bedoeld voor programmeurs die voldoende ervaring hebben in Java (of een vergelijkbare taal), en focust op wat in Scala anders is – zowel qua taal als qua gebruik. Aan de Scala library -een uitbreiding en deels vervanging van de Java JDK – wordt op wat uitzonderingen na weinig aandacht besteed.

Na een korte introductie worden eerst wat fundamenten gelegd (control structures, maps en tuples), waarna de blik gericht wordt op de kernelementen van Scala als OO taal: classes en objecten. Hier leer je de kernachtige syntax van Scala kennen, waar bijvoorbeeld het expliciet definiëren van class members niet nodig is omdat die impliciet gedefinieerd worden door de primary constructor, die qua code ook nog met de class verweven lijkt (goed voorbeeld van die op het eerste gezicht bevreemdende Scala-syntax). In plaats van static methods heeft Scala de object constructie, waarmee je een enkele instantie van een object creëert (een soort singleton), die gewoon methods en fields kan bevatten en zelfs code kan erven.

Het deel over OO wordt afgesloten met 2 hoofdstukken over inheritance en traits. Het eerste legt vooral uit wat anders is dan in Java, waar het laatste een krachtige taalconstructie introduceert die je onder de naam ‘mixins’ wellicht kent van andere talen: de mogelijkheid om een interface met implementatie te erven, wat weer een hele nieuwe dimensie geeft aan codehergebruik.

Vanaf hoofdstuk 11 verschuift de aandacht naar de functionele taalconstructies (higher-order functies, pattern matching). Daarbij natuurlijk veel aandacht voor de uitgebreide verzameling collection classes, die in een functionele taal een belangrijk basis vormen voor effectief gebruik van higher-order functies en tevens het fundament bieden voor functionele aspecten als immutability en lazy evaluation. Daarna volgt nog een achttal hoofdstukken over het type system, annotaties en wat meer specifieke of diepgravender onderwerpen – Actors mag als onderwerp natuurlijk niet ontbreken – maar voor het werken met Scala heb je hier de essentie al achter de rug en dan ben je pagina 200 nog niet eens gepasseerd.

Scala for the impatient is een geweldig boek, dat aantoont dat een goed boek niet per se dik hoeft te zijn. En verrassend genoeg gaat de beknoptheid niet of nauwelijks ten koste van de compleetheid. Het heeft me gaandeweg echt verbaasd hoe goed de ‘dekkingsgraad’ van dit boek is; alles wat je over Scala wilt of moet weten staat er in. Daarmee doet het boek dus niet onder voor de andere (lijvige) Scala boeken, de ‘bijbel’ van Martin Odersky zelf incluis. Het heeft zelfs mijn beeld van de taal veranderd: waar ik eerst van mening was dat Scala veel te groot en te ingewikkeld is om een main-stream taal te kunnen worden, vraag ik me nu af of de taal niet vooral lijdt onder die perceptie.

De volledigheid gecombineerd met de goede leesbaarheid en heldere uitleg maakt dat dit boek met kop en schouders boven de andere uitsteekt. Dat er richting het eind een paar hoofdstukken wat minder goed te begrijpen zijn mag de pret niet drukken. Wat mij betreft een echte aanrader, zeker voor degene die iets met Scala wil gaan doen, maar net zo goed voor de belangstellende die gewoon zijn horizon wil verbreden. 

Referentie

Titel: Scala for the Impatient

Auteur: Cay S. Horstmann

ISBN-13: 978-0-321-77409-5

ISBN-10: 0-321-77409-4

Uitgever: Addison-Wesley (2012)