I don't quite know how I learned to program. I was very young when I first started using Commodore BASIC on the PET. I remember learning BASIC before I had a computer of my own. I would write programs at home, then type them up at school on a BBC Micro.
I remember using the back of the manual for my friend's ZX Spectrum to learn how to write machine code (effectively in the form of poking bytes directly read from DATA statements, then saving the code out to tape). I wrote a tool to dump out the bytes from code I loaded - in effect using it as a disassembler. I actually cracked the Elite loader for Scooby Doo this way and found hidden messages in there.
Later my parents finally caved in and got me a Multiface 1 after I had my own spectrum, and I started cracking games, writing pokes for kids at school.
I eventually moved to an Amiga and picked up AMOS as I hated GW-BASIC. It was there I first tried Emacs, but preferred MicroEmacs. I learned enough 68k assembler to crack a few games using a friend's borrowed Action Replay but never had my own so didn't get enough time with it to do much. I wrote a few demos for the Amiga, but they weren't widely released (with me living in rural England with no direct BBS access anymore it wasn't like I could upload a DMS file somewhere), although some went around the local schools, colleges and towns.
I also wrote games for the Archimedes and Amiga. When I got a PC I started writing for that too. Eventually I got an Internet connection of my own. I hated the PC, wanted my miggy back but Commodore was long gone and this was the future. I eventually installed this new fangled Linux thing and it came with free compilers - sweet! Over the space of a few weeks I learnt how syscalls worked, how memory management worked and eventually started writing shellcode, then exploit code and tools. After I got married I started dropping off a bit, but I'm amazed at how many languages I can program in (I have no idea how many, but it's a lot), not including the dead ones.
So my general way of learning was reverse engineering the language (because I generally lacked documentation) but slowly became more along the lines of reading books, tutorials, and picking things up as I got access to the Internet.
I remember using the back of the manual for my friend's ZX Spectrum to learn how to write machine code (effectively in the form of poking bytes directly read from DATA statements, then saving the code out to tape). I wrote a tool to dump out the bytes from code I loaded - in effect using it as a disassembler. I actually cracked the Elite loader for Scooby Doo this way and found hidden messages in there.
Later my parents finally caved in and got me a Multiface 1 after I had my own spectrum, and I started cracking games, writing pokes for kids at school.
I eventually moved to an Amiga and picked up AMOS as I hated GW-BASIC. It was there I first tried Emacs, but preferred MicroEmacs. I learned enough 68k assembler to crack a few games using a friend's borrowed Action Replay but never had my own so didn't get enough time with it to do much. I wrote a few demos for the Amiga, but they weren't widely released (with me living in rural England with no direct BBS access anymore it wasn't like I could upload a DMS file somewhere), although some went around the local schools, colleges and towns.
I also wrote games for the Archimedes and Amiga. When I got a PC I started writing for that too. Eventually I got an Internet connection of my own. I hated the PC, wanted my miggy back but Commodore was long gone and this was the future. I eventually installed this new fangled Linux thing and it came with free compilers - sweet! Over the space of a few weeks I learnt how syscalls worked, how memory management worked and eventually started writing shellcode, then exploit code and tools. After I got married I started dropping off a bit, but I'm amazed at how many languages I can program in (I have no idea how many, but it's a lot), not including the dead ones.
So my general way of learning was reverse engineering the language (because I generally lacked documentation) but slowly became more along the lines of reading books, tutorials, and picking things up as I got access to the Internet.