> 'There is no tool that can guarantee you a good job. In my opinion, the
> best strategy is to learn the fundamental concepts and techniques of
> design and programming and see how they apply in several languages. That
> will take time, but a professional programmer and designer should be
> comfortable with a range of tools and with several programming
> languages. Knowing just one language is a prescription for bigotry. C++
> can be a good place to start, but for a professional, it cannot be the
> only language.'
While I'd really like to whole-heartedly agree with this statement, it does
seem to ignore one major thing:
Each programming language, aside from changes in syntax and function names, is
designed to offer a different approach to solving most problems.
Knowing basic problem solving skills and techniques will help you to learn
additional languages, but that doesn't mean you'll really *know* any of them.
For example, C++ programmers should definitely (imho) be comfortable with
template classes, multiple inheritance, using the STL, etc... Using templates
requires a kind of thinking that one cannot easily apply to any other
languages.
If you're using a functional language, you can't think about solving problems
the same way you would using a declarative language.
If you're using a language like LISP, then you better be comfortable thinking
recursively.
There's a lot of factors involved in learning languages; and even though I've
used several languages (PHP, C, C++, Java, Perl, Ruby, CorbaScript,
Javascript, Lua, Visual Basic, sparc assembly, Lisp, Python, ML, XSLT, SQL) I
don't think that I'd seriously call myself an expert in anything.
I think that programming in any language is like the trades of old -- there
has to be a serious effort into practice and study before one move from
apprentice to journeyman to master.
Take care,
Nik