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