Deterministic vs Volatile

Published 7 May 7 12:30 PM | GregLow
One of the things that I’ve never been comfortable with is when people take existing computing terminology and use it for something different to what it was designed for. For example, the first time I saw a Windows setting for Default Gateway, I wasn’t pleased. Router was a perfectly good term. Gateway was also a perfectly good term but it sure didn't mean Router. I think when this happens, it ends up confusing people unnecessarily. Every time I’ve heard someone describing the Default Gateway, they say “oh that’s just the address of the router”. So why not call it Router?  What brought me to this the other day was watching a demo of the new Excel Services. I noticed that they had adorned methods with an IsVolatile attribute. However what it was used for was to indicate whether or not a function always returned the same output for the same input parameters. But isn’t that the definition of Deterministic? In SQL CLR programming, they’ve correctly used IsDeterministic as an attribute for this purpose. Volatile usually refers to a value that can be changed without the knowledge of the program ie: if I have a variable that represents some external thing that can be updated by code other than mine, the compiler needs to understand that to avoid incorrectly applying optimizations. Does anyone else think that’s odd or am I being too picky about this stuff? I just find it frustrating and think it leads to confusion.