Je pense qu'une idée fausse répandue parmi de nombreux développeurs Scala, ceux de l'EPFL (et vous-même, Kevin) est que "scala est un langage simple" . L'argument est généralement le suivant :
- scala a quelques mots-clés
- scala réutilise le même quelques constructions (par exemple Syntaxe PartialFunction est utilisé comme corps d'un bloc catch)
- scala dispose de quelques règles simples qui vous permettent de créer du code de bibliothèque (qui peut apparaître comme si le langage avait des mots-clés/constructions spéciaux). Je pense ici aux implicites, aux méthodes contenant des deux-points, aux symboles d'identification autorisés, à l'équivalence de
X(a, b)
y a X b
avec des extracteurs. Et ainsi de suite
- de Scala site de déclaration La variance signifie que le système de type s'écarte de votre chemin. Plus de jokers et de
? super T
Mon opinion personnelle est que Cet argument est complètement et totalement faux. . Le système de types de Scala, associé aux implicites, permet d'écrire code franchement impénétrable pour le moyennement développeur . Toute suggestion contraire est tout simplement absurde, indépendamment de ce que les "mesures" ci-dessus pourraient vous faire penser. ( Notez ici que ceux que j'ai vus se moquer de la non-complexité de Java sur Twitter et ailleurs sont des types très intelligents qui, semble-t-il, ont compris les monades, les foncteurs et les flèches avant même d'avoir quitté leur pantalon court. ).
Les arguments évidents contre cela sont (bien sûr) :
- tu ne le fais pas ont pour écrire un code comme celui-ci
- vous n'avez pas à vous plier au moyennement développeur
Parmi celles-ci, il me semble que seule la n°2 est valable. Que vous écriviez ou non du code aussi complexe que scalaz Je pense qu'il est tout simplement stupide d'utiliser le langage (et de continuer à l'utiliser) sans avoir une réelle compréhension du système de types. Sinon, comment tirer le meilleur parti de ce langage ?