Elke werkdag behandelt Computable een onderwerp waarover lezers kunnen discussiëren. Vandaag over het verschil tussen big-endian en little-endian, en dat dat er nu niet meer toe doet. De strijd is voorbij.
Het fundamentele verschil in endianness (of bytevolgorde) van verschillende computerarchitecturen is jarenlang een punt van discussie geweest: welke is beter, welke draait de meeste software, welke verovert de wereld? Big-endian is simpel gezegd een telmethode die begint bij het belangrijkste (grootste) getal en die dan aftelt. Little-endian is als ‘normaal tellen’: vanaf bijvoorbeeld één en dan oplopend. Van oudsher is big-endian in gebruik in IBM’s z-mainframes, naast oude systemen met Motorola’s 68000-processors en Suns Sparc-chips. De marktdominante x86-processors van Intel zijn juist little-endian.
Anno 2015 lijkt de strijd in de computerwereld voorbij. x86 heeft immers de server- en pc-werelden veroverd. Verder werkt IBM hard aan little-endian Linux voor op zijn zware systemen met Power-processors. Big-endian boet dus in aan belang (behalve op het gebied van ip). Het zal net als mainframes niet helemaal verdwijnen, maar het heeft de strijd verloren. De Lilliputters van Gulliver’s Reizen hebben gewonnen. Wat vind jij?
Ik vind ….. de vraag eigenlijk totaal suf. Wie heeft er gewonnen? Was er een wedstrijd gaande dan? En wat was de prijs?
Er zijn wat technische verschillen tussen big en little endian,en het ene is soms wat handiger dan het andere, en andersom, maar per saldo is het net zo interessant als van links naar rechts schrijven of van rechts naar links; het ene is handiger als je schrijft, en het andere als je in een steen beitelt, maar het hangt er ook nog van af of je links- of rechtshandig bent, dus totaal arbitrair, en evenzo dus TOTAAL NIET INTERESSANT.
de reacties geven mooi de essentie van de ict weer. Van “vraag is totaal suf (nou en ? 🙂 tot de complete tegenstelling tussen Dick en Frank die wel weer beiden hoog beoordeeld worden. Maarja, vaste telefoons op hotelkamers levert ook sterren op, konden we hier laatst lezen. En aan het eind de verwijzing naar Gulliver met de kanttekening dat de lilliputters uiteindelijk wonnen. Prachtig. Ik kijk uit naar het artikel over RISC vs CISC processors 😉
Frank opent de reacties met het door elkaar halen van little en big endian en geeft dan als conclusie: “Big-endian [hij bedoelt: little-endian] is dus vanuit ons, de mens, gezien het meest logisch.”
Echter, dit geldt natuurlijk alleen voor de ‘Europese mens’ en mensen uit andere culturen die gewoon zijn om van links naar rechts te lezenn, maar wel de Arabische getalnotatie hebben overgenomen. Voor Arabieren, die van rechts naar links lezen, is diezelfde getalnotatie natuurlijk big-endian!
@Felix.. Laat ik daar dan alvast een knuppel in het hoenderhok gooien, en stellen dat RISC dit ook al lang gewonnen heeft. “Jamaar.. Alle Intel x86/X64 processoren zijn CISC” hoor ik al iemand jammeren. Klopt, en klopt toch ook niet. Aan de buitenkant zijn Intel X86/X64 processoren inderdaad CISC, omdat de Assembler code een groot aantal Mnemonics kent (weer zo’n ouderwets ICT woord). Maar al die Opcodes worden door de Microcode in de ‘firmware’ van de processor omgezet in bundels RICS-code, Daardoor lijkt een Intel CPU op een CISC Processor, maar onder de motorkap draait toch echt een RISC Core. Oke, het aantal echte machine instructies dat een Intel CPU kent is toch flink wat groter dan wat er bijvoorbeeld in MIPS of Power CPU’s zit, maar er is dan ook niet echt een getal te knopen aan de term ‘Reduced’
Aangezien een kleine 80% van de ICT wereld (mobieltjes en tablets daargelaten, die draaien bijna allemaal op ARM, wat ook al een RISC CPU is) op X86/X64 CPU’s draait, heeft RISC dus al lang gewonnen….
@Pascal: EBDIC ken ik ook niet, maar mocht er een c-tje tussen uitgevallen zijn (ofwel: EBCDIC): deze stamt uit (o.a.) het IBM mainframe tijdperk.
Dit heeft verder geen directe impact op unix; pas bij uitwisselen data of emulatoren gaat dit een rol spelen.
Rond het millennium veel met mainframe gedaan en bij bijvoorbeeld analyseren van tracefiles is het wel handig te weten of je little- of big endian / ASCII of EBCDIC aan het lezen was.
@Felix The Cat: En wat dacht je van de strijd tussen de slash en de backslash? 🙂
@PaVaKe je hebt uiteraard gelijk maar voor die vraag refereerde ik naar een 6 bits terminal, met enkel hoofdletters tot gevolg.
Daarmee kom je op een unix bak niet heel ver.
Om die reden schakelt het systeem automatisch om waneer je met enkel hoofdletters inlogd. Met Ctrl-D kun je dat weer terug draaien.
Moderne UNIX/Linux systemen lijken dat kunstje niet meer te kennen, het is ook wel legacy die werkelijk nergens over gaat.
Ik ben trouwens zelf ook nooit TN3270 tegen gekomen, maar mijn ervaring met IBM beperkt zich ook tot AIX (ehhh bijna vergeten en PC’s/Laptops)
Nu ja Endianess toch een leuk onderwerp geworden.
@Rob, ik meen dat de performance winst werd gehaald op stack operaties.
Daar staat de boel n.l. weer in handzame volgorde he.
Bijna alle serieuze CPU’s (that includes even Z80 & 6502) hebben wel een mogelijkheid om met indexen te werken waarmee afgezien van performance de verschillende endines verianten wel redelijk goed te implementeren zijn.
Zijn we dan eindelijk van Java af?
@Victor:
Lees deze link eens:
https://nl.wikipedia.org/wiki/Endianness
En bedenk dan nogmaals of jouw bewering dat ik fout was klopt…
En niet alleen “de Europese mens”, maar veel meer mensen schrijven van links naar rechts. En dan heb je ook nog volken die tekst van rechts naar links schrijven, maar getallen van links naar rechts…
Je kunt dus wel stellen dat veruit de meeste mensen op deze aarde getallen van links naar rechts schrijven.
@Felix:
Tegenstelling tussen Dick en mij? Dick schreef een heel aardig stukje, met een foutje of twee, maar totaal off-topic. Daar wees ik hem even op.
@Rob:
Tegenwoordig zijn alle processorarchitecturen (zelfs de mobiele) 64-bits, dus hoeft er voor 99,99% van de gehele getallen (floats zijn altijd bijzonder) niet over adressen heen en weer worden gesprongen om een tellertje te verhogen of verlagen. Daarnaast, als je in een 32-bits CPU een in het geheugen opgeslagen 64-bits int aanpast, dan moet je toch eerst alle 64-bits binnenhalen uit het geheugen en vervolgens weer alle 64 bits wegschrijven naar het geheugen…
@Ewout:
Op de server zal het nog wel enige tijd blijven, en dat vind ik prima. Maar hoe eerder we op de desktop verlost zijn van Java, Flash en Silverlight, hoe beter het is!
Mijn bijdrage gaat over geschiedenis, verbanden en taal. Taal is daarin het grootste probleem voor een computer, om de eenvoudige reden dat taal ambigu is. Omdat mensen de eenvoudige computertaal moesten om zetten in begrijpelijk Nederlands, of Frans, of Chinees, of Urdu, of zelfs Engels zijn er afspraken gemaakt. Die afspraken zijn gebaseerd op standaarden. Zoals meestal, geldt bij afspraken het recht van de sterkste: de “de facto standaard.
Nog steeds is de grootste verliezer hierbij de samenleving. Er zijn mogelijk meer computertalen dan mensentalen. Bovendien is hun levensduur meestal zeer kort. Terwijl de computer toch zo’n eenvoudige (binair) aan te spreken entiteit is…
Mijn pleidooi voor de inzet van ons “jonge talent” op basis van de behoeften van onze (mondiale) samenleving, zou de enorme verspilling die, als gevolg van de ontwikkelingen in de afgelopen 50 jaar, nog steeds plaats vindt, sterk kunnen verminderen.
Uiteraard niet op basis van “mijn Volkswagen is beter dan jouw Volvo”, maar op basis van een consistente, coherente architectuur. Wat betekent òf alles met alles laten “praten”, òf open (transparant) en eerlijk opnieuw beginnen.