[Edu-sig] Why Python?

Edward Cherlin echerlin at gmail.com
Thu Apr 15 05:44:24 CEST 2010


On Mon, Apr 12, 2010 at 12:53,  <chris at seberino.org> wrote:
> On Mon, Apr 12, 2010 at 09:30:50AM -0700, David MacQuigg wrote:
>>> We consider pseudocode "self-explanatory" to those who already know
>>> the syntax of a similar language. But it is not so, any more than
>>> mousing and icons is "intuitive" for those who have never seen them.
>
> That is eminently reasonable but I'm not sure it is true.  My children seemed
> to pick up using a mouse without any instruction IIRC.

Let me clarify. Moving the mouse pointer is automatic and inevitable.
Clicking is inevitable, but most clicks will fail to do anything.
Moving the pointer to an icon and clicking is obvious if you see
someone else do it, without formal instruction. So far, so good. Now
what about

click and drag (menu selection, open submenu, move, resize, rotate, draw)
right click (context menu)
middle click (or left and right click simultaneously. Various effects)
hover (hint, alt text, popup, short menu)
hover longer (longer menu)
double click (open, run)
shift click and drag (selection)
triple click (larger selection, line or paragraph)
control click (no standard)
alt click (no standard)
etc.

Gamers learn many more combinations, sometimes including complex
chords, on special gamer controls. Emacsers only use the mouse to
change virtual terminals, if that, and do everything else with key
combinations (EMACS = Escape, Meta, Alt, Control, Shift)

My experience is that all of these mouse actions need to be taught,
particularly the multi-use actions like shift click. This may consist
of demonstrating each usage once, if the result is sufficiently
rewarding and immediate. With very young children, I hold the x mouse
key for them on the XO at first, to let them get the hang of click and
drag in stages. Large numbers of adults are completely unaware of
triple click. I personally hate delayed hover menus, especially
doubly-delayed expanding hover menus, as in Sugar. This is being
redesigned.

> Geometry, motion & pictures seem
> to tap a very primitive part of our brains...much deeper than the symbology of
> algebra and pseudocode.  I wonder if there are methods of communication that
> don't need much explanation because that is how are brains are naturally wired.

Try Scratch, which applies Smalltalk to multimedia. Editing movies is
just drag and drop.

Also Turtle Art. Sugar has a version in Python which supports adding
functions in Python. I have done a presentation on teaching Python in
elementary schools using these tools. You can put a Python expression
into a graphing tile, for example, or grab math examples from Pippy
the Python editor and tell the turtle to map out primes, or Fibonacci
numbers, or the Pascal triangle. (Mod 2, it gives a Sierpinski
fractal.)

>> It's interesting to speculate whether there
>> will ever be another major improvement in programming, a step beyond
>> Python, or if Python will simply incorporate any good ideas that come
>> along (as it did with our @ syntax).  I would bet on the latter.

I bet against you. This is not a new idea. See The Next 700
Programming Languages, by Landin. He proposed absorbing everything
into LISPish language structures.

> Well that is exciting for me as I know Python and don't want to learn a new
> language every 3 months.

A gentle introduction to APL concepts without the syntax and symbols
is available in numpy.

I propose to teach children the basics of the essential features used
in all of the major languages, in primary school. My short list of
really major concepts includes

arithmetic (prefix in LISP, postfix in FORTH, infix everywhere else)
variable names are pronouns
namespaces
Boolean algebra
sets
permutations, sorting, and searching
combinatorics
lists of lists (LISP, SCHEME)
arrays (APL)
forests (arrays of trees, J)
OOP (Smalltalk, Python)
minimal syntaxes with neither parentheses nor precedence
parse trees
first-class functions
functional programming
number base/polynomial equivalence
data/program equivalence
database
topological (dependence) sorting for spreadsheets

Then they will recognize that new languages differ mostly in syntax,
which is no big deal for those who understand how computing really
works. _You_, on the other hand, don't need to learn a new language
more often than every two or three years in order to start catching
up.

Obviously, we can't give third-graders that list of terminology. The
idea is to present real examples of these ideas, and only introduce
the names later--the opposite of the age-old tradition in textbooks,
but a match to the way infants learn before they acquire language.

BTW, did you know that infants can learn four or more languages
simultaneously without ever finding out that it's supposed to be hard
to do?

> cs
> _______________________________________________
> Edu-sig mailing list
> Edu-sig at python.org
> http://mail.python.org/mailman/listinfo/edu-sig
>



-- 
Edward Mokurai (默雷/धर्ममेघशब्दगर्ज/دھرممیگھشبدگر ج) Cherlin
Silent Thunder is my name, and Children are my nation.
The Cosmos is my dwelling place, the Truth my destination.
http://www.earthtreasury.org/


More information about the Edu-sig mailing list