<div dir="ltr">[Steven D'Aprano]<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">As educators, if we fail to teach the technical language of a field to <br>our students, we are failing to prepare those students to enter that <br>field. Technical jargon is the language of the field.</blockquote><div><br>It's not the responsibility of the tool to teach. My socket wrench doesn't have the history of socket wrenches inscribed on it, nor does it have any description of the different kinds of nuts and bolts. That's called the Single Responsibility Principal or SRP for short. Your job may be to educate, but that's not Python's job.<br><br>[Steven D'Aprano]<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">We should not focus too heavily on the earliest and most ignorant stage <br>of people's programming life. </blockquote><br>The problem goes beyond just learning the term lambda, it can increase mental load on an already mentally demanding activity to have to translate an unfamiliar word every time you see it. It's lack of relation to anything else makes it hard to remember and hard to recall later.<br><br>I've also argued that the very form of lambda expressions is noisier than it otherwise needs to be. It's not like noise is only distracting to novice developers.<br><br>[Steven D'Aprano]<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">That stage makes up probably less than 10% <br>of their life as a programmer.</blockquote><br>My argument has never been about the high magnitude of the opportunity cost, just that there is one (IMHO) compared to a less jargon option. Better is better. period. Even if only improves the first 10% of your programming career. That's why I've said I don't ever think this discussion will lead to action.<br><br>[Steven D'Aprano]<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Python is a general purpose programming <br>language and we shouldn't shy from the appropriate use of technical <br>terms in the documentation and the language itself.</blockquote><br>A Caterpillar Bulldozer is a professional piece of equipment. That doesn't mean they throw out basic <a href="https://en.wikipedia.org/wiki/Principles_of_user_interface_design">tenants of good user interface design</a> and take it upon themselves to teach the operator construction jargon through the interface. They still find it's better to use a red break light symbol with the aim of clearly communicating to non-experts. Just like a child's go kart! Even Python didn't find it necessary to teach me the word "ternary" for ternary expression.<br><br>[Steven D'Aprano]<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">And the experience of educators like Chris teaching Javascript suggests <br>strongly that no, it doesn't, since Javascript learners have just as <br>much trouble learning the concept of "function" as Python learners have <br>with "lambda".</blockquote><br>I don't think that one person's anecdotal evidence could be considered "strong" in the face of scientific studies.<br>Especially when it's become clear that Chris was referring to a broad category of subjects that are only tangentially related to lambda expressions.<br><br>[Steven D'Aprano]<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Chris' conclusion is that anonymous functions are inherently hard for <br>many beginners to learn, regardless of whether the syntax is called <br>"lambda" or "function".</blockquote><div><br>That's not been my experience.<br><br>[Steven D'Aprano]<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I believe that many people have a lot of trouble grasping the concept of <br>functions as first-class values capable of being passed to other <br>functions as data. It requires a major rethink of the way we think of <br>functions.</blockquote><div><br>Those topics have nothing to do with lambda expressions. You can demonstrate them without ever writing a lambda expression.<br>The difficulty of those concepts doesn't inform the choosing of the name. You might as well name it "schubalu" and when I say "that's unnecessarily confusing" just say "well it's easier to learn the word 'schubalu' than it is to learn how Bloom Filters work!"<br><br>Yup. I can't argue with that. I guess we should stick with "schubalu"...<br><br>[Steven D'Aprano]<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Aside from having to learn the correct spelling ("lamdba"?) it <br>was never the *name* that gave me trouble.</blockquote><div><br>Maybe not for you, but it's fresh enough in my mind that the name itself caused confusion.<br>I know it seems minor, but back in the 'partial' thread, I was literally just talking about the name: lambda.<br><br>Nothing else matters because it's all invariant. Callbacks will still be hard to learn. Functions as first class objects will still be confusing. All I'm talking about is a missed opportunity to choose a moderately better name. Just like function.partial vs. function.given. I didn't think my opinion would spawn 6 threads and hours of nit-picking.<br><br>None of your discussion about the difficulty of functional programming informs the value of jargon over less jargon. When is it better to favor more common language, if ever?<br><br>[Steven D'Aprano]<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">that cost is paid for, with interest, later, <br>as a journeyman or journeywoman programmer.</blockquote><div><br>Yeah, or never. My friend used to say he was in IT, then it was Dev Ops, now there's a new term. Or it may be that everyone knows what you mean when you say "anonymous function" and you didn't earn any interest for learning "lambda". After I graduated with my EE degree, I bought a bunch of vocabulary flash cards so that I could take the GRE and go to grad school. I remember wondering, "why the hell does every flash-card set have 'numismatics' in it?! I can never remember that damn word!" now I know it. It's never paid interest...<br><br>[Steven D'Aprano]<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Nevertheless, it is important that I teach them the technical terms too.</blockquote> <br>I find that beyond the basics: class, object, function, variable, argument, parameter, etc.<br>Having students memorize jargon has limited value.</div></div></div></div></div></div>