I am new to arduino and programming, and have worked through the basics. I am wanting to make a large pov with rgb’s, with long animations. Can a lengthy program be run from an sd card or is the sd card only for datalogging type of applications? Could I run a long program code from an external hard drive directly to the arduino board?
Adding an SD card using something like the SFE SD shield will not extend your memory address space. The SD memory is accessed via SPI. Libraries exist that make that memory look like a file system. Now it MIGHT just be possible to bring in pages of program from the SD and re-FLASH the Arduino on the fly. But I would not count on this for several. Speed, complexity, and burning out Arduino FLASH come to mind.
Same is true for a disk drive. By the time you write a library to support a drive, you will likely have consumed a fair amount of the available memory (both ROM and RAM).
If you task requires a large program space, look to a different processor.
Edit: As I was mowing my lawn, I thought of another idea. Write an interpreter for the Arduini (like Basic or Python) and put your program as byte code on the SD card. An ambitious project, but one that might generate lots of excitement.