• [^] # Re: Jai: Language for game programmming

    Posté par . En réponse à la dépêche C++17, Genèse d’une version mineure. Évalué à 2.

    Exemple de conversion de type qui doit être explicite sous peine de voir le type checker te foutre une baffe — pour reprendre l'expression de barmic.

    (* l'opérateur infixe +. exige deux paramètres de types float *)
    (+.);;
    - : float -> float -> float = <fun>
    (* si on lui donne un int, il proteste ! *)
    1 +. 2.3;;
    Error: This expression has type int but an expression was expected of type float
    (* il faut faire une conversion explicite *)
    float_of_int 1 +. 2.3;;
    - : float = 3.3

    Ce qui ne semble pas être le cas du C++, si j'en crois ce commentaire de Guillaum (développeur C++ expérimenté) :

    Aller, j'en ajoute (C++ est mon outil de travail 8h par jour depuis plus de 10 ans) en me focalisant sur les problèmes qui m’embêtent vraiment au quotidien et pour lesquels il n'y a pas de solution simple. J'essaye de rester objectif ;)

    • Les casts implicites. Plus particulièrement le fait que les flottants, les ints, les bools, les enums, et j'en passe, c'est la même chose. Le downcast implicite d'une classe vers une autre. Je sais que c'est la philosophie du langage. Combien de fois je me suis fais manger par un int négatif convertit en unsigned...

    [...]

    C'est moi qui graisse. :-)

    Et je le comprends : faire de la conversion de type sans l'accord explicite du développeur, ça ne devrait pas être permis ! C'est quoi ces compilateurs qui prennent des décisions qui affectent la sémantique du code dans le dos du programmeur ?

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.