Lieber Java oder C# in der Bioinformatik?
Hallo,
ich hätte eine kleine Umfrage bezüglich Programmiersprachen. Was haltet Ihr für sinnvoller in der Bioinformatik? Ich weiß, dass beide Sprachen sich sehr ähnlich verhalten. Man ist öfter hin und her gerissen, da man sich ja nicht mit beiden gleich viel auseinandersetzen möchte. Eure Meinung ist gefragt. :)
Danke Euch!
4 Stimmen
3 Antworten
Bitte lies:
https://bio.informatik.uni-jena.de/wp/wp-content/uploads/2011/09/Programmiersprachen.pdf
Natürlich wäre - rein theoretisch - C# ebenso geeignet wie Java. Tatsächlich aber wirst du die Programmiersprachen nutzen müssen, die auch deine Kollegen nutzen: einfach deswegen, weil du als Bioinformatiker halt auch immer wieder (und vor allem) auf schon existierend Peogramme wirst zurückgreifen müssen.
Meine Vermutung deswegen: Wahrscheinlich wirst du recht oft auch Python nutzen müssen.
Da gebe ich dir Recht, nicht weil c# schlechter wäre, sondern wegen den bestehenden Bio-Bibliotheken und der Community die von Java beherrscht wird. Nur LINQ und Object Relational Mapping wie Microsoft Entity Framework würden mir fehlen. Auch an Intellisense und Refactoring Tools habe ich mich gewöhnt, schätze aber dass es Java auch hat.
In den letzten Jahren haben sich R und Python als sehr beliebt in diesem Fachgebiet bewiesen, wobei du ganz bestimmt auch Projekte / Anwendungen finden wirst, die in irgendeiner anderen Sprache entwickelt wurden (z.B. Fortran, Ruby, PHP, JS, MATLAB) bzw. solche nutzen. Ebenso war (bzw. ist meines Wissens nach noch immer) Perl stärker vertreten, wird aber wohl von Python immer weiter verdrängt, da die Sprache doch nicht so leicht ist, wie ihr Nachfolger.
Statistiken, Datenanalysen, Datenvisualisierung und Testverfahren sind in der Bioinformatik von großer Bedeutung. Gerade zu solchen Aufgabenbereichen bieten R und Python gute Tools (z.B. ggplot2, BioPython, Bioconda, Bioconductor, Ruffus, ...). Zudem sind beide Sprachen leicht zu erlernen. Zur Steuerung einzelner Aufgaben nutzt man bevorzugt eine glue language wie Bash.
Für komplexere Anwendungen werden meines Wissens eher Java oder C/C++ verwendet. Sie haben eine gute Performance und bieten Toolkits (wie Swing, JavaFX, Qt), mit denen man grafische Oberflächen entwickeln kann (auch wieder für Datenvisualisierung und Simulation).
Dementsprechend gibt es schon einige Anwendungen und Toolsets, die auf diesen Sprachen bauen. Beispielsweise Apollo, der IGV, Avogadro, PLINK oder GROMACS (kein Zweifel, das ist nur eine winzige Auswahl).
WENN Du die Wahl hast, nimm C#.
Sie sind sich zwar ähnlich, aber im Detail ist C# mMn. oft ein paar Schritte weiter, als Java. Aber das ist eine Frage des Geschmacks.
Allerdings entscheidest Du das eher selten selber, der Versucht, C# zu erzwingen, wenn die Kollegen oder vorhandene Software-Pakete Java erzwingen, dann verlierst Du.