Quel langage de programmation pour le calcul scientifique en 2018 ?
Quelles caractéristiques vous paraissent-elles les plus importantes ?

Le , par dourouc05, Responsable Qt
Quel langage de programmation pour le calcul scientifique en 2018 ?
Dans les domaines d'application les moins connus de l'informatique, on compte probablement le calcul scientifique : il s'agit de résoudre des problèmes scientifiques de haut vol grâce à des superordinateurs. Par exemple, l'aéronautique en est une fervente adepte : depuis les simulations de missions de la NASA à l'étude détaillée de moteurs d'avion, l'objectif est de déterminer à l'avance si tout se passera bien en conditions réelles.

L'exploitation de gisements miniers et pétroliers consomme aussi beaucoup de puissance de calcul — le géant italien de l'énergie Eni possède d'ailleurs le supercalculateur industriel le plus puissant au monde. En effet, la prospection pour ces gisements ne peut pas utiliser les mêmes outils que pour l'exploitation : il faut déterminer les meilleurs endroits sans creuser, puis affiner en creusant un nombre limité de puits. L'analyse des signaux doit alors être très poussée pour obtenir des résultats probants — et très rapidement.

Pour toutes ces applications, les développeurs HPC utilisent souvent des langages bien connus : C, C++, Fortran sont très régulièrement cités. Java, malgré son image de langage lent, a aussi sa place dans le domaine.

Cela, sans compter les langages plus précis développés ou étendus pour ce domaine : Python (couplé à un moteur de JIT comme Numba ou à des bibliothèques natives à la SciPy), Lua (avec Torch), Julia, Chapel, Occam, Nim, Charm++, Rust

Ce que l'on attend d'un langage pour le calcul scientifique est assez précis et ne correspond souvent pas à une utilisation généraliste. En effet, on veut écrire des mathématiques simplement, mais aussi avoir du code extrêmement efficace à l'exécution et la possibilité de le paralléliser (sur une machine ou un superordinateur). Le tout avec les besoins habituels des programmeurs !

Et vous, quel est votre langage de programmation de prédilection pour le calcul scientifique ? Pourquoi l'avez-vous choisi ? Lesquels avez-vous testés dans le passé ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de wolinn wolinn - Membre confirmé https://www.developpez.com
le 11/03/2018 à 8:32
C++, depuis 25 ans.
Avant, j'ai fait un peu de Fortran, vers 1990. Du Pascal, du C.
Testé Java vers 1997 : rapidement rejeté, inutilisable pour raisons de performances, à l'époque (mais je n'en connais pas les évolutions récentes).
En train d'évaluer Ada actuellement (un langage assez ancien en fait) : faible intérêt pour ces applications si on connait déjà C++, efficacité du code compilé un peu douteuse.
Pour des applications un peu conséquentes, en plus du critère de performances, j'ai besoin d'un langage stable, normalisé, avec des garanties de perennité. Le code que j'écris doit être toujours compilable dans 20 ans. Ce qui exclut les langages trop récents, pas encore bien stabilisés, marginaux.
Par ailleurs, je n'ai pas envie d'utiliser deux ou trois langages différents pour écrire une application, avec toutes les complications et risques que cela introduit. Le C++ se prête aussi bien au développement du noyau de calcul qu'à celui de l'IHM.
Pour mes critères et applications, C++ coche toujours toutes les cases, sans concurrent évident, ce qui n'empêche pas d'évaluer d'autres langages et de jouer un peu avec pour des petits programmes, en contexte de recherche.
Avatar de abriotde abriotde - Membre éprouvé https://www.developpez.com
le 13/03/2018 à 13:44
Pour du calcul scientifique par un scientifique, c'est aujourd'hui Python, il est facile a abordé comporte pléthore de module scientifique (Numpy...) et est moderne et performant. Cependant pour une application scientifique, un développeur utilisera C++ voire Rust pour des question de performances. Autrement dit, l’outil pour faire des programme scientifique par un scientifique est Python, la maquette est en Python mais le programme qui doit tourné dans un super-calculateur sera forcément optimisé en C++ mais pas développé par un scientifique. Le scientifique n'aura fait que le spécifier.
Avatar de tp1024 tp1024 - Membre habitué https://www.developpez.com
le 13/03/2018 à 13:57
J'apprecie beaucoup Python, avec des plugins comme NumPy, et la possibilité d'exécuter du code compilé avec des compilateurs comme Pypy, et autres.

Pour être exhaustif, je citerai le langage IDL : http://www.harrisgeospatial.com/Soft...ology/IDL.aspx, qui offre des opération de calcul matriciel et supporte beaucoup de format de l'informatique scientifique.

Pour les meilleures performances, le langage C, sur OS Unix/Linux/Windows/Mac me semble incontournable.
Avatar de GLDavid GLDavid - Membre expert https://www.developpez.com
le 14/03/2018 à 7:51
Bonjour

J'ai répondu C, mais un choix multiple aurait été mieux car j'aurais opté pour le couple C/C++.
Je vais parler de mon domaine, la bioinformatique et la chemoinformatique industrielle. La difference avec la branche fondamentale étant que nous sommes évidemment tournés vers l'aspect purement applicatif contrairement à la branche fondamentale qui est dédiée à la recherche.
Ceci dit, nombre d'applications de base dans ces domains sont évidemment développés en C/C++. Des outils comme BLAST, CLUSTAL ou même des APIs comme INDIGO pour la chimie sont fait en C à la base. Cependant, ce n'est plus aussi vrai maintenant. L'aspect statistiques étant fort en sciences, on ne sera pas surprise de trouver de fantastiques scripts et librairies en R, notamment pour l'analyse de microarrays (puces ADN et Bioconductor). Les anciens de developpez.com se rappelleront de l'initiation de la rubrique Perl que j'avais réalisé. A l'époque, Perl 5 était le langage de script pour la science. Le lecteur pourra le mesurer en consultant CPAN. Perl 6 ayant joué au vaporware, la place est maintenant occupé par Python. Mais, de nombreuses APIs scientifiques sont également disponibles en Java mais aussi .NET, ce qui fait que les 2 langages sont de mon point de vue equivalents, le choix étant motive par des contraintes de cahiers des charges ou d'affinités.
Ma conclusion est que le coeur d'une application est et sera développé de preference en C/C++. Des APIs existeront pour tout type de langages préférant bien sûr les langages les plus usités (Java, C#, python). Après, nul n'emêchera de réaliser autrement mais qu'en sera t'il de la lecture et du maintien du code?

@++
Avatar de wolinn wolinn - Membre confirmé https://www.developpez.com
le 14/03/2018 à 9:44
Le sondage est un peu ambigu, mélangeant des langages compilés directement utilisable pour le calcul scientifique intensif, avec des langages interprétés utilisés pour écrire des programmes qui sont en fait des réseaux d'appels de procédures écrites en langage compilé comme C, C++, Fortran.
Dans ces conditions, n'importe quel langage interprété est utilisable pour le calcul scientifique, et on peut observer des vagues d'ascension et de déclin d'une variété de langages, alors que les langages fondamentaux du calcul scientifique (C, C++, Fortran) sont bien plus stables et durables, ce qui a une importance du point de vue de la maintenance et des évolutions à long terme.
Responsable bénévole de la rubrique HPC : Thibaut Cuvelier -