I have an interest in computer science and programming, although my career path was only briefly related to this field. However, I frequent many computer programming sites and blogs like The Daily WTF, Coding Horror and programming.reddit.com. I have programming experience, albeit limited using languages like BASIC, Pascal, VB, Python and Common Lisp. I’m just starting to learn some minimum PHP to handle wordpress and other concepts I’m working on.
If I were a young programmer keen on learning something valuable and developing an interesting tool, I would probably learn things in the following order:
- Learn C because of it’s use of pointers and manual memory management. If you are going to be an uber-programmer you need to know these things. Also browse the source code of your C compiler because that will help you in language design.
- Learn Assembler, because if you need to optimize something to the last degree, you need assembler to make things fast. It will also help with a later step.
- Learn Scheme and Common Lisp. This is because as many have stated, once you “get” Lisp, it will change your outlook on programming forever. Especially data as code/code as data, macros, closures and the level of abstraction Lisp allows. Also learn the CLOS and MOP because it is perhaps the most flexible and powerful OOP example around.
- Learn Erlang. Figure out how Erlang does concurrent execution using lightweight processes and minimizing the challenges of using shared memory, mutexes, locks, etc…
- Finally, build a better mousetrap. Use your knowledge of Assembler and C to build the basic framework and then build up a language that has all of the expressive power of Lisp with the concurrency of Erlang. Concurrency is the future of programming but many of the current tools commonly used for concurrent programming (C, C++, Java, Python) don’t make it easy.
Now I expect thousands will disagree but that’s the way I see it.
2 comments
geo says:
6 March 2008 at 19:02 (UTC -7 )
when I was in college everyone said learn COBOL becuase that’s what all the businesses used.
or fortran becuase that’s what all the scientists used.
HA
needless to say by the time I was a seniotr all the guys inthe computer room where programming in basic and c and I saw the light.
my advice?
program whatever the new young guys are playing with. by the time you are finished learning that language will be one of the perceived cool languages and you can get work with it becuase you were an early adopter while everyone else was learning old languages.
It’s better to be one of 10 people that know a language than one of 10,000.
Doesn’t matter what the language is.
http://www.vivzizi.com
Taliesyn says:
9 March 2008 at 21:33 (UTC -7 )
I disagree. If you program what is popular you simply open yourself to many “average” job opportunities. The interesting stuff is for those who are pushing the envelope!