Live data from Hacker News

Ask HN: Best Lisp for software development?

news.ycombinator.com

111–120 of 138 posts

Re: Ask HN: Best Lisp for software development?

#111
post #92

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?

If you do it right, you won't need to inspect/debug prod. But nothing stops you from enabling socket REPL, connect to it and try things there. Just like NASA fixed their failing spacecraft in 1998 during Deep Space 1 mission.

Re: Ask HN: Best Lisp for software development?

#112
post #103
post #21

Look 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…

Part of it is that, yeah, but part of it is the "nobody ever got fired by buying IBM" principle. In a corporate environment, you use what's established, period. Using something else is incurring unnecessary risk. Obscure languages have smaller ecosystems and talent pools, and ultimately, usually cost the company more money in the long run.

So sharpen your Java, C#, and/or Node skills.

Re: Ask HN: Best Lisp for software development?

#113

I 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).

When I learned Clojure, I also needed to learn about Maven, and POMs, and JARs, and the Java classpath, etc — and encountering all that stuff for the first time at the same time I was learning Clojure meant that I sometimes couldn't tell what concepts were part of Clojure, and what concepts were part of the Java ecosystem. This wasn't helped by the fact that the bulk of the "how to compile Clojure" documentation was written assuming a Java background (thus, assuming people would recognize the familiar Java stuff) — and when it wasn't, it didn't bother trying to explain what parts were handled by Java and why, because it assumed you didn't know Java so why bother explaining all that Java stuff that'll be foreign to you, let's just gloss over it. So the result was that I was unable to learn how to deal with the Java ecosystem parts of being a Clojure developer, so I had to go learn about the Java ecosystem separately.

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?

#114
post #104

Earlier 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...

Option 4: Use msys2 which lets you install/build a bunch of Scheme implementations, e.g. http://wiki.call-cc.org/msys2.

Re: Ask HN: Best Lisp for software development?

#115
post #103
post #21

Look 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…

Managers in a current company don't what "AI winter" is.

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?

#116
post #45

Earlier 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?

Yarn and Npm are package managers. They are not build automation tools. They only pull dependencies and publish them back and perform dependency resolution.

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?

#117
post #11

If 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/

yes but you cannot import libraries from golang which is a deal breaker for me as far as ecosystem support is concerned.

Re: Ask HN: Best Lisp for software development?

#119
post #91
post #61

I 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.

I got it to work - in fact, here is my image:

https://github.com/insightfulsystems/ubuntu-gerbil

Chicken is plenty fast enough, though.

Re: Ask HN: Best Lisp for software development?

#120

Earlier 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…

Thanks for the reply!

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.

Post reply on HN