Earlier quoted context omitted.
Clojure is good for everything you'd use Java for. So pretty much anything that's going to be long running, like services, or big apps meant to be open for a while. Yes, that fits the enterprise use case perfectly. A backend for any service oriented architecture, ETL jobs, data processing pipelines, backend for websites, rest/rpc/graphql services, client/server applications, big data analysis, machine learning, etc.…
I agreed with most of your comment, but not the end. I don't think Clojure competes with Go or Nim. And Clojure seems to be the antithesis of Haskell. Clojure competes with Java, Kotlin, Scala, and C# if you're on an MS platform. I used Clojure for pet projects for a while (it's a gorgeous language) but eventually went back to Python because I wanted something with: * easier interop with C/native libraries, * faster…
Clojure Newbie Guide (2015)
31–40 of 43 posts
Re: Clojure Newbie Guide (2015)
#32Earlier quoted context omitted.
If in any case you still feel the same about Clojure, you should try Common Lisp, it has the three things you want: 1. Easy calls to C with CFFI. No Clojure->Java->JNI->C, just straght CL->C. 2. Useful, optional, type system (which can also catch mistakes at compile time with SBCL and other compilers) 3. Very fast startup times. and many more features like for example an object system that is massively above what Clo…
Chiming in to give Racket a shout out. Good FFI, good libraries, good tooling, good community, good (soon to get even better) performance, subjectively more modern feel than CL, great type story via Typed Racket.
Why? Are the rumours of porting the language to Chez Scheme true?
Re: Clojure Newbie Guide (2015)
#33Earlier quoted context omitted.
Chiming in to give Racket a shout out. Good FFI, good libraries, good tooling, good community, good (soon to get even better) performance, subjectively more modern feel than CL, great type story via Typed Racket.
>(soon to get even better) performance Why? Are the rumours of porting the language to Chez Scheme true?
Re: Clojure Newbie Guide (2015)
#34Earlier quoted context omitted.
In web development you live-reload code in the running Clojure app, so turn-around time is excellent. (ClojureScript has very good live reload support as well)
There can be problems with state management, which I've only seen with our web application. Sometimes a hard stop / start is what you need unless you designed the application for reload-ability. We're working towards that for our web application. Frameworks especially seem to exacerbate this problem, since you have limited control over the execution of your program.
Re: Clojure Newbie Guide (2015)
#35Earlier quoted context omitted.
In web development you live-reload code in the running Clojure app, so turn-around time is excellent. (ClojureScript has very good live reload support as well)
There can be problems with state management, which I've only seen with our web application. Sometimes a hard stop / start is what you need unless you designed the application for reload-ability. We're working towards that for our web application. Frameworks especially seem to exacerbate this problem, since you have limited control over the execution of your program.
Re: Clojure Newbie Guide (2015)
#36Here are the reasons I stopped using clojure (a phenomenal language) a year ago, in order of importance: 1. No C/C++ FFI. 2. Lack of a strong type system (clojure.spec almost solves this problem now, but when I quit this didn't exist yet). 3. Horrific startup times: although clojure itself is fast, its startup time isn't. This makes scripting in clojure unsatisfying. And you don't feel like a ninja when it takes 30 s…
I gave up on Clojure despite spending a lot of hobby time on it and moved to Scala because it's simply a much easier language to sell to other engineers and management. For me the C/C++ was a minor issue since if you're going to the trouble to do it on the JVM you may as well build that part in Java.
Re: Clojure Newbie Guide (2015)
#37Earlier quoted context omitted.
I gave up on Clojure despite spending a lot of hobby time on it and moved to Scala because it's simply a much easier language to sell to other engineers and management. For me the C/C++ was a minor issue since if you're going to the trouble to do it on the JVM you may as well build that part in Java.
Any tips for how you sold Scala? I don't even like it but I picture the sell to be at least as hard as Clojure, at least if you're selling Scala honestly... Clojure can't hide its alienness anywhere but a Scala intro can. I'd like to find a way to push for Kotlin at the moment, which would be nicer day-to-day than plain Java plus open the door later for other JVM languages.
Show examples of large companies using Scala in production (Twitter, LinkedIn, Walmart etc)
Gradual low risk introduction of Scala using Gatling load test and ScalaCheck
Production ready frameworks like Play and Akka
Demonstrate that Scala can be introduced at various levels from "Java without semi colons" to "You need to learn category theory to understand this" and what we would do to make sure everyone on the team would be up to speed.
Build a prototype
What counted against Clojure and Common Lisp was the immediate reaction of people with no exposure to lisp languages was "those brackets" and the lack of a large stable framework one can pick up and use as a gateway to using the language.
Simply put there can be a gradual adoption of Scala in a company that's really not possible with Clojure.
Re: Clojure Newbie Guide (2015)
#38Earlier quoted context omitted.
Clojure is good for everything you'd use Java for. So pretty much anything that's going to be long running, like services, or big apps meant to be open for a while. Yes, that fits the enterprise use case perfectly. A backend for any service oriented architecture, ETL jobs, data processing pipelines, backend for websites, rest/rpc/graphql services, client/server applications, big data analysis, machine learning, etc.…
I agreed with most of your comment, but not the end. I don't think Clojure competes with Go or Nim. And Clojure seems to be the antithesis of Haskell. Clojure competes with Java, Kotlin, Scala, and C# if you're on an MS platform. I used Clojure for pet projects for a while (it's a gorgeous language) but eventually went back to Python because I wanted something with: * easier interop with C/native libraries, * faster…
Go and Nim are both mostly used for backend services, long running processes deployed inside docker instances, etc.
I agree it competes a little less then it does against Java, C#, et all. But it still does, in that there's overlap for what projects they'd be good candidate for.
Re: Clojure Newbie Guide (2015)
#39Earlier quoted context omitted.
Clojure is good for everything you'd use Java for. So pretty much anything that's going to be long running, like services, or big apps meant to be open for a while. Yes, that fits the enterprise use case perfectly. A backend for any service oriented architecture, ETL jobs, data processing pipelines, backend for websites, rest/rpc/graphql services, client/server applications, big data analysis, machine learning, etc.…
I think Clojure fits well to quick scripts and exploraory programming, because of the rapid turnaround in interactive development. The finished tool, if compiled, will start fast enough (~1 second for hello world) even though it loses a bit to Python scripts. Clojure also lets you drop down to the most basic JVM primitives, like unboxed types and atomics/volatile, so you can do lower level stuff than in other dynamic…
While you can use Clojure for script, or performance heavy tasks, or embedded systems, I think it's pretty obvious it's not the right tool for those, at least not yet.
If you want to mess around with scripts, performance heavy tasks or embedded systems, sure you can use Clojure, but if you are serious about any of them, it wouldn't make sense. You'd turn to languages that are better suited.
Re: Clojure Newbie Guide (2015)
#40Earlier quoted context omitted.
I think Clojure fits well to quick scripts and exploraory programming, because of the rapid turnaround in interactive development. The finished tool, if compiled, will start fast enough (~1 second for hello world) even though it loses a bit to Python scripts. Clojure also lets you drop down to the most basic JVM primitives, like unboxed types and atomics/volatile, so you can do lower level stuff than in other dynamic…
What you say is true, yet false. While you can use Clojure for script, or performance heavy tasks, or embedded systems, I think it's pretty obvious it's not the right tool for those, at least not yet. If you want to mess around with scripts, performance heavy tasks or embedded systems, sure you can use Clojure, but if you are serious about any of them, it wouldn't make sense. You'd turn to languages that are better s…