English Idiom in Unix: Directory Recursively

Roland Hutchinson my.spamtrap at verizon.net
Wed May 18 00:51:59 EDT 2011


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 ) 



More information about the Python-list mailing list