Camden says quite nicely here what I have been itching to say in this discussion. There are fundamental concepts that you need to know in order to program well, concepts that are pretty much independent of whatever programming language you use. In addition to what Camden has already mentioned, other concepts essential to a good programming foundation would include a good understanding of data structures and how they work. Things like lists, stacks, queues, trees, matrices, etc. A general understanding of common algorithms and how they work, especially the various searching and sorting algorithms: which ones scale well, and which ones not so well (e.g., bubblesort vs Quicksort, etc.)
Yes, you can do useful things without this kind of knowledge, and a lot of programming environments have these kinds kind of built in these days. But if you want to build more complex systems, a basic foundation will serve you well in avoiding trouble - things like scalability problems, problems with design, etc.
It doesn't directly address fundational skills, but one book that I've found interesting and useful in addressing good programming design issues is "The Pragmatic Programmer" by Andrew Hunt and David Thomas:
North Suburban Library System
From: Camden Daily [mailto:firstname.lastname@example.org]
Sent: Friday, February 15, 2002 9:40 AM
Subject: Re: [oss4lib-discuss] re: librarian programmers
Well, it's rather difficult trying to tell anyone where to begin with
programming; I started over a decade ago by copying Basic programs from
copies of "3-2-1 Contact" magazine.
It really depends on how much programming you want to learn, and what you
want to do with it. For most intro programmers, I'd suggest using Java.
It's fairly simple, powerful, and useable on any platform, which accounts
for its popularity these days. Another nice thing about Java is that the
syntax is very similar to C and C++, two very powerful programming languages
that one may want to progress towards later.
But before you even start learning the syntax of any language, there are a
lot of programming fundamentals one must learn. Concepts such as types,
variables, loops, boolean logic, scope, recursion, orbject-oriented design;
these things are fairly independent of the language, but crucial to
understand if you want a good foundation for programming.
I'm not certain of what books are good, but why not take advantage of the
web information? Here's a link to the intro to programming course notes
from my good ol' alma mater:
The professor was really good, and his notes are some of the best I've seen.
Hope that helps!
-=- Camden Daily
-=- Computer Services
-=- Daniel Boone Regional Library
-=- 573.443.3161 ext. 303
----- Original Message -----
From: "Colin Tatham" <email@example.com>
Sent: Friday, February 15, 2002 5:09 AM
Subject: [oss4lib-discuss] re: librarian programmers
> In response to comments about librarians learning programming languages:
> I'm not sure what kind of software you have in mind, but it seems to me
> that XML and related technologies are a logical area for librarians to
> move into. We are in the process of developing Open Source software,
> using Java. Most of the configuration and customisation "tweaking" is
> achieved using XSLT (XML) stylesheets, with the idea that someone
> without programming knowledge can make quite substantial changes.
> Part of our workload involves writing and editing example stylesheets,
> when library/cataloguing experience would be invaluable, and the
> concepts are initially less "technical".
> Also, I imagine that someone wanting to contribute to an Open Source
> project may be able to start off with modifying/updating parts of
> existing programming code, rather than writing something from scratch,
> which would be easier?
> Colin Tatham
> Software Developer, JAFER Project
> see also http://www.oss4lib.org/
see also http://www.oss4lib.org/