Ich würde argumentieren, dass es nicht so sehr gewonnen als aufgehört hat, wichtig zu sein. ARM, das im Grunde genommen den gesamten Mobilfunkmarkt ausmacht, ist Bi-Endian (oh, die Häresie!). In dem Sinne, dass x86 im Grunde genommen den Desktop-Markt "gewonnen" hat, könnte man sagen, dass Little Endian gewonnen hat, aber ich denke, angesichts der allgemeinen Codetiefe (flach) und Abstraktion (viele) vieler heutiger Anwendungen ist dies weitaus weniger ein Problem als ich war. Ich kann mich nicht erinnern, dass Endianness in meiner Klasse für Computerarchitektur wirklich aufgetaucht ist.
Ich vermute, dass sich viele Entwickler nicht einmal der Endianness bewusst sind oder warum es wichtig ist. Denn für die große (und ich meine die große ) Mehrheit ist es für ihr tägliches Arbeitsumfeld völlig irrelevant. Dies war vor 30 Jahren anders, als jeder viel näher am Metall programmierte, als Textdateien auf einem Bildschirm auf ausgefallene und dramatische Weise zu manipulieren.
Mein allgemeiner Verdacht ist, dass die objektorientierte Programmierung der Anfang vom Ende der Sorge um Endianness war, da die Ebenen des Zugriffs und der Abstraktion in einem guten OO-System Implementierungsdetails vor dem Benutzer verbergen. Da die Implementierung Endianness beinhaltet, haben sich die Leute daran gewöhnt, dass dies kein expliziter Faktor ist.
Nachtrag: zxcdw erwähnte, dass die Portabilität Anlass zur Sorge gibt. Was ist jedoch in den letzten 20 Jahren mit aller Macht geschehen? Programmiersprachen, die auf virtuellen Maschinen basieren. Sicher, die Endianität der virtuellen Maschine ist wichtig, aber sie kann für diese eine Sprache bis zu einem Punkt sehr konsistent gemacht werden, an dem es im Grunde genommen kein Problem gibt. Lediglich die VM-Implementierer müssten sich vom Standpunkt der Portabilität aus um die Endianness kümmern.
x & 0xFF
gibt Ihnen unabhängig von der Endian-Reihenfolge immer das niedrigstwertige Byte (vorausgesetzt, Ihre Bytes haben jeweils 8 Bits), da Sie die gewünschten Bits anhand ihres Werts angegeben haben. nicht ihre relative Position im Gedächtnis.Endianer sind nur dann wirklich wichtig, wenn Sie Binärdatensysteme übertragen.
Mit zunehmender Prozessorgeschwindigkeit (und viel geringeren Speicherkosten) werden binäre Datenschnittstellen immer seltener, sodass Sie sie auf der Anwendungsebene nicht bemerken. Sie verwenden entweder ein Textübertragungsformat (XML / JSON) oder Sie verwenden eine Datenebenenabstraktion, die die Übersetzung für Sie übernimmt (sodass Sie nicht einmal bemerken, dass es eine Übersetzung gibt).
Aber wenn Sie auf der Ebene der Binärdaten codieren, bemerken Sie dies und es ist sehr wichtig. Als ich zum Beispiel bei VERITAS (jetzt Symantec) gearbeitet habe, habe ich Software entwickelt, die auf 25 verschiedenen Hardwareplattformen basiert (es gibt nicht nur Big / Little Endian, sondern auch andere Typen).
quelle
(char) (x & 0xFF)
In C erhalten Sie beispielsweise unabhängig von Endian-Problemen das niedrigstwertige Byte, vorausgesetzt, ein Byte besteht nur aus 8 Bits. Ich habe binäre Dateiformate entworfen, ohne die Maschinen zu kennen, auf denen die Software ausgeführt werden würde. Ich habe mich grundsätzlich für eine Endian-Bestellung für das Dateiformat entschieden, ohne mich um die Hardware zu kümmern.Nein, niemand hat gewonnen. Wir als Spezies haben es nicht geschafft, die Reihenfolge, in der wir unsere Bytes speichern, zusammen mit der Richtung, in die wir schreiben, und der Straßenseite, auf der wir fahren, zu vereinheitlichen.
Infolgedessen hat jeder, der Daten zwischen zwei verschiedenen Systemen über ein Netzwerk oder in einer Datei übertragen möchte, nur eine 50-prozentige Chance, dass die vernünftige Erstversion seines Data-Dumping-Codes in seiner Umgebung korrekt ist, und selbst wenn dies funktioniert hat eine 50% ige Chance, bei ihren Kunden zu arbeiten.
Um dies zu bewältigen, müssen Sie plattformspezifische Funktionen mit Namen wie "htonl" in Headern nachschlagen, deren Namen offensichtlich auf die 70er Jahre zurückgehen, wie "arpa / inet.h", da sich die Situation seitdem nicht verbessert hat und dies wahrscheinlich nie mehr tun wird .
quelle
Es besteht noch kein Konsens:
Auf Hardwareebene ist LE also weitaus häufiger. Aber:
Beide Aufträge werden auf absehbare Zeit bei uns sein.
quelle