On Thu, Aug 23, 2018 at 10:44 AM, Abe Dillon <abedil...@gmail.com> wrote: > 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.
If the concept is utterly unfamiliar and the word is familiar, it creates a different problem: the false parallel. Let's suppose that, instead of calling them "lambda expressions", we call them "bacon expressions". Great! Lots of people know what bacon is. Is that an improvement? Definitely not. Some people love bacon and will wonder what anonymous functions have to do with their favourite food; others will wonder whether it's okay for a devout Jewish or Moslem person to use them. Technically this is true of "lambda" too, but for those who know Greek, it's like calling something an "S-expression", which is fairly obviously an abbreviation for something. ("Symbolic expression", I think? Someone might correct me there.) > 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. Yes, you've asserted it. We've disputed it. You have yet to provide real evidence. > A Caterpillar Bulldozer is a professional piece of equipment. That doesn't > mean they throw out basic tenants of good user interface design 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. No, it probably called it an "if-expression" or "conditional expression" or something. "Ternary" just means it has three operands, so Python also has another very common ternary expression, namely the bounding: "5 < x < 10". >> And the experience of educators like Chris teaching Javascript suggests >> strongly that no, it doesn't, since Javascript learners have just as >> much trouble learning the concept of "function" as Python learners have >> with "lambda". > > > I don't think that one person's anecdotal evidence could be considered > "strong" in the face of scientific studies. > Especially when it's become clear that Chris was referring to a broad > category of subjects that are only tangentially related to lambda > expressions. What broad category of subjects? >> Chris' conclusion is that anonymous functions are inherently hard for >> many beginners to learn, regardless of whether the syntax is called >> "lambda" or "function". > > That's not been my experience. Okay! What's been your experience? Can you show us two comparable situations, one where you taught lambda functions in Python, and the other when you taught anonymous functions but without the word "lambda", and can demonstrate that one is harder than the other? My experience is that *highly intelligent* adult students, who have mastered many other concepts very rapidly, frequently have trouble with: * Asynchronous programming * Anonymous functions * The difference between serverside and clientside validation * How to debug code * Recursion >> I believe that many people have a lot of trouble grasping the concept of >> functions as first-class values capable of being passed to other >> functions as data. It requires a major rethink of the way we think of >> functions. > > > Those topics have nothing to do with lambda expressions. You can demonstrate > them without ever writing a lambda expression. > 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!" > > Yup. I can't argue with that. I guess we should stick with "schubalu"... > > [Steven D'Aprano] >> >> Aside from having to learn the correct spelling ("lamdba"?) it >> was never the *name* that gave me trouble. > > > Maybe not for you, but it's fresh enough in my mind that the name itself > caused confusion. > I know it seems minor, but back in the 'partial' thread, I was literally > just talking about the name: lambda. > > 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. > > 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? > > [Steven D'Aprano] >> >> that cost is paid for, with interest, later, >> as a journeyman or journeywoman programmer. > > > 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... > > [Steven D'Aprano] >> >> Nevertheless, it is important that I teach them the technical terms too. > > > I find that beyond the basics: class, object, function, variable, argument, > parameter, etc. > Having students memorize jargon has limited value. > > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ > _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/