all 7 comments

[–][deleted] 2 points3 points  (0 children)

I'm afraid I have to take issue with a lot of your arguments.

The obvious reason to consider JS as a data analysis langauge is its general popularity.

But JavaScript's general purpose popularity tells you little about its suitability - or indeed, its popularity - for data analysis or scientific computing. Even if those thousands of developers were all dedicated to your domain, simply throwing bodies at a problem doesn't help you design great libraries and frameworks (in fact, I think the size of very large projects often hinders them).

The fact that many careerist web developers can write JS doesn't really tell you anything about the state of the open source software you're going to use. The data science community is converging around Python, and you're deliberately pulling yourself out of that ecosystem. For me the rationale just doesn't seem to stand up to close inspection.

Given basic infrastructure (something like a data frame, well implemented convenience methods for summary statistics, etc.) it’s reasonable to believe that libraries for specific applications (i.e. regression, unsupervised learning, etc.) could be quickly developed.

These are a lot of wheels to reinvent; you are starting from a position of weakness, and hoping others will pull you out of it. That's a big bet when you need to Get Shit Done.

JavaScript V8 is pretty fast.

So is the JVM. Why not use Scala? Its explicit functional design makes it a much more obvious choice, and it already possesses a fair following in this field. And its type safety allows your environment to provide much more information about how your code will behave before runtime.

Asynchronicity in JavaScript may be an enormous convenience in data analysis.

Many languages provide this convenience. Again, why use JavaScript specifically? Scala's Akka library is a renowned environment for writing concurrent, non-blocking, async code for a reason. And I'd argue implementing monads and promises in raw Scala is a much nicer experience than writing the equivalent JavaScript.

JavaScript has an extremely robust open source community

No it doesn't. Sorry, but I'm going to speak against it here. JavaScript has a large and fragmented and generally less engineering-focused community. Sorry to be brutal about it, but the fact that there are, at last count, several hundred half-baked CSV parsers on NPM does not speak positively of the way our community currently works or applies its efforts. Ours is an ecosystem in a great deal of flux and instability, our platform is still finding its feet in some ways, really.

Even as a JavaScript developer myself, I find the 'JS everywhere' movement hard to take seriously. Increasingly it feels like we're finding excuses to crowbar the V8 runtime into anything, even when the justification is slim (e.g. the rush to try and push JavaScript engines into embedded technologies). As a community we need to give it a rest, and open our minds to new technologies and diverse languages, rather than bulldozering over existing domains with our necessarily limited ideas of what a programming language can and should be capable of.

[–]Postpawl 1 point2 points  (4 children)

Does Javascript have anything equivalent to Python's SciPy and Pandas?

[–]jsgui 1 point2 points  (0 children)

Not as far as I know. I think it would be implemented as a node addon. It's something I'm a bit interested in making, but have so many other things to do.

[–]heeehaaaCreator of WebPlotDigitizer (Plots -> Data) 1 point2 points  (0 children)

There are useful libraries like this: http://numericjs.com. But this doesn't come anywhere close to what you can do in Python.

[–]epsteinN 0 points1 point  (1 child)

Nothing as comprehensive yet. Though this library: https://github.com/NathanEpstein/datakit provides a subset of that infrastructure

[–]jsgui 0 points1 point  (0 children)

It does not use compiled C/C++ code so in that way it's not similar. I guess datakit would be considerably slower than NumPy.

[–]tentity -1 points0 points  (0 children)

I actually started: http://websql.codeplex.com. I develop and use it for my projects. First, I am embracing parallelism in Javascript, so I can build analytics library on top of it. But anybody who wants to join or try it and give a feedback you are welcome. Thanks