Loading ...
Sorry, an error occurred while loading the content.

Re: Python as an introductory programming language (fwd)

Expand Messages
  • Shlomi Fish
    ... Check: http://use.perl.org/article.pl?sid=00/10/25/2258208&mode=thread (search for having taught ). As you can see there, Dr. Conway himself does not
    Message 1 of 3 , Dec 7, 2001
      On Fri, 7 Dec 2001, Adi Stav wrote:

      > On Fri, Dec 07, 2001 at 10:09:05AM +0200, Shlomi Fish wrote:
      > >
      > > 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.


      http://use.perl.org/article.pl?sid=00/10/25/2258208&mode=thread (search
      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.

      > 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).

      It could be a good strategy to teach the introductory programming course
      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 gradual
      > 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
      > implementations.

      I don't understand why OOP in Perl is "advanced magic". There is some
      accomodation for it in the interpreter and in the syntax, but so there is
      in Python.

      > To sum it up, I don't think an entire language need to be learned in
      > 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.

      We are not talking here about teaching OOP. We are discussing how to teach
      introductory programming.


      Shlomi fish

      > To unsubscribe from this group, send an email to:
      > hackers-il-unsubscribe@egroups.com
      > 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
    Your message has been successfully submitted and would be delivered to recipients shortly.