When and how endianness naming was defined?
I think Doc covered this part quite well with a comment:
I found this answer on Retrocomputing Stackexchange: Endianness as a byte-order term goes back to Danny Cohen’s On Holy Wars and a Plea for Peace, published as Internet Experiment Note 137 in April 1980 and again in IEEE Computer Magazine in October 1981.
Doc Brown
I did dig up Danny Cohen's On Holy Wars and a Plea for Peace. According to C2 wiki this is where the “big/little endian” terms were introduced.
Page 13 has a beautiful ascii art diagram showing the four ways endianness can stir up bits. Be aware they only all apply when bits are addressable. Such as on the wire, over the air, on paper, but not in memory where bits are not addressable. In memory, order 2 and 4 are the same (big endian) and order 1 and 3 (little endian) are the same. In memory, where bits can't be addressed, you might as well replace each pair of slashes with a dot.
But I'll address your skepticism.
I don't buy ... that there are two ends of a sequence.
The problem here is all about assumptions.
To make sense of endianness naming you must accept some conventional assumptions.
- Addresses start small
- Numbers get bigger as their significance grows
- End, as in, of a stick
Only with these arbitrary assumptions in place does starting to eat an egg at either the big or small end make sense as an analogy.
Try to ask somebody to open a book at the end and see how often the person will open at 1st page or at least ask in response: "first of last page?"
Ask someone to hold an egg by the end and they wont know if you mean the big or small end because, just like a stick, it has two ends.
The problem here is the word "end" is overloaded. It has multiple meanings:
a final part of something, especially a period of time, an activity, or a story. "the end of the year"
the furthest or most extreme part or point of something.
define end Google - Oxford Languages
You assumed meaning 1. But meaning 2 is being used here.
Ask a person from Japan to open a book to "the last page" and they will open the left cover because they address the pages in their books in the opposite direction westerners do.
Now sure that's just page numbers but addresses in memory don't always grow as you advance. For example, the stack pointer address gets bigger when you push. But the heap pointer gets smaller as you add to the heap. Why? Because they're trying to share the same fixed memory and having them grow towards each other from either end keeps them separate.
The address starting small is just another assumption.
As for numbers, yes, they get bigger as their significance grows, so long as the number isn't zero. Let's not even get into negative numbers.
Therefor,
Big Endian means start (lowest address) with the big (most significant) end (side) of the number.
And
Little Endian means start (lowest address) with the little (least significant) end (side) of the number.
Give us all that and the names can make sense. Take any of that away and yes it just becomes silly.
I prefer my eggs scrambled.