[Python-ideas] Does jargon make learning more difficult?

Michael Selik mike at selik.org
Tue Aug 14 15:42:29 EDT 2018

The conversation about syntactic sugar for ``functools.partial`` led to a
question about whether jargon like "lambda" makes the concept of an
anonymous function more difficult to learn.

In my own experience teaching, I find that many concepts are easier to
introduce if I avoid the Python jargon until after I've explained what it
does. This is supported by education research. Some light Googling found a
study on the topic [0] that is consistent with my own observations.

Picking good names is hard [1]. It's tempting to use terms based on the
origin of the concept, historical odds and ends, or even jokes. This can
help someone remember the concept when someone is familiar with the origin,
history, or joke, but makes the concept more confusing and hard to remember
for others. I recommend trying to buck tradition and pick terms that are as
simple as possible, requiring the least context to make sense.

Jargon can be useful for allowing an expert to quickly identify the context
of a term [2]. Plain language phrases can easily create namespace
collisions. However, someone searching for or reading about Python concepts
already knows that the context is Python programming.

Good comparisons can be found in other fields:
* Driving -- brakes vs stoppers
* Sailing -- starboard vs right-side
* Medicine -- postprandial vs after-meal
* Biology -- dinosaur vs direlizard

In the last case, it turns out direbird might have been a better term. I'm
not sure if that supports or detracts from my argument.

[0] https://iubmb.onlinelibrary.wiley.com/doi/full/10.1002/bmb.20922
[1] https://martinfowler.com/bliki/TwoHardThings.html
[2] https://www.nngroup.com/articles/specialized-words-specialized-audience/

On Mon, Aug 13, 2018 at 9:00 PM Chris Angelico <rosuav at gmail.com> wrote:

> On Tue, Aug 14, 2018 at 7:58 AM, Greg Ewing <greg.ewing at canterbury.ac.nz>
> wrote:
> > Chris Angelico wrote:
> >> No, lambda calculus isn't on par with brakes - but anonymous functions
> are, and if they're called "lambda", you just learn that.
> >
> > It's like saying that people would find it easier to learn to
> > drive if "brakes" were called "stoppers" or something. I don't
> > think that's true.
> Reminds me of this:
> "So, there's some buttons on the floor. Pedals. Uhh.... That's the
> "go" pedal... That, I believe, is the stopper... and this... this
> doesn't do anything...."
> -- Wreck It Ralph, trying to figure a car out.
> I'm pretty certain he didn't do any better that way than if he'd used
> words like "accelerator" and "brake". In fact, this supports my
> assertion that it's not the terminology that bites you - it's the
> concepts behind it. Even if he'd known that the other pedal was called
> the "clutch", it wouldn't have helped him much without knowing how to
> use it...
> Whether you spell it "function(arg) {...}" or "lambda arg: ...", it's
> the semantics that are hardest to learn.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180814/ef655f2a/attachment-0001.html>

More information about the Python-ideas mailing list