| Any suggestions? Where to start? Wherever you feel comfortable. Start with things as simple as 'Hello, World' and build up from there. Give yourself a project. Any sort of project. It doesn't have to be useful, it's just there for you to learn with. As you progress in that project, you will strike roadblocks. Each one of which is a learning opportunity. As you demolish all the roadblocks in your progress to your goal project, you will be learning all the way. In fact you will see, as you progress in the project, places where you could have coded things in a better way previously. When you reach your goal project's completion, throw all of that code away. (It was rubbish anyway, wasn't it? Now that you can see it with an expert's eye.) Now rewrite it from scratch, but using all of your new-found knowledge. Again, you will strike new roadblocks. Fix those. Rinse and repeat, learning as you go. I have a 'pet' project, which is an emulator for an actual 1980s computer running CP/M. I have written and re-written that project at least a dozen times, in Z80 assembly, x86 assembly on MSDOS, C on UNIX using plain text, C on Linux using a curses-based text-UI, C on Linux using a GTK+ GUI. Each time that project grows a little, converging more and more towards the 'perfect' emulation of that original hardware computer. |