3 ms·
R is probably the best, most productive DSL that exists for data analysis work, but it is a horrible programming language, made worse by the fact that I don't t
by thom 8y ago
R is probably the best, most productive DSL that exists for data analysis work, but it is a horrible programming language, made worse by the fact that I don't think most of its users think of what they're doing as programming. I've never seen an R project that looked like it had learned anything from software engineering best practice of literally any period in history. Your data is flat, your script starts at the top and runs to the bottom. There are rarely any abstractions.
One thing that gives me hope here is that an increasing number of universities have dedicated Research Software Engineering groups who can explicitly apply their expertise (mostly in performance but often just in writing better software) to the problems being approached by academics. But I've yet to see most computer science adjacent courses (including the plethora of new Data Science courses in the last few years) explicitly tackle software engineering as a valuable discipline.
All that said, the R ecosystem is fantastic and you're wasting time turning your nose up at it. I had hoped Incanter would take off in the Clojure world but it did not. Lately I have been lucky enough to be able to confine my needs to Bayadera, a framework for Bayesian data analysis in Clojure. But I think the grand hopes of Lisp becoming a first class language for data analysis will always fall by the wayside - Lisp people (outside of myself) are smart enough to fulfil their own needs, and you don't have the conveyor belt of new algorithms that R gets from academia (and indeed Python gets from the same place, and increasingly from industry giants).
- peatmoss 8y agoThe DSLs are key. As I wrote below, I feel like there is still room for data analysis DSLs that optimize heavily for usability by end users. Racket has best-in-class support for building new languages, and is a nice language itself. Clojure and Incanter’s failure to capture market share also bums me out. In a lot of ways, I feel that Clojure’s small amount of syntactic sugar and collection abstractions make it a very, very user-friendly language itself even if its meta programming isn’t quite what Racket’s is.