View Single Post
Posts: 45 | Thanked: 17 times | Joined on Nov 2008 @ Montreal, Canada
#29
I've programmed assembler on the ZX81 (Z80), C64 (6502/6510), Amiga (68000) (those for fun), for the 68HC11, PIC (16C74), and TI DSPs (c50) (for pay) and PPC (for school). I've spent a lot of time coding C for fun, school and work, too. And a smattering of other languages as well, from FORTH to Lisp.

Now? I write in MATLAB, and am learning Python. There is a golden rule: the right tool for the right job. Don't use ASM "just because". If you want to learn about the internals of CPUs, be aware that architectures are all different, and evolve. My 6502 assembler didn't prepare me for RISC, or the Harvard architecture of the PIC chips. What you learn for ARM today can't easily be carried over to i686, or the cell processor or DSP chips, or whatever the chip designers are dreaming of today. VHDL might be more useful!

If your goal is to learn about to-the-metal computer programming, I recommend getting yourself an Arduino or maybe a Parallax Propeller kit. I've got myself the former and they're great fun. Programmable with very little ramp-up in C, and ASM if you dig a little. Dead easy to interface.

If you want to write applications, start with Python, until you hit a performance or capability bottleneck. Then switch to C++ or C.

If you want to learn about OS design, hit the books. Then learn C. Then look at the Linux source. Read more books. OS design is very complex and academic these days, and there are many difficult algorithms at play.