Well, I seem to be the one instigating all of this, so the least I can do is to provide an answer and let the community treat it as it well.
Short answer: It depends on the programming question.
Long answer: I believe that the best solution is to:
- simply admit the impossibility of determining, in general, whether a specific programming question will be on- or off-topic;
- be as forthcoming as possible about this in the FAQ, and try to provide some general guidelines for programming questions which might be appropriate here;
- allow the community to determine on a question-by-question basis what questions do well here, and what questions don't.
There are several reasons for which I hold this belief:
- the boundaries and distinctions between various computing fields are likely not as clear as individuals' perceptions thereof, and such perceptions likely vary from individual to individual, making meaningful classification practically impossible;
- by making clear the especially delicate nature of the relationship between programming and computer science, interested users (i.e., people who stand a realistic chance of reading the FAQ at some point in time) will be more sensitive to the issue at hand, and be able to make potentially better-informed decisions regarding asking, closing, and reopening questions;
- allowing for the possibility of good programming questions might have several benefits for a site such as this, and there seems no reason to believe that the likelihood of the site's benefitting in the long-term from increased traffic, questions, answers, audience, perspectives, etc. is significantly less than the likelihood of the site's being damaged by a large number of poorly-received content.
Declaring "computer programming" as off-topic unfairly and unproductively excludes a large number of potentially interesting questions and the users who might ask them, receive answers from a computer-science perspective, benefitting both themselves and the community.
Declaring "computer programming" as on-topic provides the community with no charter, or mandate, or moral authority to exclude a question only on the basis of its being a programming question, which could make it impossible to meaningfully distinguish this site's scope from a variety of other sites' (Stack Overflow, Programmers, etc.)
The community's reserving the right, without providing a guarantee, to close programming questions as off-topic is both more inclusive than the former solution, and does more to appropriately limit the scope than the latter solution. Where it is weaker than the others is that it does not provide a clear answer to the question of whether any given question will be on-topic.
I believe it is better to be inconclusive all the time, and allow specific circumstances inform the community's decision, than to uniformly (and, in some cases, possibly incorrectly) influence the community's behavior, when it comes to passing judgment on questionable content. If the community doesn't agree that the relationship between programming and computer science is questionable, or debatable, or controversial, that is a separate discussion... and one which could be impossible to satisfactorily resolve.
Alternatively, or in addition to the above, the FAQ can attempt to provide a working, or practical, definition of the site's scope, so long as the motivations are made clear in the FAQ (e.g., too much overlap with Stack Overflow, or too much potential for poorly-placed questions, etc.)... so long as the policy which informs and guides the community is accurate (in terms of representing true motivations).
Examples of programming questions which could be considered on-topic
Given this language or formalism implementation of algorithm or process, what is the meaning of part of implementation / what does part of implementation do / why is part of implementation needed / can part of implementation be replaced with part of implementation?
Reason: Such questions require (a) the ability to read and understand the syntax and semantics of the language or formalism being used, which might come to bear on any correct answer to the question (of course, it might not!); (b) the ability to read and understand the a*algorithm or process* which the implementation encodes, and what effects on correctness/efficiency/etc. changes to the algorithm or process would have; (c) the ability to relate the ideas of algorithm or process to language or formalism, which is of fundamental importance in computability and complexity (i.e., can you do X in Y, and if so, can you do X in Y with complexity Z?)
Does definition of computational process or structure, expressed in language or formalism, satisfy the property well-defined property for the indicated language or formalism?
Reason: Computer science provides unique tools for analysis and understanding of computational artifacts, allowing (in many, but not necessarily all, cases) for clearly reasoning about characteristics of those artifacts. The language or formalism employed to express those artifacts should not be a primary concern, so long as the the communication to the community is successful, and the artifact/language (or appropriate models thereof) are subject to the tools of computer science.
Note that nobody, including me, is advocating allowing questions that ask for an implementation in a programming language. Those questions should be closed, but for other reasons. Questions which do not show any effort to understand the problem can be closed, for other reasons. Questions which are argumentative or which use a significantly non-standard or incomprehensible notation can be closed, but for other reasons. Otherwise perfectly acceptable questions, for which this community fails to provide a reasonable answer, can be migrated to appropriate sites. It's this last point that presents the only difficulty with my solution: unless SE provides automated means of identifying such questions, it could mean a lot of work for moderators, or questions languishing for a while. Whether this problem would be serious or not is unknown; and in any event, I believe the community could find a way to fix it.