This is a good post (and other posts below). But... "scientists" is not a descriptive word. If you are talking about biologists, they'd gain more from knowing high school math than from programming. Math majors on the other hand need to program if they want to find jobs outside the actuarial field. Same for physics and chemistry. A regular C++/Java course should be enough to get started.
As far as I've seen, most scientists work with R for statistics and TeX for papers; it sounds like this reduces to "Scientists should learn powerful tools.".
I agree, and in fact that's generally the attitude I see. Tools I've seen used: Matlab, Python, Visual Basic, Java, C++. Often scientists seem as eager to play with programming as programmers are eager to play with (or at least read and talk about) research.
Not so. Natural language is easier because I can learn in a minute to say "Hello world" in a language like German. But it takes forever to fluently write bug-free code for million-line projects.
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.
You compared writing small programs in python with taking years to learn a natural language. I pointed out that the two are not equivalent undertakings. It's not a fair comparison.
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.
There are at least two very difficult things about natural languages: messy illogical syntax and enormous vocabulary.
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.
But you still haven't addressed the main objection here: that you're comparing two different undertakings. You've compared writing a small app in a high level language with learning a natural language. You could have just as easily said it isn't as hard as proving fermat's last theorem, or writing a novel, or composing a symphony. Thsse things also have a few elements in common with writing a short script in a high level language. But these comparisons don't mean a thing.
If a student already knows English, then it's better to learn to write small programs in a high-level language than it is to learn another natural language.
I was taking amichail's comparison - writing small programs in python vs learning a new natural language - and making it even more extreme to highlight its unfairness. Apparently nobody gets sarcasm anymore :)
If a student already knows English, then it's better to learn to write small programs in a high-level language than it is to learn another natural language.
When you learn a natural language, you can speak with a native speaker even if you make a lot of mistakes; he'll still understand you (and maybe try to help you improve).
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.
I totally agree. Its a lost art. The horror of the error messages seems to be proportional to the square of the pretty ness of the language.
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.
It would be kind of fun to "pair program" with a scientist like that. Each learning from each other. You know the details to keep the machine happy, he knows the details to get the formulas right. Together == cool things.
i'm a scientist and i think that they/we should learn to program. the problem is diminishing returns and relevence. e.g. i can spend 100 hours learning how to say hello world and figure out if something is a prime number OR spend some time in the lab and maybe write a paper/presentation.
i've kept an eye on programming for a while now but always find myself bored with if/elif but not able to figure out how to make the leap to the stuff that i want to do - and then not having the time to dive in fully. catch 22 i guess. would be happy to comment further if anyone's interested.
23 comments
[ 3.5 ms ] story [ 141 ms ] threadLearning 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.
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.