KMeans

English →

Ik heb na lange tijd weer eens een Scala.js programma gemaakt, net als SillyWalks (zie Aan de slag met Scala.js) geprogrammeerd in Scala-3: KMeans.

Pleidooi

Ik ben heel enthousiast over Scala, inclusief de lectuur er over, de behulpzame sfeer en het hele ecosysteem. Dat ecosysteem is echter nogal eenzijdig gericht op professionals. Daar is op zich niets mis mee, maar de taal zou veel verwelkomender en populairder kunnen worden als beginners en hobbyisten beter zouden worden bediend.

Wat ik een beetje mis is het besef dat elke beginner begint bij het begin. Je begint je loopbaan niet met big-data, webservers, frontends, FP en concurrency, en allerlei bijbehorende frameworks.

Ik zou willen dat er veel meer zorg werd besteed aan instappers. Wat willen die?
In mijn ogen gaat het vooral om de niche van de vroegere Java-applets en Processing.
Iemand wil met niet teveel moeite een idee kwijt, liefst grafisch en in de browser: een algoritme, zoals hier KMeans, een spelletje, iets over jongleren.

Scala zou dan zeer geschikt zijn, maar de drempel is te groot. Je hebt Scala.js nodig. Maar zelfs het basisvoorbeeld daar, een Sierpinski-driehoek, start een webserver op: nergens voor nodig en complicerend.
Alles is er wel, bibliotheken en uitstekende boeken, maar ik mis (de aandacht voor) een hobbyistencommunity.

GUI’s (grafische gebruikers interfaces) krijgen ook niet de aandacht die ze verdienen.
Scala-Swing is uitstekend maar wordt verwaarloosd. Niemand die je bij de hand neemt bij het opzetten van een cross-compilatieproject JVM/JS in Mill of SBT, of misschien het kiezen voor of tegen ScalaFX, of weblibraries. Weinig boeken of artikelen die complete projecten beschrijven, of handreikingen geven voor de web GUI-omgeving.
Natuurlijk is alles te vinden op Github of StackOverflow, maar de drempel kan veel lager. Scala.js leent zich bij uitstek voor online-showcases (neem een voorbeeld aan Processing). Ze zijn er wel, maar het is niet bepaald enthousiasmerend. Ook op github word je meestal verondersteld een project te kloneren. Waarom niet standaard een link naar een werkende programma-webpagina, of sites met sprankelende voorbeeldapplicaties?


Plea

I’m very enthousiastic about Scala. The existing literature, the helpful atmosphere and the whole ecosystem included. That ecosystem however is rather one-sided focused on professionals. Nothing wrong with that, but the language could be much more welcoming and popular if beginners en hobbyists would be better served.

I’m missing the awareness that every beginner starts at the beginning. You don’t start your carreer with big-data, webservers, frontends, FP and concurrency, and acompanying frameworks.

I would like there to be more care for starters. What do they need and want?
I think that’s primarily the niche of the previous Java-applets and Processing.
Someone wants to express an idea with not too much trouble, preferably graphical and in the browser: an algorithm like KMeans here, a game, or some demo about juggling.

Scala would be perfectly suited for that, but the threshold is too high. You need Scala.js. But even the introducing example, a Sierpinski-triangle in this case, launches a webserver: a needless complication.
Everything you need is there, good libraries and excellent books, but I do miss (more attention to) a hobbyist-community.

GUI’s (graphical user interfaces) don’t get the attention they deserve.
Scala-Swing is excellent but is neglected. It is difficult to set-up Mill or SBT for a JVM/JS cross-compilation project, or find help in choosing for or against ScalaFX, or helpful weblibraries. There are few books describing complete projects, or giving guidelines for the web GUI-environment.
Of course, you can find it all on Github or StackOverflow, but the threshold could be much lower. Scala.js is ideal for online showcases (like Processing does for instance). They exist, but with few exceptions it is not very motivating. Also on github you’re mostly supposed to clone a project. Why is it not common to provide a link to a working program-webpage, or to sites with shiny functioning showcases?