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

Langages de programmation Discussion :

[Choix de langage] Développement d'une appli scientifique


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 123
    Par défaut [Choix de langage] Développement d'une appli scientifique
    Bonjour,

    alors vous allez vous dire, c'est qui ce troll qui pose une question genre Fortran vs C ?!

    Non, non, ma question est sérieuse et réellement motivée.

    Je vous explique. Je me lance dans un projet de développement d'appli scientifique pour m'éclater à développer et disposer d'une bonne boîte à outil. Mais quand je me dis je me lance, j'en suis au tout début : choix du langage.
    Suivront architecture du projet, suivi de développement, mise en place d'une arborescence, choix des librairies, ...

    J'ai réussi au fil des jours à dégrossir mon envie :

    - nécessité de performance : genre, créer une matrice identité de 1000 par 1000 doit pas poser de problèmes de lenteurs avec des instructions simples.

    - nécessité de portabilité : le source doit être compilable assez facilement sur n'importe quelle plateforme (j'éviterai bien sûr les instructions non portables)

    - monolangage : le code doit comporter exclusivement un seul langage. Le tout sera éventuellement encadré par une belle GUI dans un autre langage mais dans un premier temps, ce n'est pas le propos.

    - prise en compte possible dans le code de technologies comme la parallélisation, les protocoles de soumissions MPI, le passage en 64 bits...

    L'idée finale (bien qu'à peine ébauchée...) serait d'offrir à un utilisateur plus matheux que codeur une série de sources lourdement validées sur les plans mathématique, algorithmique et intégration, qu'il n'aurait plus qu'à assembler comme des LEGOS. Au final, à l'expression d'un problème, il obtiendrait la réponse sous forme d'un unique exécutable qu'il aurait construit/compilé lui-même.

    Bien sûr, je vais pas coder ça en trois jours, ce sera plutôt un projet sur plusieurs années qui viendra s'enrichir. Mais le jour où j'ai besoin d'un truc, je pourrais y aller les yeux fermés.

    En gros, imaginez DAKOTA (ici). Voilà, je veux refaire DAKOTA (en mieux bien sûr !!)

    Alors ce dernier est codé en C++. Mais le C++ me gène, car il n'autorise pas les opérations vectorielles sur les tableaux comme le Fortran, ce qui me semble précieux. Ceci dit, on m'a dit que le C/C++ battait à plate couture le Fortran en terme de performance s'il était bien manié.

    Alors qu'en pensez vous ?

    Merci !

    PS : critiques, conseils et points de vues extérieurs bienvenus, mais les réactions épidermiques un peu moins (genre "le C++ c'est le mieuuuu")

  2. #2
    Membre émérite Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Par défaut
    Salut, je répondrais juste pour les matrices/vecteurs.

    Boost propose une implémentation des fonctionnalités BLAS : Boost.uBlas (http://www.boost.org/doc/libs/1_37_0.../doc/index.htm). Evidemment, c'est portable, libre.

    Donc pour le côté calcul matriciel, ça devrait aller pour la grande majorité de tes besoins. Je l'utilise pour du code de prototypage industriel.

    Par contre c'est très templatisé.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Loïc B. Voir le message
    Ceci dit, on m'a dit que le C/C++ battait à plate couture le Fortran en terme de performance s'il était bien manié.
    d'abord C/C++ n'existe pas

    C'est C ou C++

    Ensuite, ce que tu affirmes est faux

    Avec les compilos modernes, sur les machines modernes, C ou Fortran sont équivalents.

    Par définition, Fortran est adapté aux maths (FORmula TRANslator). Mais, à part le traitement vectoriel/matriciel inclus effectivement dans Fortran (pour cause de station orbitale Freedom), le reste est à peu près identique entre les 2.

    La seule chose qui pourrait éventuellement faire pencher la balance vers le C est si tu as (auras) beaucoup d'algos récursifs, ou beaucoup de structures d'abres, plus faciles à écrire en C qu'en Fortran.

    Cela dit, je ne me prononce pas sur ton choix. Je répond juste à ta question et affirmation

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 123
    Par défaut
    Merci pour le lien vers uBLAS, mais sauf erreur, cela n'implémente que les types matrices et les opérations basiques (+-*/). Et pas l'ombre d'une factorisation LU ou QR... L'équivalent de BLAS en fait, mais pas de LAPACK...

    Merci souviron pour tes conseils. (C/C++ n'est pas un langage ? Ah bon, ptêt alors que ça signifie C ou C++ dans ma phrase ). Mais tu as beau dire que c'est faux, ça reste vrai à mes yeux vu la personne qui me l'a dit. Il a testé des programmes plein de tableaux et de boucles, écrit en fortran et écrit en C. En C, c'était crappy, mais il gagnait un facteur 10 voire 50 sur certaines opérations.

    C'est pas quelque chose que tu as expérimenté dans ton quotidien ? (Attention, je parle pas ici d'applications autour de tableaux 10 par 10, mais plutôt de matrices pleines qui frisent avec la limite mémoire et qu'il faut ensuite inverser)

    Merci pour vos lumières en tout cas !

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Loïc B. Voir le message
    Mais tu as beau dire que c'est faux, ça reste vrai à mes yeux vu la personne qui me l'a dit. Il a testé des programmes plein de tableaux et de boucles, écrit en fortran et écrit en C. En C, c'était crappy, mais il gagnait un facteur 10 voire 50 sur certaines opérations.

    C'est pas quelque chose que tu as expérimenté dans ton quotidien ? (Attention, je parle pas ici d'applications autour de tableaux 10 par 10, mais plutôt de matrices pleines qui frisent avec la limite mémoire et qu'il faut ensuite inverser)
    Non je ne l'ai pas expérimenté dans mon quotidien..

    Encore une fois, en termes de calculs purs, les 2 sont identiques. (et je parle ici de tableaux 20 000 * 20 000, sinon plus).

    Après, il faut voir les codes. Les écriture et philosophie n'étant pas les mêmes, il est vraisemblable qu'un simple "portage" d'un langage à l'autre entraîne des pertes/gains (par exemple la lecture d'une matrice est inversée entre C et Fortran entre lignes et colonnes)

    Mais je répète qu'à priori pour du calcul il n'y a aucune différence notable.

    Comme je l'ai dit, après cela dépendra des structures de données, des types d'appels, etc etc.. (entre les pointeurs, les allocations dynamiques ou non, les partages via COMMON, les calculs matriciels, le récursif, etc etc..)

Discussions similaires

  1. Développement d'une appli web, demande d'avis sur le langage à utiliser
    Par chomo dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 10/06/2012, 23h33
  2. Développement d'une appli win CE
    Par Spidermeu dans le forum C#
    Réponses: 1
    Dernier message: 25/08/2008, 08h36
  3. Développement d'une appli c++ windows/linux avec gcc
    Par ZeLL dans le forum Eclipse C & C++
    Réponses: 4
    Dernier message: 04/02/2008, 03h57
  4. Développement d'une appli en PHP et C# ?
    Par berceker united dans le forum C#
    Réponses: 4
    Dernier message: 22/09/2007, 01h35
  5. Réponses: 10
    Dernier message: 09/11/2006, 15h28

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