[Edu-sig] ACM article on Python

kirby urner kirby.urner at gmail.com
Thu Mar 19 15:38:39 CET 2015


On Thu, Mar 19, 2015 at 12:59 AM, Mark Engelberg <mark.engelberg at gmail.com>
wrote:

> Kirby, have you ever looked at mathpiper? (http://www.mathpiper.org/)  I
> know you have a strong interest in fusing math explorations with
> programming, so it seems like something that would be right up your alley
> -- sort of an accessible Mathematica intended for education.  The docs
> section also contains a couple e-textbooks that weave in a lot of
> mathematics examples into the programming instruction (
> http://www.mathpiper.org/documentation-1)
>

Thanks Mark, perusing the book / language now.  Rings a bell.   Yes:
https://mail.python.org/pipermail/edu-sig/2010-December/010148.html

Having an interactive console is key I think, so you may use the
interpreter as a calculator.

All the languages we're discussing are like that, including: ISETL (cited
by Tim Peters early on), J, APL (both Iverson & Co.), and Mathpiper here
(and Wolfram's Mathematica of course, and Guido's Python, and Pyret).  REPL
is king. [1]

Logo was of course a huge pioneer in adding graphical / robot output really
early.  Logo had just the one "context turtle" e.g. FD 10 meant the one
turtle.  OO makes it easy to incarnate many such animals, each with its own
state.  Some schools of though decry "internal state" but I notice that we
have it in the real world and value that feature.

I've never been a "one language uber-alles" kind of guy in that I always
encourage exposure to multiple languages, at least two that are different
enough to provide real contrasts. I'm not eager for everyone to "agree on
one language" for all purposes, though "business English" does serve as a
kind of global esperanto in some dimensions.  That doesn't mean it should
take over in higher level thought.

Sure, one language might be "front burner" compared to another in one's
studies.  Python + J (jsoftware.com) has been a combo I've often
recommended.  The LEX Institute approach ("Who is Fourier?") to learning
human languages has been influential (better to tackle many over just one,
because of the synergies involved).

My first exposure to programming in university, no counting high school
hours spent with an HP-65 programmable calculator as (a) eclectic and (b)
pre-Python.  Our intro course was more of a survey including: PL/1, Snobol,
Assembler, APL, LISP.  Obviously we were not to become masters of any,
however letting the contrasts sink in really opened my thinking to the
"ecosystem" idea.  APL became my favorite in the 1970s (because of REPL in
large degree), which explains my later fascination with J (both Iverson
languages).[2]



>
> Certainly one of the more attractive aspects of Python is that it is both
> relatively-easy-to-learn and relatively-useful-in-the-real-world.  But
> there's definitely a school of thought that *no* language used in industry
> is optimal for education, that the aims of industry and education are too
> incompatible for one language to rule for both purposes.  It's definitely
> an interesting debate.  I feel fortunate that I work with young enough kids
> that I feel little pressure to teach them something with immediate
> marketable value.  This gives me the freedom to experiment with many
> different languages; I've found that I rather like teaching ones expressly
> designed for education, but Python remains one of my favorite educational
> options of the popular, mainstream languages.
>
>
I'm all for encouraging debate.

What I hear a lot is once your language becomes typecast as "a teaching
language" that's "the kiss of death" as far as industry is concerned.
That's a stereotype to overcome I think.

I tend to think of industry as averaging 10 years ahead of academia with
the latter making do with what more competitive / secretive enterprises
have contributed to open source (I associate "free and open" with the
"liberal" in "liberal arts"). That's more typecasting institutions than
individuals, which latter tend to go back and forth between the two.

So my attitude is more "Python and what else?" i.e. lets not stop with
Python as if it were some be-all-end-all.  It ain't.  It's another tool,
like business English is a tool.

Python + Pyret as a bridge to something else then?  Haskell?  Prolog?

I'm not one of those who think you need to join warring Camp A (OOP) or
warring Camp B (FP) and then express loyalty to one by dissing the other.
Rather, play up the strengths of both paradigms (I know Shiriam disputes
that OOP is really a "paradigm" but whatever).[3]

For me, the thing that has made me lose some enthusiasm for Python was not
> even mentioned in the article.  For me, the biggest downside is that the
> language, with its Global Interpreter Lock, lacks a clean solution to
> teaching concurrency.  IMHO, concurrency has become a vital issue, and
> requires a somewhat different way of thinking about problems.  To create
> the next generation of exceptional programmers, I believe we need to
> introduce models of concurrent programming much earlier in the curriculum.
> Almost every recent programming language places a huge emphasis on
> concurrency (such as Clojure, Scala, Go, F#, Julia, and many others) but
> none of those are particularly welcoming to beginner programmers.  So I'd
> love to see more educational languages that feature concurrency.
>
>
That sounds valid and interesting.  How well does Pyret fit that bill I
wonder?

Python has new infrastructure growing out of Tulip around the syntax of
yield, using from and send, to develop its native asynchronous capabilities
even more.  For myself, when I'm at OSCON you'll find me in the Scala and
Clojure tutorials. [4]

My friend Dr. David DiNucci has written a book on concurrency which has
plunged me back into thinking of programming as theater, scripting
characters (agents) to do stuff, oft in parallel.[5]

Managing concurrency in ordinary life amongst multiple players is something
I think we need to get better at in business / enterprise / institution
management in general, not just in our use of multiple processors.
Operations Research, as it used to be called, with its PERT charts and
critical paths, was always about concurrency (e.g. building a submarine or
A-bomb faster than the competition).

I go back to Python being a "glue language" that "plays well with others"
and believe in harping on those virtues as they both imply "others" to glue
together and play with.

Python is not like the pythons in Florida, stereotyped as devouring
everything else, leaving only pythons (all alligators eaten).  That's not a
goal.

The evolutionary advantages that go with biodiversity is an important
principle.  Python is so useful because it's like a tour bus:  once you're
on board, you get to visit many alien lands through what it controls i.e.
talks to (e.g. Blender).

So for me it's always "Python and what else?" these days, and not "How can
we replace Python with something else more trendy?".

Kirby

[1]  http://mathforum.org/kb/message.jspa?messageID=9718737
      http://mathforum.org/kb/message.jspa?messageID=9700004

[2]  http://www.4dsolutions.net/ocn/Jlang.html  (Jiving in J -- Iverson
himself helped me catch a typo or two)

[3]
http://cs.brown.edu/~sk/Publications/Papers/Published/sk-teach-pl-post-linnaean/paper.pdf
 (anti "paradigms")

[4]  http://controlroom.blogspot.com/search?q=Clojure  (Scala comes up too)

[5]  Dave's book:
http://www.barnesandnoble.com/w/scalable-planning-david-dinucci/1110902186?ean=9781475211160
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/edu-sig/attachments/20150319/ea7460ff/attachment.html>


More information about the Edu-sig mailing list