Well, since we’re already talking about CS, we might ask whether computer scientists—who, as I mention above, must confront similar problems—have come up with any solutions. And it turns out that they have: namespaces.
For example:
int foo::bar = 5;
function baz() {
int bar = 10;
print(bar);
print(foo::bar);
}
That’s a lot more clear. But it might get cumbersome to type out foo:: every time, yes? And so:
using namespace foo;
int bar = 5;
function baz() {
int not_foo::bar = 10;
print(bar);
// The above line is equivalent to this one:
print(foo::bar);
// And this is something else, of course:
print(not_foo::bar);
}
Not bad!
Of course, it might also occur to us to wonder whether this “namespace” idea has any analogues outside of computer science—has anyone else, by chance, happened to stumble on this solution? And it turns out that the answer is “yes”, and that said solution is all around us: jargon.
After all, a word like—oh, let’s say… “function”—means something different, and much more specific, in computer science, than it does in everyday parlance. The way we deal with this is simple enough: we make it clear, in any given conversational context, that we’re defaulting to some namespace—that is, using some body of jargon—and all ambiguous terms are then interpreted, by default, as having the meanings that they have in that body of jargon. (For example, in this conversation, we’ve established—implicitly, but no less clearly despite that—that we’re talking computer science; we’ve done the equivalent of a statement like using namespace ComputerScience. Thus when I say “scope”, you know that I mean this, and notthis—unless, of course, I specify otherwise, in any given sentence.)
It is no coincidence that namespaces do not generate nearly as much confusion, for programmers, as variable scope does.
Of course, namespaces are less flexible than scoping. But I ask again whether anyone here thinks that it’s a good idea to make all of our conversations, on any topic as complex, and as cognitively demanding, as computer programming. Consider the price of the flexibility you wish for.
It seems to me that namespaces in natural language don’t work very well, either—separate concepts with the same name tend to contaminate each other regardless of any attempts to use “scopes” or “namespaces.” Take for example Bentham’s “utility” and Morgenstern’s “utility,” or statistical “significance” and practical “significance.”
I agree that namespaces are good. I was trying to think of some examples from philosophy, where you might say “Heidegger’s notion of being” vs some other philosopher’s notion of being. But fanfic also provides a ready example.
Scope is the same thing as namespace, except it is implicit, silent, invisible, undeclared. It is simply understood that the context of a function definition (and some other such cases) introduces its own namespace, and namespace conflicts are resolved automatically via some set of rules.
Which is to say, it is a good analogy for our disagreement about how words work.
Of course, namespaces are less flexible than scoping.
… Well, not much, really. Mainly the’re just more notationally burdensome, requiring things to be declared which are normally inferred from context.
But I ask again whether anyone here thinks that it’s a good idea to make all of our conversations, on any topic as complex, and as cognitively demanding, as computer programming. Consider the price of the flexibility you wish for.
The big difference between conversation and computer programming is that humans interpret things flexibly and contextually, whereas machines obey only precise definitions. So, in my view, you are wanting to do away with an element of the thing which makes conversations less complex and cognitively demanding than programming.
I wouldn’t want to have conversations in the way you want to have them because it would make it harder to think.
I’m not arguing for messiness, fuzziness of definitions, lack of rigor. But I am arguing that rigor should be applied strategically, cleanly defining precisely those aspects which are most useful to the goals of the conversation. Anything else is wasted mental effort, which detracts from intellectual progress.
Well, since we’re already talking about CS, we might ask whether computer scientists—who, as I mention above, must confront similar problems—have come up with any solutions. And it turns out that they have: namespaces.
For example:
That’s a lot more clear. But it might get cumbersome to type out
foo::
every time, yes? And so:Not bad!
Of course, it might also occur to us to wonder whether this “namespace” idea has any analogues outside of computer science—has anyone else, by chance, happened to stumble on this solution? And it turns out that the answer is “yes”, and that said solution is all around us: jargon.
After all, a word like—oh, let’s say… “function”—means something different, and much more specific, in computer science, than it does in everyday parlance. The way we deal with this is simple enough: we make it clear, in any given conversational context, that we’re defaulting to some namespace—that is, using some body of jargon—and all ambiguous terms are then interpreted, by default, as having the meanings that they have in that body of jargon. (For example, in this conversation, we’ve established—implicitly, but no less clearly despite that—that we’re talking computer science; we’ve done the equivalent of a statement like
using namespace ComputerScience
. Thus when I say “scope”, you know that I mean this, and not this—unless, of course, I specify otherwise, in any given sentence.)It is no coincidence that namespaces do not generate nearly as much confusion, for programmers, as variable scope does.
Of course, namespaces are less flexible than scoping. But I ask again whether anyone here thinks that it’s a good idea to make all of our conversations, on any topic as complex, and as cognitively demanding, as computer programming. Consider the price of the flexibility you wish for.
It seems to me that namespaces in natural language don’t work very well, either—separate concepts with the same name tend to contaminate each other regardless of any attempts to use “scopes” or “namespaces.” Take for example Bentham’s “utility” and Morgenstern’s “utility,” or statistical “significance” and practical “significance.”
Indeed; but we can, at least, try not to make the problem worse. Namespaces are better than nothing!
I agree that namespaces are good. I was trying to think of some examples from philosophy, where you might say “Heidegger’s notion of being” vs some other philosopher’s notion of being. But fanfic also provides a ready example.
Scope is the same thing as namespace, except it is implicit, silent, invisible, undeclared. It is simply understood that the context of a function definition (and some other such cases) introduces its own namespace, and namespace conflicts are resolved automatically via some set of rules.
Which is to say, it is a good analogy for our disagreement about how words work.
… Well, not much, really. Mainly the’re just more notationally burdensome, requiring things to be declared which are normally inferred from context.
The big difference between conversation and computer programming is that humans interpret things flexibly and contextually, whereas machines obey only precise definitions. So, in my view, you are wanting to do away with an element of the thing which makes conversations less complex and cognitively demanding than programming.
I wouldn’t want to have conversations in the way you want to have them because it would make it harder to think.
I’m not arguing for messiness, fuzziness of definitions, lack of rigor. But I am arguing that rigor should be applied strategically, cleanly defining precisely those aspects which are most useful to the goals of the conversation. Anything else is wasted mental effort, which detracts from intellectual progress.