J'adore la programmation dans des langages qui semblent destinés aux programmeurs hardcore. (Mes favoris sont Python et D.) MATLAB est destiné aux ingénieurs et R est destiné aux statisticiens, et il semble que ces langages ont été conçus pour des personnes qui ne sont pas des programmeurs hardcore et qui ne pensent pas comme des programmeurs hardcore. Je les trouve toujours un peu difficiles à utiliser, et dans une certaine mesure, je ne peux pas mettre le doigt sur pourquoi. Voici quelques problèmes que j'ai réussi à identifier:
- (Les deux): L'accent extrême mis sur les vecteurs et les matrices dans la mesure où il n'y a pas de véritables primitives.
- (Les deux): La difficulté de manipulation de base des chaînes.
- (Les deux): Manque ou maladresse dans la prise en charge des structures de données de base comme les tables de hachage et les tableaux "réels", c'est-à-dire paramétriques et emboîtables.
- (Les deux): Ils sont vraiment très lents, même selon les normes de langage interprétées, à moins que vous ne vous incliniez en arrière pour vectoriser votre code.
- (Les deux): Ils semblent ne pas être conçus pour interagir avec le monde extérieur. Par exemple, les deux sont des programmes assez volumineux qui prennent du temps à lancer et semblent ne pas être conçus pour faciliter l'écriture de programmes de filtrage de texte simples. De plus, le manque d'un bon traitement des chaînes rend les E / S de fichiers dans tout sauf des formes très standard presque impossibles.
- (Les deux): L'orientation de l'objet semble avoir une sensation très boulonnée. Oui, vous pouvez le faire, mais cela ne semble pas beaucoup plus idiomatique que OO en C.
- (Les deux): Pas de moyen simple et évident pour obtenir un type de référence. Aucun pointeur ou référence de classe. Par exemple, je n'ai aucune idée de la façon dont vous créez votre propre liste de liens dans l'une de ces langues.
- (MATLAB): Vous ne pouvez pas mettre plusieurs fonctions de premier niveau dans un seul fichier, ce qui encourage les fonctions très longues et le codage couper-coller.
- (MATLAB): Les entiers n'existent apparemment pas en tant que type de première classe.
- (R): Les structures de données intégrées de base semblent beaucoup trop élevées et mal documentées, et ne semblent jamais faire exactement ce que j'attends étant donné mon expérience avec des structures de données de niveau similaire mais de niveau inférieur.
- (R): La documentation est répartie partout et pratiquement impossible à parcourir ou à rechercher. Même D, qui est souvent frappé pour une mauvaise documentation et qui est encore assez alpha-ish, est nettement meilleur pour autant que je sache.
- (R): Au moins pour autant que je sache, il n'y a pas de bon IDE pour cela. Encore une fois, même D, un langage assez alpha-ish avec une petite communauté, fait mieux.
En général, j'ai également l'impression que MATLAB et R pourraient être facilement remplacés par de vieilles bibliothèques simples dans des langages plus généraux, si des bibliothèques suffisamment complètes existaient. Cela est particulièrement vrai dans les nouveaux langages à usage général qui incluent de nombreuses fonctionnalités pour les rédacteurs de bibliothèques.
Pourquoi R et MATLAB me semblent-ils si étranges? Y a-t-il d'autres problèmes majeurs que vous avez remarqués qui peuvent rendre ces langages étranges pour les programmeurs hardcore? Lorsque leur utilisation est nécessaire, quels sont les bons conseils de survie?
Edit: je vois un problème de certaines des réponses que j'ai obtenues. J'ai une forte préférence personnelle, lorsque j'analyse des données, d'avoir un script qui incorpore l'ensemble du pipeline. Cela implique qu'un langage à usage général doit être utilisé. Je déteste devoir écrire un script pour "nettoyer" les données et les recracher, puis un autre pour les relire dans un environnement complètement différent, etc. Je trouve le frottement de l'utilisation de MATLAB / R pour une partie de mon travail et une langue différente avec un espace d'adressage et une façon de penser complètement différents pour que le reste soit une énorme source de friction. De plus, je sais qu'il existe des couches de colle qui existent, mais elles semblent toujours horriblement compliquées et source de friction.