Question

J'adore la programmation dans les 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 les personnes qui ne sont pas des programmeurs hardcore et ne pensent pas comme des programmeurs hardcore. Je les trouve toujours un peu gênants à 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 sur les vecteurs et les matrices dans la mesure où il n'y a pas de véritables primitives.
  • (Les deux): La difficulté de la manipulation de base des cordes.
  • (Les deux): manque ou maladresse en faveur des structures de données de base comme les tables de hachage et les tableaux «réels», c'est-à-dire type paramétrique et niditable.
  • (Les deux): Ils sont vraiment, vraiment lents, même selon les normes linguistiques interprétées, à moins que vous ne vous penchiez en arrière pour vectoriser votre code.
  • (Les deux): Ils ne semblent pas être conçus pour interagir avec le monde extérieur. Par exemple, les deux sont des programmes assez encombrants qui mettent un certain temps à lancer et ne semblent pas être conçus pour rendre les programmes de filtre de texte simples faciles à écrire. De plus, le manque de bon traitement de chaîne rend les E / S de fichiers dans tout sauf des formulaires très standard presque impossibles.
  • (Les deux): l'orientation des objets semble avoir une sensation très boulonnée. Oui, vous pouvez le faire, mais cela ne semble pas beaucoup plus idiomatique que OO dans C.
  • (Les deux): Aucun moyen simple et simple d'obtenir un type de référence. Pas de pointeurs ou de références de classe. Par exemple, je n'ai aucune idée de la façon dont vous lancez votre propre liste liée dans l'une ou l'autre de ces langues.
  • (MATLAB): Vous ne pouvez pas mettre plusieurs fonctions de niveau supérieur dans un seul fichier, encourageant des fonctions très longues et codage de coupe et de coche.
  • (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 ce que j'attends compte tenu de mon expérience avec des structures de données de niveau similaire mais inférieures.
  • (R): La documentation est répandue partout et pratiquement impossible à parcourir ou à rechercher. Même D, qui est souvent assommé pour une mauvaise documentation et est toujours assez alpha-ish, est sensiblement mieux 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, une langue 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 des bibliothèques anciennes simples dans des langues plus générales, s'il existait des bibliothèques suffisamment complètes. Cela est particulièrement vrai dans les langages généraux plus récents qui incluent de nombreuses fonctionnalités pour les rédacteurs de bibliothèques.

Pourquoi R et Matlab me semblent-ils si bizarres? Y a-t-il d'autres problèmes majeurs que vous avez remarqués qui peuvent faire en sorte que ces langages se révèlent é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 les données, pour avoir une script qui intègre tout le 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 la cracher, puis une autre pour la lire dans un environnement complètement différent, etc. Différent la langue avec un espace d'adressage complètement différent et une façon de penser pour que le reste soit une énorme source de friction. De plus, je sais qu'il existe des couches de colle qui existent, mais ils semblent toujours horriblement compliqués et une source de friction.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top