Je partage l'avis des participants précédent sur le fait qu'il y a trop de nouveaux langages, mais ça a été assez répété et il est dommage qu'il n'y ait pas davantage de commentaires sur Ceylon lui-même dans ce thread.
En lisant le tutoriel, je vois deux choses qui me sautent aux yeux.
value rndValue = Math.random()
Je déteste. Si on vient par la suite modifier l'expression et qu'on renvoie un type de valeur différente, le compilateur ne se mettra pas à hurler au meurtre comme il le devrait. En règle générale, je fais une allergie totale aux langages qui permettent de déclarer une variable (ou quoi que ce soit) sans préciser son type. 12 + 34 = 1234, mais bien sûr.
1 2 3 4 5
| String? name = process.arguments[0];
if (exists name) {
String notNullable = name;
print("hello " + notNullable);
} |
J'adore. On voit très clairement quelles variables peuvent être null ou non. Permet d'éviter les NullPointerException, évite d'avoir à lire la doc / le code source d'une librairie pour savoir si la valeur de retour ou les paramètres peuvent être null. Le tout avec une syntaxe à la fois concise et lisible. D'autres langages interdisent les valeurs null, ce qui évite aussi les NullPointerException, mais complique l'écriture de valeurs vides.
Sans surprise, il y a du bon et du mauvais. Malheureusement, le mauvais l'emporte. "value" est beaucoup, beaucoup trop dangereux à mes yeux. Il ne peut pas être utilisé pour le type de retour / les paramètres d'une méthode, on évite donc la catastrophe... Mais l'alternative, c'est Java : il va falloir faire mieux pour le concurrencer.
Ce n'est bien sûr que mon opinion personnelle. Je remarque que beaucoup de ces langages qui veulent devenir le successeur permettent cette bouse abominable de déclarer une variable sans préciser son type. Ça peut être adapté pour un langage de script dont les codes ne sont pas destinés à faire plus d'une vingtaine de lignes, mais ça ne convient pas à un langage destiné à créer des applications complexes destinées à être maintenues des années.
Partager