
On Wed, Jul 13, 2016 at 11:04:19AM +0900, Stephen J. Turnbull wrote:
There was extensive discussion about the issues surrounding the natural languages used by programmers in source documentation (eg, identifier choice and comments) at the time of PEP 263. The mojibake (choice of charset) problem has largely improved since then, thanks to Unicode adoption, especially UTF-8. But the "Tower of Babel" issue has not. Fundamentally, it's like women's clothes (they wear them to impress, ie, communicate to, other women -- few men have the interest to understand what is impressive ;-): programming is about programmers communicating to other programmers.
With respect Stephen, that's codswallop :-) It might be true that the average bogan[1] bloke or socially awkward geek (including myself) might not care about impressive clothes, but many men do dress to compete. The difference is more socio-economic: typically women dress to compete across most s-e groups, while men mostly do so only in the upper-middle and upper classes. And in the upper classes, competition tends to be more understated and subtle ("good taste"), i.e. expensive Italian suits rather than hot pants. Historically, it is usually men who dress like peacocks to impress socially, while women are comparatively restrained. The drab business suit of Anglo-American influence is no more representative of male clothing through the ages as is the Communist Chinese "Mao suit". And as for programmers... the popularity of one-liners, the obfuscated C competition, code golf, "clever coding tricks" etc is rarely for the purposes of communication *about code*. Communication is taking place, but its about social status and cleverness. There's a very popular StackOverflow site dedicated to code golf, where you will see people have written their own custom languages specifically for writing terse code. Nobody expects these languages to be used by more than a handful of people. That's not their point.
Maintaining the traditional spelling of keywords and operators is definitely useful for that purpose.
Okay, let's put aside the social uses of code-golfing and equivalent, and focus on quote-unquote "real code", where programmers care more about getting the job done and keeping it maintainable rather than competing with other programmers for status, jobs, avoiding being the sacrifical goat in the next round of stack-ranked layoffs, etc. You're right of course that traditional spelling is useful, but perhaps not as much as you think. After all, one person's traditional spelling is another person's confusing notation and a third person's excessively verbose spelling. Not too many people like Cobol-like spelling: add 1 to the_number over "n += 1". So I think that arguments for keeping "traditional spelling" are mostly about familiarity. If we learned lambda calculus in high school, perhaps λ would be less exotic. I think that there is a good argument to be made in favour of increasing the amount of mathematical notation used in code, but I would think that since a lot of my code is mathematical in nature. I can see that makes my code atypical. Coming back to the specific change suggested here, λ as an alternative keyword for lambda, I have a minor and major objection: The minor objection is that I think that λ is too useful a one-letter symbol to waste on a comparatively rare usage, anonymous functions. In mathematical code, I would prefer to keep λ for wavelength, or for the radioactive decay constant, rather than for anonymous functions. The major objection is that I think its still too hard to expect the average programmer to be able to produce the λ symbol on demand. We don't all have a Greek keyboard :-) I *don't* think that expecting programmers to learn λ is too difficult. It's no more difficult than the word "lambda", or that | means bitwise OR. Or for that matter, that * means multiplication. Yes, I've seen beginners stumped by that. (Sometimes we forget that * is not something you learn in maths class.) So overall, I'm a -1 on this specific proposal. [1] Non-Australians will probably recognise similar terms hoser, redneck, chav, gopnik, etc. -- Steve