As @Secure notes, C's printf
function is inspired by BCPL's writef
function. And if you look at the wikipedia page for BCPL, it has an example that shows that BCPL writef
also used %
to introduce a format specifier.
So we can infer that C used %
either because BCPL did, or for the same reasons that BCPL did. My gut feeling is that it was simply that %
is one of the least commonly used ASCII characters ... or so the authors thought. It is also likely that they didn't spend a lot of time in weighing the various alternatives. At the time, both BCPL and C were obscure languages, and the authors most likely had more important things to deal with.
However, there is a minor spanner in the works. While C was inspired by BCPL, it is not entirely clear whether the C borrowed BCPL I/O libraries or the other way around. I dimly recall that BCPL's I/O libraries went through a process of evolution about the time that the infix byte indexing operator was added to the language. (Actually, I think I know who would know about that.)
The etymologic history of computer jargon is well documented in the Jargon file (current version as of this writing is 4.4.8).
The specific term "Feature Creep" is listed as "New in 4.1.0" in the change log. 4.1.0 dates to March 12, 1999 and is defined as:
feature creep:
n. The result of {creeping featurism}, as in "Emacs
has a bad case of feature creep".
While this is the earliest use of the word in specific context, there are indications that the phrase existed earlier in some form.
The begining of each jargon file has a section on the various non-word aspects of the use of language by computer types.
In an early version of the Jargon file from 1981:
Soundalike slang: similar to Cockney rhyming slang. Often made up on
the spur of the moment. Standard examples:
Boston Globe => Boston Glob
Herald American => Horrid (Harried) American
New York Times => New York Slime
historical reasons => hysterical raisins
government property - do not duplicate (seen on keys)
=> government duplicity - do not propagate
Often the substitution will be made in such a way as to slip in
a standard jargon word:
Dr. Dobb's Journal => Dr. Frob's Journal
creeping featurism => feeping creaturism
Margaret Jacks Hall => Marginal Hacks Hall
The "creeping featurism" entry suggests that the term may have been used, if not in that exact form of "feature creep".
Thus, language the term existed for certain in 1999 in the hacker (realize that the term "hacker" in the jargon file is a different group than it is today) community.
Indications that the phrase existed, though didn't formally enter the lexicon show up as early as 1981 and may have been common usage in the MIT and Stanford communities.
The concept of "feature creep" can be documented in 1975 as part of the Mythical Man Month. In one of the essays within this collection, "Second System Effect" is described. From the Wikipedia summary:
The second-system effect proposes that, when an architect designs a
second system, it is the most dangerous system he will ever design,
because he will tend to incorporate all of the additions he originated
but did not add (due to inherent time constraints) to the first
system. Thus, when embarking upon a second system, an engineer should
be mindful that he is susceptible to over-engineering it.
Realize the difference between the Mythical Man Month and the Jargon file likely represents two different cultures - the Mythical Man Month is from a project management perspective while the jargon file is more from the hacker/academic perspective.
Best Answer
Linkers in Linux were originally called loaders. See Assembly Language Step-by-Step: Programming with Linux by Jeff Duntemann: