Adoro programmare in linguaggi che sembrano orientati verso programmatori esperti. (I miei preferiti sono Python e D.) MATLAB è orientato verso gli ingegneri e R è orientato verso gli statistici, e sembra che questi linguaggi siano stati progettati per persone che non sono programmatori esperti e non pensano come programmatori esperti. Li trovo sempre un po 'scomodi da usare, e in una certa misura non riesco a capire perché. Ecco alcuni problemi che sono riuscito a identificare:
- (Entrambi): l'estrema enfasi su vettori e matrici nella misura in cui non ci sono veri primitivi.
- (Entrambi): la difficoltà della manipolazione della stringa di base.
- (Entrambi): Mancanza o difficoltà nel supporto delle strutture di dati di base come le tabelle hash e "reali", cioè di tipo parametrico e nestable, array.
- (Entrambi): sono davvero molto lenti anche per gli standard linguistici interpretati, a meno che non ti pieghi all'indietro per vettorializzare il tuo codice.
- (Entrambi): Sembra che non siano progettati per interagire con il mondo esterno. Ad esempio, entrambi sono programmi abbastanza voluminosi che richiedono un po 'di tempo per essere lanciati e sembrano non essere progettati per semplificare la scrittura di semplici programmi di filtro di testo. Inoltre, la mancanza di una buona elaborazione delle stringhe rende l'I / O dei file in qualsiasi forma, ma quasi standard, praticamente impossibile.
- (entrambi): l'orientamento degli oggetti sembra avere una sensazione molto serrata. Sì, puoi farlo, ma non sembra molto più idiomatico di OO in C.
- (Entrambi): nessun modo ovvio e semplice per ottenere un tipo di riferimento. Nessun riferimento o riferimento di classe. Ad esempio, non ho idea di come esegui il rollover della tua lista collegata in nessuna di queste lingue.
- (MATLAB): non è possibile inserire più funzioni di primo livello in un singolo file, incoraggiando funzioni molto lunghe e codifica di copia e incolla.
- (MATLAB): gli interi in teoria non esistono come un tipo di prima classe.
- (R): le strutture di base dei dati incorporati sembrano troppo di alto livello e scarsamente documentate, e non sembrano mai fare esattamente quello che mi aspetto data la mia esperienza con strutture di dati simili ma di livello inferiore.
- (R): la documentazione è diffusa ovunque e praticamente impossibile da navigare o cercare. Anche D, che è spesso battuto per cattiva documentazione ed è ancora abbastanza alfa, è sostanzialmente migliore per quanto posso dire.
- (R): Almeno per quanto ne so, non esiste un IDE valido per questo. Ancora una volta, anche D, un linguaggio abbastanza alfa con una piccola comunità, fa meglio.
In generale, mi sento anche come se MATLAB e R potessero essere facilmente sostituiti da semplici vecchie librerie in linguaggi più generici, se esistessero librerie sufficientemente complete. Ciò è particolarmente vero nelle nuove lingue di uso generale che includono molte funzionalità per i writer di librerie.
Perché R e MATLAB sembrano così strani per me? Ci sono altri problemi importanti che hai notato che potrebbero rendere questi linguaggi così strani ai programmatori più accaniti? Quando è necessario il loro uso, quali sono alcuni buoni consigli per la sopravvivenza?
Modifica: vedo un problema da alcune delle risposte che ho ottenuto. Ho una strong preferenza personale, quando analizzo i dati, di avere uno uno script che incorpori l'intera pipeline. Ciò implica che è necessario utilizzare un linguaggio generico. Odio dover scrivere uno script per "ripulire" i dati e sputarli, poi un altro per leggerli in un ambiente completamente diverso, ecc. Trovo l'attrito di usare MATLAB / R per alcuni dei miei lavori e completamente un linguaggio diverso con uno spazio di indirizzamento completamente diverso e un modo di pensare per il resto come un'enorme fonte di attrito. Inoltre, so che esistono strati di colla che esistono, ma sembrano sempre essere orribilmente complicati e fonte di attrito.