• [^] # Re: Retourne à la raison!

    Posté par . En réponse au journal Retour aux sources. Évalué à 5.

    Référence ou pointeur ?

    Un pointeur indique un emplacement mémoire. Il peut être nul (nullptr). Une référence indique un objet. Elle ne peut pas être nulle.
    Certes, on peut maladroitement produire des références à partir de pointeurs invalides ou nuls, donc dans le fond ce n'est qu'un déguisement.
    Néanmoins l'information est bien là. C'est un peu comme un argument de fonction qui serait un uint et pas un int.
    De plus, cela permet techniquement un maniement un peu plus fin sur les lvalue, rvalue, prvalue du programme, comme avec l'opérateur && (qui n'est pas une référence de référence : quel agréable choix de symbole...) .
    Un pointeur est un outil assez bourrin. Efficace mais peut-être trop direct ?

    Les smart pointers ont un objectif assez différent, plutôt orienté gestion mémoire partagée. Je ne suis pas convaincu qu'on puisse les faire rentrer dans une question autour de la pertinence des références.

    Liberté

    Dans le fond, ce que tu reproches à C++, c'est de ne pas assez restreindre le développeur, c'est ça ?

    Même si des aspects de C++ comme les exceptions ou les templates sont objectivement maladroits, dans le fond, est-ce vraiment grave ?
    On peut toujours s'en passer et coder uniquement avec des codes de retour d'erreur et des pointeurs, s'en tenir à du "C Objet".

    Parce qu'après tout une exception sécurisée est assez peu rentable.
    Et comme on aura toujours moyen de bousiller un programme malgré des références, autant utiliser des pointeurs pour garder un programme simple. Et ce serait pertinent.

    Un développeur maladroit fera toujours de la merde, même avec un langage prison.
    Y aura toujours moyen de corrompre un jeu de données, outrepasser la limite d'un conteneur, faire une division par zéro... Peu importe le langage !

    C++ est une drôle de connerie inutilement compliquée, mais il ne faut pas non plus lui mettre sur le dos l'éventuelle incompétence des programmeurs.