Je suis d'accord avec Makach.
Laissez les personnes qui créent les algorithmes utiliser les outils qu'elles connaissent le mieux. Car il y a deux tâches distinctes (et tout aussi importantes) à accomplir dans le cadre de ce projet. Tout d'abord, il y a la création d'un algorithme efficace, élégant et approprié du point de vue mathématique, puis il y a la tâche difficile et tordue de le traduire en langage CPU. Les mathématiciens devraient se concentrer sur leur première tâche, et pour leur faciliter la tâche, leur permettre d'utiliser le toosl avec lequel ils sont à l'aise. En termes d'heures de travail, il est beaucoup plus efficace d'utiliser leur temps pour écrire du code MATLAB que de leur faire apprendre un nouveau langage de programmation.
Votre tâche consiste à déterrer les mathématiques (vraisemblablement) brillantes qui sont enfouies dans le code charabia.
Cette partie est juste un point de vue sur le problème en question. Voici la vraie réponse.
Communication, respect mutuel et enseignement/apprentissage.
Communication et respect mutuel
Vous devez communiquer avec eux souvent. Travaillez en étroite collaboration avec eux et posez-leur des questions lorsque vous rencontrez quelque chose dont vous n'êtes pas sûr. Cela est beaucoup plus facile lorsqu'il y a un respect mutuel, ce qui signifie que si vous passez tout votre temps à critiquer leurs capacités de codage, ils seront obligés de passer tout leur temps à critiquer vos capacités en mathématiques. Essayez plutôt des sessions d'apprentissage rapides. ("Lunch & Learn" est une tactique assez courante)
Enseignement/apprentissage
La première et la plus importante des sagesses à leur transmettre est le commentaire. Faites-leur commenter leur code. Dites-leur que les commentaires sont bien plus importants que la qualité du code, et que tant que leurs commentaires sont corrects, ils peuvent vous laisser faire le reste. Parce qu'ils le peuvent. Ils n'ont pas besoin que leur code soit beau, qu'il soit le plus rapide, ils ont juste besoin qu'il ait du sens pour vous.
Pour poursuivre ce scénario d'apprentissage mutuel, si vous remarquez des erreurs très simples et très courantes qu'ils font (rien d'aussi compliqué que le multithreading), prévenez-les rapidement. "Cette façon de faire fonctionne (ou ne fonctionne pas) mais voici une façon de faire qui est un peu différente mais qui vous rendra la vie beaucoup plus facile". Encouragez-les à rendre la pareille en essayant de remarquer les nuances ou les parties de leurs algorithmes avec lesquelles vous et votre équipe avez des difficultés et donnez un petit tutoriel à ce sujet.
Une fois la communication établie, il vous sera de plus en plus facile d'adapter leur style de codage à ce qui convient le mieux à votre équipe, et ils comprendront aussi plus facilement pourquoi vous ne voyez pas les choses de la même manière qu'eux.
En outre, comme l'a mentionné Kekoav, assurez-vous qu'ils fournissent quelques cas de test entièrement chargés. Cela signifie que pour quelque chose comme
A -> B -> C -> D -> Solution
Ils vous fourniront toutes les valeurs pour A, puis ce qu'il en est pour B, puis ce qu'il en est pour C et ainsi de suite. Ainsi, vous pouvez être certain que non seulement le résultat est correct à la fin, mais qu'il l'est également à chaque étape du processus. Essayez de leur demander de fournir des exemples réguliers, mais aussi quelques-uns qui sont inhabituels, afin que vous puissiez être certain que votre code couvre les cas limites.