{"id":2195,"date":"2016-04-18T11:22:25","date_gmt":"2016-04-18T15:22:25","guid":{"rendered":"http:\/\/bioinfo.iric.ca\/fr\/?p=2195"},"modified":"2017-04-29T16:59:12","modified_gmt":"2017-04-29T20:59:12","slug":"les-langages-en-bio-informatique","status":"publish","type":"post","link":"https:\/\/bioinfo.iric.ca\/fr\/les-langages-en-bio-informatique\/","title":{"rendered":"Le(s) langage(s) en bio-informatique"},"content":{"rendered":"<p>La question que l&rsquo;on me pose le plus souvent concernant la bio-informatique est malheureusement celle qui conduit aux discussions les moins productives auxquelles j&rsquo;ai particip\u00e9 :<br \/>\n<em>Quel langage de programmation devrais-je utiliser en bio-informatique ?<\/em><\/p>\n<p>Comprenez-moi bien, dans un pub autour d&rsquo;une bi\u00e8re, cette discussion entre membres de l&rsquo;intelligentsia <em>nerd<\/em> est des plus divertissantes&#8230; mais l&rsquo;illumination survit\u00a0rarement jusqu&rsquo;au lendemain.<\/p>\n<p>Ceci dit, j&rsquo;aimerais partager ici la r\u00e9ponse que j&rsquo;ai affin\u00e9e au fil des ans. Elle est bas\u00e9e sur le d\u00e9veloppement de comp\u00e9tences dans <strong>trois langages<\/strong>, remplissant des r\u00f4les compl\u00e9mentaires et couvrant le\u00a0spectre des t\u00e2ches qu&rsquo;un bio-informaticien peut s&rsquo;attendre \u00e0 rencontrer. Pour chacun des r\u00f4les, le langage optimal choisi peut changer avec le contexte sp\u00e9cifique d&rsquo;application ou avec l&rsquo;\u00e9volution du domaine.<\/p>\n<ol>\n<li><span style=\"text-decoration: underline;\">Un langage de haut niveau.<\/span><br \/>\nIl doit offrir un vaste ensemble de librairies sp\u00e9cifiques \u00e0 votre domaine d&rsquo;application. Il doit permettre de d\u00e9velopper du code facilement, sans beaucoup de contraintes. On ne se concentre pas sur sa vitesse d&rsquo;ex\u00e9cution ou sur son extensibilit\u00e9. Ici, <strong>Python<\/strong> est g\u00e9n\u00e9ralement le langage le plus fr\u00e9quemment recommand\u00e9. Perl est aussi une autre option! D&rsquo;autres candidats int\u00e9ressants seraient JavaScript, Julia, Ruby, Clojure&#8230; mais leur communaut\u00e9 restreinte\u00a0en bio-informatique signifie que leur s\u00e9lection doit \u00eatre faite avec plus de pr\u00e9cautions.<\/li>\n<li><span style=\"text-decoration: underline;\">Un langage (ou plateforme) d&rsquo;analyse.<\/span><br \/>\nCe langage doit permettre un vaste ensemble d&rsquo;analyses math\u00e9matiques et offrir des fonctionnalit\u00e9s graphiques bien d\u00e9velopp\u00e9es. Il doit supporter la documentation, l&rsquo;automatisation et la reproductibilit\u00e9 des \u00e9tapes de l&rsquo;analyse effectu\u00e9e. Ici, <strong>R<\/strong> et matlab sont largement utilis\u00e9s. Le choix de l&rsquo;un versus l&rsquo;autre d\u00e9pend du champ d&rsquo;application (R en g\u00e9nomique et en g\u00e9n\u00e9tique, matlab en analyse d&rsquo;images et \u00e9tude de syst\u00e8mes dynamiques).<\/li>\n<li><span style=\"text-decoration: underline;\">Un langage de bas niveau, compil\u00e9.<\/span><br \/>\nIci, la vitesse d&rsquo;ex\u00e9cution et le contr\u00f4le pr\u00e9cis de l&rsquo;allocation des ressources sont les facteurs d\u00e9terminants. Ma\u00eetriser un langage de bas niveau est optionnel, plusieurs bio-informaticiens ne rencontreront d&rsquo;ailleurs jamais de probl\u00e8mes requ\u00e9rant ce type de d\u00e9veloppement durant leur carri\u00e8re. <strong>C\/C++<\/strong> serait aujourd&rsquo;hui le standard <em>de facto<\/em>, mais Java, C#, swift et m\u00eame Fortran pourraient \u00eatre des choix judicieux d\u00e9pendant du contexte d&rsquo;application. Notez qu&rsquo;une strat\u00e9gie tr\u00e8s efficace lorsque l&rsquo;on d\u00e9veloppe un syst\u00e8me informatique complexe est d&rsquo;utiliser un langage de bas niveau pour construire des extensions pour un langage de plus haut niveau (role #1). On se concentre ainsi sur du d\u00e9veloppement de code de bas niveau seulement pour les parties plus exigeantes\u00a0en m\u00e9moire ou en ressources du syst\u00e8me.<\/li>\n<\/ol>\n<p>Certains se plaindront\u00a0qu&rsquo;apprendre trois langages repr\u00e9sente\u00a0un investissement d\u00e9mesur\u00e9, mais l&rsquo;alternative est de risquer d&rsquo;\u00eatre pris \u00e0 impl\u00e9menter un certain type de solution dans un langage inad\u00e9quat. J&rsquo;ai \u00e9t\u00e9 t\u00e9moin de ceci \u00e0 plusieurs reprises : un service web en R, un r\u00e9seau de neurones en python \u00ab\u00a0vanille\u00a0\u00bb (pr\u00e9-numpy) ou un <em>parser<\/em> de fichiers bas\u00e9s sur des expressions r\u00e9guli\u00e8res en C++&#8230; Et ce qui est pire que tout, ce sont les opportunit\u00e9s\u00a0manqu\u00e9es\u00a0suite \u00e0 l&rsquo;abandon d&rsquo;un projet ou d&rsquo;une analyse d\u00fb \u00e0 des limitations inh\u00e9rentes au langage s\u00e9lectionn\u00e9.<\/p>\n<p>Et, pour la minorit\u00e9 d&rsquo;entre vous pour qui conna\u00eetre trois langages semble bien peu, et bien&#8230; c&rsquo;est \u00e0 \u00e7a que servent les passe-temps!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La question que l&rsquo;on me pose le plus souvent concernant la bio-informatique est malheureusement celle qui conduit aux discussions les moins productives auxquelles j&rsquo;ai particip\u00e9 : Quel langage de programmation devrais-je utiliser en bio-informatique ? Comprenez-moi bien, dans un pub autour d&rsquo;une bi\u00e8re, cette discussion entre membres de l&rsquo;intelligentsia nerd est des plus divertissantes&#8230; mais l&rsquo;illumination survit\u00a0rarement jusqu&rsquo;au lendemain. Ceci dit, j&rsquo;aimerais partager ici la r\u00e9ponse que j&rsquo;ai affin\u00e9e au fil des ans. Elle est bas\u00e9e sur le d\u00e9veloppement de <a href=\"https:\/\/bioinfo.iric.ca\/fr\/les-langages-en-bio-informatique\/\"> [&#8230;]<\/a><\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[41],"tags":[144],"class_list":["post-2195","post","type-post","status-publish","format-standard","hentry","category-bioinformatique","tag-debutant"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/2195","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/comments?post=2195"}],"version-history":[{"count":8,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/2195\/revisions"}],"predecessor-version":[{"id":2203,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/2195\/revisions\/2203"}],"wp:attachment":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/media?parent=2195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/categories?post=2195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/tags?post=2195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}