Je dirais que ce n'est pas tant gagné que d'avoir cessé d'avoir de l'importance. ARM, qui constitue pratiquement tout le marché de la téléphonie mobile, est bi-endian (oh, l'hérésie!). Dans le sens où x86 a essentiellement "gagné" le marché des ordinateurs de bureau, je suppose que l’on pourrait dire que le petit endian a gagné mais je pense que compte tenu de la profondeur globale du code (peu profonde) et des abstractions (beaucoup) de nombreuses applications actuelles, c’est beaucoup moins un problème c'était l'habitude. Je ne me souviens pas que l’endianisme ait vraiment été abordé dans mon cours d’architecture informatique.
Je suppose que beaucoup de développeurs ne sont même pas conscients de l’endianisme ou de son importance. Parce que pour la grande majorité (et la vaste majorité), cela n’a absolument aucun rapport avec leur environnement de travail quotidien. C'était différent il y a 30 ans, lorsque tout le monde codait de manière beaucoup plus proche du métal, par opposition à la manipulation de fichiers texte sur un écran de manière fantaisiste et dramatique.
Je soupçonne généralement que la programmation orientée objet était le début de la fin de la gestion de l’endianisme puisque les couches d’accès et d’abstraction dans un bon système OO masquent les détails d’implémentation de l’utilisateur. Comme la mise en œuvre inclut l’endianisme, les gens s’y sont habitués, ce n’est pas un facteur explicite.
Addendum: zxcdw a mentionné que la portabilité était une préoccupation. Cependant, qu'est-ce qui a surgi avec vengeance au cours des 20 dernières années? Langages de programmation construits sur des machines virtuelles. Bien que l’endianité de la machine virtuelle puisse avoir de l’importance, elle peut toutefois être très cohérente pour cette seule langue au point qu’il s’agisse essentiellement d’un problème. Seuls les développeurs de machines virtuelles devraient même se soucier de l’endianisme du point de vue de la portabilité.
Ingénieur du monde
la source
x & 0xFF
vous donne toujours l'octet le moins significatif, quel que soit le classement final (en supposant que vos octets sont de 8 bits chacun) car vous avez spécifié les bits qui vous intéressent par leur valeur, pas leur position relative dans la mémoire.Endians ne compte vraiment que lorsque vous transférez des systèmes de données binaires.
Avec l’avancement de la vitesse du processeur (et le coût de stockage beaucoup plus bas), les interfaces de données binaires deviennent de plus en plus rares, vous ne les remarquerez donc plus au niveau de la couche application. Vous utilisez un format de transfert textuel (XML / JSON) ou une abstraction de couche de données prenant en charge la traduction pour vous (pour que vous ne remarquiez même pas qu'il existe une traduction).
Mais lorsque vous codez au niveau de la couche de données binaires, vous remarquez que c'est très important. Par exemple, lorsque je travaillais chez VERITAS (Symantec maintenant), je construisais un logiciel qui était construit sur 25 plates-formes matérielles différentes (il n’ya pas que les grands / petits endians, il en existe d’autres).
la source
(char) (x & 0xFF)
en C vous donne l'octet le moins significatif indépendamment des problèmes finaux, en supposant que l'octet est de 8 bits. J'ai conçu des formats de fichiers binaires sans connaître les machines sur lesquelles le logiciel serait exécuté - j'ai essentiellement choisi un ordre final pour le format de fichier sans me soucier du matériel.Non, personne n'a gagné. En tant qu'espèce, nous n'avons pas réussi à normaliser l'ordre dans lequel nous stockons nos octets, ainsi que la direction que nous écrivons et le côté de la rue où nous conduisons.
Par conséquent, quiconque souhaite transférer des données entre deux systèmes différents sur un réseau ou dans un fichier n'a que 50% de chances que la version initiale raisonnable de son code de sauvegarde des données soit correcte dans son environnement, et même si cela fonctionne. , a 50% de chances de travailler chez leurs clients.
Pour gérer cela, vous devez rechercher des fonctions spécifiques à la plate-forme portant des noms tels que "htonl" dans des en-têtes dont les noms remontent évidemment aux années 70, telles que "arpa / inet.h", car la situation ne s’est pas améliorée depuis et ne le sera probablement jamais. .
la source
Il n'y a toujours pas de consensus:
Donc, au niveau du matériel, LE est beaucoup plus commun. Mais:
Les deux commandes seront avec nous dans un avenir prévisible.
la source