[Idle-dev] Running beginner Pythons

Terry Reedy tjreedy at udel.edu
Mon Dec 21 02:01:01 EST 2015


On 10/12/2015 1:35 AM, Serhiy Storchaka wrote:
> On 10.10.15 05:29, Terry Reedy wrote:
>> Reconceptualizing for beginners...
>>
>> Many people working with kids have asked for various changes to Python
>> in order to make it easier for kids, sometimes very young.  Some
>> variations have been requested more than once.
>>
>> 1. Simple looping: 'repeat/do/loop/for n [times]:' (take your pick of
>> keyword) versus 'for i in range(n):'.
>>
>>   The latest request is by Andre Roberge, today on python-ideas, in
>> "Simpler syntax for basic iterations".  This inspired me to write this
>> post.  The education hook he offered is that the variation eliminates
>> the need for a loop variable in a context where variables are not
>> otherwise used.  He has worked on robot programming for kids.
>>
>> 2. Simple function call: 'move 3', 'turn 90' (Logo, I believe) versus
>> 'move(3)' 'turn(90)' (Turtle).
>>
>> 3. Simple Native language keywords.  String-within-code translation is
>> not suited for this.
>>
>> These are all things I think are wrong for Python itself but possibly
>> right for various learning situations.  For 18 years I have watched
>> people try to change Python in ways like the above, when I think the
>> energy would be better directed to writing good quality translation
>> functions.

Part of my motivation for the idea is that Mark and I are working on 
rewriting and substantially improving IDLE.  If and when we succeed, it 
would make even more sense to reuse it for related jobs than it does now.

> Please don't touch IDLE. At least while it is a part of Python. IDLE is
> *Python's* Integrated Development and Learning Environment, not Logo's,
> and shouldn't learn non-Python syntax.

I was not and am not proposing to deliver IDLE with anything 
non-standard.  I was only suggesting the possibility of slightly 
simplifying the current ability to customize IDLE. Python already comes 
with sys.displayhook, which can be used to arbitrarily change output. 
IDLE already comes with an extension hook that can be used to manipulate 
input. Reformatting string and comment paragraphs is one example 
(ReformatParagraph.py).  Running the code in the editor is another 
(ScriptBinding.py).  A modified version of ScriptBinding could do any of 
the above.

My specific idea was to add a hook to the ScriptBinding to optionally 
call a translation function just before compiling. Thinking about it 
now, there is hardly any need to do so.

A Stackoverflow question prompted me to think about this more.
https://stackoverflow.com/questions/34382144/changing-number-representation-in-idle
The OP wants to use interactive python, in particular IDLE's Shell, as a 
calculator that can change the number base.  The output part can be done 
with sys.displayhook and an extension to install menu items.  The input 
part could be done by re-writing ScriptBinding or writing a separate 
extension that re-writes on demand.

In the course of working this out, I realized that if I wrote a patch to 
make use of a translator easier, I would disable translation when 
running a .py, .pyw, or .pyo file or when the interactive prompt is 
'>>>'.  If I hear of anyone else doing something like this, I would 
request following the same restriction.  I agree that code marked as 
'python' should be standard Python syntax and interpreted with standard 
semantics.

-- 
Terry Jan Reedy




More information about the IDLE-dev mailing list