http://www.perlmonks.org?node_id=138185


in reply to The first cargo cults

On a tangent, but not entirely without Perl content ...

I would just like to point out that most of todays usage of 'cargo cult' is based on an impoverished view of some of the practices found in the South Seas islands. That there were/are such cults isn't at issue --- but to think that they sprung up as a post-war belief system is to miss a great deal. Even as early as 1830, missionaries were subverting beliefs and rituals involving ancestors returning in a great ship bringing wealth and prosperity (a new age) --- ie, that converting to christianity would bring peace and vessels carrying abundances of goods (Gilson R.P.(1970) "Samoa 1830-1900" Univ Oxford Press). The fact that the missionary supply ships, as well as other ships of exploration, indeed had a wealth of goods from the West was almost certainly not lost on the people in question.

There are other factors as well --- more elaborate cults (the kind caricatured in the modern metaphor) have been seen to be part and parcel of political unrest, anti-colonial movements and protest, etc. But I only wanted to bring forth the idea that the quicky version that Feynman uses (to good effect I might add, but see below) --- ie, that there was a sudden ritualistic copying of airstrips based entirely on a lack of understanding --- is not a version that tells us much of anything about the people or the cargo cults of the South Seas, nor in the many other places of the world where similar (but not specifically geared to wartime cargo planes and western "cargo") beliefs and movements also took place. It is easy to look with incredulity upon a practice such as "cargo cults" when they are stripped of their historical, religious, polical, and cultural contexts, and to pronounce such beliefs as simply "mistaken" or "misguided" or involving a fundamental lack of understanding.

Why did I bring all this up? Well, it isn't like it isn't important to at least imagine that there is more to the story than what we've been told. But it continues. The cry of 'cargo cultism' is definitely a negative or derogatory term, and, using only Feynman's account, rightly so if justly applied. One example of where we hear this cry today, specifically relating to Perl (see, I'm not entirely off topic), can be found right here (regarding ref($proto) in new() methods.

To be sure merlyn makes a case for avoiding this particular construct --- he also admits that other prominent members of the Perl community disagree. Indeed, Tom Christiansen would be one of them, and the standard documentation that comes with perl contains the perltoot manpage where he suggests using the very technique merlyn advises us against, and explains that it provides more flexibility to the constructor. I have no problem that such a disagreement exists --- but I do think the cry of "cargo cult" (in Feynman's sense) is quite misplaced and unfairly presupposes a great deal about those who might choose one way or the other. Sure, some might actually be cargo-culting it in one sense (that's how Tom C. does it, so that's how I'll do it even though I have no idea what it means or really does). Others, however, may perfectly well understand what it means and how it works but may not have considered merlyn's argument about why not to use it --- is that cargo culting? No. Others still may know both what it does and understand merlyn's disagreement, but choose to use it anyway. Perhaps merlyn was influenced by programming Smalltalk in 1980, but using that experience as a defense of his position regarding 'ref($proto)' may also be called 'cargo culting' in the same vacuous sense as his denouncement of 'ref($proto)' as cargo cult (after all, this is neither Smalltalk nor 1980, and we've been provided zero information about why *that* matters in the current debate) --- it ignores more information than it provides and tells us nothing about the people involved or their reasons for doing things in a given way.

I am not saying that merlyn did not give reasons (beyond the Smalltalk reference), he did in the post referenced above, and TomC gives flexibility as a reason in perltoot. What I am saying is that using the technique may or may not be cargo-culting in exactly the same way that avoiding the technique (or using a clone() method) based on merlyn's post may or may not be cargo-culting --- it all depends on the understanding of the programmer in question, not the technique.

To go a step further, there is a fundamental misalignment in how the term is used in programming circles --- a telling factor in Feynman's story is that the planes *failed to land*, yet the cultists continued the practice. In programming, the real problem isn't when I copy your technique (without understanding it) but can't get it to work --- though that certainly accounts for a number of "why won't this work" posts on various programming forums. No, the real problem in programming is when I copy it (without understanding it) and it *does* work (or appears to work), and thus it propogates not only in my code, but perhaps in other's code as well ... setting myself up for failures down the road that I won't be able to understand because I didn't understand the technique and why it (seemed to) work in the first place. That is, the real problem is the propogation of bad practices because they appear to work --- and in Feynman's cargo-cult science the problem is exactly the same ... the poor science propogates because it *appears* to offer explanatory power where it does not

Thus, the term "cargo cult" itself may be said to have been 'cargo culted' as a meme that is semantically misaligned with the context from which it was taken. At any rate, I really wanted to simply bring home the point that with the current meme, an accusation of 'cargo cult' is not saying something negative about the code in question, but rather about the coder in question. And yet, we still often see "code" labelled as cargo culted --- and, sadly, there appears to be a tendency for the discourse to be ruder when thusly labelled code is exposed than when a simple lack of understanding is exposed through code that does not have such a label attached. What does this say of us I wonder?

Replies are listed 'Best First'.
Re (tilly) 2: The first cargo cults
by tilly (Archbishop) on Jan 13, 2002 at 00:54 UTC
    Excellent post. Just a couple of points.

    First of all for a longer discussion of the (de)merits of the ref($proto)||$proto construct, I would point to Re (tilly) 2: Paradigm Shift - Dual Use Constructors. (I particularly like chip's comments about cargo culting being appropriate at a larval stage of development.)

    Secondly I think the fact that the phrase fails to capture either the original usage or the historical situation it came out of is a natural part of how language evolves. Phrases come into use, and seldom do people remember the original circumstances, and seldom does a widely used phrase remain static in meaning. Indeed after time its original meaning becomes far less relevant than the agreed upon, shared meaning.

    For a random instance, we all know what it means to welsh on a bet. I have seen the phrase used, you will find it in the dictionary, etc. And almost never is it used with the intention of furthering a racial stereotype...because that isn't the meaning we continue to share.

      First off, good link to further discussion about the particular example I brought up.

      With regards to languages changing: Oh indeed, languages evolve and the meanings of phrases and terms change over time, often losing their connection to original meaning in the process. "Cargo cult" seems slightly different (perhaps only because it is so recent a term) in that it is expressly still used with direct reference to its origins (ie, when people ask what you mean by that term) --- its just that the meaning has been slightly skewed right from the get go.

      I don't really have a problem with the meaning we programmers give it (and that Feynman gives it), I understand what is trying to be said --- but I do think the slight skew does bring to light something interesting. For example, if I copy some poor form-processing code X, I have a "real" copy that works (or doesn't) exactly like the original. I am not missing some fundamental property of X that prevents my copy from working as the original. I may, most certainly, be lacking a full understanding of X and therefore not know why X is not a good way to do it or why it fails in some situations, but unlike the 'cargo cult', I have a working airstrip and the planes are landing (even if some mysteriously crash). Thus, I don't think we have a 'cargo cult' problem.

      The better model of the problem seems to me to be an evolutionary* one: X is a 'meme' that confers (some modicum of) success** on those that possess it. It is more like a local optima in the fitness landscape of 'things that do X', and thus it propogates. Unfortunately, it seems that many who arrive on the scene of this particular fitness landscape (forms processing in the present example) find this local optima before discovering better memes (XX for example), and this very fact helps to broaden this optima into an ever larger plateau (making it even more likely to be encountered first).

      Hopefully, things such as davorg's NMS archive will begin to erode early paths that lead to X with paths leading to XX --- that won't happen by virtue of XX being a better optima, it needs also to create paths that get positioned where intitial explorers of the landscape are likely to find them first (it can't simply be a bridge from X to XX because that won't stop the propogation of X), and those paths can't be too steep lest the explorers turn to easier pathways (we can't cop out and say that those who take the low road get what they deserve, because that only helps propogate the low road). On the other hand, I simply don't have a map of what the landscape looks like for many who just jump right in today. If I didn't know how to swim, I'd be looking for swimming lessons before venturing into the deep end ... but many today jump in first and then start looking for floatation devices. I admit, I don't understand that particular mindset, nor do I have a solution.

      * there isn't any "real" current scientific theory of 'memetic' evolution --- I am merely appealing to an intuitive sense of what such a theory might be like.

      ** ie: using Matt's FormMail Script numerous times just fine...