IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Affichage des résultats du sondage: Quel langage de programmation pour le calcul scientifique en 2018 ?

Votants
30. Vous ne pouvez pas participer à ce sondage.
  • C

    1 3,33%
  • C++

    10 33,33%
  • Charm++

    0 0%
  • Chapel

    0 0%
  • Fortran

    3 10,00%
  • Java

    4 13,33%
  • Julia

    3 10,00%
  • Lua

    0 0%
  • Nim

    0 0%
  • Occam

    0 0%
  • Python

    8 26,67%
  • Rust

    0 0%
  • Autre (précisez)

    1 3,33%
Programmation parallèle, calcul scientifique et de haute performance (HPC) Discussion :

Quel langage de programmation pour le calcul scientifique en 2018 ?


Sujet :

Programmation parallèle, calcul scientifique et de haute performance (HPC)

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut 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 souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mai 2016
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2016
    Messages : 313
    Points : 1 237
    Points
    1 237
    Par défaut
    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.

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2007
    Messages : 884
    Points : 2 018
    Points
    2 018
    Par défaut
    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.
    Tout ce que j'écris est libre de droits (Licence CC0) et je vous incite à faire de même.

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2006
    Messages : 49
    Points : 167
    Points
    167
    Par défaut
    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.

  5. #5
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    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?

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mai 2016
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2016
    Messages : 313
    Points : 1 237
    Points
    1 237
    Par défaut
    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.

Discussions similaires

  1. quel langage de programmation pour traitement d'image
    Par nano8308 dans le forum Traitement d'images
    Réponses: 8
    Dernier message: 02/02/2011, 09h44
  2. Votre avis : Quel langage de programmation pour développer ce programme ?
    Par julien.nasser dans le forum Langages de programmation
    Réponses: 8
    Dernier message: 28/11/2008, 09h43
  3. Quel langage de programmation pour ce projet?
    Par yongblood dans le forum Windows
    Réponses: 6
    Dernier message: 11/01/2007, 01h41
  4. Quel langage de programmation pour des programmes simples ?
    Par Pierre.g dans le forum Langages de programmation
    Réponses: 18
    Dernier message: 22/11/2006, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo