<div dir="ltr"><div>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.</div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>Good comparisons can be found in other fields:</div><div>* Driving -- brakes vs stoppers</div><div>* Sailing -- starboard vs right-side</div><div>* Medicine -- postprandial vs after-meal</div><div>* Biology -- dinosaur vs direlizard</div><div><br></div><div>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.</div><div><br></div>[0] <a href="https://iubmb.onlinelibrary.wiley.com/doi/full/10.1002/bmb.20922">https://iubmb.onlinelibrary.wiley.com/doi/full/10.1002/bmb.20922</a><div>[1] <a href="https://martinfowler.com/bliki/TwoHardThings.html">https://martinfowler.com/bliki/TwoHardThings.html</a></div><div>[2] <a href="https://www.nngroup.com/articles/specialized-words-specialized-audience/">https://www.nngroup.com/articles/specialized-words-specialized-audience/</a></div><div><br></div><div><br></div><div><br><div class="gmail_quote"><div dir="ltr">On Mon, Aug 13, 2018 at 9:00 PM Chris Angelico <<a href="mailto:rosuav@gmail.com">rosuav@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, Aug 14, 2018 at 7:58 AM, Greg Ewing <<a href="mailto:greg.ewing@canterbury.ac.nz" target="_blank">greg.ewing@canterbury.ac.nz</a>> wrote:<br>
> Chris Angelico wrote:<br>
>> No, lambda calculus isn't on par with brakes - but anonymous functions are, and if they're called "lambda", you just learn that.<br>><br>
> It's like saying that people would find it easier to learn to<br>
> drive if "brakes" were called "stoppers" or something. I don't<br>
> think that's true.<br>
<br>
Reminds me of this:<br>
"So, there's some buttons on the floor. Pedals. Uhh.... That's the<br>
"go" pedal... That, I believe, is the stopper... and this... this<br>
doesn't do anything...."<br>
-- Wreck It Ralph, trying to figure a car out.<br>
<br>
I'm pretty certain he didn't do any better that way than if he'd used<br>
words like "accelerator" and "brake". In fact, this supports my<br>
assertion that it's not the terminology that bites you - it's the<br>
concepts behind it. Even if he'd known that the other pedal was called<br>
the "clutch", it wouldn't have helped him much without knowing how to<br>
use it...<br>
<br>
Whether you spell it "function(arg) {...}" or "lambda arg: ...", it's<br>
the semantics that are hardest to learn.<br>
</blockquote></div></div></div>