• [^] # Re: De la nécessité de faire des incantations vaudou sur le code

    Posté par (site web personnel) . En réponse à la dépêche Où vont les supercalculateurs ? D’où on vient, quels sont les problèmes, où l’on va (1re partie). Évalué à 7.

    le problème viens aussi du côté bas niveau du code, faire comprendre > à un compilateur la sémantique de

    for (int i = 0; i < N-2; i += 2) {
    a[i+2] = f(i);
    }

    n'est pas évident, mais possible tant qu'on ne fasse pas de magie > avec l'arithmétique des pointeurs.

    Alors qu'on compilateur aura beaucoup plus de faciliter à comprendre

    a[2:] = map(f, range(len(a) - 2)

    On peut déterminer si map est parallèle et si ça vaut le coup de paralléliser, en poussant un peu le bouchon et suivant l'utilisation faite de a par la suite, on peut transformer le map en itertools.imap etc

    J'avais même fait l'expérience avec un étudiant, et l'écriture d'un code C sans connaître toute les ficelles donnait lieu à un code moins performant que le même algo décrit dans un langage de haut niveau qu'un compilo a pu optimiser. Et en mettant un expert, il remettait la nique au compilo d'ailleurs (ouf!).

    L'idée sous-jacente serait qu'il est plus facile d'encoder du savoir faire spécifique dans un compilo pour un langage de haut niveau que dans un compilo pour langage de bas niveau. Un peu ce qui se passe avec les DSLs d'ailleurs.