C and its uses in bioinformatics
I'm a new member and I look forward to being an active member in this forum.
I'm new to C; making the transition after using Python, Perl and Matlab the past 1-2 years (to help me in my biology research).
I was wondering though: How popular is C in the bio-computing field? From what I'm reading, I get the impression that C is mainly used in algorithm design and phylogenetic tree-analysis and pretty much nothing else.
If anyone has used C in bioinformatics, I'd be appreciative to hear such opinions.
Within your field of study, C is probably not preferred. From what little I know on the subject, Java, even Python may be more popular an useful. There are a number of open source projects in the field where you may find libraries for various platforms and languages that may help in finding the directions you'd like to take with respect to software engineering related to your field.
C++ is a more likely candidate than C, but even then I'm not sure C++ will draw more interest than Java, Python and - someday, perhaps, C#. Much of the field tends toward Linux or Unix because of the cost factors, reliability factors and perhaps defacto standards. I'm only a tourist, however - an engineer strictly on the computer side of things, not in the bio-computing field.
C++ was probably used in the folding @ home project, but I'm guessing. It happens that such a project would be well within the special features C++ lends toward such an item, especially if developed for cross platform implementation, high performance, high degree of abstraction of the concepts within the library used to make it, etc.
As a Python programmer, you'd probably feel a loss working in C, but somewhat familiar working in C++. Still, Python, Java, C#, J# - these are languages well suited for professionals in various fields of study that don't intend to be software developers, making software products for sale. That's not to say you can't make good products, don't get me wrong. The converse point I make is that successful development of a target in Python, Java, etc. are more assured with less study than with C++, because C++ has so many pitfalls and issues that it really requires a dedicated study to master.
If, however, your aim is to gain maximum performance, high abstraction of concepts, cross platform implementation for a product or a project for which C++ is your best choice (as opposed, for whatever reason, C#, or Java), then if, and it's a big if, you're interested, willing have the time to devote to the study of C++, it's really rewarding and powerful.
I wouldn't want to discourage anyone from learning C++. I sense you may be a graduate student or a professional. Either mean you have scientific goals in mind such that a dedicated language study in C++ could be a distraction, and your intentions might be better served by Java or Python. C, not being object oriented, is less related to Python than C++ is, and the distinction is significant.
Something has you motivated to move beyond Python, though, so I'm curious, what is that?
Hi JVene, and thank you for your thorough response. I am very appreciative. My college professors gave me blank stares when I told them about my interest in learning C, and your response has been the advice I've been searching for but couldn't find. Thanks
I actually like Python alot. It was my first programming language. I developed an interest in C because I heard how it is a 'stepping stone' to other languages like C++ and C#.
And besides, there's nothing wrong with knowing another language, right
Python doesn't have that much support in the form of modules and packages for biological research.
It is slowly making a strong foot though: A recent survey came out from ~5,000 computational biologists who voted for the next language they're going to learn. The results are:
21% = Python
19% = Perl
14% = Java
9 (or 10%) = C/C++/C#
(The remaining percentage was distributed amongst ~10 other languages)
So I guess Python is making its OOP muscle show, but Perl is still no. 1 in industry and has been for almost 10-ish yrs. To illustrate this strength, I was told by colleagues that Perl was the language of choice for sequencing the human genome back in 1999!!
I also think that Perl's Reg-expression capabilities also attract; I'm one of them.
So in general, I'll see how C goes over the next couple of months. So far though, I'm really enjoying it.
Thanks once again.
Last edited by phossein; 05-23-2007 at 08:56 PM.
You're most welcome.
Let me add, too, that Stroustrup claims it best not to learn C as a step toward learning C++. I knew C before C++ was released, so I was among those who had no option. Since you know Python, perhaps there's less of an issue. Stroustrup's point was that in order to learn C++, there's a lot a C programmer must let go of (or nearly un-learn) in order to adopt C++.
I'm surprised that Java didn't rate higher than Perl, but I'm not all that familiar with Perl to understand why.
Finally, while there's syntactic similarity between C# and C++, I think it an error to consider them in a combined category. C# is more like Java in many respects; garbage collection, no pointers, VM runtime, etc.
Who knows, you could be the reason C++ gains favor in the field!
If you've not found them, try searching for the Open Bioinformatics Foundation.
Best of luck!