Should we still be learning this?

M

Max

On monday I start a semester course in Python (the alternative was
Java). I was looking through the course outline and noticed the following:

1) UserDict is used. This is deprecated, right?
2) There is no mention of list comprehensions, but map and filter are
taught early and then revisited later. I don't think this is good: list
comprehensions are, IMO, one of Python's great features, Psyco prefers
them, they're more pythonic, and map and filter seem to be going out the
window for Python 3000.

What do you think?

--Max
 
F

Felipe Almeida Lessa

Em Sáb, 2006-02-18 às 14:38 +0200, Max escreveu:
On monday I start a semester course in Python (the alternative was
Java). I was looking through the course outline and noticed the following:

1) UserDict is used. This is deprecated, right?

LOL... it's the first time I see someone talking about this module.

/me checks the documentation.

Yep, looks like this module is deprecated since Python 2.2.
2) There is no mention of list comprehensions, but map and filter are
taught early and then revisited later. I don't think this is good: list
comprehensions are, IMO, one of Python's great features, Psyco prefers
them, they're more pythonic, and map and filter seem to be going out the
window for Python 3000.

Urgh. This sucks. Did they mention generators, at least? Sometimes list
comprehensions are even faster (I didn't check, but I think this one can
be an example of this: [i*2+2 for i in iterator] vs. map(lambda x: x*2
+2, iterator)).

They should have taught both.
What do you think?

I wonder if they need some updating.

Just my two cents,
Felipe.

--
"Quem excele em empregar a força militar subjulga os exércitos dos
outros povos sem travar batalha, toma cidades fortificadas dos outros
povos sem as atacar e destrói os estados dos outros povos sem lutas
prolongadas. Deve lutar sob o Céu com o propósito primordial da
'preservação'. Desse modo suas armas não se embotarão, e os ganhos
poderão ser preservados. Essa é a estratégia para planejar ofensivas."

-- Sun Tzu, em "A arte da guerra"
 
M

Max

Felipe said:
Em Sáb, 2006-02-18 às 14:38 +0200, Max escreveu:

Urgh. This sucks. Did they mention generators, at least? Sometimes list
comprehensions are even faster (I didn't check, but I think this one can
be an example of this: [i*2+2 for i in iterator] vs. map(lambda x: x*2
+2, iterator)).

No mention of generators in the outline.
They should have taught both.




I wonder if they need some updating.

And so does Dive Into Python (our textbook, diveintopython.org) which
has the same deficiencies in its outline.
Just my two cents,
Felipe.

Thanks,
Max
 
J

John Zenger

Don't overly concern yourself with your course being 100% up to date.
When learning programming, the concepts are what is important, not the
syntax or libraries you happen to be using. Even if they were to teach
you the latest and greatest features of 2.4.2, that would be out of date
in a few months/years when the next version comes along and the Python
gods decide to deprecate the entire os module or something.

Syntax and libraries change; just roll with it. When you are a student,
the important thing is learning the mental skills of how to put it all
together. When I was a wee lad, they taught me Pascal, a language that
is now as dead as Latin, but I now realize that the language did not
matter; all that mattered was that I learned the basics of how to design
and put together a program in a (procedural) language. Once I knew
that, it was a cinch to teach myself C in an afternoon, and only
slightly tougher to learn C++ and then Java.

Python is a good teaching language because by learning one language you
learn three major programming paradigms: procedural, OO, and functional.
It doesn't matter if, three years from now, a Dark Age descends upon
the land and Python becomes as extinct as Pascal. If your course was
decent, you spent your time learning programming, not just learning
today's syntax and libraries, and you'll be able to learn Microsoft
Visual C#++.Net.Com.Org or whatever other language happens to be
fashionable in the future.

And BTW, map and filter are such useful concepts that it makes sense to
teach them to students even if they will one day be deprecated in
Python. If you want to teach yourself Haskell or a Lisp dialect (and
you should!), knowing those concepts will come in very handy.
 
F

Felipe Almeida Lessa

Em Sáb, 2006-02-18 às 15:13 +0200, Max escreveu:
And so does Dive Into Python (our textbook, diveintopython.org) which
has the same deficiencies in its outline.

Are they being *paid* for teaching? Then they should overcome this issue
of Dive Into Python by either using their own material our by improving
Dive Into Python and giving it back to the community.

--
"Quem excele em empregar a força militar subjulga os exércitos dos
outros povos sem travar batalha, toma cidades fortificadas dos outros
povos sem as atacar e destrói os estados dos outros povos sem lutas
prolongadas. Deve lutar sob o Céu com o propósito primordial da
'preservação'. Desse modo suas armas não se embotarão, e os ganhos
poderão ser preservados. Essa é a estratégia para planejar ofensivas."

-- Sun Tzu, em "A arte da guerra"
 
B

B Mahoney

I was initally annoyed that "Dive into Python" has the UserDict, but it
was so
easy to discover it was deprecated
http://docs.python.org/lib/module-UserDict.html
(althought the term 'deprecated' is not specifically used), that anyone
on the
ball (the OP seemed to know) would not based their next big project on
UserDict.

I agree that Python has so many good concepts, and improvements with
each new version, that something in a course will be outdated. I can
concur
that knowing Python made it much easier to go back to C++ and Java and
understand the OO.

My tip for an book on Python with only the latest information, nothing
beats the Python Pocket Reference, 3rd edition, (O'Reilly) which
is updated for 2.4 and seems to clearly label any deprecated features.
 
M

Max

Felipe said:
Em Sáb, 2006-02-18 às 15:13 +0200, Max escreveu:



Are they being *paid* for teaching? Then they should overcome this issue
of Dive Into Python by either using their own material our by improving
Dive Into Python and giving it back to the community.

Indeed they are. It is a university course. It doesn't actually cover
anything I don't know, but it's a choice between relearning Java and
relearning Python (since I plan to major in computer science, I have to
do first year)

--Max
 
M

Max

John said:
Don't overly concern yourself with your course being 100% up to date.
When learning programming, the concepts are what is important, not the
syntax or libraries you happen to be using. Even if they were to teach
you the latest and greatest features of 2.4.2, that would be out of date
in a few months/years when the next version comes along and the Python
gods decide to deprecate the entire os module or something.

All of us know how to program: the idea is that those who got more than
70% for Java in high school can learn a second language instead of doing
Java all over again.
And BTW, map and filter are such useful concepts that it makes sense to
teach them to students even if they will one day be deprecated in
Python. If you want to teach yourself Haskell or a Lisp dialect (and
you should!), knowing those concepts will come in very handy.

True. But I think list comprehensions are also damn useful (and AFAIR,
Haskell has them too).

I already know some Scheme (I've played the "game" Lists And Lists, a
Scheme tutorial, and used the GIMP's script-fu). I have tried to learn
Haskell, but - though I think I understand everything I read on it - I
can't get my programs to run.

--Max
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,521
Members
44,995
Latest member
PinupduzSap

Latest Threads

Top