Jump to content

PhDP

Senior Members
  • Joined

  • Last visited

  1. So.... ecoli, what was your choice after all ? I had to deal with both Java and C++ in the last couple of days, I must say that programming in Java was so much easier (thanks to NetBeans). I will likely have to teach basic programming pretty soon and I will likely go with Java, I want the students to be able to concentrate on the science problem they have to solve, not to spend their time worrying about memory and pointers.
  2. But that's beside the point, again it has very little to do with the actual value of the languages. The languages bascule named might be great but nobody use them in science. Scientists have to work in groups, they have to publish articles, and they very often have to rely on librairies. Who cares if your Haskell program is better than my C++ program, you'll probably need to write a version in C for publication or to cooperate with other people. It's already annoying when scientists publish articles filled with words nobody used in decades, at least they don't write their program in some obscur language. In my field (population genetics/molecular evolution), programs are written in C, C++, and minority are written in Java. Theoretical scientists very often use CPython for simple programs... and I encounter R a lot when I have to deal with phylogenetics and statistics. That's about it. With the exception of R, all theses languages are derived from C. That's the crushing force of inertia bascule talked about, which isn't so bad in truth. Communication is very important in science, and it would be messy if we were to follow all the fashions in computer science. I wish more was done with managed languages (Java & C#), they're fast enough for everything that you don't need to run on a supercomputer. And honestly, there's much hype surrounding functional languages these days, and I personally like the concepts, but I doubt we're going to see a truly functional languages in top 10 of TIOBE in the next few years. Landau wrote an article for computational physics, but I think it's useful for other scientists as well; Link to the complete article; http://physics.orst.edu/~rubin/Papers/CP-2.pdf
  3. D H, I'm on linux (openSUSE) 90% of the time and I still use C# a lot with MonoDevelop, it has many of the features Java lack to be a great language (operator overloading, struct; light 'classes' created on the stack, good generics). It's actually my favorite language, it's very fast on windows and is getting faster with Mono on Linux/Mac. Still... I'm sure I'll spend most of my Ph.D. with C/C++/Fortran (hopefully Fortran). Except for GUI, from my experience, Java is never an order of magnitude slower than C++ but it certainly depend on what you're doing. For example the Wright-Fisher simulation I tried with several languages ran much faster on Java than with MatLab, which is optimized for array operation but tend to suck with loops. Simple: because we'll all using these languages. ecoli asked an advice and I think he would be disappointed if he learned a functional language. He would be stuck with a language very few fellow scientists would understand, and he wouldn't have the programming skills so many supervisors like (i.e.: being able to deal with C/C++). I think Java is just fine to start in computer science and it's quite easy to get from Java to C++, while OCaml and Haskell are completely different language based on a radically different paradigm which isn't widely used in science. He would be even more disappointed by Ruby, because nobody uses that in science, and it's slow as hell. We're talking about the best language to learn for a scientist, not the best general purpose language, and I think the two most important thing for a scientists are speed and popularity within the field. In terms of speed, yes it is. It's still a nice language for exploration and graphics. I doubt any scientist can get away with Python 100% of the time. Can I know why ? I don't know that much about Fortran but it seems to have a nice syntax for array manipulations (much better than C/C++).
  4. Most computationally-heavy modeling is done in C, C++, or Fortran. Now... both C and C++ are quite messy language, but ultimately, if you're interested in scientific computing, you'll have to deal with them. C++ isn't that bad with good libraries such as Blitz++, and since Fortran95, Fortran is actually quite a nice language with a perfect syntax for array manipulations... on the other hand it's nearly dead as a general purpose programming language. Yet, to be honest, I prefer managed language such as Java or C#, they're just much safe and much more fun to use. For most tasks Java is doing just fine. From my experience Java and C# are between 0 and 200% slower than C++, which isn't a problem. Also, once you understand the basic concepts of C++, you'll easily understand Java and C# and many other languages. The opposite is also true to some extend, with some basic knowledge in C (which is quite a minimalistic language) and Java, you'll be able to read the code of most projects. Personally, I think the best deal in science is; Python + an object-oriented C-like language (either C++, Java or C#). Python 2.x is very elegant, very simple, and with librairies such as matplotlib and numpy/scipy you'll be able to do a lot; including publication-quality graphics with a few lines of code. Also with SciPy, Python has a very MatLabish syntax for arrays, a syntax which is both very simple and is going to be recognized by many. But ! Even CPython (the fastest implementation of Python as far I as know) is ridiculously slow compared to C/C++/Java/C#. For example I wrote a simple Wright-Fisher simulation which need 1 000 000 000 random numbers generated by the Mersenne Twister. Very simple; it takes a few lines of code. With Java, C++ or C# it takes about 20-40 s, it takes about 20 minutes with Python ! I like the Python + C++/Java/C# approach because you have both a simple language for exploration and to generate graphics (Python), and a language for the heavy stuff. Another thing; popularity. If you look at TIOBE index, you'll see how dominant the language I named are. It matters for a scientist, it matters a lot. I would be seriously annoyed if I had to review an article with code written in Ruby, OCaml, Haskel or Lisp = because nobody use these languages in science. I think Lisp is common in AI and Haskel is some area of math, just as R is widely used in statistics/phylogenetics, but outside their niche the C++ beast dominate. They might be great languages, I was actually impressed by Haskell and F# (basically an implementation of OCaml), but how many scientists will be able to understand the code ?
  5. Don't be surprised, very few people in this discussion seem to care about the actual validity of the studies.
  6. I do dismiss their claim, but because of science, not by making ad hominem arguments. Even when a bias is evident, I think we really need to focus on evidences. Of course, when gross errors are made, or when the scientists are dishonest, then we can ask questions about their behaviour, but otherwise...
  7. Science has a very special class of experts, where the opinion of individuals doesn't matter much. Nobody would ever let an amateur perform neurosurgical procedures, but in science, an amateur could publish articles and destroy theories built by dozen of PhDs. So you're right, scientists don't deserve canonization or demonization, but the most important thing is that we should not care too much about the individuals. Unless you can prove scientists are biased, I think we should focus on articles and publications. I really don't think we can agree on this. I think you ought to give the authors the benefits of the doubt, and you should criticize content, not the authors, or if you have to criticise the authors you should wait for evidences. Actually, my point is not that science was unfairly admonished, my point is that scientists are often, very often, accused of having some sort of motivation, and that "argument" is used to undermine science. Of course, while all the attention is on the scientists themselves, nobody cares about facts. It's very trendy.
  8. Still, credibility is everything for scientists; I don't think it's fair to suggest they might be publishing biased studies for ideological reasons. I feel a lot of empathy toward the experts (not just scientists) which are being strongly criticised, not because they are not doing their job correctly, but simply because some people don't like what they hear. We really have to give them the benefits of the doubt (of course it doesn't mean you have to accept their conclusions, it's because it's published by an "expert" that it's true). You have to prove they are wrong first, and then questions can be asked about their motives, and even then we should be careful. However, it has to be done after something wrong was found, not the other way around. For now, you just say "far left ideologues" want to prove a link between conservatism and intelligence, but the real question is; is it true. If it's not and some people are still trying to promote this idea, then I think you would be right, it might be similar to conservatives pseudoscientists trying to put God in every equations, but until then... And BTW, it's also not "politically correct" to study intelligence and political ideologies. What I find amusing about this is that, in the last 30 years, psychology has got much closer to biology, genetics, and evolution. There has been a lot of controversial discoveries and they always lead to accusations of bias; homosexuality is genetic (leftist propaganda!), women are more important in sexual selection than men (feminist propaganda!), hypersexualisation might reduce violence against women (anti-feminist propaganda!), rape is an adaptation (pro-rape propaganda!), and sociobiologists are often accused of being part of a vast right-wing conspiracy.
  9. This is not about seeing both side of the debate, it's about speculating about other people's motivation while we should concentrate on the facts. How can you say you see "both sides of a debate", you talked about "faux scientific evidence". Correct me if I'm wrong, but it seems you have decided, with no hard evidence, that these studies were false. Undeniable truth? I said that? No, it's absurd. I'm very open to all rational discussion about the evidences. But I'm suffering from severe allergic reactions to any attempt to undermine an argument by transforming a scientific debate into a political debate.
  10. Wait a minute.... They present evidences, they publish it in a science journal with a strict peer review policy, you make unfounded speculations about their motives, you associate this kind of study to the belief in God, and somehow, THEY are the ideologues, not you? In reality, the article from Nature is not very significant to the debate. It might contain mistakes and errors, I'll have to look at the details, but I doubt it's as bad as the article on stale. The truth is, there are many articles, from many journals, showing about the same thing from different perspectives. If some scientists are biased and can't do their job properly, we should publish articles to prove they are wrong. But making personal attacks and speculating about other people's motives, that's the tactic of an ideologue.
  11. It's not very accurate. The biophysicist do a job clearly more related to biochemistry than to biology. Biophysicists aren't trained to understand how physics act on living beings, they are trained to understand biology at the molecular/cellular level with a good knowledge of physics. Biophysics is the union of cell/molecular biology and physics. And it's very interesting.

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.