I have this book, which is now out of date (there's a third edition). Is this enough to start on?
I tend to find that multiple sources and people chipping in help, but pretty much any guide is good as a core program to follow. It doesn't really matter how out of date it is, you just want to learn the core ideas behind programming on which you can bolt anything new you want to try. I found a really outdated Fotran book (around the time GOTO was first being seen as maybe not all that great) that was really helpful for a lot of the core concepts.
It's one of the reasons Fotran is still taught (OK, Fotran90 - hey, that's in Firefox's spellcheck where Fotran isn't...) in some physics degrees (like mine). The language and even specific methods you are taught don't matter so much as learning to program and the ideas behind those methods, so may as well teach a language not usually learnt elsewhere, but which still has massive amounts of code lying around from previous generations. Job security. Fewer people who can read your code the fewer people can replace you in your job. Obviously not that useful for going into a specific industry, but for people who build and maintain their own code it's not a problem.
I went from very basic
DIV (a cross between BASIC and C) as a kid, to Fortran90, to
LabView/
G (which is arguably not really a language, but uses most of the same skillset other than typing), to some C, some C++, some Java, some C#, back to Fotran, back to LabView, to now starting to learn Lisp, with some detours into
pathelogical languages as curiosities*. Oh, and I've used lots of mathematical/statistical data processing languages/packages, including Matlab, Maple,
R and
IDL, plus got a little addicted to
AutoHotkey scripting along the way. Basically just playing with code and scripts to achieve whatever was lying in front of me at the time with whatever tools happened to hand or looked like fun to use.
* I adore
SNUSP despite never having any cause or desire to do any work with it. Even
Brainfuck is more useful, but SNUSP is simply beautiful. From the link, this is a multiplication function;
read two characters ,>,==\ * /=================== ATOI ----------\
convert to integers /=/@</@=/ * // /===== ITOA ++++++++++\ /----------/
multiply @ \=!\=========/ // /++++++++++/ \----------\
convert back !/@!\============/ \++++++++++\ /----------/
and print the result \/ \.# * /++++++++++/ \--------#
/====================/ * \++++++++#
|
| /-<+>\ #/?=<<<<\!>>>>\ />>+<+<-\
| #\?===/! BMOV1 =====\ \->>>>+/ // /======== BSPL2 !\======?/#
| /->+<\ /===|=========== FMOV4 =/ // /<<+>+>-\
| #\?===/! FMOV1 =|===|==============\ /====/ /====== FSPL2 !\======?/#
| /==|===|==============|==|=======/
| * * *|* | * | * * * * * * *|* | * * * /+<-\
| * />@/<@/>>@/>>===\ /====>>\@<\@<\ * /==== ADD2 !\>=?/<#
\===== MUL2 =?/>@\==<#<<<==\ \!\<<<<@\>>>>-?/\ * // /-\
* \\ \/@========|======</ * // /== ZERO !\?/#
* * * \\* * * * | * * * * | * * * * *// //
\\ | \==========/ //
\======!\=======================/
I think this is why I actually enjoyed using LabView, where a simple program/Virtual Instrument looks like this;
That's a simple string synthesiser, using a pitch corrected
Karplus-Strong algorithm, bundled into a single VI that can then be dropped into later programs as a single icon. Hence the output waveform being passed as data rather than to an audio output node. The program mostly follows
this tutorial and sounds pretty much the same.
If you aren't careful then you can quickly end up with stuff like
this. Although you need to get into the comments to see
TRWTF. And even then I've seen considerably scarier programs produced by undergrads with no programming training; think no iteration (For/While loops) and
everything done with nested sequence and case structures. I couldn't have gotten a screenshot if I wanted to. And that controlled a high voltage electromagnet. My debugging attempt lasted all of four minutes, ending with me demonstrating various loops, how to make SubVIs and showing him the extremely highly recommended standard that any one VI should fit on one screen.
Oh, and that's the 'language' under the control software for a goodly number of particle accelerators.
Including the LHC.