Earlier quoted context omitted.
- Productivity. Bulding stuff in Clojure is not only joyful but also can give you real (not imaginary, not theoretical, but real, measurable) boost; - Concise syntax. Less code - less bugs; - FP. Immutability by default is something that once you get used to it, it is hard to imagine having to write code without it; - REPL. I mean real REPL, not some kind of crippled "interactive shell". e.g.: Jupyter is interactive…
Would you use the REPL to inspect / modify / debug running applications in production, or would it mainly be useful for development purposes?
Ask HN: Best Lisp for software development?
111–120 of 138 posts
Re: Ask HN: Best Lisp for software development?
#112Look into SBCL (Common Lisp), Racket (Scheme), or Guile (Scheme). All three of these have enough library support to be used for real-world software development and are designed to exist within a modern (usually Unix-based) ecosystem. But don't try to introduce Lisp into your company, unless you are a cofounder of that company. It's a career limiting move. Instead, work on something you're fond of in Lisp during your…
>But don't try to introduce Lisp into your company, unless you are a cofounder of that company. It's a career limiting move. I think this is correct, unfortunately, due to the place in history lisp occupied in the AI winter. As a result, it's looked upon as a failure, and people tend to dissociate themselves from such things, even when there is a body of evidence to the contrary demonstrating its efficacy. Is that wh…
So sharpen your Java, C#, and/or Node skills.
Re: Ask HN: Best Lisp for software development?
#113I love Clojure, but I loathe Java, and I feel you do get exposed to a fair amount of Java stuff when trying to work in Clojure. It's far better than it used to be, but it's still too much for my liking. Since I build stuff for the web (and Electron, a bit), I use ClojureScript, and am generally really happy with it. It's all the goodness of Clojure — the lispiness, the killer persistent data structures, the wonderful…
> you do get exposed to a fair amount of Java stuff Can you please expand on this? I've been using Clojure as my main PL for the past 3 years, and honestly only once I had to actually deal with some Java code (when I needed to figure out some Selenium stuff).
Contrast with ClojureScript — It has the same problems as above, but substitute JS for Java and NPM for Maven, etc. I was coming from a web background, so I could easily tell the JS-world from the CLJS-world. That familiarity helped me tremendously in getting up and running.
The situation for CLJS is even better now with things like Planck and shadow-cljs (and Shaun Lebron's cljs/tool and Cuttle before them), since those tools mean you don't even need to install the JDK to get up and running with CLJS (as it should be, I'd argue). The situation for CLJ is a bit better thanks to the CLI tool. But the problems above could have been well handled by the classic non-technical solution: really, really good official docs. That's been getting better (thanks to Alex), but I'm pretty sure it's still going to be more painful to get up and running with CLJ or CLJS than Ruby, Node, etc., sadly.
Re: Ask HN: Best Lisp for software development?
#114Earlier quoted context omitted.
Great response, I really like chicken when working on Mac or Linux, but it's windows (where I do most of my development) that it struggles. Some eggs just don't install and the error messages are really bad at that point. Trying to install awful to develop a web api I had to give up, couldn't find a way of getting it installed on windows (no problem on OSX or Ubuntu 18.04) Installed Portacle and (ql:quickload "hunche…
I've never had a Windows, I'm a Mac nerd, but I'm looking into it for cross-platform binaries. Option 1: MS has a Linux subsystem now. Problem solved, but maybe not customer-friendly. Option 2: Cygwin probably works, I've seen John Cowan mention it in IRC. Option 3: This somewhat messy process: https://wiki.call-cc.org/compiling-chicken-on-windows-xp-wit...
Re: Ask HN: Best Lisp for software development?
#115Look into SBCL (Common Lisp), Racket (Scheme), or Guile (Scheme). All three of these have enough library support to be used for real-world software development and are designed to exist within a modern (usually Unix-based) ecosystem. But don't try to introduce Lisp into your company, unless you are a cofounder of that company. It's a career limiting move. Instead, work on something you're fond of in Lisp during your…
>But don't try to introduce Lisp into your company, unless you are a cofounder of that company. It's a career limiting move. I think this is correct, unfortunately, due to the place in history lisp occupied in the AI winter. As a result, it's looked upon as a failure, and people tend to dissociate themselves from such things, even when there is a body of evidence to the contrary demonstrating its efficacy. Is that wh…
The whole "AI winter" meme is just a psychological complex in the mind of a few old-time Lisp coders. It has no relevance today.
Re: Ask HN: Best Lisp for software development?
#116Earlier quoted context omitted.
Actually, lein and boot both use maven pom.xml and pom.properties as their declared dependencies format. When you publish or pull a dependency, it resolves it using pom.xml from the Maven repo, and when you push, they generate the pom.xml for publishing to the Maven repo. So this means that Gradle, Boot, Lein, Maven, and tools.deps all can consume packages from each other seamlessly, and they all publish to the same…
Can you go backwards and generate a project/boot.clj from a pom file? And can lein read from your boot file? Because npm and yarn tag the same input, produce nearly the same output, and can run tasks defined in the same location (the project.json). Does clj tooling do that as well?
Lein and Boot are full build tools. They do package management, but they also do task automation such as Gulp and Grunt, bundling such as Webpack and Parcel, and scaffolding such as Yeoman or Brunch.
If you take only their package management subset. Then it does take only 15 min to switch from one to the other. Just like Yarn and NPM both publish too and pull from npm repositories, Lein and Boot publish too and pull from Maven repositories.
It is only once you get to task automation that Lein and Boot start to differ. Rewriting your tasks and build pipeline from one to the other will take you much longer. That's also true of switching from Gulp to Grunt for example.
I also want to add that, bundling is similar in Boot and Lein. While the tasks to do so are not, the way things are bundled is the same. Scaffolding is also interchangeable, since both support each others template formats.
Re: Ask HN: Best Lisp for software development?
#117If you don't want clojure, common lisp is the closest contender it has excellent tooling, performant compilers (sbcl) and mature package management however be prepared for rude shock when it comes to ecosystem support. Other languages make up for the lack of lisp's power by having excellent support of production grade libraries. You might struggle in doing soemthing basic like talking to the chrome browser via cdp, y…
For Clojure-on-golang there is https://joker-lang.org/
Re: Ask HN: Best Lisp for software development?
#118Re: Ask HN: Best Lisp for software development?
#119I tried out a bunch of Scheme implementations recently in search of one that could build standalone binaries and had a moderately sane take on HTTP requests for a pet project of mine: https://taoofmac.com/space/blog/2019/06/20/2310 That said, I would probably go with Clojure for other solutions, since the JVM gives it a lot of reach and flexibility for real-world applications.
Chicken is by no means an insanely fast scheme (even though it is fast compared to many other dynamic languages). If you can get gerbil to work you will probably have at least another 1.5-2 to gain.
https://github.com/insightfulsystems/ubuntu-gerbil
Chicken is plenty fast enough, though.
Re: Ask HN: Best Lisp for software development?
#120Earlier quoted context omitted.
> Clojurescript is probably the best AltJS alternative today (compared to Elm, Purescript, ReasonML, Scalajs, Kotlinjs, GHCJS, etc.). Do you mind expanding on this? I’m moving away from Elm and I’ve been considering Clojurescript, ReasonML, and Purescript.
AFAIK FFI and use of existing JS libs is a pain in both Elm and ReasonML (that is my subjective, empirical observation). Purescript is nice, but what would you use in the back-end? Haskell? Or would you target nodejs? Deploying and maintaining nodejs clusters is not fun. Using Haskell in the enterprise could be fun, but getting to the level where it is fun is extremely hard. Finding and hiring people is also difficul…
It being a Lisp is a positive point for me.
I'm not a fan of dynamically typed languages, but I'll have a look through spec. From a cursory look, Clojurescript can use Spec as well.