On Tue, 17 May 2011 15:26:42 -0700, Xah Lee wrote: > might be of interest. > > 〈English Idiom in Unix: Directory Recursively〉 > http://xahlee.org/comp/idiom_directory_recursively.html > > ------------------------------------------ English Idiom in Unix: > Directory Recursively > > Xah Lee, 2011-05-17 > > Today, let's discuss something in the category of lingustics. > > You know how in unix tools, when you want to delete the whole directory > and all sub-directories and files in it, it's referred as “recursive”? > > For example, when you want to delete the whole dir in emacs, it prompts > this message: “Recursive delete of xx? (y or n) ”. (Note: to be able to > delete whole dir in emacs in dired, you'll first need to turn it on. > See: emacs dired tutorial.) > > Here's another example. A quote from “rsync” man page: > > … > This would recursively transfer all files from the directory … -r, > --recursive recurse into directories This tells rsync > to copy directories recursively. See also -- > dirs (-d). > … > > Here's a quote from “cp”'s man page: > > -R, -r, --recursive > copy directories recursively > > and lots of other tools has a “-r” option, and they all refer to it as > “recursive”. > > Though, if you think about it, it's not exactly a correct description. > “Recursive”, or “recursion”, refers to a particular type of algorithm, > or a implementation using that algorithm. Obviously, to process all > directory's content does not necessarily mean it must be done by a > recursive algorithm. A iteration can do it as well and it's easy to have > the full behavior and properties in the result as a recursive approach, > such as specifying depth order, level to dive into, etc. (because, dir > is a tree, and recursive algorithm is useful for walking the tree data > structure but is not necessary, because a tree can be laid out flat. Any > path order taken by a recursive approach can be done by just enumerating > the nodes in sequence. In fact, iteration approach can be faster and > simpler in many aspects. (i wrote a article about this some 10 years > ago, see: Trees and Indexes.) Note: this thought about tree and its > nodes as a set of node addresses can be applied to any tree data > structure, such as lisp's nested syntax, XML. See: Programing Language: > Fundamental Problems of Lisp.) > > If you look at Windows or Mac OS X world, i don't think they ever refer > to dealing with whole dir as “recursive” in user interface. For example, > in Windows Vista, while changing properties of a folder, it has this > message: > > Apply changes to this folder only. > Apply changes to this folder, subfolders and files. > > Note the second choice. In unix, it would say “Apply changes to this > folder recursively.” > > So, the word “recursive” used in unixes may be technically incorrect, > but more so, it's just not the right phrase. Because, we want to > communicate whether the whole content of a directory are processed, not > about certain algorithm or how it is implemented. A simple “all the > dir's branches/contents” or similar would be more apt. >
Sorry to have to contradict you, but it really is a textbook example of recursion. Try this psuedo-code on for size: FUNCTION DIR-DELETE (directory) FOR EACH entry IN directory IF entry IS-A-DIRECTORY THEN DIR-DELETE (entry). Well, now that's not just recursion; it's tail recursion. Tail recursion can always be turned into an iteration when it is executed. Reasonably designed compilers are required to do so, in fact--have been for decades now. That doesn't mean that recursion isn't the best way of describing the algorithm. > Recently i was chatting in Second Life with someone (Sleeves). She's > typing, while i'm on voice. In part of our conversation, i said “you > sounded fine”. Note that it's technically incorrect, because she's > typing, not on voice. So she didn't actually make any “sound”. But to > say “you typed fine”, or “you chatted fine”, won't get the message > across. > > That's idiom. When you interpret a idiom logically, it doesn't make much > sense, but people understand the particular phrase better anyway. I > suspect the “directory recursively” is also a idiom. The collocation in question is not "directory recursively"; it's "delete ... recursively". Or "Change ... recursively" (etc). Does that help? > It seems so natural > and really gets the point across, without any ill effects. Even if the > implementation actually used a iteration, it doesn't seems to matter. > > So the interesting question is, why this idiom works? Or, how it > developed? It's also not an idiom. It's meaning is completely determined by the meaning of "delete" and the meaning of "recurse", as in "recurse down a tree structure"--which is precisely what the various *nix commands do when their recursive option is invoked. "Recurse _down_ a tree" is an interesting phrase, though, as it implies that, in computing, trees are thought of as growing with their root topmost and their branches underneath -- i.e., upside-down! > I think, among programers (which all unix users are in the 1970s), every > one knows the concept of recursion, and many unix tools on dir probably > are implemented with a recursive algorithm. When you say “… > recursively”, the point gets across, because we all understand it, even > when we are not actually talking about implementation. The phrase “… > directory recursively” is short and memorable, while “… directory and > all its contents” or “… directory and all its branches” or “… directory > and all its sub-directories and files” are wordy and unwieldy. > ✍ > > Idiocy Of Unix Copy Command > Emacs Lisp Suggestion: Function to Copy/Delete a Directory > Recursively > How to rsync, unison, wget, curl > Hunspell Tutorial > Mac OS X Resource Fork and Command Line Tips ImageMagick Tutorial > Making System Calls in Perl and Python Unix And Literary Correlation > The Unix Pestilence > To An Or Not To An > On “I” versus “i” (capitalization of first person pronoun) On the > Postposition of Conjunction in Penultimate Position of a > Sequence > What's Passive Voice? What's Aggressive Voice? Why You Should Avoid > The Jargon “Tail Recursion” Why You should Not Use The Jargon Lisp1 > and Lisp2 Jargons of Info Tech Industry > > Xah I'm writing from alt.usage.english. The non-natural language mavens may have more to add. -- Roland Hutchinson He calls himself "the Garden State's leading violist da gamba," ... comparable to being ruler of an exceptionally small duchy. --Newark (NJ) Star Ledger ( http://tinyurl.com/RolandIsNJ ) -- http://mail.python.org/mailman/listinfo/python-list