• [^] # Re: essayer Julia ?

    Posté par . En réponse au journal Un Python qui rivalise avec du C++. Évalué à 8.

    Non, quand tu as fait des maths, la manière la plus naturelle d'éviter une boucle FOR, c'est de vectoriser ton calcul. Sinon, tu fais du C pur.

    Le lien entre les maths et la programmation est ténu, en plus d'être souvent dangereux. L'idée d'adopter une pensée mathématique quand on code ne me semble pas une bonne idée du tout.

    En plus, je ne suis même pas certain que ça soit vrai. Assez souvent, le formalisme mathématique utilise l'équivalent de boucles FOR (sommes et produits) ; le recours à l'algèbre linéaire est loin d'être systématique, et me semble inexistant dans certains domaines (suites, systèmes dynamiques?). D'autre part, les notations d'algèbre linéaire sont souvent compactes (typiquement, les successions de produits de matrices inversées et transposées), mais sont très inefficaces en terme de calcul. Bref, pas concaincu du tout qu'il soit naturel de vectoriser, surtout quand on code dans un langage qu'on connait mal. Ça me semble être un peu un argument a posteriori, la logique de la vectorisation est très puissante quand le langage est organisé autour de ça, mais il n'y a pas de raison a priori qu'elle paraisse plus naturelle qu'une autre.

    tu es bien obligé de rentrer dans les détails bas niveau

    Pas forcément, tu peux déja optimiser énormément en restant à haut-niveau, et les compilateurs sont aussi censés t'aider à ne pas micro-optimiser le code. Il arrive d'ailleurs souvent en C++ par exemple qu'une optimisation "logique" (par exemple, retourner un résultat par référence plutôt que par valeur) ralentisse le programme, parce que le compilateur l'avait déja fait, et de manière plus efficace qu'à la main. J'ai récemment essayé de plonger un peu dans la micro-optimisation d'une fonction critique en C++, et à mon niveau de compréhension, tout ça s'est avéré relever de la magie noire ; tout fonctionne sans optimisation, mais dès qu'on est en O2 ou O3, l'effet des changements (par exemple jouer avec le nombre et l'ordre des tests conditionnels) est totalement imprévisible, ce qui me donne à penser que plus on fait des trucs sioux et plus on gène le compilo plutôt qu'autre chose.