J'utilise les deux. Je prototype souvent des fonctions et des algorithmes dans Matlab parce que, comme indiqué, il est plus facile d'exprimer un algorithme dans quelque chose qui est proche d'un langage mathématique pur.
R possède d'excellentes bibliothèques. Je suis encore en train de l'apprendre, mais je commence à laisser Matlab dans la poussière car une fois que vous connaissez R, il est également assez facile de prototyper les fonctions là-bas.
Cependant, je trouve que si vous voulez que les algorithmes fonctionnent efficacement dans un environnement de production, il est préférable de passer à un langage compilé comme C ++. J'ai de l'expérience dans l'intégration de C ++ dans Matlab et R (et j'excelle d'ailleurs), mais j'ai eu une meilleure expérience avec R. Avertissement: étant un étudiant diplômé, je n'ai pas utilisé une version récente de Matlab pour mes dll, J'ai travaillé presque exclusivement dans Matlab 7.1 (qui a environ 4 ans). Peut-être que les versions les plus récentes fonctionnent mieux, mais je peux penser à deux situations sur le dessus de ma tête où une DLL C ++ à l'arrière de Matlab a provoqué un écran bleu de Windows XP parce que je marchais de manière inappropriée en dehors des limites d'un tableau - un problème très difficile à résoudre. déboguer si votre ordinateur redémarre à chaque fois que vous faites cette erreur ...
Enfin, la communauté R semble se développer beaucoup plus rapidement et avec beaucoup plus d'élan que la communauté Matlab n'a jamais eu. De plus, comme c'est gratuit, vous n'avez pas non plus affaire avec le gestionnaire de licence Godforsaken flexlm.
Remarque: Presque tout mon développement est en ce moment dans les algorithmes MCMC. Je fais environ 90% de la production en C ++ avec la visualisation en R en utilisant ggplot2.
Mise à jour pour les commentaires parallèles:
Une bonne partie de mon temps de développement est actuellement consacrée à la parallélisation des routines MCMC (c'est ma thèse de doctorat). J'ai utilisé la boîte à outils parallèle de Matlab et la solution de Star P (qui, je suppose, appartient maintenant à Microsoft ?? - jeez un autre est englouti ...) J'ai trouvé que la boîte à outils parallèle était un cauchemar de configuration - quand je l'ai utilisé, il nécessite un accès root à chaque nœud client unique. Je pense qu'ils ont corrigé ce petit "bug" maintenant, mais toujours un gâchis. J'ai trouvé la solution * 'p élégante, mais souvent difficile à profiler. Je n'ai pas utilisé Jacket , mais j'ai entendu de bonnes choses. Je n'ai pas non plus utilisé les versions les plus récentes de la boîte à outils parallèle qui prennent également en charge le calcul GPU.
Je n'ai pratiquement aucune expérience avec les packages parallèles R.
D'après mon expérience, la parallélisation du code doit se produire au niveau C ++ où vous avez une granularité plus fine de contrôle pour la décomposition des tâches et l'allocation de mémoire / ressource. Je trouve que si vous essayez de paralléliser des programmes à un niveau élevé, vous ne recevez souvent qu'une accélération minimale à moins que votre code ne soit décomposable de manière triviale (également appelé parallélisme factice). Cela dit, vous pouvez même obtenir des accélérations raisonnables en utilisant une seule ligne au niveau C ++ en utilisant OpenMP:
#pragma omp parallel for
Les schémas plus compliqués ont une courbe d'apprentissage, mais j'aime vraiment où les choses gpgpu vont. En ce qui concerne JSM cette année, les quelques personnes à qui j'ai parlé du développement de GPU dans R le citent comme n'étant que des "orteils au fond" pour ainsi dire. Mais comme indiqué, j'ai une expérience minimale - pour changer dans un avenir proche.