• [^] # Re: Ouai bof

    Posté par . En réponse au journal Gestion de l'erreur - C++ - std::optional. Évalué à 1.

    Beaucoup des langages (tous?) qui gère les union types à paramètre gèrent celaen natif. On pense en premier lieu aux langages fonctionnels (Haskell, OCaml ...), mais on peut aussi penser à Rust qui intègre le type Option dans sa librairie standard. Rust reprend beaucoup des principe du fonctionnel en son cœur même si il ne l'est pas.

    Dans ces langages, lorsque l'on fait appel à une fonction qui retourne un tel type, on est obligé de gérer tous les cas (le compilateur nous y force). Par ailleurs un sucre syntaxique (pattern matching), nous permet de faire cela de manière concise. Ces langages fournissent aussi en natif des fonctions map, bind pour ces types.

    En gros ces types ont été transposés dans Java et C++, mais les compilateurs de ces derniers ne présentant pas les mêmes garanties, l'effet de l'utilisation de Optional est moins prégnant surtout en terme de possibilité de bug. Cependant, ça me parait tout de même utile ne serait-ce que pour la concision que ça apporte.

    La mode étant au pensons fonctionnel, beaucoup de ses principes sont transposés dans les langages populaires. Cependant, cela s'effectue toujours avec un perte de garantie et de sécurité car ces derniers n'ont pas été pensés pour faire du fonctionnel initialement.

    Quant à savoir pourquoi tout le monde s'obstine avec ces langages bâtards pour leur nouveaux projets n’ayant pas besoin de performances extrêmes, c'est un autre histoire...