Print

Print


There is a best language, and you shall know it by its parentheses.
However, since you probably  aren't going to be able to use it because your
co-workers aren't up to it, you have to pick a second best.

I would strongly recommend learning a strongly typed language for one's
first programming experience.  Java, with a suitable development
environment, such as a Intellij Idea ( http://www.jetbrains.com/ ), is
probably the best way to get started.  Java is a safe language, which means
that any bugs are explicable at the program level, rather than appearing as
random damage to unrelated parts of the program

It is important to have a good IDE when using java, as without one it is
much too verbose.  I recommend Intellij as the java-only edition is now open
sourced, and it has the best auto-completion and  refactoring support, as
well as built in support for unit testing.  A lot of important data
structures are built in to java, which means you can learn how to use them
without having to know how to write them.

The second language should be lower level;  C is probably the best choice
for that.  Learning C forces you to learn about memory management, which you
need to understand, even if it's better to let a garbage collector take care
of it for you.  Learning how to implement the data structures you get for
free in java et. al will help you know how to use them more efficiently, and
design your own data structures in the future.

 It is easy to see the assembler/machine level code generated by a C program
and relate it to the code you wrote;  again, you may not write much code at
this level, but it is important to understand what the computer is actually
doing when its running higher level code, and how this affects efficiency.

It's also important to get a basic grasp of algorithmic complexity; you
don't need to be able to develop proofs like knuth's, but you should
understand what big O notation stands for, and why some problems or programs
won't scale up.

After that, its safe to learn a scripting language; you'll appreciate the
stuff you can get away with not doing, but you'll also know just when you're
cheating, and why the Duck is a lie.

Simon