I’ve been trying to learn programming for a number of years and I really haven’t gotten too far. My first brush with programming was with BASIC and I never learnt much beyond FOR. My first real programming language was Java. I learnt some more, but nothing beyond simple inheritance. On the way I tried twiddling with C++ and failed miserably (I won’t go into details). The reasons for my failures were numerous, including bad teachers, bad syllabi and my own inability to settle down with a good text-editor rather than IDE-hopping. But enough is enough. I’m finishing school in a few months and then I hope to get a Computer Science degree in college. So I’m starting a 5 year plan to really learn programming starting now and going upto 2011 when I graduate.
Before I outline the plan, here are the basic premises on which the plan is based: I should learn at least one programming language and one programmig tool each year. By “learn” I don’t mean knowing everything that there is to know about the language, or learning all the available extensions and toolkits that are available. By the end of the year, I should be able to write significantly large program without having to lookup documentation too regularly. I should also be able to read other people’s code and understand what is going on without much difficulty. As part of my project, I’ll also be implementing at least one large project. As you may have realized by now, all this leaves room for a certain amount of ambiguity and interpretation, but that’s ok for me, because I think that it’s good to have some amount of flexibility in one’s plans. Without any delay, here goes:
- Languages: Python/Perl/Shell Script
- Tools: Emacs
- Project: A PIM with internet backup and synchronization
- Language: Java
- Tools: Eclipse
- Project: Undecided
- Language: C/C++
- Tools: Undecided
- Project: Perhaps some sort of Databsse application
- Language: Ruby
- Tools: Rails
- Project: Perhaps a reimplementation of my previous apps to a web framework.
- Language: LISP
- Tools: SLIME
- Project: Undecided
As you can see, there is a fair amount of stuff that is currently undecided. I intend to fill in the blanks as I learn more abouot the langaguages and programming in general and where to use what. Another thing that i should mention is that since I’m going to be using Emacs, I suppose I will have to dabble in Elisp a bit, but I’d like to keep it to a minimum until I actually start learning LISP. If you’re a programmer and have had experience with anything listed above, any advice would be welcome.