Mark Lutz - O'Reilly press. Probably the best book on
programming Python if you already know another language.
Typical O'Reilly style, so if you don't like that you may
prefer:
Programming in Python 3
Mark Summerfield - Addison Wesley. This takes a fairly
fast paced trip through Python and introduces lots of the
interesting packages you might like to use.
Programming Python
Mark Lutz - O'Reilly press. The classic (and massive) text.
The 4th edition assumes you already know the language
(his Learning Python book now covers that ground) but
describes the whys and wherefores of the language better than
many of the the others, it is strong on coverage of the more
unusual modules and OOP. Its Tkinter section alone is around
400 pages long. A new edition is overdue.
Python Programming on Win32
Mark Hammond & Andy Robinson - O'Reilly press. This is
an essential read if you are serious about using Python on a
Windows box. It covers access to the registry, ActiveX/COM
programming, various GUIS etc. It is getting a little dated
now and does not cover the ctypes module but is still
the only real specialist book on Windows and Python.
Python and Tkinter Programming
John Grayson - Manning press. This is the only real in
depth book on Tkinter and does a fair job of covering the
ground, including the bolt-on PMW set of widgets. It's not a
basic tutorial but it does provide a reasonable reference for
the serious Tkinter GUI programmer. It is however quite dates
and is Python v2 only. Fortunately it is pretty easy to adjust
the code for v3.
Python Essential Reference
David Beasley - New Riders. Based on Python 2.6/3 A concise
reference book covering the most commonly used modules and
project areas.
There is also an excellent online book for more advanced
Python programmers called
Dive into Python
Finally, while not actually a book, there is a Python
"cheat sheet" available online (or
in PDF format).
There is also a new generation of Python books appearing on
specialist topics, there are books focusing on text handling, GUI
programming, Network programming, Web and XML programming,
Scientific computing, Machine Learning etc. etc. Python has really
come of age as a language and the number and depth of books
now available reflects that.
Tcl/Tk
Tcl/Tk in a Nutshell
Raines & Tranter - O'Reilly press. This is the book I
turn to first when looking for Tk information. It's really only
the sections on Tk and Tix that interest the Python programmer.
On the other hand, you might like the look of Tcl too and
be motivated to experiment, and that's never a bad thing!
VBScript
There are a few books on VBScript but as the language is becoming
less of a force, even in the Microsoft world, this is not likely
to improve. The only ones I have used and can thus recommend are:
VBScript in a Nutshell
Lomax et al - O'Reilly press. Good reference but the
tutorial section is very sparse and only suitable if you know
how to program (eg. you've done my tutor! :-). As a reference
it is quite good but misses out by not providing a code example
per function.
Windows Script Host
Dino Esposito - Wrox press. A good intro to WSH including
both VBScript and JScript. But it's not a language tutorial
and the reference section is very brief. Only available
second hand now
JavaScript
There are lots of books on JavaScript but most of them focus
very heavily on the Web, it can be hard sometimes to disentangle
what features are JavaScript the programming language, and what
are web browser features. The best JavaScript books that I know
are:
JavaScript the Definitive Guide
Flanagan - O'Reilly press. This was indeed the definitive
guide for a long time and although getting a little old now is
still the best single book on the subject, if a little
dry.
The JavaScript Bible
Danny Goodman - SAMS(?). This gets good reviews from friends
and colleagues but I confess not to having read it. It is
supposed to be a slightly more readable book than the
Flanagan one.
JavaScript: the Good Parts
Cockford - O'Reilly. A very short book that focuses on the
aspects of JavaScript to use to produce good quality code. It
also highlights some of the aspects of JavaScript to avoid - the
bits that have give it a bad reputation. This is not a book for
JavaScript beginners but if you followed my tutorial you
should just about cope with this one.
There are lots of others, read the reviews, choose your
budget and pick one.
General Programming
There are some classic programming texts that any serious
programmer should own and read regularly. Here are my personal
favorites:
Code Complete
Steve McConnell - Microsoft Press. This is the most
complete reference on all things to do with writing code that I
know. I read it after several years of experience and it all
rang true and I even learnt some new tricks. It literally
changed the way I wrote programs. Buy it. Now!
Programming Pearls
Jon Bentley - Addison Wesley. There are two volumes, both
invaluable. Bentley shows how to improve the efficiency of
your programs in every conceivable way, from concept through
design to implementation.
These are part of a programming library that came out of
Bell Labs in the 1980's in the wake of Unix. There are so
many classics in this series that I will simply say that
anything from the pens of Ken Thompson, Jon Bentley, Dennis
Ritchie, Andrew Koenig and the rest at Bell Labs is worth
reading. The styles may vary but the content is pure
gold.
The Pragmatic Programmer
Hunt & Thomas is another title similar to "Programming
Pearls" but a little bit more modern in its references.
They both have a lot to offer.
Algorithms by Donald Knuth
This is a set of books describing fundamental algorithms
that are used by programmers over and over again. Heavy going,
and a bit mathematical but, if you are concerned about the
efficiency and absolute correctness of your programs, they are
worth searching out. The whole set has recently been reissued
with some updates.
Object Oriented Programming
I've already mentioned these, but here they are again
anyway:
Object Oriented Analysis
Peter Coad & Ed Yourdon. - A great intro to OO concepts
with a very simple notation for recording your designs. As an
added bonus the notation is very similar to the new Unified
Modeling Language (UML) standard that is being adopted by most
books, tools and journals.
Object Oriented Analysis and Design with Applications
Grady Booch - Benjamin Cummings. This is another excellent
book, moving more into the detail of designing classes and
objects.The 1st edition, if you can find it, illustrates the
lessons in 5 different OO languages whereas the second edition
only uses C++ and is the poorer for it. It uses Booch's own
notation which in my opinion is still the best notation so far
seen but it is being eclipsed by UML and so is effectively
obsolete. Booch has produced a third edition which uses UML2.
(I have just received the third edition which returns to a
more multi-lingual approach and based on first impressions
I would now recommend it over the first edition!)
Object Oriented Software Construction (2nd Ed)
Bertrand Meyer. Meyer has his own OOP language - Eiffel and
uses it to teach OO very effectively. Because Eiffel is
(unfairly) a bit of a minority interest the book takes a little
extra effort to read. It is undoubtedly worth it for the sheer
breadth of coverage of the current OO technology scene. Make
sure you get the 1997 2nd edition as it is far superior to
the 1988 original.
Other books worth reading are:
Object Oriented Design Patterns
Gamma, Johnson et al. A revolutionary book when it came
out. It contains a number of common OO design patterns and,
perhaps more importantly, a notation for documenting them.
There is now a flourishing patterns discussion and a dedicated
web site with many additional patterns as well as variations of
the ones in the book.
UML Distilled
Martin Fowler - Addison Wesley. This book takes you through the
UML OO design notation. It focuses on the practical application
of the tools rather than being a detailed reference. Its short,
easy to read and will hopefully show you the benefits of using
a notation like UML to design your own projects.
The following languages are all of interest from a programming
point of view because they all do things slightly differently to
the mainstream approach adopted by the 3 languages we have been
using. Once you feel comfortable using the approach I have been
teaching you then try reading one of the tutorials listed below,
they all have free interpreters or compilers available. Go on,
be adventurous!
The first group are basically similar to our languages but
feature some new twist or other.
Wikipedia is my
first port of call for anything programming (or even computing)
related. But you can also try finding some general programming
links pages on your favourite search engine. The best thing to
do is look for a specific topic of interest and usually you will
find more than enough resources.
Object Oriented Programming
The official
UML web site
offers info on the documentation of OO designs, but be warned
this site uses some fairly heavy techie terminology.
Wikipedia
is likely to be your friend for the first few pages!
There are several ideas for projects listed in the tutorial.
In addition I will give some ideas here, in approximately ascending
order of difficulty. Most will be achievable with the skills
learnt here but all of them can be improved by checking the
documentation that comes with Python for alternatives. A couple
will definitely require that you start digging for yourself,
recall that one of the requirements of a good programmer was
curiosity!
Extend the grammar checker to include the extra facilities
mentioned.
Build a database of your CDs and a search facility to
locate them again. Maybe also to record the last time or
frequency that you play them.
Create a tool to generate HTML pages which display a list
of the files in a directory as links (so that you can open them
by clicking).
It consists of a series of challenges (13 when I did it, but
its up to 33 last time I checked) that you must solve using
different features of Python. The answer to each challenge gives
you the URL to the next one! They get progressively more
difficult and require the use of some of the more unusual Python
modules, a good way to get an introduction to Python's hidden
gems.
Finally there are SourceForge and
GitHub the main
repositories for open source software projects. Search for projects
using Python(or VBScript or JavaScript!), pick one that interests
you and see what needs doing. Often just documenting something - say
a module - is a good place to start learning how the code works,
then trying to fix a reported bug, finally adding new features.
This is very good for getting exposed to much bigger projects
and also working in a team.
Hopefully that should keep you busy until you start finding
project ideas of your own!