[HN Gopher] On Holy Wars and a Plea for Peace (1980)
___________________________________________________________________
On Holy Wars and a Plea for Peace (1980)
Author : duttaditya18
Score : 36 points
Date : 2021-08-01 04:19 UTC (1 days ago)
(HTM) web link (www.rfc-editor.org)
(TXT) w3m dump (www.rfc-editor.org)
| teknopaul wrote:
| I wonder if it was the mathematicians who invented zero indexing,
| or the comp Sci crowd? I suspect the mathmos were not to blame,
| and a programmer felt that subtracting 1 from the address index
| and adding the address base was one op too many. Easy to fix:
| simply changing the entire world's numerical represtation of
| ordinal numbers. Once changing ordinal numbers was done, Boolean
| with the support of null, asci "0" being 30, and "root" being the
| first "branch" in every "tree" were comparativly easy to sell on
| dazed and confused comp sci undergrads.
| simiones wrote:
| It's mathematicians.
|
| Most notably, both the ordinal numbers and the cardinal numbers
| start at 0. 0 the cardinal number is the number of elements of
| the empty set, the smallest possible set. 0 the (von Neumann)
| ordinal number is defined as the empty set {}; 1 is the set
| composed of the empty set, {{}}; 2 is the set composed of 0 and
| 1: {{}, {{}}} and so on.
|
| Thinking of 1 as the zeroth number is only useful because of a
| quirk of human language and history.
| gorgoiler wrote:
| Given a pointer to an array, the index is the offset from that
| pointer.
| Joker_vD wrote:
| _rolls eyes_ Index /offset N has semantics of "skip N
| elements". To get the 1st element, you skip 0 elements. That's
| it.
|
| Combining "skip M" and "skip N" operations is easy: their total
| effect is "skip M+N". Combining "get Mth" and "get Nth"
| operations is, pedantically speaking, meaningless, but is
| usually understood to mean "imagine Mth was actually the 1st,
| then get Nth" which in less confusing terms is "skip M-1
| elements, then get Nth" which is equivalent to "get (M+N-1)th"
| operation (Exercise for the reader: convince yourself that the
| right answer is actually "get (M+N+1)th", then re-convince
| yourself that the right answer is "get (M+N-1)th").
|
| I personally think _always_ operating in "skip X" is easier
| than having "get Xth" to sometimes mean "actually, don't get
| anything, just skip X-1, then...".
| goto11 wrote:
| Zero indexing comes from pointer arithmetics, where the memory
| address of an array is the same as the address of the first
| item. So the address of the n'th item is:
| address_of_array + size_of_item * (n - 1)
|
| Hence array[0] is the first item, array[1] is the second item
| and so forth.
|
| Zero-based indexing does not change the meaning of ordinal
| numbers. You just have to be aware that ordinal numbers are
| different from index offsets.
| mst wrote:
| The best answer here is to compromise by adopting a middle-endian
| byte order so that everybody's equally unhappy.
| teknopaul wrote:
| We have the Internet, the war is over, it was a truce. At the
| border you speak "network byte order" and inside you are free
| to write your own rules. There may be some advantages to
| speaking network byte order all day but you don't have to
| change your habits of a lifetime.
| bhaak wrote:
| FWIW, my first computer had a big endian CPU (Motorola 68000)
| so I'm thinking in big endian and every time I have to
| inspect a hex dump on my local machine I get confused if I
| look for more than 1 byte.
|
| Not that this happens a lot these days but once or twice a
| year I'm looking at some hex.
| kstenerud wrote:
| I wrote up a blog post about the strengths of each endianness:
|
| https://technicalsourcery.net/posts/on-endianness/
|
| Short short version:
|
| It's all about where your imaginary "margin" is. Little endian
| works best with "upward growing" data, where the data grows from
| the low bits into the empty high bits (for example integers). Big
| endian works best with "downward growing" data, where the data
| grows from the high bits to the empty low bits (for example
| fractional portions).
|
| Little endian has the biggest advantages because we use integer
| types a LOT more than floating point types.
| bear8642 wrote:
| Thanks for blog, very useful analogy.
|
| With the odd/even detection section, do you know why the bytes
| aren't also small to big in Little Endian? That is why isn't
| the one's bit the leftmost bit?
___________________________________________________________________
(page generated 2021-08-02 23:03 UTC)