Martin Odersky heeft in een blog een aantal levels van Scala aangegeven. En deze invalshoek is om meerdere redenen interessant. Hij maakt onderscheid tussen application developer en library designer en geeft voor beide 3 niveaus aan. Zie www.scala-lang.org/node/8610.
Wat hier onderwijskundige interessant is het feit dat je niet de hele taal hoeft te kennen om er mee te kunnen werken. Tot nu toe is het zo dat programmeurs eerst de taal leren en een examen doen. De examens gaan altijd over de gehele taal. Deze Scala levels suggereren een andere invalshoek.
Bij het geven van Java trainingen heb ik eenzelfde verschijnsel ervaren. Java is een veel simpelere taal, maar ook daar is een onderscheid tussen application developer en library designer te maken. In trainingen die niet voor een examen opleiden; ligt als vanzelf de nadruk op het toepassen van bibliotheken en frameworks. Hiervoor is de kennis van een beperkt deel van Java nodig. Het voordeel van deze aanpak is. Dat beginnend programmeurs vanuit een probleemstelling via een bibliotheek naar java code gaan. Zodat in hun hoofd een repertoire van use cases ontstaan met daarna geassocieerd een bibliotheek en benodigde java code.
Op die manier worden alleen die syntax elementen geoefend die toegepast worden. Zodat op een natuurlijk wijze een onderscheid ontstaat tussen veel gebruikte en weinig gebruikte taalelementen. Hetzelfde geldt voor kennis van bibliotheken.
Deze invalshoek kun je uitbreiden naar andere programmeertalen. Je begint bij een probleemdomein zoekt daarbij een oplossingstrategie en zoekt vervolgens een bibliotheek die het beste past. Het kan zijn de bibliotheek c.q. framework niet in java geschreven is. So what ... Dan leert je die taalelementen die je nodig om het framework te kunnen gebruiken.
Wat je nu al ziet gebeuren dat bibliotheek bouwers een taal kiezen die hun probleem het beste oplost. (Erlang, Clojure, Scala, ...) En die worden dan verstopt achter een servicelaag met berichten met JSON als datastructuur.
Dan hoef je hun taal niet te spreken. Je moet alleen de concepten en berichten leren kennen.
Een ander verschijnsel is dat bibliotheken steeds minder in Java geschreven worden. Java wordt een taal voor application developer en Scala wordt meer en meer de taal voor library designers.