Article View: be.comp.programming
Article #10890Re: oproep aan de programmeurs:wat moet ik kiezen ?
From: Sjoerd Schreuder
Date: Fri, 22 Feb 2002 11:48
Date: Fri, 22 Feb 2002 11:48
100 lines
6402 bytes
6402 bytes
Frans Bouma wrote: > > "Sjoerd Schreuder" <sa_schreuder@wanadoo.nl> wrote in message news:3C752437.D8E52A8B@wanadoo.nl... > > robert wrote: > > > > > > Erik Warmelink <erik@flits102-126.flits.rug.nl>: > > > >Zowel de voorkeur voor 32 bit ints als het little endian formaat van > > > >constanten in code heeft wel wat Intel-achtigs. > > > > > > Je zit moeilijk te doen over keuzes die gemaakt zijn om tot een standaard > > > te komen? Het lijken mij bijzonder logische keuzes... > > > > Mij lijkt dat 'logisch' een beetje overdreven. Er zijn andere keuzes > > mogelijk, en die zijn net zo 'logisch'. > > > > * Aangezien 64 bits processoren al bestaan en binnen een paar jaar > > overal zullen zijn doorgedrongen, ligt een 64 bits integer type > > voor de hand. > > Een long is 64bit, waarom moet een int dan ook 64bit zijn? > Ik denk overigens dat het gros van de computers nog lange tijd > 32bits zal zijn, intel is nl. niet van plan binnen afzienbare > tijd de 32bit lijn op te heffen, in tegendeel. Is een long 64 bits? In C is de long meestal 32 bits, maar mag groter zijn. > > * Intel is zo ongeveer de enige processor met little endian words. > > De eerste standaard op dat gebied was de "network byte order", > > en die is bigendian. > > Dat kan wel zijn, maar Intel heeft wel verreweg (qua volume) het > grootste aandeel op de processormarkt. Je kunt ook zeggen: waarom > nemen anderen geen little endian? > Er moet een keuze worden gemaakt. Als je kiest voor big-endian > voor een platform dat voor het leeuwendeel op intelprocs gaat > draaien, dan lijkt het me dat een rare zaak. Zeker gezien het > feit dat little endian procs de meerderheid vormen van het > aantal processoren op deze aardbol waar het platform op kan draaien. > Naast het feit natuurlijk dat little endian efficienter is > in virtual processoren. Waarom zou je je eigenlijk vastleggen op little of big endian? Dat is alleen van belang als je de individuele bytes van een word kunt aanspreken. Dus in de volgende gevallen: * Het casten van een pointer-to-word naar een pointer-to-byte. * Het streamen van words naar externe bronnen zoals een file of het netwerk. Het eerste geval wil je gewoon niet in je taal hebben zitten (of maak je "implementation defined", zoals C en C++ doen). In het tweede geval kun je zonder probleem een conversieslag doen omdat je I/O toch al snelheidsbepalend is. Dus mij lijkt het dat de beste oplossing is vrij te laten welke vorm intern wordt gebruikt. Voor externe representatie moet je dan wel een standaard kiezen, maar daar zijn al een heleboel standaards voor: Unicode, TCP/IP, CORBA, ... Andere standaards die al big-endian gebruiken: - TCP/IP is big-endian. - Unicode UTF-16 is big-endian. (CORBA ken ik niet goed genoeg) Is er eigenlijk al een standaard die little-endian voorschijft? > > Gezien de keuzes die ze hebben gemaakt, lijkt de huidige Pentium > > processor de voornaamste target van de standaard te zijn. > > Je moet EEN keuze maken. Waarom zou je een keuze MOETEN maken? C en C++ doen dat ook niet, en je kunt moeilijk zeggen dat die talen niet bestaan. Wat mij betreft: laat lekker vrij die hap, zodat je efficiente implementaties krijgt. > Kiezen voor 64bit integers levert een > probleem op, want hoe noem je dan 32bit integers? en hoe lang > moet dan een long zijn, 128 bit? En waarom zou je dan integerlengte > gelijkstellen aan long-lengte? Waarom zou je die lengtes vastleggen? Minimale eisen voor range lijken me nuttig, maar het nut van maximum grenzen ontgaat me. Maar misschien ben ik te veel beinvloed door C en C++, waar dat allemaal aan de compilerbouwer wordt overgelaten. Die kan een keuze maken die voor dat platform natuurlijk is. > Plus kiezen voor big-endian > wanneer het leeuwendeel van het targetplatform op x86 gebaseerde > processors draait lijkt me niet zo nuttig. Je kunt dan beter > die extra conversieslagen bewaren voor het platform wat big-endian > procs gebruikt. Conversieslagen moet je eenmalig bij I/O doen, dan kun je verder intern in een efficient formaat werken. Het handigst is om met een vlaggetje aan te geven in welke endian je het wegschrijft, en alleen bij het lezen te converteren (indien nodig). In dat geval heb je zowel bij x86-x86 communicatie als bij SPARC-SPARC communicatie geen conversie nodig. Sjoerd Schreuder
Technical Details
Message-ID:
<3C762FF1.B9125B5B@wanadoo.nl>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-03!supernews.com!peer1-sjc1.usenetserver.com!usenetserver.com!newsfeeds-atl1.usenetserver.com!news-hub.cableinet.net!blueyonder!newspeer.clara.net!news.clara.net!news2.euro.net!news.euronet.nl!not-for-mailReferences:
<uXu88.122912$rt4.11582@afrodite.telenet-ops.be> <1013109746.799866@seven.kulnet.kuleuven.ac.be> <3C63C40B.BA1DDAA9@iae.nl> <3c6e35cf.1533535@newszilla.xs4all.nl> <1013895537.659605@seven.kulnet.kuleuven.ac.be> <slrna6tm41.3mc.usenet@dolens.mobach.nl> <1013913710.524385@seven.kulnet.kuleuven.ac.be> <3C6FD2B5.1D31CC72@wanadoo.nl> <1013970800.921078@seven.kulnet.kuleuven.ac.be> <3C7019B8.2C74A2B4@wanadoo.nl> <rn664vbyt2.fsf@keyser.soze.com> <ju4u4a.sgo.ln@erik.selwerd.nl> <rnheod9sbh.fsf@keyser.soze.com> <1vp25a.n3h.ln@erik.selwerd.nl> <slrna79tt1.2lt7.robert@00008.org> <3C752437.D8E52A8B@wanadoo.nl> <3c76156d$0$214$e4fe514c@dreader4.news.xs4all.nl>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: 107324,65d4c4d6a1e8dc39 X-Google-Attributes: gid107324,public X-Google-Thread: fcea4,65d4c4d6a1e8dc39 X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2002-02-22 03:48:05 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-03!supernews.com!peer1-sjc1.usenetserver.com!usenetserver.com!newsfeeds-atl1.usenetserver.com!news-hub.cableinet.net!blueyonder!newspeer.clara.net!news.clara.net!news2.euro.net!news.euronet.nl!not-for-mail From: Sjoerd Schreuder <sa_schreuder@wanadoo.nl> Newsgroups: be.comp.programming,nl.comp.programmeren Subject: Re: oproep aan de programmeurs:wat moet ik kiezen ? Date: Fri, 22 Feb 2002 12:48:01 +0100 Organization: Wanadoo NL Lines: 100 Message-ID: <3C762FF1.B9125B5B@wanadoo.nl> References: <uXu88.122912$rt4.11582@afrodite.telenet-ops.be> <1013109746.799866@seven.kulnet.kuleuven.ac.be> <3C63C40B.BA1DDAA9@iae.nl> <3c6e35cf.1533535@newszilla.xs4all.nl> <1013895537.659605@seven.kulnet.kuleuven.ac.be> <slrna6tm41.3mc.usenet@dolens.mobach.nl> <1013913710.524385@seven.kulnet.kuleuven.ac.be> <3C6FD2B5.1D31CC72@wanadoo.nl> <1013970800.921078@seven.kulnet.kuleuven.ac.be> <3C7019B8.2C74A2B4@wanadoo.nl> <rn664vbyt2.fsf@keyser.soze.com> <ju4u4a.sgo.ln@erik.selwerd.nl> <rnheod9sbh.fsf@keyser.soze.com> <1vp25a.n3h.ln@erik.selwerd.nl> <slrna79tt1.2lt7.robert@00008.org> <3C752437.D8E52A8B@wanadoo.nl> <3c76156d$0$214$e4fe514c@dreader4.news.xs4all.nl> NNTP-Posting-Host: 212.203.20.29 Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Trace: scavenger.euro.net 1014378482 90186 212.203.20.29 (22 Feb 2002 11:48:02 GMT) X-Complaints-To: abuse@wanadoo.nl NNTP-Posting-Date: Fri, 22 Feb 2002 11:48:02 +0000 (UTC) X-Mailer: Mozilla 4.7 [en] (WinNT; I) X-Accept-Language: en