Adoro programar em linguagens que parecem voltadas para programadores hardcore. (Meus favoritos são Python e D.) O MATLAB é voltado para engenheiros e R é voltado para estatísticos, e parece que essas linguagens foram projetadas para pessoas que não são programadores hardcore e não pensam como programadores hardcore. Eu sempre os acho um pouco difíceis de usar, e até certo ponto não consigo entender o porquê. Aqui estão alguns problemas que eu consegui identificar:
- (Ambos): A ênfase extrema em vetores e matrizes na medida em que não existem primitivas verdadeiras.
- (Ambos): A dificuldade da manipulação básica de strings.
- (Ambos): falta ou constrangimento no suporte a estruturas de dados básicas, como tabelas de hash e matrizes "reais", isto é, paramétricas e aninhadas.
- (Ambos): Eles são muito, muito lentos, mesmo para os padrões de linguagem interpretados, a menos que você se incline para trás para vetorizar seu código.
- (Ambos): Eles parecem não ter sido projetados para interagir com o mundo exterior. Por exemplo, ambos são programas bastante volumosos que demoram um pouco para serem iniciados e parecem não ter sido projetados para facilitar a gravação de programas simples de filtro de texto. Além disso, a falta de um bom processamento de string torna quase impossível a E / S do arquivo, exceto em formas muito padrão.
- (Ambos): A orientação do objeto parece ter uma sensação muito aparafusada. Sim, você pode fazê-lo, mas não parece muito mais idiomático do que OO em C.
- (Ambos): Não há maneira óbvia e simples de obter um tipo de referência. Sem ponteiros ou referências de classe. Por exemplo, não tenho ideia de como você rola sua própria lista vinculada em um desses idiomas.
- (MATLAB): você não pode colocar várias funções de nível superior em um único arquivo, incentivando funções muito longas e codificação recortar e colar.
- (MATLAB): aparentemente, os números inteiros não existem como um tipo de primeira classe.
- (R): As estruturas básicas de dados internas parecem muito altas e estão mal documentadas, e nunca parecem fazer exatamente o que eu espero, dada a minha experiência com estruturas de dados semelhantes, mas de nível inferior.
- (R): A documentação está espalhada por todo o lugar e é praticamente impossível navegar ou pesquisar. Até o D, que geralmente é criticado por documentação ruim e ainda é bastante alfa, é substancialmente melhor até onde eu sei.
- (R): Pelo menos até onde eu saiba, não há um bom IDE para isso. Novamente, mesmo D, uma linguagem bastante alfa-ish com uma pequena comunidade, se sai melhor.
Em geral, também sinto que MATLAB e R poderiam ser facilmente substituídos por bibliotecas antigas simples em linguagens de uso geral, se existissem bibliotecas suficientemente abrangentes. Isso é especialmente verdadeiro nas linguagens de uso geral mais recentes, que incluem muitos recursos para os criadores de bibliotecas.
Por que R e MATLAB me parecem tão estranhos? Você notou algum outro problema importante que pode tornar essas linguagens estranhas aos programadores hardcore? Quando o uso é necessário, quais são algumas boas dicas de sobrevivência?
Edit: Estou vendo um problema de algumas das respostas que recebi. Tenho uma forte preferência pessoal, quando analiso dados, em ter um script que incorpore todo o pipeline. Isso implica que uma linguagem de uso geral precisa ser usada. Eu odeio ter que escrever um script para "limpar" os dados e cuspi-los, depois outro para lê-los em um ambiente completamente diferente, etc. Acho o atrito de usar o MATLAB / R para alguns dos meus trabalhos e linguagem diferente com um espaço de endereço completamente diferente e uma maneira de pensar para o resto ser uma enorme fonte de atrito. Além disso, eu sei que existem camadas de cola, mas elas sempre parecem ser terrivelmente complicadas e uma fonte de atrito.