PEP 3131: Supporting Non-ASCII Identifiers

Anton Vredegoor anton.vredegoor at gmail.com
Tue May 15 08:44:44 EDT 2007


HYRY wrote:
>> - should non-ASCII identifiers be supported? why?
> Yes. I want this for years. I am Chinese, and teaching some 12 years
> old children learning programming. The biggest problem is we cannot
> use Chinese words for the identifiers. As the program source becomes
> longer, they always lost their thought about the program logic.

That is probably because they are just entering the developmental phase 
of being able to use formal operational reasoning. I can understand that 
they are looking for something to put the blame on but it is an error to 
give in to the idea that it is hard for 12 year olds to learn a foreign 
language. You realize that children learn new languages a lot faster 
than adults?

> English keywords and libraries is not the problem, because we only use
> about 30 - 50 of these words for teaching programming idea. They can
> remember these words in one week. But for the name of variable or
> function, it is difficult to remember all the English word. For
> example, when we are doing numbers, maybe these words: [odd, even,
> prime, minus ...], when we are programming for drawing: [line, circle,
> pixel, ...], when it's for GUI: [ button, event, menu...]. There are
> so many words that they cannot just remeber and use these words to
> explain there idea.

Again, it's probably not the language but the formal logic they have 
problems with. Please do *not* conclude that some child is not very good 
at math or logic or programming when they are slow at first. It doesn't 
tell one very much how good they might become later on and some 
premature idea the teacher might have formed about a pupil in that phase 
can even be harmful for their later perspectives.

> Eventlly, when these children go to high school and study enough
> English, I think they can use English words for programming. But as
> the beginning step, it is difficult to learn both  programming and
> English.

The older they get the harder it is for them to learn language. By 
withholding them English language experience at an early age you are 
doing them a disservice because later on they will have more trouble.

The other thing is trying to teach them formal operational logic when 
they are not yet ready for it. In that case it would be better to wait 
until they are ready, but unfortunately there are large variations in 
the age at which children become ready. Please do not confuse the two 
very different matters of language acquisition and formal operational 
logic. Language is learned at an early age while formal logic starts at 
about the age of eleven (but with very large variation among children).

> So, I made a little program, just replace all the Chinese words in the
> program to some sequency identifiers such as [a1, a2, a3, ...], So we
> can do programming in Chinese, and Python can still run it.

Why not use IronPython? But anyway you are actually making things worse 
by *not* teaching them the language now that they will need later on and 
by *teaching* them formal operational logic at an age when they just get 
disappointed and frustrated by not yet being able to understand it. 
Better go easy on them and teach them lots of English computing terms 
and only introduce logic when they show they are ready.

A.




More information about the Python-list mailing list