Scientists should learn to program
cns2.uni.edu
cns2.uni.edu
I've always wanted to do cool numerical stuff like n-body codes, computational fluid dynamics, etc, but I never really knew where to get started.
It doesn't help that most example code out there is spaghetti garbage written in Fortran.
Learning to write small programs in a high-level language such as python is much easier than learning a natural language.
The former you can do in a week or less. The latter requires years.
It's a good question to discuss, if we can get past simplistic apples-to-oranges comparisons. On the one hand natural languages have large vocabularies and cultural context that must be assimilated over time. On the other hand pidgin German works where pidgin lisp does not - natural languages allow more error in the medium.
I'm not talking about writing bug-free code for million-line projects. Rather, I'm taking about writing simple small programs. That's easy.
Natural languages are not 'easier' or 'harder' than programming languages, they're just different kinds of skills. There's lots of evidence for this: some people have aptitude for one, some for the other.
For a simple language such as python, you can learn most of the syntax very quickly. Vocabulary (e.g., libraries) takes a bit longer but still requires much less memorization. And you can always create things from scratch.
If that's all you can say in German, it's like _copying_ a "Hello world" program from someone else. That takes two seconds.
Computer languages "feedback" (error messages, etc.) is poor. It's interesting: you can find hundreds of blog posts about syntax, garbage collections, string libraries or whatever but nobody seems to care about error/warning messages. It's a thing that hasn't evolved since a long time.
http://www.cs.washington.edu/homes/blerner/papers/seminal_pl...
This is simply not true, especially the last part. This comes from experience, on both ends.
This is "translated" from English!
I find scheme error messages much friendly the common lisp (which some would say bucks the trend a bit, but they are both lisp I guess).
Also, dynamic typing, and type inference can result in massive bum-steer errors. Its boring staticaly typed languages that tend to be more friendly for error messages. eg most java compilers will tell you, to annoying accuracy what you should have said, where you should have put a ; etc... (which makes you think, why doesn't it just do it !). Some dyn langs to better then others, I think python isn't too bad, but I find ruby really noisy and wierd when I stuff up.