Je trouve que Scala a fait quelques choix vraiment curieux.
Pour ne faire aucune exception de syntaxe pour les opérateurs classiques (+, *, …), ils ont établis quelques règles :
* *, +, -, … sont des noms de méthode comme les autres
* quand une méthode ne prend qu'un argument, on peut supprimer . et () (au lieu d'écrire instance.methode(argument), on peut écrire instance methode argument ).
Comme ça, on a instance * argument == instance.*(argument). Ok, mais « instance methode argument » n'est pas très lisible.
Les [] sont réservés pour les types. Bon, pourquoi pas, mais c'était quand même bien pratique pour les tableaux. On se retrouve à devoir écrire tableau(index) = valeur, qui a la même syntaxe qu'un appel de fonction… À nouveau, je trouve ça moins lisible

Un autre truc qui manque (et qui est purement du sucre syntaxique), c'est le slicing à la Python.
On se retrouve à devoir faire
val l = tableau.length
val soustableau = tableau.slice(l - 5, l - 1)
au lieu de soustableau = tableau[-5; -1]
mais bon, ça reste mieux que Java
