Terminology for what is currently "static"
Chapter 2: Core foundations: building on C# 1: 2.2.1
Last updated: 1/28/2008
In the book, I don't go into very much detail about what
static really means, but Eric wrote a
blog entry on static methods containing this:
Static methods are called "static" because it can always be determined exactly, at compile time, what method will be called. That is, the method can be resolved solely by static analysis of the code.
Apparently this caused a bit of a ruckus - the word "static" isn't terribly well chosen. It does mean what it says, but that's not how people actually think of it. Do you think, "Hmm... I want a method which the compiler can resolve with only static analysis" or do you think, "Hmm... I want a method which relates to the type itself rather than any specific instance of the type"? I know I do the latter.
So, what are the other options? VB uses "Shared" which is closer in some ways - but still misses the boat in my view. Sharing involves something being used by more than one person (or instance in this case). Static members aren't shared between instances - they're present even if there are no instances at all!
Other options (in a totally imaginary language) might be "typewide" or "noninstance". Neither of these appeal, to be honest. Do you have any better ideas?