C++

Salut à tous,
Certains d'entre-vous m'avaient conseillé anaconda-spider pour python ce qui me permettait de na pas avoir à télécharger les librairies mathématiques.
Auriez-vous un conseil du même ordre pour C++ (sous linux et sous mac)? quelles sont les librairies mathématiques les plus pratiques d'après vous? (sur python j'utilise numpy et matplot)
Merci d'avance,
Mauricio

Réponses

  • Tu as Code Blocks, accessible depuis la logithèque.
  • Salut Mauricio,

    Sous Mac, ne t'embetes pas et utilises XCode qui est tres complet et ne necessite quasiment aucun setup.

    Je conseille les libraires Boost. Ce sont des librairies de tres haut niveau qui ont vocations a etre integrees dans le standard. En math, tu as Boost::uBlas pour l'algebre lineaire. Une partie de Boost::Math fait maintenant partie de la STL (les probas sont dans C++11, fonctions speciales Riemnann, Bessel etc... dans C++17 supportes par LLVM en principe) mais il reste des solvers bien utiles comme toms748_solve ou brent_find_minima. Tu as aussi Boost::Python qui te permet d'interfacer les deux langages.

    Sinon tu as aussi GNU Scientific Library mais je ne l'ai jamais utilisee.

    Enfin, le bouquin Numerical Recipes donne une base pour l'implementation de la plupart des algos standard mais le code est a prendre avec des pincettes et il est souvent retravaille.

    Cordialement
  • Je te conseille open classroom si tu veux débuter. Après je ne sais pas.
  • @afk: ça fait longtemps qu'on ne s'était croisé ici!
    Je dois attendre 24h sur mon mac suite à l'oubli de mon mot de passe (!), j'essaie tout ça demain. Merci à tous les deux et aussi pour la référence que je ne connaissais et qui a l'air très bien. Je reviendrais peut-être avec des questions si ça ne marche pas demain...

    Mauricio
  • Salut Mauricio,

    Oui je ne traine plus que tres rarement sur le forum.

    Par curiosite, tu cherches a faire quoi avec C++?

    Perso j'ai pratique essentiellement 3 langages. Meme si j'adore coder en C++ et je ne le conseillerai jamais a quelqu'un qui n'a pas besoin de grosse performance; pour implementer un solveur d'EDP ou un simulateur MonteCarlo par exemple. C'est un langage extremement puissant mais aussi extremement subtil et complexe.

    En fait tous les developpements actuels de C++ tentent d'imiter les avantages des langages fonctionnels type Haskell comme
    • La securite associee aux types statiques (le plus gros defaut de Python a mon avis)
    • Sum types/Pattern matching: Algebraic data tvpes en Haskell -> boost::variant en C++ (maintenant std::variant en C++17)
    • Specification des types: Type inference en Haskell -> auto en C++
    • Type classes de Haskell -> Concepts (dans C++20??)
    • etc...
    En C++, cet emulation releve du generic meta-programming (usage des templates pour manipuler les types). Cela demande enormement d'expertise et de creativite et d'efforts juste pour reproduire des fonctionalites qui sont natives dans Haskell.


    En gros, si je devais donner des points forts:
    • Haskell: une expressivite et une clarete assez incroyable une fois qu'on a pris le pli. Particulierement plaisant pour les matheux.
    • C++: versatilite, puissance.
    • Python: librairies (matplotlib, numpy, pandas, scikitlearn etc... )
    Points faibles:
    • Haskell: pas assez de libs.
    • C++: extremement subtil et complexe. Requiert enormement d'expertise. Plus lent pour le developpement.
    • Python: absence the types statiques = pas de check du compilateur, moins d'expressivite moins robuste et lent.

    Cordialement,
    afk
Connectez-vous ou Inscrivez-vous pour répondre.