# Experience with other languages

**URL:** https://clojureverse.org/t/experience-with-other-languages/978
**Category:** Other Languages
**Created:** [November 17, 2017, 9:27am UTC](https://clojureverse.org/t/experience-with-other-languages/978 "2017-11-17T09:27:36Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![roman01la](https://clojureverse.org/user_avatar/clojureverse.org/roman01la/32/301_2.png) [@roman01la](https://clojureverse.org/u/roman01la)
#### Post date: [November 17, 2017, 9:27am UTC](https://clojureverse.org/t/experience-with-other-languages/978/1 "2017-11-17T09:27:36Z")

</div>

> [@Topic for discussion around languages other than Clojure](https://v2.clojureverse.org/t/topic-for-discussion-around-languages-other-than-clojure/832/1):
>
> I feel like it might be nice to also discuss and be inspired by other languages sometimes 🙂

Totally! How’s your experience with Swift so far? I’ve heard the compiler can be super unreliable.

---

<div class="post-metadata">

### Author: ![martinklepsch](https://clojureverse.org/user_avatar/clojureverse.org/martinklepsch/32/80_2.png) [@martinklepsch](https://clojureverse.org/u/martinklepsch)
#### Post date: [November 17, 2017, 9:32am UTC](https://clojureverse.org/t/experience-with-other-languages/978/2 "2017-11-17T09:32:50Z")

</div>

Not sure I’d call it super unreliable but sometimes you have to just restart Xcode 😄  
As long as these errors are false-negatives (i.e. builds fail that shouldn’t) I don’t mind too much.

Besides that I think I’ve never been as productive as fast in any other language. I haven’t done anything serious with a typed language before and Xcode really holds your hand in a way that’s nice when you’re new to the language.

Syntax isn’t great and full-on imperative-ness admittedly sucks but it’s really going ok so far.  
The app was demoed yesterday and it worked almost perfectly. 🙂

---

<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: [November 17, 2017, 10:02am UTC](https://clojureverse.org/t/experience-with-other-languages/978/3 "2017-11-17T10:02:05Z")

</div>

I’ve been watching on ReasonML for a long while. Reason 3 was release a few weeks ago, which brings a series of new syntaxes very like ECMAScript. Previously I choose ClojureScript for it’s immutability and expressiveness. And Reason has most of that, plus a type system from OCaml. I can see it’s a really important language for React developers, including me. I think majority of React and ClojureScript users are paying attention as well. Will ReasonML shadow ClojureScript?

---

<div class="post-metadata">

### Author: ![BigDaddyTank](https://clojureverse.org/letter_avatar_proxy/v4/letter/b/e5b9ba/32.png) [@BigDaddyTank](https://clojureverse.org/u/BigDaddyTank)
#### Post date: [November 17, 2017, 2:39pm UTC](https://clojureverse.org/t/experience-with-other-languages/978/4 "2017-11-17T14:39:08Z")

</div>

I’ve been wanting to look at so much as of late:

- Haskell (because while it’s kind of a meme in some ways, it’s still interesting)
- Rust, pretty much the same thing with Haskell
- Lua, because I think it’d be good to know
- Elixir, I looked into it awhile back and thought it might worth to look into again
- VueJS, not really a language but mainly to see if implementing a ClojureScript VueJS library would be possible/worth it (although there is [Glue](https://github.com/Gonzih/glue))

---

<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: [November 17, 2017, 9:03pm UTC](https://clojureverse.org/t/experience-with-other-languages/978/5 "2017-11-17T21:03:25Z")

</div>

I try hard to adhere to the “Pragmatic Programmer” advice of learning a new language every year – a lofty goal! – and right now I’m trying to learn Kotlin.

Compared to Java, Kotlin is lovely. I read somewhere that it’s tried to “bake in” the recommendations from “Effective Java” (but it’s been so long since I read that book I can’t remember much). So far I’m only working through the website documentation and some tutorials. I’m liking most of Kotlin (`val`, type inference, extension methods – adding new functionality to existing classes, a fair bit of support for FP style code) but when I started to get into the interfaces/classes stuff it really seemed to bog down: there’s a lot of syntax and machinery there and I didn’t get a sense, from the official documentation, about any “best practices” so it felt a bit like they’d built a lot of extra stuff on top of Java classes without necessarily _improving_ on Java (i.e., it just has _more features_ rather than being better/more concise overall). Well, there are “data classes” which are better/more concise than Java.

I think part of that is just how comfortable I’ve gotten with raw data and pure functions after using Clojure for 7+ years now. I’m sure I’d find any OOP language frustrating in that area these days: so much incidental complexity!

I can’t imagine any production scenario where I’d use Kotlin in preference to Clojure. Perhaps if I was doing a lot more Java interop, I might use Kotlin to wrap nastier Java APIs? Or perhaps if I needed to write a native Android app? (no chance of that)

---

<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: [November 17, 2017, 9:14pm UTC](https://clojureverse.org/t/experience-with-other-languages/978/6 "2017-11-17T21:14:47Z")

</div>

> [@Topic for discussion around languages other than Clojure](https://v2.clojureverse.org/t/topic-for-discussion-around-languages-other-than-clojure/832/6):
>
> Haskell (because while it’s kind of a meme in some ways, it’s still interesting)  
> Rust, pretty much the same thing with Haskell

I’ve repeatedly tried to learn Haskell over the decades but I tend to hit a frustration point and give up each time. It’s definitely worth learning. You’ll pick up new techniques that you can apply elsewhere or that will help you think about problems in a different way. A few years back I was playing around with Frege which is a dialect of Haskell on the JVM but it’s really just one person’s pet project so it’s neither widely used nor particularly battle-tested. Maybe [Eta](http://eta-lang.org/) will fare better?

Rust was my “new language every year” last year (I think?) and I was very impressed with it. At first, appeasing the “borrower” can be an exercise in frustration but the analysis it performs is amazing. I haven’t written anything useful in Rust, just a few toy programs, but if I was doing systems-level programming, then it would be my first choice. I think it’s really well designed (caveat: I spent eight years on the ANSI C++ Committee so my view of language design may not match yours! 🙂). In particular, Rust was what I had hoped Go would be when I tackled that as my “new language every year” a few years back!

If you’re looking for something interesting on the front end to learn, I’d highly recommend Elm. Opinionated, statically typed, architecture-driven, and it manages to avoid the M-word (monads) as part of its overall culture, so it is much more beginner-friendly (or at least non-FP friendly) than many other FP languages.

---

<div class="post-metadata">

### Author: ![BigDaddyTank](https://clojureverse.org/letter_avatar_proxy/v4/letter/b/e5b9ba/32.png) [@BigDaddyTank](https://clojureverse.org/u/BigDaddyTank)
#### Post date: [November 18, 2017, 9:22pm UTC](https://clojureverse.org/t/experience-with-other-languages/978/7 "2017-11-18T21:22:06Z")

</div>

ATM I think I’m going to stick to Elixir and Clojure.

I think Elixir would help me learn how to better use Clojure’s stabby/thread macro (`->>`), and Clojure will help me learn how to right simpler and more concise functions in Elixir.

Honestly Clojure has helped me learn more about programming than any other language. It’s simplicity in how you write functions really helps one understand how to write methods/function (hell even classes) in other languages.

I struggled with Elixir at first because I had 0 clue how functional programming worked, or how the hell to properly pipe functions into one another, or how to write programs without classes or inheiritance. And Clojure has definitely helped me improve upon that greatly. That’s why I like it so much and hope I can use it professionally. (FYI on all of this, I’ve only been seriously learning programming for roughly a year now, so that might elaborate on some of the stuff I just said.)

---

<div class="post-metadata">

### Author: ![Miikka](https://clojureverse.org/user_avatar/clojureverse.org/miikka/32/358_2.png) [@Miikka](https://clojureverse.org/u/Miikka)
#### Post date: [November 20, 2017, 8:29pm UTC](https://clojureverse.org/t/experience-with-other-languages/978/8 "2017-11-20T20:29:51Z")

</div>

If I ever get around to it, I’d like to give [Pony](https://www.ponylang.org/) a go. I did a small bit of Erlang ages ago and the actor model had a big influence on how I design software. Would be nice to re-visit an actor language, and to see capabilities in action.

---

<div class="post-metadata">

### Author: ![orestis](https://clojureverse.org/user_avatar/clojureverse.org/orestis/32/279_2.png) [@orestis](https://clojureverse.org/u/orestis)
#### Post date: [November 21, 2017, 6:01pm UTC](https://clojureverse.org/t/experience-with-other-languages/978/9 "2017-11-21T18:01:29Z")

</div>

I went the other way - did all the FP stuff with Elixir, and I’m now discovering Clojure. Elixir and Clojure are very very similar in many cases.

---

<div class="post-metadata">

### Author: ![martinklepsch](https://clojureverse.org/user_avatar/clojureverse.org/martinklepsch/32/80_2.png) [@martinklepsch](https://clojureverse.org/u/martinklepsch)
#### Post date: [November 23, 2017, 11:50am UTC](https://clojureverse.org/t/experience-with-other-languages/978/10 "2017-11-23T11:50:28Z")

</div>

I’ve been trying to get into OCaml lately (once again). Currently in the process of writing a script that parses my bank’s CSV files and imports them into [ledger-cli](http://www.ledger-cli.org/). In the last week I have made some slow progress parsing the CSV and creating some basic mechanism to map transactions to ledger “accounts” so now I will continue to improve that mechanism and maybe try with CSVs of other banks.

I’m not really sure what I’m hoping to get out of OCaml but it seems like a pragmatic functional typed language that is gaining some traction lately (mostly due to ReasonML). So being able to use it on multiple platforms is nice and it feels like a good complementary language to Clojure (fast startup, static binaries). Also there is interesting stuff like Mirage etc. but I don’t really understand anything of that 😃

---

<div class="post-metadata">

### Author: ![DjebbZ](https://clojureverse.org/user_avatar/clojureverse.org/djebbz/32/531_2.png) [@DjebbZ](https://clojureverse.org/u/DjebbZ)
#### Post date: [November 24, 2017, 10:34am UTC](https://clojureverse.org/t/experience-with-other-languages/978/11 "2017-11-24T10:34:42Z")

</div>

After many failed attempts to learn Haskell, I’ve found the (very good) book [Type-Driven Development with Idris](https://www.manning.com/books/type-driven-development-with-idris). Idris looks like Haskell on steroids. At least the book doesn’t confuse me from the start with category theory concepts, just real code of small programs.

So far (Chapter 5), I find the language accessible and clean, just lacking some polish (still haven’t managed to import code from a module I wrote) and a good editor integration (the proposed Atom plugin is okay-ish).

---

<div class="post-metadata">

### Author: ![webappzero](https://clojureverse.org/user_avatar/clojureverse.org/webappzero/32/479_2.png) [@webappzero](https://clojureverse.org/u/webappzero)
#### Post date: [November 24, 2017, 1:00pm UTC](https://clojureverse.org/t/experience-with-other-languages/978/12 "2017-11-24T13:00:37Z")

</div>

I look forward to more hacking with [Red](http://www.red-lang.org/).

---

<div class="post-metadata">

### Author: ![fmind](https://clojureverse.org/user_avatar/clojureverse.org/fmind/32/538_2.png) [@fmind](https://clojureverse.org/u/fmind)
#### Post date: [November 24, 2017, 1:15pm UTC](https://clojureverse.org/t/experience-with-other-languages/978/13 "2017-11-24T13:15:32Z")

</div>

I tried to learn F#, Elixir, Scala, Haskell and other functional programming languages. None of them give me the same power and the same joy as Clojure. Still, I like to “borrow” the best ideas from these languages and apply them when I can. The nice thing with Clojure is that you can naturally implement these ideas, and the community does a great job in this regard.

At some point, I would love to learn more about Racket and use it to teach programming. Some aspects of Racket are seems cleaner than Clojure, and the standard lib is also richer.

---

<div class="post-metadata">

### Author: ![webappzero](https://clojureverse.org/user_avatar/clojureverse.org/webappzero/32/479_2.png) [@webappzero](https://clojureverse.org/u/webappzero)
#### Post date: [November 24, 2017, 2:55pm UTC](https://clojureverse.org/t/experience-with-other-languages/978/14 "2017-11-24T14:55:40Z")

</div>

> [@fmind](#):
>
> At some point, I would love to learn more about Racket and use it to teach programming. Some aspects of Racket are seems cleaner than Clojure, and the standard lib is also richer.

I’m a big fan of the [How to Code](https://www.edx.org/course/how-code-simple-data-ubcx-htc1x#!) course which uses a subset of Racket called Basic Student Language to teach a design recipe for solving problems.

---

<div class="post-metadata">

### Author: ![lupe](https://clojureverse.org/user_avatar/clojureverse.org/lupe/32/636_2.png) [@lupe](https://clojureverse.org/u/lupe)
#### Post date: [December 4, 2017, 3:05pm UTC](https://clojureverse.org/t/experience-with-other-languages/978/15 "2017-12-04T15:05:03Z")

</div>

I’ve done a [MOOC on OCaml](https://www.fun-mooc.fr/cours/#search?query=ocaml&page=1&rpp=50), apart from the final project. Maybe it reopens soon. I found it very well prepared and somewhat demanding.

---

<div class="post-metadata">

### Author: ![lupe](https://clojureverse.org/user_avatar/clojureverse.org/lupe/32/636_2.png) [@lupe](https://clojureverse.org/u/lupe)
#### Post date: [December 4, 2017, 3:50pm UTC](https://clojureverse.org/t/experience-with-other-languages/978/16 "2017-12-04T15:50:38Z")

</div>

> [@seancorfield](#):
>
> I try hard to adhere to the “Pragmatic Programmer” advice of learning a new language every year – a lofty goal!

It depends on what one wants, but probably better yet is to learn a new language of a different paradigm. For example: [J for array programming](http://jsoftware.com/), [Forth for concatenative](https://hackaday.com/2017/01/27/forth-the-hackers-language/), [Prolog for logic](http://www.swi-prolog.org/) and probably also, [natural programming with Red](http://www.red-lang.org/).

---

<div class="post-metadata">

### Author: ![andrewzah](https://clojureverse.org/user_avatar/clojureverse.org/andrewzah/32/608_2.png) [@andrewzah](https://clojureverse.org/u/andrewzah)
#### Post date: [December 4, 2017, 4:48pm UTC](https://clojureverse.org/t/experience-with-other-languages/978/17 "2017-12-04T16:48:16Z")

</div>

I went from Ruby → Crystal, which has ruby-inspired syntax, and otherwise inspired by C#/Go/Python.  
However it’s compiled and statically type checked, working with LLVM.  
It approaches concurrency similar to Go with channels and fibers.

Otherwise I use Swift for playing around with iphone apps, and I want to learn Rust. Someday..

> **[Crystal](https://crystal-lang.org)**
>
> Crystal is a general-purpose, object-oriented programming language. With syntax inspired by Ruby, it’s a compiled language with static type-checking. Types are resolved by an advanced type inference algorithm.

---

<div class="post-metadata">

### Author: ![myguidingstar](https://clojureverse.org/user_avatar/clojureverse.org/myguidingstar/32/6150_2.png) [@myguidingstar](https://clojureverse.org/u/myguidingstar)
#### Post date: [December 13, 2017, 7:14am UTC](https://clojureverse.org/t/experience-with-other-languages/978/18 "2017-12-13T07:14:46Z")

</div>

I myself have learned the basic of J and quite like the language as well as its Qt IDE, but can’t level up for a while. I’m looking forward to practice linear algebra with it.

---

<div class="post-metadata">

### Author: ![myguidingstar](https://clojureverse.org/user_avatar/clojureverse.org/myguidingstar/32/6150_2.png) [@myguidingstar](https://clojureverse.org/u/myguidingstar)
#### Post date: [December 13, 2017, 7:15am UTC](https://clojureverse.org/t/experience-with-other-languages/978/19 "2017-12-13T07:15:40Z")

</div>

Anyone tried Chris Granger’s Eve?

---

<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: [April 20, 2018, 6:52am UTC](https://clojureverse.org/t/experience-with-other-languages/978/20 "2018-04-20T06:52:45Z")

</div>

Glad someone mention Red. It seems to be really a unique language, maybe even more fun than clojure.

For the “get the things done” aspect, i don’t know, but it certainly worth a look.

It seems to me that the “metaprograming/reflexive” stuff is pushed even further than in LISPs , and the syntax is a delight.

It is also known to be one of the most “productive” language so far.

The community seems really nice, here is a funny answer I got on gitter.

Q:  
“what is the canonical way to impress a lisper with red?”  
A:  
" I didn’t know Lispers could be impressed, except when you tell them you use Lisp. ;^) Joking aside, there is no single answer. For some, it might be that Red doesn’t need macros, doesn’t evaluate blocks by default, or is really never code (just data). For others it may be the GUI system. Still others might like that we can trick Lisp-haters into using Lisp because most of the parens are hidden. :^) On the other hand, they may lose their minds when they see free ranging evaluation and learn there is no scope. So be careful. ;^)"

links:

homepage: [https://www.red-lang.org](https://www.red-lang.org)

parsing demo: [https://www.red-lang.org/2013/11/041-introducing-parse.html](https://www.red-lang.org/2013/11/041-introducing-parse.html)

its creator talks about it: [https://youtu.be/-KqNO\_sDqm4](https://youtu.be/-KqNO_sDqm4)

Enjoy!

[Next page](https://clojureverse.org/t/experience-with-other-languages/978.md?page=2)
