And note the question you didn't ask: does Java do anything better than python? Didn't even cross your mind.
Clojure is certainly the context I'd use Java's machine learning libraries in.
> - Is there a mature tensor/multidimensional array library in Clojure? Is there a Dataframe library?
Is there one in Java? If so, what?
And so on with his other items. It doesn't have to be exactly the same (offering him the benefit of the doubt), but it has to offer substantially the same functionality with substantially the same performance. So, you want to use Java libraries from Clojure? Go for it. Where are the things he needs?
https://github.com/originrose/cortex
https://neanderthal.uncomplicate.org/
https://clojurecuda.uncomplicate.org/
https://clojurecl.uncomplicate.org/
https://github.com/uncomplicate/bayadera
https://devblogs.nvidia.com/grcuda-a-polyglot-language-bindi...
Also since Pytorch 1.4 there is initial support for Java, built on top of the new pure C++ API.
Science is about functions, not objects, a language that requires all functions to be associated with an object is a non-starter.
Here is my data science stack https://github.com/mratsim/arch-Data-Science
Let's go over it:
- Is there a mature tensor/multidimensional array library in Clojure? Is there a Dataframe library?
- Are they compatible with common formats: .npy, .csv, .hdf5 and sqlite databases
- Is there a fast PCA and DBSCAN algorithm?
- Can you pass those arrays to XGBoost or LightGBM for Gradient Boosting based classification or regression.
- Do they support out-of-core processing (i.e. memory-mapped arrays) for processing that takes more than your RAM (happens often with geolocalisation)
- Can you use PyTorch through Clojure? Can you use Tensorflow? What's the GPU computing story
- Does your ML library support things like One-Hot-Encoding, cross-validation? Or more advanced like Target Encoding?
- NLP: stanfordNLP wrapper? spacy? Huggingfaces? Rasa-nlu? sentencepieces?
- Deep learning: Do you support image augmentation like Nvidia DALi or Albumentations? Mixed precision training like Nvidia APEx
- Vision: How is the OpenCV support? Does it interface with Clojure multidimensional arrays? Do you have morphological operations like erosion or dilation?
- Visualization: is there a dataviz library like plotly, ggplot2 or Altair/Vega?
And more importantly
- Are there tutorials and courses in Clojure from beginner to advanced concept? Even Julia is struggling with that.