Adoro programmare in linguaggi che sembrano orientati verso programmatori hardcore. (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 le persone che non sono programmatori hardcore e non pensano come programmatori hardcore. Li trovo sempre un po 'imbarazzanti 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 vere primitive.
- (Entrambi): la difficoltà della manipolazione di base delle stringhe.
- (Entrambi): mancanza o imbarazzo nel supporto di strutture di dati di base come tabelle hash e array "reali", cioè di tipo parametrico e annidabili.
- (Entrambi): sono molto, molto lenti anche per gli standard linguistici interpretati, a meno che non ti pieghi all'indietro per vettorializzare il tuo codice.
- (Entrambi): sembrano non essere progettati per interagire con il mondo esterno. Ad esempio, entrambi sono programmi piuttosto ingombranti che richiedono un po 'di tempo per avviarsi e sembrano non essere progettati per rendere semplici i programmi di filtro di testo facili da scrivere. Inoltre, la mancanza di una buona elaborazione delle stringhe rende quasi impossibile l'I / O dei file in forme tutt'altro che standard.
- (Entrambi): l'orientamento agli 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 puntatore o riferimenti di classe. Ad esempio, non ho idea di come si arrotoli il proprio elenco di collegamenti in una di queste lingue.
- (MATLAB): non è possibile inserire più funzioni di livello superiore in un singolo file, incoraggiando funzioni molto lunghe e codifica taglia e incolla.
- (MATLAB): gli interi apparentemente non esistono come tipo di prima classe.
- (R): Le strutture di dati incorporate di base 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 in tutto il luogo e praticamente impossibile da navigare o cercare. Perfino D, che spesso viene scartato per cattiva documentazione ed è ancora abbastanza alfa-ish, è sostanzialmente migliore per quanto posso dire.
- (R): Almeno per quanto ne so, non esiste un IDE valido per questo. Ancora una volta, anche D, una lingua alfa-ish con una piccola comunità, fa di meglio.
In generale, sento anche che MATLAB e R potrebbero essere facilmente sostituiti da semplici librerie vecchie in linguaggi più generici, se esistessero librerie sufficientemente complete. Ciò è particolarmente vero nei linguaggi di uso generale più recenti che includono molte funzionalità per gli scrittori di biblioteche.
Perché R e MATLAB mi sembrano così strani? Ci sono altri problemi importanti che hai notato che potrebbero rendere strani questi linguaggi strani per i programmatori hardcore? Quando è necessario il loro uso, quali sono alcuni buoni consigli di sopravvivenza?
Modifica: sto vedendo un problema da alcune delle risposte che ho ricevuto. Ho una forte preferenza personale, quando analizzo i dati, di avere uno script che incorpori l'intera pipeline. Ciò implica che è necessario utilizzare un linguaggio di uso generale. Odio dover scrivere uno script per "ripulire" i dati e sputarli, poi un altro per rileggerli in un ambiente completamente diverso, ecc. Trovo l'attrito di usare MATLAB / R per alcuni dei miei lavori e un linguaggio diverso con uno spazio di indirizzo completamente diverso e un modo di pensare che il resto sia una grande fonte di attrito. Inoltre, so che esistono strati di colla, ma sembrano sempre essere orribilmente complicati e fonte di attrito.