ThoughtStorms Wiki

New page : PythonVsClojure

Quora Answer : If Clojure is so strong a programming language, why can't it replace Python in AI and data science?

Aug 15, 2019

Python is basically a glue language whose special strengths are :

very simple for "casual programmers" (ie. people who don't program full time, but need to do a bit, as part of a different job) to pick up and do small scripts with

good support for wrapping C libraries. Almost all the AI and data stuff is C libraries, and you just need a simple glue language to stick them together

Python has furthermore ...

got fairly light-weight tooling requirements. A basic syntax-aware text editor is sufficient for most purposes. IDLE comes out of the box if you want something just a little bit more complex

has built up a large and useful library for data and ML. Lock-in works for it.

Clojure on the hand, while an excellent language - it is hands down my favouritest ever - is

not so simple for "casual programmers". Requires you to grok more high-powered abstract concepts to start using idiomatically.

In particular, the tooling for beginners / casual users is pretty bad. There is still no "out-of-the-box" solution, where everything is just there and works, for beginners. Especially on Windows. Clojure has good tools for experienced professional programmers. Eg. nice Emacs support, Figwheel, etc. etc. But nothing for beginners / casual programmers that compares to IDLE or Jupyter. Or, say, Dr Racket.

The error messages are still horrible unless you already know Java. Clojure is the nicest language I know. But error reporting is hands down and order of magnitude worse than any other I've seen.

It's a Java VM language. You can call into C from Java via JINI but it's more of a faff. Basically casual Clojure programmers are kind of waiting for Java programmers who know C to do that work.

Tomorrow someone might come up with a new, better, beginners' environment.

The day after, someone might make a wrapped version of something like Keras and Clojure would be great. But that lack of tooling is the main impediment to wider adoption.

Update : I just found Lightmod which is the closest I've found to an all-in-one out of the box solution. I've been playing with it for a week. A couple of issues : can't install and manage dependencies, and the editor is a bit weird. But, hell, it actually does what's needed : gives you the editor / compiler in a single download. You have a live-editing experience of both server-side Clojure and client-side ClojureScript etc. Very promising.

No Backlinks