[GLLUG] Programming logic & design

Jeremy Bowers jerf at jerf.org
Wed Apr 26 16:52:35 EDT 2006


Caleb Cushing wrote:
> My school taught "intro to programming logic & design" which supposedly
> taught  that but they didn't teach a language with it. Julie want's to
> learn how to program. She seems to be under the impression that I know
> enough about it to teach her. which I don't. I'm just starting to
> attempt to teach myself again. I know a few people say that you should
> learn the logic and design first. I kind of disagree, I thought the
> class should have taught some kind of language because it's hard to get
> interested when what your doing doesn't do anything at all.

I think learning a computer language for the first time is a lot like
learning a natural language; you sort of have to progress on all fronts
at once.

My personal recommendation would be to combine Jason Green's excellent
suggestion with:

http://www.ibiblio.org/obp/thinkCSpy/

which is "How To Think Like A Computer Scientist in Python". It's a bit
of a misnomer, it's actually How To Think like a Computer Programmer",
but it's a good start.

My suggested "curriculum" would be:

* To read that book through once, without doing anything.

* Pick a suitable small project to do.

* Read the book through again, doing the exercises and working with the
samples. You'll find yourself all the while saying "Oh, I can use this
for X in my small project."

* Begin the sample project. Refer back to the book as necessary. Sign up
to the Python tutor list and ask questions there as needed. (That's the
place best suited to beginners.)

This list could have a long discussion about what languages are best to
learn first, etc. etc., and I don't want to sound like I'm imperiously
cutting off discussion, but Python occupies a unique position in that it
comes from a heritage of languages that are designed to be easy to
learn, and yet is also one of the most powerful languages available.
(Python descends from ABC, a language specially designed for learning
and teaching.)

Python's closest competition in this field is Ruby and Perl, but Perl is
considered somewhat baroque and quirky even by experienced programmers,
and my call on Ruby is that it's a wonderful language to switch to and
seems wonderfully easy if you've already gotten some experience in
another language (and especially if you've banged up against the limits
of that language), but looking at even simple snippets of Ruby code I
see lots of little things that I would not care to explain to my wife.
Python's got a lot fewer of those.

YMMV, of course, but I think while you can profitably debate "Which is
more powerful/better, Python or Ruby?", the question of which is easier
to learn for a non-programmer is pretty settled in favor of Python.
Ruby's Perl heritage doesn't serve it well in this department. I can
speak to the fact that the design process of Python is also continuously
considering what impact new features will have on new programmers, as
well, so it's a continuing priority.


More information about the linux-user mailing list