[Edu-sig] The keyhole problem and learning environments
Paul D. Fernhout
pdfernhout at kurtz-fernhout.com
Fri Jul 14 04:31:09 CEST 2006
Andre Roberge wrote:
> There are *so many* interesting packages written in Python that it
> would be presumptuous, imo, to think that any individual or team of
> individuals could provide a learning environment powerful enough to
> satisfy all potential users of the various python modules that are
> available.
Thanks for the thoughtful reply with many good points.
I'll agree you have a good point I need to think more on from an
educational point of view seeing Python as a broad platform and as people
learn more about it they move from using one sort of library to another
(or one sort of editing environment to another). It's a coherent way to
look at Python and learning (both about Python itself and about things
Python helps you simulate). Thanks for outlining it.
Having said that, I still think there is a tension between two approaches.
One is getting people to invest a modicum of effort up from to learn a
small set of good tools like Smalltalk had even 30 years ago (browser,
inspector, debugger and transcript being the core ones) to give a
consistent experience to working with a well thought out core library. The
other approach is learning one simple tool, and then another fancier one,
and then another, etc, each perhaps easy to learn as a next step but
missing some essential feature, and moving from simple libraries to more
complex libraries as needs change.
I don't want to sound too complaining, but perhaps there are a lot of
Python libraries or tools sometimes because they are *all* missing
essential features or built with limited time and attention and
experience? Obviously, one hopes the reason is instead that they are all
good for different things or they are coming at a problem from different
points of view. :-) Most likely, it is a mix of both reasons.
Still, in the case of Python development tools, and not having sampled
them *all* myself, of the ones I've tried (Eclipse & PyDev, Eclipse &
RedRobin, Idle, Boa Constructor, Scite, and a couple others) they do lack
core features that any Smalltalker takes for granted -- for example always
having an integrated restartable debugger available during development, or
there usually being two levels of naming for methods and classes (i.e. an
organization "protocol" or "category" level above the actual object or
method level; almost all Smalltalks support this). And there are several
other core missing features. Not to say Python doesn't have its own
advantages, but the commercial Smalltalk libraries I've seen for all sorts
of core things are just more complete than Python's (for example, all the
stuff you can do with streams). [Python may win on breadth of free stuff,
especially web related.] Granted there are also drawbacks to some of
Smalltalk's approaches to things, and some of the libraries can require
abstract thinking to use them, but, when working on large projects, in my
mind there is little comparison, a good Smalltalk like VisualWorks (though
maybe not always Squeak) wins over Python (for large projects) because it
is easier to manage complexity in it usign those features. There may be
lots of good reasons for using Python anyway, including being
free-as-in-freedom, or being easy to learn for C programmers, but one
should be realistic about its relative weaknesses so one knows where
improvement can be done.
So, does that mean a beginner should be overwhelmed by all this at the
start (either tools or libraries)? Are "keyholes" sometimes good then?
That's an interesting question. And Smalltalk has always suffered from a
steep initial learning curve -- although I think webcasts like Francois
Schnell did for PataPata (thanks again) could help a lot with that. So,
one can still try to make an argument that a simple editor with a small
program is enough to learn the syntax and core library of a language (as
with a web based tool), and from then they can more onto other tools. I'm
still not sure I buy that argument, :-) but I'm just trying to make
explicit the assumptions underling it versus an alternative more
monolithic conventional Smalltalk approach.
I think part of this also depends whether you learn a system on your own
(prhaps from a book or on the web) versus whether you learn it in a
computer lab or through video demonstrations. Again, I've now seen from
Francois' webcast and now others as I look around at, say, ShowMeDo,
http://showmedo.com/
that watching even a five minute webcast may potentially make more
complex GUIs much more accessible to novices (or at least, motivate them
enough to push past the learning curve). Having mentored people learning
Smalltalk in industry and taught C to Bio majors at a university, I know
Smalltalk is the sort of thing most people do much better with when given
a little hand holding up front -- much more so that something like VB or
C++ (those those also benefit some of course). I think the difference is
that in Smalltalk so much of a typical system is accessible within the
environment (rarely meeting a compiled library brick wall) that helping
people come to see that is much more important than in other systems
(including sometimes Python) where one does rely on the documentation much
more than the code. (Actually in Smalltalk, one usually relies on finding
a real *example* of usage of an class of interest within the system...)
So -- a lot of variables in choosing how to present Python programming to
"everybody". How much hand holding is available? Do the learners have
access to video presentations or other ways of seeing complex tools being
used as in a classroom or computer lab? How motivated are the learners? Or
how much are they willing to invest of their time relative to what
benefits they expect? Or, from another perspective, how much time are the
learners willing to "risk" before they see a payoff? Conventional
Smalltalk tools often require you to be willing to risk a higher amount of
time before seeing any significant payoff, whereas you can type
" print 'hello' " on the Python command line and you are going. (Strictly
speaking that isn't quite a fair comparison because in Smalltalk you can
type something like " Transcript show: 'hello' " in almost any text pane
and click "do it" from a menu, but most Smalltalkers don't consider that
programming, which may be a flaw in how Smalltalk is typically taught. :-)
And, obviously, the Squeak Team led by Alan Kay has been moving more in a
simplified interface direction. They now have eToys, and beyond that
Croquet with some other tools, plus there were predecessors also in
Squeak. Now there is LogoWiki. So, they have made several attempts to put
simpler (or different) interfaces on top of Squeak or, for LogoWiki, in
front of people on the web (Squeak powered or not). Or in effect, creating
"keyholes" in front of Smalltalk. (Although, Smalltalk always remains
easily available at least in the Squeak powered examples). So that is a
vote even by the inventors of Smalltalk for such simpler interfaces.
Personally, I remain uneasy about those directions. While I am all for
tools to help making programming easier or even sometimes doing some of it
graphically, I think (as Kirby perhaps does?) that something big is
missing if there is no textual representation, or if the text
representation, as in eToys, is somehow, how to say this, somewhat
fragmented? And I can wonder if the eToys and such are really as easy to
use (for novices) as they look in demos (or even webcasts :-). I know from
the history of Smalltalk that young kids, when given some hand holding,
really can do stuff with textual Smalltalk representations. I presume
that extends to Python, even though Python is a harder language to learn
and use in some ways than Smalltalk -- if you don't already know C or
something like it.
Anyway, I'm mainly trying to think through some of these issues for
myself, including for how PataPata proceeds, so thanks again for your
comment (and thanks to Kirby for his too). Perhaps ultimately there is
just a cultural issue (influenced perhaps by technological choices). With
excellent modules from the start, and always being free and originating at
a university, Python has a modular culture with quite a bit of diversity,
and that is reflected in the philosophy you outline of learning how to
navigate within that community with all its choices. Smalltalk, on the
other hand, even though supposedly made for kids, was born in chains in
the heart of Silicon Valley, inspiring the Macintosh, and (unfortunately?)
aspiring later for a while to be the successor to COBOL in the financial
world, and was highly polished for decades by a relatively larger team of
well paid technologists some of whom went on to create publicly traded
companies around it, and that shows a very different cultural legacy --
more monolithic, less focus on modularity, a requirement applications be
packages without the compiler/interpreter, and until Squeak (and a few
lesser known others) the language had little of the scent of freedom
around it. So, some big cultural divides are there historically in how the
communities and technologies were created and evolved -- each with some
good points and bad points. So, one could also argue that your stepping
stone approach (or "learning steps" and "shallow curves") is also as much
an introduction to a Python community and related philosophies of freedom
underlying the diversity of tools and libraries as it is learning to
program. :-)
Still, I still don't want to let Python off the hook for missing some good
features Smalltalk had thirty years ago (though I've made some small
efforts at adding some such things to Python. :-)
[Well, need to wind this down and I'll be traveling for a week, so maybe
not much more follow up, sorry.]
--Paul Fernhout
More information about the Edu-sig
mailing list