R Community

Riportiamo in italiano delle considerazioni pubblicate sul Blog STATALGO.
Il tema è “On the culture and purpose of R”. Oltre che ricche di spunti interessanti, mi sembrano osservazioni da condividere.

L’open source è una modalità di sviluppo del software che sfrutta la potenza del peer review distribuito e la trasparenza del processo. La filosofia open source promette pertanto una migliore qualità, più affidabilità, più flessibilità, minori costi, e – non per ultima – la fine della subordinazione a fornitori di “prodotti chiusi”.

Mi capita spesso di ascoltare lamentele sulle prestazioni di R. Di recente, a partire da una serie di post nel Blog di Radford Neal si è accesa una nuova discussione, a cui sono seguite diverse repliche, tra le quali quelle di Christian Robert, Dirk Eddelbuettel, e Andrew Gelman.

Non ho intenzione di ribadire quanto è stato già detto con maggior efficacia da molte altre presone, di gran lunga più intelligenti e qualificate, ma volevo comunque fare alcune osservazioni perché credo che alcuni di questi autori si siano approcciati alla questione in maniera sbagliata:

  • In primo luogo va sottolineato che R è davvero un ambiente open source. Il che ha molte implicazioni, ma mi limiterò a porre l’accento su due: (1) Se vuoi qualcosa, realizzalo. Non ha senso aspettare che sia qualcun altro a farlo. Ricorda che stai fruendo di software libero: puoi trovare il tempo per contribuire ad esso con qualcosa di nuovo. Puoi sempre avvalerti di strumenti che garantiscono la migliore estensibilità rispetto a qualsiasi linguaggio di programmazione (i packages del CRAN). (2) R si basa sull’impegno volontario di un gran numero di persone. Persone che hanno interessi e capacità di programmazione molto diversi l’una con l’altra. Ciò significa che i pacchetti nascono con finalità e qualità differenti. Non va però dimenticato che tutti questi strumenti sono liberamente a disposizione di chiunque ne sia interessato! Pertanto, in quanto fruitori di questi pacchetti, la prima cosa che dovremmo fare è ringraziare tutte queste persone per il loro impegno. In secondo luogo, se questi strumenti possono essere migliorati, prendiamo l’iniziativa e facciamolo autonomamente.
  • R è un DSL. Ciò significa che è stato progettato per essere utilizzato come strumento per l’analisi dei dati e per la produzione di output grafici. E’ un linguaggio di programmazione ad alto livello con prestazioni inferiori ad un linguaggio di programmazione a basso livello. Rispetto alla mia esperienza, tuttavia, la performance di R è molto buona rispetto a quella di altri linguaggi ad alto livello. Ho messo a punto diversi modelli in R, Python e Clojure ed R è stato sempre il linguaggio più performante. È quindi irragionevole confrontare le prestazioni di R con quelle di un linguaggio a basso: ci sarà sempre un costo dovuto alla sua usabilità.
  • Sì, R è stato creato “dagli statistici, per gli statistici”, ma questa è una sua caratteristica, non un limite! Semplicemente per le sue caratteristiche non poteva essere ideato da specialisti della programmazione.
  • R è più di una linguaggio, è un vero e proprio ambiente di programmazione.Consente di mantenere oggetti in memoria in modo che possano essere manipolati nel tempo. Consente di creare facilmente diverse strutture dati. Inoltre, il sistema di creazione dei packages fornisce una struttura davvero efficace per realizzare progetti.
  • R dispone di una magnifica comunità che ha sviluppato una sua precisa identità. Mi piace partecipare agli incontri su R perché chi vi partecipa, spesso, è una persona aperta e generosa che lavora su problemi affascinanti. Si respira un atmosfera positiva, si avverte la sensazione di star facendo qualcosa di bene, delle sensazioni che non si avvertono nei convegni incentrati su altri linguaggi di programmazione o su altre applicazioni di statistica.

Detto questo, sono stato particolarmente deluso dall’intervento di Andrew Gelman nel suo Blog. Mi è sembrato più interessato ad analizzare quelli che per lui sono i limiti di R invece di concentrarsi sui suoi punti di forza. Il Professor Gelman sembra dimenticarsi che il CRAN è “tutto” quanto ho appena descritto, quando sembra disposto a rinunciare a perdere parte di questa comunità in favore di una riprogrammazione ex-novo delle funzioni principali di R.

È vero, ci sono molte cose di R che possono essere migliorate, e le prestazioni sono una di queste. È altrettanto vero che ogni pacchetto disponibile sul CRAN non è perfettamente realizzato, o è addirittura inutile. Ma CRAN è un dono straordinario per il mondo, pieno di risorse, da quelle più basilari a quelle più innovative per l’analisi dei dati. Non dobbiamo dimenticare ciò che è R: un linguaggio progettato per l’analisi dei dati che è in continua evoluzione attraverso l’impegno di esperti che provengono da tutto il mondo. Inoltre, nonostante sia facile ragionare a fatti avvenuti, fatto, ho il sospetto che quanto è e sta accadendo in R non sarebbe potuto accadere in un’altro linguaggio di programmazione.
La comunità conta!

Shane