Question: Java or C++ (which side should I choose)
2
gravatar for dshulgin
3.0 years ago by
dshulgin250
Belarus
dshulgin250 wrote:

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.

ADD COMMENTlink modified 3.0 years ago by WouterDeCoster38k • written 3.0 years ago by dshulgin250
6

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 REPLYlink modified 3.0 years ago • written 3.0 years ago by Michael Dondrup46k
3

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 REPLYlink modified 3.0 years ago • written 3.0 years ago by dshulgin250
2

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 REPLYlink modified 3.0 years ago • written 3.0 years ago by Michael Dondrup46k
1

Ok, thanks for your answer!

ADD REPLYlink written 3.0 years ago by dshulgin250
1

I'm interested in industry, applied bioinformatics only.

Then maybe Java.

ADD REPLYlink written 3.0 years ago by lh331k
0
gravatar for chen
3.0 years ago by
chen1.8k
OpenGene
chen1.8k wrote:

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

ADD COMMENTlink modified 3.0 years ago • written 3.0 years ago by chen1.8k
3

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

ADD REPLYlink written 3.0 years ago by kloetzl1.0k
0
gravatar for WouterDeCoster
3.0 years ago by
Belgium
WouterDeCoster38k wrote:

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 COMMENTlink written 3.0 years ago by WouterDeCoster38k
1

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

ADD REPLYlink written 3.0 years ago by dshulgin250
1

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 REPLYlink written 3.0 years ago by dr_bantz80

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 REPLYlink written 3.0 years ago by Devon Ryan89k
4

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 REPLYlink written 3.0 years ago by lh331k
1

Okay makes sense thanks for the clarification.

ADD REPLYlink written 3.0 years ago by WouterDeCoster38k
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 2004 users visited in the last hour