Re: Python as an introductory programming language (fwd)
- On Fri, 7 Dec 2001, Adi Stav wrote:
> On Fri, Dec 07, 2001 at 10:09:05AM +0200, Shlomi Fish wrote:Check:
> > I am forwarding here a message by Damian Conway in which he expresses his
> > opinion regarding Python as an introdcutory programming language in
> > regards to the discussion we had a few monthes ago.
> > From: Damian Conway <damian@...>
> > My opinion is that no OO language is ideal as a first programming language.
> > Introductory languages need to be simple, to avoid introducing too many
> > semantic layers that all have to be understood at once in order to program.
> > Most OO languages compound this problem by requiring the programmer to
> > use an extensive library to do most tasks (thereby adding yet another layer).
> > In fact, I would go so far as to argue that *no* real-world language is
> > well suited as a first programming language, for the same basic reasons:
> > too big, too powerful, too complex, too many semantic layers.
> I think this is an important point, but I don't entirely agree
> (except for with the standard library argument). A language need
> not be entirely simple (or, rather, simplistic) to be easy to learn
> -- what is important is to be able to write simple programs using
> the basic characteristics of the language.
for "having taught").
As you can see there, Dr. Conway himself does not favour the approach of
teaching a subset of a language. And I think he has a point. I'll quote
him here, just in case:
Having taught introductory programming to several thousand freshman, in
several languages, for the past 10 years, I can assure you that teaching a
subset of a language is not a successful strategy. I have tried that
approach on three separate occasions, and it just doesn't work.
As I explained in the "Seven Deady Sins" paper, it fails for two reasons:
1. None of the textbooks or reference works available restricts itself
to the subset you've chosen to teach, so when the students are looking for
help, they're constantly fighting their way past concepts and syntax
they've never seen before.
2. The compiler/interpreter you're using doesn't restrict itself to
your subset either. So every mistake they make triggers features or errors
that you've (deliberately!) not equipped them to understand.
>>>It could be a good strategy to teach the introductory programming course
> As a negative example, It is possible to create simple subsets of
> almost any language that will be more or less suitable as first
> languages, but I think that for the majority of the langauegs such
> subsets will feel rather unnatural to a programmer experienced with
> that language (e.g., C). The problem with that is that it will be
> difficult to continue teaching more advanced topics without changing
> to a different language, whether the change is explicit (let's dump
> Basic and teach Pascal) or implicit (now that they know C, let's
> teach pointers).
in one language which is highly suitable for this task. Then, for more
advanced topics you can use a different one.
> Rather, I think that some languages allow a much more gradualI don't understand why OOP in Perl is "advanced magic". There is some
> transition -- the advanced features of such languages seem like
> extensions of the basic ones. In the Python OOP case, for instance,
> an object is just another way to group variables, and the student
> will have to know how to group variables by that time anyhow. OOP
> in Python is not some advanced magic, as it is in Perl and to a
> lesser extent C++, neither it is a particularly sophisticated method
> of working with the language's featuers like it is with most C OOP
accomodation for it in the interpreter and in the syntax, but so there is
> To sum it up, I don't think an entire language need to be learned inWe are not talking here about teaching OOP. We are discussing how to teach
> one go, nor do think OOP must be learned in one go. I think it is
> very natural to progress from "these functions and their data are
> related so let's keep them together", and the full weight of
> multiple-inheritence and polymorphism theory.
> To unsubscribe from this group, send an email to:
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
Shlomi Fish shlomif@...
Home Page: http://t2.technion.ac.il/~shlomif/
Home E-mail: shlomif@...
1. A is A
2. A is not not-A
does it imply that
1. B is B
2. B is not not-B