Java or C++ (which side should I choose)
2
2
Entering edit mode
8.6 years ago
dshulgin ▴ 260

Hi, biostars. Sorry if this question is inappropriate, but i don't know other places i can ask this.

My situation is the following:

I've got an experience in c++ and Java both (at University) and also have industry Java SE, EE experience. Now i'm programming in Python/R mostly, but i started to feel, that i can be confident i am true programmer if i know one compiled language (Java or C++) and one script language to make some prototypes or pipelines (i've chosen Python).

The problem is i don't know, which of these languages in which field is used mostly in bioinformatics. And also i have to focus on one of them to study it well.

Can you explain me pluses and minuses of these languages and where in bioinformatics it is used. What language is better for bioinformatician. I'm interested in industry, applied bioinformatics only. And i understand, that Java is easier also and for majority of issues we don't need to get the speed C++ is allowed. But i'm very confused with that question. Please, help me to make a good choise.

Thanks a lot.

programming self-study industry • 3.9k views
ADD COMMENT
6
Entering edit mode

Hi, I think we had the language discussion several times, and imho it is absolutely futile. I don't think I can remember that at any time any language won the discussion in the long run. For an experienced programmer it does make arguably little difference which language you use because all are turing complete, and if you know one you know all. The conclusion is, it is mostly the libraries that should determine the choice. BioJava will never catch up, but it is there. For example, only for the ETE library I'd readily switch to python, for Bio* libraries the BioPerl library is undoubtedly the most mature and complete. All languages are equally bad and terrible https://wiki.theory.org/YourLanguageSucks but it doesn't matter. PHP is arguably the worst language ever designed, right after C64 Basic. Note how R is missing from that list (does that mean it is so good)?

NCBI Blast is C++, let me think a bit about a relevant and stable Java app...... FigTree (needs legacy Java on Mac) .... JalView

ADD REPLY
3
Entering edit mode

I see your point. Thanks. I don't want to discuss, just want to understand how it is used, where, why and choose my own item in this question. " For an experienced programmer it does make arguably little difference which language you use because all are turing complete" - huh, that's not completely true, i mean, that C++ is pretty hard to study and you can't know well C++ Java and bioinformatics tools simultaneously, but i want to be professional and don't want to know all languages superficially. That's the question.

ADD REPLY
2
Entering edit mode

Yeah, was not totally without seriousity. If you want to keep one foot in the door into industry, maybe Java? There you can get yourself these OCJP certifications, which maybe show something. Not sure if there is something like that for C++. Other possibilities might be C#, .NET, that is what a lot of companies outside bioinfo use. So, if you ever consider the possibility of working in a 'normal' company and not research, I'd go for Java, because of the higher demand.

ADD REPLY
1
Entering edit mode

Ok, thanks for your answer!

ADD REPLY
1
Entering edit mode

I'm interested in industry, applied bioinformatics only.

Then maybe Java.

ADD REPLY
0
Entering edit mode
8.6 years ago
chen ★ 2.5k

Dynamic languages --> suggest Python/Julia for fast-dev
Compiled languages --> suggest C/C++ for high-perf

ADD COMMENT
3
Entering edit mode

c/C++ don't guarantee high performance. They just give you more control over the machine.

ADD REPLY
0
Entering edit mode
8.6 years ago

I don't really see the need to learn a compiled language, or am I wrong in that? I use Python and R. I plan to learn Julia, but will have to see when I have time for that...

ADD COMMENT
1
Entering edit mode

That's just some stuff in my mind, i want to know and apply some of compiled languages.

ADD REPLY
1
Entering edit mode

Presumably it depends on whether you want to do data analysis (in which case Python/R may be all you need) or create bioinformatic tools (in which case you should pick the compiled language that would be most appropriate for the job)

ADD REPLY
0
Entering edit mode

Sometimes python and R suffice, sometimes not. It's often the case that tools are prototyped in python and then rewritten in C/C++/Java if they aren't fast enough (and this is due to the language, not the nature of the algorithm). At the end of the day, python and R are themselves largely written in C. I think the vaste majority of bioinformaticians can get by without coding in a compiled language (e.g., I think I'm the only person in our institute that ever codes in C).

ADD REPLY
4
Entering edit mode

The OP said he is interested in industrial jobs. In that case, java/c++ make more sense. Often companies don't want to release the source code. Jar/compiled binaries hide that. In addition, my experience is that on older machines, jar and properly compiled binaries are much easier to use than dealing with python dependencies.

ADD REPLY
1
Entering edit mode

Okay makes sense thanks for the clarification.

ADD REPLY

Login before adding your answer.

Traffic: 1637 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6