Clojure as first language

163 views
Skip to first unread message

Baye

unread,
Sep 28, 2020, 4:14:01 PM9/28/20
to Clojure

I am new to programming. I have started to learn C++ and even some python
My background is Economics. I have strong quantitative background (Math and Econ) and I know STATA.

In general, I would like to use programming
(1) for ML/AI in economics topics+other utilities such as webcraping, and other data driven analyses
(2) for it, fintech matchmaking platforms

In particular, I just recently discovered I love programming. I am old (35) as a beginner but I have set a goal to become a fully capable programmer by 40...Hopefully I can learn 2 languages well enough by then.

If jobs opportunities are present then, I can switch careers although I still like my career path. I could always use my programming skills for either my job, a start up, or become a full fledge prgrammer.

Online research has led me to think that Clojure might be an excellent language to focus on because they say it is an excellent for rapid development (If I want to use it for a start up, lone developer), data-driven (econ and ML), and provide a path to be a great programmer.

My Apprehension is that Clojure doesn't seem widely used so might issues with doing ML projects with few libraries (compare to Python for ex), and future job prospects, etc...

Anyway, I welcome any insights/advice, tips.

Thanks in advance,
Baye

Gary Trakhman

unread,
Sep 28, 2020, 4:40:47 PM9/28/20
to clo...@googlegroups.com
Clojure is a fine language to learn on, but there are going to be some complex details along the way. I think there are 2 approaches
to entry into programming that you might consider.

You can start with the basic fundamentals of computation and work up into software engineering. For that, clojure is
very similar to a teaching language, 'scheme', and people can work through books like SICP: https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html with it.
If you follow that strategy, you'll eventually have a good foundation of understanding to build on, but it might not feel very useful in the first year.

Another strategy is to hack up small demos of individual techniques, like numerical methodologies or data visualizations.  This would go more
along the data-science/ML track. While it can be done in clojure and there are books on the topic, you might have an easier time in python
if you're going down that path.

I would say if you start with clojure, you're going to be learning more than one thing at a time and the learning curve is steeper. Whether
that's worth the cost depends on your goals and market conditions.


--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/clojure/10bd1d68-78f9-472b-8de3-5be96f6804a7n%40googlegroups.com.

Soule S

unread,
Sep 28, 2020, 4:56:01 PM9/28/20
to clo...@googlegroups.com
Thank you for your insight. By " learning more than one thing at a time", do you mean data science/ML and the language itself? If so, then I want to clarify, I have a solid foundation in data science; I am trained in the most advanced topics in econometrics (Statistics). My apprehension is mainly whether closure has good tools to do those. I know Python does.

Thanks again

You received this message because you are subscribed to a topic in the Google Groups "Clojure" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/dbYOgLKDGv4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to clojure+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/clojure/CAJvqBXgPpyPvDdjRNzbL-%2Bqjj-CFxYg%3D0ypSX5--iqFemH%3D-7w%40mail.gmail.com.

Gary Trakhman

unread,
Sep 28, 2020, 5:05:32 PM9/28/20
to clo...@googlegroups.com
Not only the language and the techniques you intend to apply, but the larger language and library ecosystem.  For most people, Clojure is best used when you
have familiarity with the JVM and existing java core libraries and 3rd-party libraries, and some IDE/editor environment with enough features to be productive, but
those are extra things to learn.  Something like Scheme/Racket used for SICP is a great teaching language because all those decisions are made for you and
you can focus on the abstract content in the book instead of getting bogged down in tooling.

As for data-science/ML, it has good tools, it's just not the most widely used language by data scientists.

For the most part, I'd expect production-scale data science tools to wrap java ones with a better/clojurey interface.
There's some other tools I'm not familiar with, eg https://github.com/originrose/cortex, but there are definitely people doing data science in clojure.

Baye

unread,
Sep 28, 2020, 5:08:33 PM9/28/20
to Clojure
Got it. Thanks again for your time!

Chris Nuernberger

unread,
Sep 28, 2020, 5:39:06 PM9/28/20
to clo...@googlegroups.com
There are hybrid options available in the form of https://github.com/clj-python/libpython-clj -- I am one of the primary authors of this tool.

One pathway perhaps is to use clojure to do your scraping and orchestration (and frontend display) and just use python from command line scripts to do some ml.

For Clojure and data science there is SciCloj: https://scicloj.github.io/

My opinion is that learning Clojure independent of data science  is a worthy and substantial task - functional programming, the JVM, Java, Clojurescript, Reagent are all pretty big subjects.  libpython-clj has a new-to-clojure page that lists some resources for helping with this.  

Happy to help more and really happy to see new people.  I think Gary's response is spot on and just wanted to elaborate that we have tools that are specifically designed for helping people transition from Python to Clojure without needing to walk away from their Python knowledge base.

Chris 

Baye

unread,
Sep 28, 2020, 5:57:15 PM9/28/20
to Clojure
Hi Chris, Thanks! I will check out the mentioned resources.
Just to be clear, the only language I know well is Stata. I am still a very new to python, so I don't have any baggage to take with me as I have not invested enough time.
Given I am philosophically convinced of the long term benefits of Clojure from talks, my only apprehension was whether I will be able to do most things in Clojure as in Python. But my interest, in programming is not limited to data science/ML...I  am potentially interested in building apps (web/desktop, etc) for potential future projects in education, health etc..

Chris Nuernberger

unread,
Sep 28, 2020, 8:23:49 PM9/28/20
to clo...@googlegroups.com
Oh, well then I don't see what you are waiting for :-).

Here are some interesting and more stats-focused libraries that may be interesting to you - 

* kixi stats - Clojury statistics - written by Henry Gardner, the author of the aforementioned Clojure For Data Science
* fastmath - Carefully chosen and curated fast JVM mathematical primitives
* clojisr - R <-> Clojure bridge
* Anglican -  a probabilistic programming language
* Bayadera - MKL, GPU enhanced probabilistic programming system.

Enjoy :-)

Baye

unread,
Sep 28, 2020, 8:32:48 PM9/28/20
to Clojure
Great, Thanks!

Nando Breiter

unread,
Sep 28, 2020, 10:46:22 PM9/28/20
to clo...@googlegroups.com
As someone who has known about Clojure for a long time but only recently started programming in it, Clojure seems particularly easier to learn by building something with it, as opposed to reading about it. Perhaps this is because the language, ecosystem, and indeed the general approach to programming in Clojure is made of small building blocks.

My analogy - Clojure seems to be more like a set of legos, whereas OO languages seem to be more like a train set. 

The flexibility of legos might seem complex if you are looking for a top down how-to narrative, but fundamentally, you don't need much instruction to start sticking them together. The simplicity of working with legos remains. Any kid can do it. 

The photo on the train set box more immediately shows you how the whole thing goes together, so the train set might seem more simple at first. Yes, you need to read the instructions and follow them precisely, but that's sort of ok. The complexity comes later, when the tracks supplied in the train set, and maybe the train itself, get in your way.

So I'd suggest reading a book to understand the fundamentals if you haven't already, Clojure for the Brave and True or Carin Meier's book Living Clojure are both good, and then as soon as possible start sticking functions together like those lego blocks to build something. From one perspective, that's more complex because you don't have the train set laid out for you, but from another, it's more simple, because composing functions together is always simply composing functions together.

I've found Practicalli https://practicalli.github.io/ to be a very helpful springboard to get through the initial steps needed to get something to work, and have been really happy to be able to work with Datomic Cloud using the recently released dev-local version, with allows for local storage. 




Gabriel Santos

unread,
Sep 29, 2020, 1:57:05 AM9/29/20
to Clojure
Thanks  Nando Breiter, this site   https://practicalli.github.io/   is a good start to the clojure    

Baye

unread,
Sep 29, 2020, 1:23:01 PM9/29/20
to Clojure
Thank you for your insight!

markus...@gmail.com

unread,
Oct 2, 2020, 10:20:17 PM10/2/20
to Clojure
Concering your quote "my interest in programming is not limited to data science/ML...I  am potentially interested in building apps": my repository https://github.com/kloimhardt/bb-web has a set of examples, starting with a 10 line html file (directly containing Clojure code to be edited, no compiler needed) up to a quite sophisticated web-app example. Could not be farther away from Datascience/ML though. It just tries to lower Clojure's entry bar for the curious. 

Baye

unread,
Oct 3, 2020, 10:07:46 AM10/3/20
to Clojure

Thanks for the tip!
Reply all
Reply to author
Forward
0 new messages