Oh my my, la citation du jour sur Scala et Kotlin :
Kotlin is much like Scala, just without the shitty parts... Whiiiich I guess makes Kotlin nothing like Scala.
Quand vous avez fait du Scala et du Kotlin, vous ne pouvez pas vous empêcher de rire tellement c'est vrai.
Comme certains le savent peut-être, je vais changer la structure juridique de ma société et je me renseigne sur les différents types de sociétés possibles, principalement dans un cadre avec plusieurs associés. Ce soir je découvre les Société en Nom Collectif (SNC).
Pourquoi est-ce que je vous en parle ?
Tout simplement parce que le phrasé du Code Civil expliquant la responsabilité du Gérant d'une SNC est juste à vomir de complexité. Je vous en cite une ligne (bonne soupe) : "1382 du Code Civil : Tout fait quelconque de l'homme qui cause un dommage à autrui oblige celui par la faute duquel il est arrivé à le réparer."
Indigeste n'est-ce pas ? Ponctuation, tournure, sémantique, rien n'est simple. À noter qu'une phrase similaire, toujours en français j'aime-me-caresser-le-pistil mais qui serait déjà plus abordable, donnerait : "Tout auteur d'un dommage causé à autrui doit en réparer le préjudice."
Sachez que le mouvement des #GiletsJaunes revendique justement le RIC (Referendum d'Initiative Citoyenne) et l'une des raisons pour lesquelles cet outil politique est indispensable, c'est qu'il contribuera à l'éclaircissement du droit puisque ce dernier y serait écrit par des "gens simples pour des gens simples".
Dit autrement, le Code Civil actuel, c'est du putain de code Scala obfusqué ! Seule une infime partie de la population kiffant cette merde continue désespérément de défendre une immondice en terme de complexité et de charge cognitive (et je dis cela en adorant Kotlin, Rust et TypeScript hein).
Certaines personnes ont le besoin de se créer une charge mentale, ou plutôt de générer une charge mentale aux autres, pour se sentir plus fortes ou meilleures que leur prochain. Je pense que certains juristes et certains scalaïstes partagent ce triste point commun.
Une appli écrite en 4 fois en :
- Java
- Groovy
- Kotlin
- Scala
La comparaison du readme est très appréciée.
Un humain de sexe masculin peut fort bien être une recrue, une vedette, une canaille, une fripouille ou une andouille. De sexe féminin, il lui arrive d'être un mannequin, un tyran ou un génie. Le respect de la personne humaine est-il réservé aux femmes, et celui des droits de l'homme aux hommes ? Absurde ! Ces féminins et masculins sont purement grammaticaux, nullement sexuels.
J'abonde : la remarque est pertinente.
L'écriture inclusive et tous ces effets cosmétiques autour du langage font croire que les choses changent ; pourtant la stratégie est simple, modifions la surface d'un problème mais surtout laissons-le intact en profondeur, les faibles auront l'illusion d'avoir remporté bataille tandis que les forts préserverons leurs privilèges.
Le racisme a-t-il disparu depuis que les mots nègres, bougnoules, youpin, niakwé & co ont disparu du langage (j'entends par là, des journaux, de la télévision, des radios, des magazines, des affiches, de la publicité, des jouets, etc) ? Non, certains partis politiques (dois-je préciser français) fondent même leur programme dessus ! Mais sur quoi me direz-vous ? Sur l'idée, ce concept, cette croyance exprimant que la couleur de peau, l'origine, l'orientation sexuelle, la maladie ou encore la religion déterminent la valeur des hommes et leur importance dans la société ; en ce sens qu'ils ont eu la bonne idée d'être bien nés.
Le véritable combat ne serait-il pas l'explication et la diffusion d'autres valeurs "morales" ? Le véritable combat ne serait-il pas d'admettre que nous vivons dans un système de prédation totale et que celui-ci écrase, méprise, domine et achève quiconque s'opposerait à lui ; ceci par tous les moyens possibles, en permanence, pour que d'autres - l'extrême petit nombre - préserve l'ensemble de ses avantages ?
Notre société civile ne facilite pas l'oppression, elle est l'oppression ; le langage n'est pas l'oppresseur, les individus qui oppressent sont les oppresseurs. Un couteau ne tue pas, c'est l'homme qui tue en se servant d'un couteau, le langage n'exclut pas, ce sont les individus qui excluent en se servant du langage. Voyez-vous la différence ?
Prôner l'égalité black/blanc/beurre sur des termes moraux est la chose la plus clivante qui soit ; et ne pas se soucier des injustices en termes de richesse, de partage, de solidarité et de respect, je trouve cela abscons et stupide car elles sont à l'origine du premier problème.
Ne me faites pas dire ce que je n'ai pas dit, je sais que les LGBTx souffrent mais il faut s'atteler à corriger la cause des causes et non le reste. Pour info (et ce sujet étant tellement brûlant) je me dois de préciser que je n'ai pas écrit LGBTx pour me moquer des "x", il faut savoir qu'il existe les LGBTI, LGBTA, LGBTQ ou encore LGBTP. Nous devrions donc écrire quelque chose comme LGBTAIQPT afin "d'inclure" vraiment tout le monde parce que l'idée est là, il faudrait en permanence inclure chacun individu dans sa différence à chaque instant de chaque discours... Seriously...
En fait, l'écriture inclusive me fait penser au langage Scala. L'idée semblait bonne au début : incorporons tous les paradigmes dans le même langage afin que chacun puisse l'utiliser à sa guise. Puis, faisons de chacun des cas particuliers, de chacune des exceptions de chaque paradigmes, une règle générale à appliquer systématiquement, tout le temps et pour tout le monde quelque soit le contexte.
Que se passe-t-il ? Cela revient à penser à protéger son code de problèmes comme la variance, co-variance et contra-variance qui ne posent réellement problème que lorsque le code amoncelle une quantité faramineuse de très mauvaises pratiques. Bref, le cas hyper particulier à gérer exceptionnellement devient chose commune.
Et que se passe-t-il à la fin ? À l'intérieur de Scala il y a les scalaïstes objets, les scalaïstes fonctionnels, les scalaïstes évènementiels, les scalaïstes procéduraux, etc. Et plutôt que de rassembler, la communauté a morcelé Scala pour refléter sa propre nature : les uns ne sont pas les autres.
La solution réside dans l'apprentissage de l'acceptation de l'autre, par dans l'interdiction de s'exprimer avec des mots et au travers de la grammaire.
Je ressors ce post qui date d'il y a 3 ans (septembre 2014) et il faut l'avouer, la communauté Scala semble être vraiment d'une mauvaise foi redoutable !
Qu'est-ce qui me permet de dire cela ? Regardez cet extrait (et il n'est pas le seul) :
// Java:
List<Integer> ints = new ArrayList<Integer>();
for (String s : list) {
ints.add(Integer.parseInt(s));
}
// Scala:
val ints = list.map(s => s.toInt)
Pour rappel, Java 8 est sorti en MARS 2014, soit près de 6 mois AVANT cet article. Le mec compare encore Java 6 qui passait en support étendu à Scala et non Java 8 qui était ce que le langage savait faire de mieux.
Deux remarques :
1) Le code Java présenté est falacieux puisque le mec instancie sa liste en Java mais pas en Scala histoire de gratter quelques lignes.
2) Que pense-t-il de ce code Java 8:
// En considérant que la variable ints existe, sinon il faut ajouter List<Integer> devant :
ints = list.map((s) -> parseInt(s));
Bref, de la pure mauvaise foi. Cela fait quelques semaines que je me suis mise à Scala et non seulement les arguments de la communauté Scala par rapport à Java 8 ne tiennent pas debout, mais l'ensemble des outils, des libs, des éditeurs, bref l'ensemble de l'éco-système Scala est misérable à côté de Java. Les temps de build sont atrocement longs (et je pèse mes mots, passer de Java 8 à Scala multiplie littéralement vos temps de build par 300 ; de quelques secondes à quelques quarts d'heure). Pis encore, vos libs ne seront plus compatibles d'une version du compilateur à une autre (seriously, un langage ose encore péter la compatibilité du bytecode en 2017 , dafuq les mecs !???)
Enfin, au vu des features de Java 8, il n'y a aucune raison valable de passer de Java 8 à Scala SAUF, si vous êtes un aficionados de la programmation fonctionnelle pure (qui reste une immense connerie d'académiciens AMHA).
En parallèle je suis en train de me mettre à Kotlin, et par rapport à Scala, c'est le jour et la nuit.
La syntaxe est meilleure que Java ET Scala (toujours de mon point de vue, peu de symboles obscur mais des mots-clefs simples et clairs, le paradigme Objet domine mais laisse place de manière pragmatique au paradigme Fonctionnel, les temps de builds sont semblables à ceux de Java 8, la compatibilité avec les versions plus anciennes de Kotlin est garantie et les binaires générés depuis un code Kotlin peuvent être utilisez de Java 6 à Java 8 et vice et versa ; sans parler de l'écosystème, de la doc et des IDE, des outils de build qui sont les mêmes qu'en Java 8.
Bref, je maintiens, Scala est un langage d'académiciens fait par des académiciens pour des académiciens, il est particulièrement difficile de couvrir des besoins industriels sérieusement avec quelque chose d'aussi peu mature.
En espérant en avoir aidé certains et agacé d'autres.
Pourquoi Scala c'est de la brave merde. Bon j'adore les deux premiers arguments qui résument à mon sens tous les problèmes de ce langage :
- Il y a plusieurs meilleures façons de faire quelque chose (donc vous devez connaître toutes les syntaxes et paradigmes pour chacune des choses à faire, et il y en a un bon paquet à chaque fois).
- Tout y est implicite, rien n'y est explicite (donc vous devez "deviner").
Je fonce sur celui parlant de TypeScript