Related to Distinctions of the Moment, The Problematic Third-Person Perspective, and a disagreement with Said.
In programming, some variables have local scope: they have meaning in the context of a particular function you're writing, or a loop, etc; outside of that context, they may have no meaning, or they may have an entirely different local meaning somewhere else. Others have global scope: they mean the same thing throughout a program.
The first thing I want to get across is that we can make a similar distinction with words.
The second thing I want to get across is that the distinction is fuzzy. Everything is really "local" scope, but for different values of "local".
The third thing I want to get across is that this is an instance of a more general pattern. The temptation to insist that all words are globally defined comes from a way of thinking about disagreements which gives rise to many similar mistakes.
First things first.
"Global scope" obviously refers to dictionary definitions and to common usage. The most obvious cases for "local scope" of words are things like "the school" (which refers to whichever school is most relevant to the people talking), "the office", etc. However, I think a lot more words are subtly re-defined based on what is most useful for the context.
In Distinctions of the Moment, I argued that I want to reserve certain words for on-the-fly redefinition. For example, "thought" and "feeling" are vague words which are often used to point at a dichotomy. However, the space of possible dichotomies here is large. In one conversation, I might want to use "thought" for "linguistic mental representation" (inner monologue in the phonological loop), and "feeling" for "inarticulate mental representation" (something which you can't put into words). In another conversation, "thought" might refer to "mental content" (including all of working memory, not only the phonological loop), and "feeling" to sensations in the body including touch and kinesthetic sense (proprioception). And so on.
If someone steps into the conversation and objects "that isn't what thought vs feeling means to me!" I'll listen to their proposed definition, but I'll evaluate its usefulness in terms of the conversation I'm having. Often I'll end up saying something like "you might be right about common usage, but we're talking about _____, so I don't see how your distinction is relevant here".
This practice risks equivocation, so it is important to make sure everyone is on the same page to the extent that sharp definitions are necessary in the conversation. However, as has been discussed in the sequence on words, the meaning of words is not given by explicit definitions; words are similarity clusters. So, for locally defined words, we refine the clusters enough for them to be useful in the context of our conversation.
This phenomenon extends beyond pairs of words like "thought" and "feeling" which represent (vague) dichotomies. We might just as easily need to make a local definition of a single word. Legal documents do this all the time for clarity. It is often a good idea to do this for philosophical arguments, to get clear on what is being discussed; and, to some extent, any intellectual work. It usually does not make sense to use the dictionary definitions in detailed arguments; not because the dictionary definitions are insufficiently precise in general (though they may be), but because they lack precision along the dimensions which are important for what is being locally discussed. These definitions can gain wider use if the concepts prove useful, so that the line between local and global scope becomes blurred.
Words mean different things to different people at different places and times. I imagine that someone who disagrees with the view on words which I'm arguing for (perhaps Said Achmiz) would argue that I'm pointing out special cases at best, and words should mostly follow common usage. I would argue that the more elegant view is the one which sees the "local-ness" of definitions extending all the way up to the language level -- the dividing lines between language family, language, local dialect, and slang/jargon are not so clean.
Finally, I think my real crux on this has to do with much deeper issues of rationality. There's a particular kind of mistake where you think the business of science/intellectualism/philosophy/rationality is to sort out what is objectively true based on rigorous arguments which everyone has to agree with. I call this "arguing with an imaginary objective judge rather than the person in front of you". There is no argument so compelling it could convince a rock. Instead, I would suggest that intellectual progress looks more like finding cruxes and resolving their status. One way the mistake I'm pointing at can manifest is insistence on objective, static definitions. Another example would be to argue from scientific consensus when the listener does not take scientific consensus as definitive (or, similarly, to argue from the bible or any authority when the listener is not already a person who is going to be moved by that authority).
I liked the way this issue was handled in "MIRI notes on alignment difficulty" (currently an unpublished Google Doc), where words that are used in specific ways are prefixed with a capital letter, like "R-understanding", "O-alignment", "C-alignment". I think relying purely on context to distinguish subtle local differences in meaning is impractical because while humans are better at handling context than machines currently are, we're still pretty bad at it in an absolute sense. It's especially problematic when we have to switch contexts quickly and frequently, like when trying to follow multiple ongoing lines of discussion on LW. I imagine it would lead to great confusion or at best cognitively taxing thoughts like "Ok, I recall in this thread A previously defined B to mean C, and X defined Y to mean Z... Oh wait, actually a couple of comments up A redefined B to mean D. Now I have to re-read this comment to see what it is actually saying."
I find it difficult to discern the main point of your post, so I am tempted to respond by asking for clarification; but that seems unusually unlikely to be productive here (especially given the viewpoint this very post seems to be defending!), so I’m going to plunge in with some counterpoints, even if I risk assaulting a strawman. (I trust you will correct my misunderstandings, in the latter case.)
Objection I: Scoping
Is this good code? What will it print out?
What about this?
How about this?
Did you have to think about it? For how long? What if each of these four code blocks appears somewhere in your code base? What do you think is the likelihood that you’ll misread one of them, when you encounter it? Is it less, or greater, than the likelihood of misreading one of these codeblocks if every variable has a unique name?
Your way imposes substantial cognitive burden on discussants—one which seems to me to be wholly unnecessary.
Edit: By the way, here is a selection of pages that talk about how confusing variable scope can be:          . Do you really want to introduce this sort of complexity into every topic we discuss? Will this really make our discussions more comprehensible?
I actually think the issue Said outlines here is a pretty big deal.
I also see most of the points Abram is pointing at.
I think an issue is "are you trying to have a single conversation, or are you introducing jargon?"
Within the Double Crux paradigm, I find it common to gesture wildly at things that are hard to articulate, and give them a label that's local to the conversation, and while doing so I literally use phrases like "okay, here's a thing I'mma gesture wildly at that hopefully we can pinpoint. Let's call it X?" and they say "do you mean Y?" and I say "no, more like Z." And then maybe we keep using the word X for the conversation.
And this doesn't require much outsourced cognition because it's two people, in the middle of an extended conversation where they're already committed to teasing apart a confusing concept. By the time you're already invested in doing that, the extra burden of swapping a word out isn't a big deal.
The problem comes when you start using that word all the time, and make a bid for it being useful enough to enter the lexicon, and then people start using it offhandedly in contexts where people aren't paying careful attention to nuanced concepts. And then you get the issues Said mentions.
So, the issue comes when it comes time to turn your hashed out conversation into a scalable blogpost that people will refer to. There, I think you should spend a fair amount of time thinking about how to name things. (See Common vs Expert Jargon for my broad opinions on that).
A trigger-action plan I've adopted is, when proposing a new jargon term, spend a couple minutes brainstorming what similar concepts people might want to refer to that they might confuse my term for. This is especially important if the other concept is more commonly needed, in which case people will probably use the term incorrectly more often correctly.
I don't have a good overall answer, largely because of what gjm points at (the ambiguity is always there). Mostly I just think people should be mindful of this cluster of issues in general.
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.
That’s a lot more clear. But it might get cumbersome to type out
foo::every time, yes? And so:
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.
I'm a bit surprised here because it seems like you are (to first approximation) buying the programming analogy, and so, not objecting to the background framework of what I'm saying. Instead you want to make a point within the programming analogy, namely, that a programmer doesn't give local variables and global variables the same name.
... To which I suppose I have to admit, it seems like a place where my analogy breaks down. I'm not advocating rampant arbitrary "foo = 5 and foo = 10" violations, but I certainly may have a conversation in which "fireman" means "a person whose job it is to rush in and save the day when others can't handle it", and it is just understood that we're speaking at that level of generality. It doesn't even seem worth stopping to make sure everyone is on the same page with that, unless someone shows a sign of confusion.
... but, speaking within the framework of the programming analogy:
Well, yes, definitely yes!
Hardly any programmer today would argue that we should use only global variables to escape the confusion of scope. Far sooner would a programmer tell you to never declare globals at all, and stick to local scope. Scope is just so convenient. We should avoid practices which make understanding scope difficult, like the examples you mention, but that is a matter of good style. Scope itself is invaluable.
The alternative which I see to "local scope" conversation practices is "the tyranny of common usage" -- I'm not sure exactly what your position is, but my straw man of you is that you're suggesting that any word which is in common usage should stick to meaning what it means in common usage, unless there is an already defined technical usage, in which case it is acceptable to reference that. This seems a bit absurd to me because it ignores where common usage comes from: people using words in the most useful ways they can, based in part on their expectations of what other people will understand them as meaning, but accounting for the needs and constraints of the conversational context. The straw-man position imagines that language is defined by dictionaries and perhaps by phd'ed scientists writing peer reviewed papers, and everyone else has to do what those people say.
To jump into another analogy: in math, variable names are understood to be arbitrary, but some variable names have a long tradition, such as "x" and "y" for the coordinates of the plane. There are people who are more familiar than me with the standard variable names in specialized areas, who will get upset if I use different notation for no reason -- and that's all well and good, especially with respect to published papers. It makes things easier to understand.
But, "x" doesn't mean the horizontal axis -- it is just a variable. The position which I'm imagining you're taking is that if a variable has a traditional meaning, like "x" does, it should always and only mean that thing. Further, and most importantly (since I am not advocating truly arbitrary redefinitions of words in contexts, but rather, sensible redefinitions), I'm taking you to be thinking that it is bad to use "x" for something that is sort of like a horizontal axis, but not quite. (IE, using traditional variable names outside of the traditional context because the new context reminds you of the traditional one.)
To me, it is obvious that increasing the cognitive complexity of our conversations is something which ought to be done with only the greatest of consideration and necessity, and at each moment we should take the utmost care to add only the necessary amount of complexity, and no more. What you propose would seem to add a lot of cognitive complexity, for questionable benefit.
Well, making the “argument from current programming practices”, as it were, is perilous, because many current programming practices are deeply misguided and have fundamental and far-ranging problematic effects.
You might guess, from the above line, that I’m making a fairly trivial point about passing fads in technology (to be followed up, perhaps, by a jab at Scrum). I’m not. The issue at hand is this: programming is extremely complex. It is growing more so, by the year and by the month. To say that not every person possesses the cognitive capacity to hold such vastly complex abstract structures in their mind, and to comprehend their workings, is to vastly understate the matter.
Scope helps, yes. But scope is more confusing than namespaces, and namespaces are more confusing than simple globals (i.e., a single global namespace). These things are necessary because our code is so complex. They are not themselves an improvement in terms of comprehensibility. A much simpler code base, in a much simpler language, can and should use globals. It’s easier.
You propose to greatly increase the complexity of our conversations, and then, to manage that complexity, to introduce all the vagaries of variable scope. I say: take two steps back. Curb the complexity, and relieve yourself of the need for lexical scope.
Yeah, better for me to say that I personally agree with this practice (and would strongly disagree with the alternatives I could think of) than to rely on the authority of common consensus.
Rather: I claim my conversations are ordinarily this complex. In those cases where conversation participants insist on consistency with the global namespace, I find those conversations less valuable and harder to make progress in. When I originally called out the use-of-words issue in our previous conversation, it wasn't because I think this is a thing most people are doing wrong that I want to set them straight on; rather, I think most people I talk to do the thing I'm suggesting, but might have less of an explicit model than I do. (Thinking of words as existing in a global namespace, or that plus a small number of specialized namespaces, is a reasonable default model to have if you don't look at all the namespacing you do.) I'm experimenting with explicitly calling it out as a strategy for conversations that don't work that way.
What simplification strategies would you suggest? Obviously it would be a good thing to have better strategies for freeing up more computation for what matters; it's just been my experience that "scope" type behavior is what manages to free up the most computation.
They are in themselves an improvement all other things being constant; IE, I'd need to make some other (and rather dramatic) change in my coding practices before it would be an improvement to use all globals. (I am speaking literally here, although it is also a good analogy for what I was saying earlier.)
Less abstraction. Less indirection. More examples. Way more examples. Way more attention paid to whether you can think of good examples. More concreteness. Extensions over intensions.
That’s just off the top of my head. This particular cluster of problems is huge, in recent rational-sphere discourse. There are others, no doubt.
That’s pretty close to my actual position. I would add that it is also acceptable to, essentially, create a new namespace—in other words, to formulate a new set of jargon, and then use it in all discussions of the topic. (This, for example, is more or less what Eliezer did, when writing the Sequences.)
Yes, except that in practice, this is very close to “use words as they are already known to be defined” (i.e., following existing common usage / accepted meaning), and very far from “make up entirely new definitions in each conversational context”.
Well, this is wrong even in terms of the straw-man view (much less my actual view). I think you might’ve gone too far in your strawmanning, here. Again, “common usage” doesn’t mean “anyone defines anything however they like, in ‘local scope’”.
As clone of saturn points out, this is indeed problematic. Have you any idea how many people, in the rationalist community, even on LessWrong, at this very moment hold confused ideas about utilitarianism, the VNM theorem, and the ways in which they are related (i.e.: not at all), merely because the word “utility” is involved in both?
But however bad it is to redefine some existing word (especially if the meaning of that word is in any way subtle, complex, or poorly-understood), it is ten—nay, a hundred—times worse to redefine said word in one way today, and in a different way tomorrow! And if your definition of today is different but similar to your definition of tomorrow, and if any part of your points hinge on the difference, or are materially affected by the difference, then may Bayes have mercy on your soul, because you are an unrepentant sinner against clarity of thought and word.
The context in which this all came up -- and why I thought it interesting to raise the disagreement to further attention -- was one in which I was proposing explicitly namespaced alternative definitions of "akrasia" (within the scope of a rationalist taboo), and you were objecting to it. Perhaps I should have said more than "taboo" to be clear I was namespacing?
Our local jargon, here, already has a definition of “akrasia”. You proposed to replace it, because you wished to introduce a new concept—one which was close to the concept picked out by the existing definition, but different. It is unwise—because both confusing and misleading—to appropriate existing words in such cases. It is far better to select a new term. That appropriately highlights the fact that we acknowledge that there is an existing usage, but are talking about a different thing. Losing sight of this fact, or allowing, by omission, our readers to lose sight of it, is dangerous.
To the extent that you're suggesting conversational norms which would have more clearly delimited what was going on, I can sympathize. To the extent that you're proposing conversational norms which would block me from asking the question I was asking, I'm having trouble sympathizing. I feel like you're doing the latter, since we were already in the context of tabooing akrasia -- so I was already admitting I was confused about what concept I was pointing at, and I was trying to articulate what concept I might want to point at, rather than trying to define "akrasia".
If I find that I'm confused about what role a word is playing in an argument, I want to figure out a way to point at the concept which should have been pointed at in order to be relevant to the discussion.
Perhaps this is a disagreement about the meaning of rationalist taboo? I am having a vague feeling that there's a reasonable interpretation of rationalist taboo under which it isn't legitimate to interpret it as declaring a new namespace. But I'm not really seeing it -- in my current mental state, it seems like the purpose of rational taboo fits with what I'm saying in the previous two paragraphs, and so has to allow the introduction of new concepts which are significantly different than the word being tabooed.
It is difficult for me to imagine a reasonable interpretation of rationalist taboo under which it is legitimate to intepret it as declaring a new namespace, so, indeed, there is quite a disagreement here!
So, you say:
And the question in question was:
That, to me, is nonsensical. A “tabooing” is a move where you replace the name of a concept/phenomenon/thing with a description of that thing. Here you instead proposed to substitute a description of some other thing. That is not rationalist taboo, that is something else—something very different.
I disagree, as you see; indeed, I’d say this is almost the diametric opposite of the purpose of rationalist taboo.
The point of rationalist taboo (at least, as I see it) is to avoid (1) wasting time arguing "what should we mean by X?" and (2) falling into confusion by failing to notice that you even need to have that argument, by describing explicitly the thing you have in mind (which may or may not resemble what other parties involved mean when they say "X").
Saying "OK, for present purposes when I say X I mean Y", where Y is an explicit description of the sort you might use with X tabooed, seems like it's aiming to prevent 1 and 2 by making meanings explicit ... so whether or not you want to call it "rationalist taboo", it seems like it's at least something closely related and with similar intended effects.
(You might consider tabooing "taboo" and seeing whether that helps clarify things. Or that might be one level of recursive rabbit hole too many.)
Merely as one datapoint, and without any claim that anyone else should do as I do: I find abramdemski's usage of "taboo" a bit weird; for me, not using the tabooed word is an essential feature, and even though defining terms clearly and explicitly is closely related and accomplishes, or at least aims to accomplish, the same goals -- I wouldn't myself call it "tabooing". (I have actually played the game for which the technique is made; perhaps that makes it feel weirder to me than to those who haven't, to see the term used for a practice that omits the single central feature of the game.) I don't think it's necessarily bad to say "In what follows I'll use X to mean Y" even when Y doesn't quite match the usual usage of X, but it seems to me that usually it's better to coin a new term, or festoon the word with indicative annotations. "Schmakrasia". "Broad-sense akrasia". "AkrasiaDemski". "Akrasia-2". That sort of thing.
In the particular discussion between Abram and Said that we're now meta-discussing, I think ordinary tabooing would have been effective. Turn Abram's original comment into, say, "We know that people often say, without malign intent or deliberate dishonesty, that they want to do something they don't actually do", and it becomes clearer just what gaps need filling to make this part of a defence of hypocrisy (and what senses of "hypocrisy" it might apply to). How does this compare with saying "We know that people suffer from akrasia, where by akrasia I mean divergence between words and actions not caused by malign intent"? I think it's better because it's clearer (less ambiguity about what sort of words, for instance) and I think Actual Tabooing is more effective in eliciting this sort of clarity than Giving Explicit Definitions because of the way it requires you to actually fit your explicit definitions into the argument, rather than making them separately.
I agree with everything you said.
I agree, I was suggesting a different concept. I shouldn't have said that it was namespacing, since that implies I would have been proposing an alternate definition of akrasia, whereas it would have made more sense to abandon akrasia (IE you're right).
What I was really trying to do there shouldn't by any means be seen as a "local definition" (IE I'm wrong).
In this case, it seems clear that actually omitting the word entirely would have been much better, since it would not have resulted in this sub-disagreement. I was using "taboo" as shorthand for find-and-replace style substitution in the claims I had made, but it would have been better to just perform the substitution, so as to avoid any implicit claim that the substitution could have been what I originally meant by "akrasia".
Glad to see you and Said resolve this disagreement, with gjm's help (who I think deserves a lot of credit for jumping in with a really clear explanation of what went wrong and how to fix it).
I agree very much with this. By no means am I suggesting making up totally new definitions in every conversational context. Rather, when a conversation gets into difficult territory, there are one or two words whose meaning is understood to be fuzzy, and de-fuzzing them is likely to be a focus of the conversation. Maybe Sidney says something like "there's a communication issue", and "communication" is something whose meaning has to be inferred from context (not just the past context, but the continuing context as the conversation proceeds, since the concepts need to be sharpened further). Sidney might be contrasting with simply not talking, or contrasting with miscommunication. The concept of building up a shared context of mutual understanding may be involved, or it could have to do with being able to call out for help on rare occasions of need. Sidney likely can't articulate the desired connotations right away. At some point, Pat might say something which prompts Sidney to say "that's not what I meant by communication" (Pat has gone outside of Sidney's implicit cluster), and so the conversation might focus on more explicitly clarifying the word. Calling out all of this explicitly is fine, but insisting on common usage just blocks progress.
But it definitely involves employing common usage the vast majority of the time. It's just that it goes sour if you cling to common usage.
My model is something like the model of communication in this paper:
Noah Goodman, A Rational Account of Pedagogical Reasoning
Both speaker and listener are trying to model what each other might be thinking, and words are said in this context. A large part of this involves background knowledge of what concepts are relevant given the situation. All of this is happening under the surface even in ordinary conversations which apparently involve no difficult concepts or non-common usage of words, which is a big part of why linguistics and automated language understanding are so hard. Trying to cut off these processes is a sisyphean dream.
Well, what do you think about my "communication" example? The words we have in common use just aren't good enough to want to cling to their common use, because their common use actually involves a lot of possible uses.
Also, I did indeed find this comment more useful than the clarification pattern you often do. I'm not Abram so am not sure how it came across from his perspective, but I wanted to appreciate a) noticing, b) trying another thing, c) having the thing work AFAICT.
Unless I am misunderstanding Abram's post, I think he's suggesting that those ambiguities are there anyway and that the best we can realistically do is try to control them.
I'm not sure what giving every variable a unique name corresponds to when translated into conversation. If variables correspond to words, then that seems to mean having no standard general-purpose vocabulary at all which I think is plainly impossible. I'm guessing you have something else in mind.
Going to the other extreme (the position I think Abram was suggesting you might endorse) and never using "local" definitions seems to become, in the programming analogy, only using global variables, which seldom ends well. But I think these extreme cases suggest that the analogy may not be close enough to enlighten more than it confuses.
Consider my reply to Raemon to also be a reply to your comment.
You cite “A Human’s Guide to Words” here, but I think you miss what is an even more important lesson of that Sequence, which is that you can’t just arbitrarily redefine a word, and expect that thereby your interlocutors will at once abandon all the associations which that word has in their mind. They won’t. Even if they want to, they can’t.
Why do you feel the need to define words in the first place? The idea that words are platonic entities that have their meaning because they have a definition isn't necessary to use language.
Korzybski rejected it and came up with General Semantics (and coined "The map is not the territory").
I'm definitely assuming an Extensions and Intentions notion of how definitions work (and the rest of the Human's Guide to Words as well). I'm not sure quite what you're responding to in my post. When I used "definition" I either qualified it with "sharp" or "explicit" or "dictionary" to refer to intensional definitions, or left it unqualified. When left unqualified, what I meant by "definition" was "conceptual cluster" -- the thing you can point at with extensive or intensive definitions. Of course this is still not saying enough, as is clear if we think of articles, conjunctions, and other problem cases. But, overall, when I say there is a need to understand the local definition of a word in a conversation, I'm saying there's a need to understand what is meant. (What is meant by the speaker, not what any individual word means.) Is that your objection?