[Python-3000] Support for PEP 3131 (original) (raw)
Talin talin at acm.org
Sun May 13 07:36:10 CEST 2007
- Previous message: [Python-3000] Support for PEP 3131
- Next message: [Python-3000] Support for PEP 3131
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Guillaume Proux wrote:
Dear all,
Pleased to meet you. I just subscribed to the list because I wanted to join the discussion regarding a specific PEP (for all the rest, you are all much more expert than me) Guido: 3131 (non-ASCII identifiers) -- I'm leaning towards rejecting. I would like to voice my opposition to the rejection at that stage and request that more time is spent requesting/analysing the opinion of more people especially the people who have to deal with non-roman languages as a daily basis and especially people in the education field (along like other interesting people like the OLPC people)
One point that was raised by Alex Martelli is that the full set of Unicode 'letter' characters includes many characters which are visually indistinguishable in every font in the world. It means that, from now on, when I look at the variable named 'a', I can no longer be sure that what I am looking at is really the character I think it is. It means that we have introduced, for every Python programmer, a level of uncertainty that wasn't there before.
Programming languages are supposed to represent a compromise between the capabilities of humans and the capabilities of computers - in other words, both humans and computers are supposed to meet each other half-way and find a "sweet spot" that represents a restricted set of commands and symbols that both can understand. Each of them is expected to put a certain amount of effort into learning this common language - in the case of the computer, that effort is embodied into the design of the compiler, and in the case of the human, that effort is the learning of a formal dialect of commands and codes.
However, there is another use of programming languages, which is for programmers to communicate with each other. Specifically, the programming language provides a concise, unambiguous way to describe a particular algorithm or technique. Again, there is the expectation that practitioners of this discipline are expected to put a certain amount of effort into learning this formal language so that they can communicate with each other precisely.
The fact that programming languages resemble a particular human language is a pedagogical convenience, but it need not be so, and wasn't always that way. And the fact that a pidgin form of English words and grammar is used for most programming languages is a frozen accident, just as English is also the language used for international air traffic control. However, I think it is a mistake to think that programs themselves are written in "English", they are written in a formal language, similar to the language of mathematics, which every programmer needs to put in a modest amount of effort to learn, even native English speakers.
In any case, I would argue that if you teach someone to program in a dialect that cannot be understood by the global community of programmers, then you haven't really taught them 'programming' at all - you've taught them a kind of applied logic that they might be able to use personally, but that is only a small part of the craft of software engineering. The greater part is the ability to understand the vast corpus of literature out there that explains how to do just about everything you can think of with these tools. Only through learning a common language can they participate in the global technical infrastructure, which is more and more what I believe 'programming' is about.
There is another issue to be considered as well: Many human languages have a different grammatical structure. Even if you were to allow non-ASCII identifiers, and more so even if you were to allow the keywords themselves to be localized, you still have the problem that 'if' comes at the start of a sentence, which makes no sense in many languages.
-- Talin
- Previous message: [Python-3000] Support for PEP 3131
- Next message: [Python-3000] Support for PEP 3131
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]