Me encanta programar en lenguajes que parecen estar orientados a programadores hardcore. (Mis favoritos son Python y D.) MATLAB está orientado a ingenieros y R está orientado a estadísticos, y parece que estos lenguajes fueron diseñados para personas que no son programadores hardcore y no piensan como programadores hardcore. Siempre los encuentro algo incómodos de usar, y hasta cierto punto no puedo entender por qué. Aquí hay algunos problemas que he logrado identificar:
- (Ambos): El énfasis extremo en vectores y matrices en la medida en que no hay primitivas verdaderas.
- (Ambos): La dificultad de la manipulación básica de cuerdas.
- (Ambos): Falta o incomodidad en el soporte de estructuras de datos básicas como tablas hash y matrices "reales", es decir, paramétricas de tipo y anidables.
- (Ambos): Son muy, muy lentos incluso para los estándares de lenguaje interpretados, a menos que se doble hacia atrás para vectorizar su código.
- (Ambos): Parece que no están diseñados para interactuar con el mundo exterior. Por ejemplo, ambos son programas bastante voluminosos que tardan en iniciarse y parecen no estar diseñados para hacer que los programas de filtro de texto sean fáciles de escribir. Además, la falta de un buen procesamiento de cadenas hace que la E / S de archivos en cualquier cosa menos formas muy estándar sea casi imposible.
- (Ambos): la orientación del objeto parece tener una sensación muy atornillada. Sí, puedes hacerlo, pero no se siente mucho más idiomático que OO en C.
- (Ambos): no hay una forma obvia y simple de obtener un tipo de referencia. No hay punteros o referencias de clase. Por ejemplo, no tengo idea de cómo hacer rodar su propia lista vinculada en cualquiera de estos idiomas.
- (MATLAB): No puede poner múltiples funciones de nivel superior en un solo archivo, fomentando funciones muy largas y codificación de cortar y pegar.
- (MATLAB): Los enteros aparentemente no existen como un tipo de primera clase.
- (R): Las estructuras básicas de datos incorporados parecen de un nivel demasiado alto y poco documentadas, y nunca parecen hacer lo que esperaba dada mi experiencia con estructuras de datos similares pero de nivel inferior.
- (R): la documentación se extiende por todo el lugar y es prácticamente imposible de navegar o buscar. Incluso D, que a menudo se llama por mala documentación y todavía es bastante alfabético, es sustancialmente mejor por lo que puedo decir.
- (R): Al menos hasta donde yo sé, no hay un buen IDE para ello. Nuevamente, incluso D, un lenguaje bastante alfa-ish con una comunidad pequeña, funciona mejor.
En general, también siento que MATLAB y R podrían reemplazarse fácilmente por bibliotecas antiguas simples en lenguajes más generales, si existieran bibliotecas lo suficientemente completas. Esto es especialmente cierto en los nuevos lenguajes de propósito general que incluyen muchas características para los escritores de bibliotecas.
¿Por qué R y MATLAB me parecen tan extraños? ¿Hay otros problemas importantes que haya notado que puedan hacer que estos lenguajes resulten extraños para los programadores expertos? Cuando su uso es necesario, ¿cuáles son algunos buenos consejos de supervivencia?
Editar: veo un problema de algunas de las respuestas que he recibido. Cuando analizo los datos, tengo una fuerte preferencia personal por tener un script que incorpore toda la canalización. Esto implica que debe usarse un lenguaje de propósito general. Odio tener que escribir un script para "limpiar" los datos y escupirlos, luego otro para volver a leerlos en un entorno completamente diferente, etc. Encuentro la fricción de usar MATLAB / R para parte de mi trabajo y lenguaje diferente con un espacio de direcciones completamente diferente y una forma de pensar para que el resto sea una gran fuente de fricción. Además, sé que existen capas de pegamento, pero siempre parecen ser terriblemente complicadas y una fuente de fricción.