En réponse au
topics/111699-informatique-et-high-tech-les-meilleures-news/1005#post-30146 , vu que le sujet est plus approprié.
Godzil (./30146) :
"fn" pour dire qu'on a affaire a une nouvelle fonction (autant mettre fonction non? on est plus a 40col depuis 40 ans)
Godzil (./30146) :
(comme "let mut" pour dire qu'on déclare une variable qui peux être "mutated" (oui hein écrire parce que "mutated" au complet c'est trop chiant))
C'est un problème de raccourcir les mots clés ultra courants? Pour moi c'est pas du tout indispensable mais quand même bien pratique.
Godzil (./30146) :
et le -> pour donne le type de retour est un choix TRES TRES malheureux.
Un peu contradictoire avec ton point précédent. Tu t’embête certainement bien plus à écrire "function" et "mutable" en entier que "->". Et franchement on a pas a écrire le type retour d'une fonction assez souvent pour que je trouve que ce soit un problème.
Godzil (./30146) :
le prototype de fonctions classique a la C/C++ marche tres bien, pourquoi forcement vouloir inventer des trucs tout sauf pratique?Et ça ne rends pas le code concrètement plus lisible, au contraire je trouve.
Ça te choque surtout probablement à cause de l'habitude. Ça me paraissait bizarre au début mais, une fois que je m'y suis fait, je trouve ça beaucoup mieux, c'est beaucoup plus lisible on reconnait au premier coup d’œil les déclarations dans un code vu qu'elles commencent par un mot clé.
De toute façon, encore une fois pour moi c'est vraiment du détail.
Godzil (./30146) :
Pitié non... Rentre "return" optionel.... sérieusement? Il se sont dit tiens on tape trop de caractères donc on va faire qu'on puisse en taper moins?
Non c'est plutôt pour permettre de faire des chose du genre:
let x = if condition {
toto();
42
} else {
0
}
notamment avec les lambda, ça permet de faire des trucs quand même bien moins chargé.
Godzil (./30146) :
Genre je fait appel a la fonction toto qui fait unTruc© et retourne la valeur 42, je fait :
fn factorial_recursive(n: u32) -> u32 {
if n <= 1 {
toto()
1
} else {
n * factorial_recursive(n - 1)
}
}
Ben je me bouffe un 42 a la place de 1? C'est beau hein!
Non tu vas avoir une erreur de compilation, car tu as deux expressions à la suite sans opération entre elles. Les instructions non retournées se terminent par un point virgule.
Godzil (./30146) :
En plus le typage n'a pas l'air d'etre du typage fort vu qu'on peux definir des variable sans dire explicitement le type, c'est plutot contre-indique pour faire du système ça..
Globalement le typage est bien plus strict que C et C++, il n'y a notamment pas de conversion implicites.
Le typage des variable et lambda peut-être implicite, certes, mais c'est tout. Partout ailleurs, il faut préciser le type, ce qui limite le risque d'abus, contrairement à l'auto de C++.
Godzil (./30146) :
Non désolé, je ne peux pas prendre se langage au sérieux.
Bah franchement tes arguments me paraissent très superficiels et uniquement sur des points de la syntaxe, pour arriver a une conclusion aussi péremptoire. Un langage c'est quand même bien plus que ça.