If the plural of "anecdote" is "empirical evidence", then I'd suggest it's not as simple as that. In Cambridge, the first language taught was ML (a functional language). Over around five years, I tutored around sixty students in Java, which was the second language taught and also a compulsory part of the syllabus. One of the first tutorial questions I used (borrowed from the back of the lecture notes) asked the students to compare ML to Java. What I found in my anecdotal experience was a split between the very mathematically-focused students (who found ML easier) and the remainder who seemed to find Java easier to understand. No, we didn't go into the depths of the Java memory model or out-of-order execution optimisations as this was a first year course.

In short, even though ML was taught first, the bulk of the students I came across still seemed to make those comments about imperative being easier. Whether they changed their minds after the second year compilers course (where they'd learn about all those wrinkly optimisations), or even after concurrent programming (where functional techniques can make life easier) I couldn't tell you.

However this probably hasn't helped your search for citable evidence,


On 23 Nov 2009, at 14:23, Richard O'Keefe wrote:

Does anyone know whether there's any empirical evidence either way
for the hypothesis
        programmers find a programming language or paradigm
        "intuitive" to the degree that it resembles what they
        learned first

Another mailing list I'm on just had a bunch of people shouting
that imperative programming was obviously more intuitive than
functional or logic programming.  Since they didn't seem to be
familiar with the fairly wide gap between a typical first-year
model of how an imperative language and what _really_ happens
(e.g., apparently non-interfering loads and stores can be
reordered both by the compiler and the hardware, loads from main
memory can be 100 times slower than loads from L1 cache, &c),
I found myself wondering if what they _really_ meant is "I learned
a simple model early on and find anything else different."

There's evidence that people find languages like Scheme and Erlang
(and even Prolog) easier if they haven't done conventional
imperative or OO programming before, but that's not to say that
they wouldn't have found those approaches easier still.

Reply via email to