# Let us assume, for the sake of argument, that learning Clojure is not the only worthwile persuit in life

**URL:** https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339
**Category:** Watercooler
**Created:** [March 11, 2021, 7:56am UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339 "2021-03-11T07:56:08Z")
**Posts on this page:** 18
**Page:** 1

<div class="post-metadata">

### Author: ![teodorlu](https://clojureverse.org/user_avatar/clojureverse.org/teodorlu/32/2896_2.png) [@teodorlu](https://clojureverse.org/u/teodorlu)
#### Post date: [March 11, 2021, 7:56am UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/1 "2021-03-11T07:56:08Z")

</div>

Let us assume, for the sake of argument, that learning Clojure is not the only worthwhile pursuit in life. Let us also disregard worthwhile pursuits other than programming.

Clojure is not meant to be an isolated island. [Rich Hickey has made that case better than I can](https://www.youtube.com/watch?v=ROor6_NGIWU).

In addition to Clojure, what other two programming languages are worth learning to complement Clojure? I am especially interested in the reasoning why. Are you looking back on your experience, finding that you’re so happy you learned language/ecosystem X before coming to Clojure? Or is your hindsight telling you that you should have learned something else? Please explain.

In answers, I’m accepting both “You should learn Java because of Maven’s vast value”, or “I’m not mentioning Java because you’ll have to learn a bit of Java regardless”. I’m more interested in the rationale than the choice.

Thanks!

---

<div class="post-metadata">

### Author: ![thheller](https://clojureverse.org/user_avatar/clojureverse.org/thheller/32/534_2.png) [@thheller](https://clojureverse.org/u/thheller)
#### Post date: [March 11, 2021, 8:19am UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/2 "2021-03-11T08:19:34Z")

</div>

Absolutely Java and JavaScript since they will strengthen your understanding of Clojure(Script). Knowing what the JVM is capable of and having the option of dropping down to Java if you really need to do something performance critical is like having a super power. You don’t need to do it often but having the option to do so is great. Same applies to JS. Knowing how and when to leverage the Host is critical IMHO.

Besides that I’m fond of Erlang. The real Erlang not others based on it like Elixir. It is a rather niche Language and definitely best suited for very high concurrency network type application (eg. many millions of connections). It was built for that and the programming model reflects that. I wouldn’t call it a general purpose platform but for its niche its nice.

But to be honest every language I used in my carreer taught me something valueable. I would never want to use PHP again but it would still be valuable to learn since it is still one of the simplest ways to get something going on the web.

---

<div class="post-metadata">

### Author: ![duzunov](https://clojureverse.org/user_avatar/clojureverse.org/duzunov/32/2995_2.png) [@duzunov](https://clojureverse.org/u/duzunov)
#### Post date: [March 11, 2021, 9:08am UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/3 "2021-03-11T09:08:42Z")

</div>

How about SQL? It is the lingua franca of data, even if you prefer other query languages.

---

<div class="post-metadata">

### Author: ![wazound](https://clojureverse.org/letter_avatar_proxy/v4/letter/w/ac91a4/32.png) [@wazound](https://clojureverse.org/u/wazound)
#### Post date: [March 11, 2021, 9:23am UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/4 "2021-03-11T09:23:45Z")

</div>

For pure breadth of knowledge and wisdom, perhaps learn:

- C
- an APL family language. Say J.
- Erlang
- Prolog
- Smalltalk
- Haskel
- a LISP (say Clojure, tick)

Apart from that, there are the “pragmatic languages” like python, Javascript and Java. But they won’t really make you wiser, just more employable.

But, yes, Javascript and Java are the two primary “host” languages for Clojure, so those two win at a pragmatic level.

---

<div class="post-metadata">

### Author: ![tomekw](https://clojureverse.org/user_avatar/clojureverse.org/tomekw/32/3080_2.png) [@tomekw](https://clojureverse.org/u/tomekw)
#### Post date: [March 11, 2021, 9:30am UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/5 "2021-03-11T09:30:48Z")

</div>

- Spanish
- German
- Zig

---

<div class="post-metadata">

### Author: ![simongray](https://clojureverse.org/user_avatar/clojureverse.org/simongray/32/246_2.png) [@simongray](https://clojureverse.org/u/simongray)
#### Post date: [March 11, 2021, 9:39am UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/6 "2021-03-11T09:39:04Z")

</div>

The great thing about Lisp dialects is that they can accommodate different programming paradigms more easily than most other language syntaxes. In my case I will probably stick with Clojure for most things, but learn other languages to expose myself to different paradigms. Many people learn Lisp for the same reason (e.g. homoiconicity, macros, REPL workflow).

Personally, I’ve started learning Prolog. Not because I think Prolog in itself is a practical language in today’s world, but because I believe the Logic Programming paradigm itself is worth learning. And obviously lots of Clojure libraries are derived in some way from Prolog (and RDF) or logic programming as a paradigm.

For the same reason, I imagine Haskell - being the prototypical, mathematical functional language - is probably worth learning. Or at least, looking from the outside in, it sure looks like haskellers all speak a special language and I would like to learn it someday.

Erlang/Elixir for a similar reason. Probably Rust too for its memory management.

Another reason to learn a language might be to increase your chances of getting employed or increasing the breadth of libraries available to you. In that case, I would just learn whatever mainstream language peeks my interest (that I don’t already know).

---

<div class="post-metadata">

### Author: ![mdiin](https://clojureverse.org/user_avatar/clojureverse.org/mdiin/32/3599_2.png) [@mdiin](https://clojureverse.org/u/mdiin)
#### Post date: [March 11, 2021, 10:22am UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/7 "2021-03-11T10:22:13Z")

</div>

Learning Haskell has definitely taught me how to utilize strong type systems. That is interesting in the solving-a-puzzle sense, but also in the practical sense. Even with dynamic types, having a good idea of the structure of values is important, and Haskell has helped me build that mental model. It has also made exploring the type systems of other languages much easier, and made it quicker to figure out whether I can do what I want with them or not.

---

<div class="post-metadata">

### Author: ![dave.liepmann](https://clojureverse.org/user_avatar/clojureverse.org/dave.liepmann/32/5211_2.png) [@dave.liepmann](https://clojureverse.org/u/dave.liepmann)
#### Post date: [March 11, 2021, 11:12am UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/8 "2021-03-11T11:12:55Z")

</div>

> [@teodorlu](#):
>
> what other two programming languages are worth learning to complement Clojure

Java and JavaScript and it ain’t even close. In a very deep and real sense, Clojure _is_ host interop (in usage, not just implementation), so fluency in the host language/platform is kind of important. Those are definitely the best to already have under your belt when you come to Clojure.

If we can set those aside for whatever reason, IMO the most important guiding force is finding the weird & valuable language that captures your interest. There are plenty. To start at random: Erlang and Haskell, for the kinds of reasons Rich describes in [this 2010 interview with Dirk Elmendorf](https://www.linuxjournal.com/article/10708):

> **DE:** So are you trying to create something that is missing from other languages?  
> **RH:** Well, I mean I’m borrowing as much as I can from wherever I can for sure. I definitely stand on the shoulders of giants. But in this area, I never claim any novelty for Clojure. Clojure is mostly about trying to take existing good ideas that may not have been put together and put them together. It’s certainly missing from the more traditional languages like Java, C# and C++. But, there are other ways to address it that are present in Erlang and Haskell, for instance.

(I think he elaborates on at least one of that Haskell & Erlang point in this great [Expert to Expert interview](https://www.youtube.com/watch?v=wASCH_gPnDw).)

To that list of “languages that incorporate good, old, mostly-ignored ideas” or “mind-expanding languages” I’d add:

- APL – this [great Aaron Hsu talk](https://www.youtube.com/watch?v=z8MVKianh54) may whet your appetite
- another lisp – I like Racket, but Scheme’s “from the simplest building blocks” approach is nice, and Common Lisp is good to understand Clojure’s origin story
- OCaml
- Prolog, for Simon’s reasons 🙂

---

<div class="post-metadata">

### Author: ![teodorlu](https://clojureverse.org/user_avatar/clojureverse.org/teodorlu/32/2896_2.png) [@teodorlu](https://clojureverse.org/u/teodorlu)
#### Post date: [March 11, 2021, 4:48pm UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/9 "2021-03-11T16:48:26Z")

</div>

Thanks for all the great answers! 😊

I have lots of interesting threads to dig into now. That being said, more opinions are most welcome!

---

<div class="post-metadata">

### Author: ![seancorfield](https://clojureverse.org/user_avatar/clojureverse.org/seancorfield/32/195_2.png) [@seancorfield](https://clojureverse.org/u/seancorfield)
#### Post date: [March 11, 2021, 8:43pm UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/10 "2021-03-11T20:43:12Z")

</div>

I’ll add another 👍 for both APL and Prolog. I’ve worked at companies that used those languages, although I was originally exposed to Prolog at university (early '80s).

I worked at an insurance company during my “industrial placement” year as part of my BSc in Math/Comp Sci back in the UK (doing COBOL and assembler) and they used APL for ad hoc numerical data analysis and I was so fascinated by it that I chose to write an APL interpreter as my final year project for my bachelor’s degree.

Later, I worked at a firm of actuaries, doing Parallel C (for Transputers) and they had a Prolog team that I kind of hung out on the fringes of (when I decided to leave, they offered me the lead role on the Prolog team to try to tempt me to stay!).

Both languages are radically different from any mainstream language and that is why you will gain new insights from learning/using them. They’ve always been #1 and #2 on my list of “alternative languages you should learn”. #3 and #4 are Lisp and Smalltalk. We all already know “why Lisp” but Smalltalk is definitely worth a look because, again, it has some radical aspects (dynamic OO with message-focused semantics, rather than method-based, and a fully-interactive environment where _everything_ is an object that you can inspect and modify as an extension of whatever code you’re writing).

---

<div class="post-metadata">

### Author: ![PEZ](https://clojureverse.org/user_avatar/clojureverse.org/pez/32/1187_2.png) [@PEZ](https://clojureverse.org/u/PEZ)
#### Post date: [March 11, 2021, 10:59pm UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/11 "2021-03-11T22:59:51Z")

</div>

I coded in PostScript for many years. That I can really recommend. It’s addictive in similar ways that Clojure is. Very dynamic. It’s idiomatic to write programs that modify themselves as they run.

Also have very fond memories of coding my HP34C. Similar to PostScript in how it made me think in the language.

Got to say that I feel very productive coding in TypeScript. My brain just very quickly figures out how I should solve things. And the way I can opt in on typing is very nice.

---

<div class="post-metadata">

### Author: ![taf](https://clojureverse.org/user_avatar/clojureverse.org/taf/32/2567_2.png) [@taf](https://clojureverse.org/u/taf)
#### Post date: [March 12, 2021, 2:26am UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/12 "2021-03-12T02:26:20Z")

</div>

first of all; great topic title 👍 😄

now because you phrased your question in rather specific terms ( clj to u is meant to also include cljs, correct?), i think you got a great answer right away. 😄

> [@thheller](#):
>
> Absolutely Java and JavaScript since they will strengthen your understanding of Clojure(Script). Knowing what the JVM is capable of and having the option of dropping down to Java if you really need to do something performance critical is like having a super power. You don’t need to do it often but having the option to do so is great. Same applies to JS. Knowing how and when to leverage the Host is critical IMHO.

THAT ( to me at least ) MAKES PERFECT SENSE!

p.s. for some more rationale along those lines consider the following post i wrote a while back:

> [@What do beginners struggle with?](https://v2.clojureverse.org/t/what-do-beginners-struggle-with/5383/51):
>
> now… the overall theme of this entire topic is “what do beginners strugge with” and i have already pointed out the shortcomings of the clj-doc-approach in a previous post. having said that, i think a more fundamental difficulty for beginners arises as a consequence of clojure’s quintessence, namely, being a HOSTED LISP. what do i mean? well, first of all, it is always easier to learn / master something new, if you are already familiar with something akin to it. for example, if you do already s…

---

<div class="post-metadata">

### Author: ![jiyinyiyong](https://clojureverse.org/user_avatar/clojureverse.org/jiyinyiyong/32/85_2.png) [@jiyinyiyong](https://clojureverse.org/u/jiyinyiyong)
#### Post date: [March 12, 2021, 3:57am UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/13 "2021-03-12T03:57:03Z")

</div>

My background was mostly compile-to-js languages, CoffeeScript, ClojureScript, TypeScript… And last year I started using Nim for some of my personal projects. Of cause Clojurescript is the language that has most influences to my current code style, but meanwhile I found myself limited by the dynamic nature of ClojureScript. And Nim enlightened a bunch of concepts related to memory layout and data structure, that made me realize there’s still wide world out of dynamic languages. Clojure(Script), like other dynamic languages, in their natures, build abstractions on top of data structure and users may be limited by this concept.

Well, your mileage may vary if your first languages are static typed ones. Nim is an indentation based syntax language that internally compies to C/C++ to run, so it brought many concepts from C to me.

Meanwhile I have long interest in Haskell, and planning to learn PureScript. ClojureScript is depending too much on Google Closure Compiler and got less interest in making catch up with features of modern browsers. I suppose PureScript and Rescript, being younger and more active, would integrate themselves into modern JavaScript better.

---

<div class="post-metadata">

### Author: ![pbaille](https://clojureverse.org/user_avatar/clojureverse.org/pbaille/32/1002_2.png) [@pbaille](https://clojureverse.org/u/pbaille)
#### Post date: [March 12, 2021, 7:08am UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/14 "2021-03-12T07:08:48Z")

</div>

Nobody mentioned [Red](https://github.com/red/red) nor [Rebol](http://www.rebol.com/).  
Two of the most “meta oriented” languages I think.  
Based on something similar to [Fexprs](https://en.wikipedia.org/wiki/Fexpr) which are (kind of) a generalization of macros.

---

<div class="post-metadata">

### Author: ![mars0i](https://clojureverse.org/user_avatar/clojureverse.org/mars0i/32/3325_2.png) [@mars0i](https://clojureverse.org/u/mars0i)
#### Post date: [March 12, 2021, 5:16pm UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/15 "2021-03-12T17:16:34Z")

</div>

I’m not sure whether this is a reason to learn other languages, but one of the things I’ve been struck by recently is how much easier some things are in one language or another. So maybe a reason to learn a language is because it will make certain things easier.

Examples:

In Clojure, if you need an infinite sequence, that’s easy because lazy sequences are a default. I tried to do the same thing in OCaml, another language I like, and though there are libraries for it, I finally decided it hadn’t been worth the trouble to use lazy sequences. OCaml is a nice language, but this is not what it’s designed for.

Later, I wanted to write some code to help me think about some infinite tree structures that were the basis of some mathematical ideas. At the time I was learning Haskell, and it was the perfect language for an infinite tree. Since pretty much everything’s lazy by default in Haskell (outside of the dreaded monads), it was trivial to write the data structure. Later I tried to figure out how to do the same thing in Clojure, and decided it wasn’t worth the trouble.

---

<div class="post-metadata">

### Author: ![Paul\_Whittington](https://clojureverse.org/user_avatar/clojureverse.org/paul_whittington/32/3623_2.png) [@Paul\_Whittington](https://clojureverse.org/u/Paul_Whittington)
#### Post date: [March 13, 2021, 10:09pm UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/16 "2021-03-13T22:09:35Z")

</div>

I’m a Mechanical Engineer that started programming in the early 80s. My first experience was implementing a FORTH dialect in assembly on a mini-computer followed by another FORTH on the original IBM PC, including it’s own IO round robin OS sitting directly on the BIOS i.e. no MSDOS.

I used a book titled Threaded Interpreted Languages as a guide.

These experiences have served me well. There’s something powerful about having worked on the metal, and built your own language and OS.

I’ve often thought about offering a community course in building a language and OS from scratch.

---

<div class="post-metadata">

### Author: ![taf](https://clojureverse.org/user_avatar/clojureverse.org/taf/32/2567_2.png) [@taf](https://clojureverse.org/u/taf)
#### Post date: [March 14, 2021, 5:09am UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/17 "2021-03-14T05:09:05Z")

</div>

> [@Paul\_Whittington](#):
>
> I’m a Mechanical Engineer

👍  
( me too 😄 )

> [@Paul\_Whittington](#):
>
> I’ve often thought about offering a community course in building a language and OS from scratch.

sounds like an extremely ambitious undertaking to me, but if this is something you wanna do, i say: go for it!

---

<div class="post-metadata">

### Author: ![system](https://clojureverse.org/uploads/default/original/2X/5/51079bf9e4b7d9466242c06cf1e43b9f8bd6da14.png) [@system](https://clojureverse.org/u/system)
#### Post date: [September 12, 2021, 5:09pm UTC](https://clojureverse.org/t/let-us-assume-for-the-sake-of-argument-that-learning-clojure-is-not-the-only-worthwile-persuit-in-life/7339/18 "2021-09-12T17:09:42Z")

</div>

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.
