Hacker News new | ask | show | jobs
by _threads 2264 days ago
I see a lot of Lisp stuff on HN : do a lot of people use it ?
21 comments

You're using it right now :) https://en.wikipedia.org/wiki/Arc_(programming_language)

Lisp is probably more popular among those that read HN than the general developer public. It also depends on what you mean by "Lisp" (i.e Common Lisp or "the Lisp-derived languages")

We use it for the core of our AGI and our in-memory graph db in full production - very very fast. The web libraries for lisp are very good as well with Fukamachi libraries, such as [1] caveman and [2] woo (fastest web server), [3] dexador, [4] websockets, also [5] parallel processing, [6] rtg-math incredibly fast math library including quaternion support, etc.

[1] https://github.com/fukamachi/caveman [2] https://github.com/fukamachi/woo [3] https://github.com/fukamachi/dexador [4] https://github.com/fukamachi/websocket-driver [5] https://github.com/lmj/lparallel [6] https://github.com/cbaggers/rtg-math

Thanks for the links. I had not noticed dexador before. I have it on my schedule this morning to re-work my network access libraries for an Azure web service, and also access to Wikidata and DBPedia. I have been using old code of mine that needs reworking. I will definitely try dexador.
I highly recommend it, dexador is much much faster than drakma
Thanks, I experimented with dexador yesterday, it looks good. I ended up adding a caching layer for all web service calls and SPARQL requests in my app yesterday - this makes dev and testing much faster, but won’t help much in production.
Sounds interesting, especially the SPARQL. What does your app do?
Agreed, but there are a couple of edge cases that drakma handles taht dexador doesn't.
Last time I checked, woo doesn't support TLS. Has that changed?
We took the simple solution of running haproxy to handle ssl, and then using a woo server behind that. This is that setup: https://graphmetrix.com
Given present day approach of using reverse proxies for TLS termination, that's not much of a limitation.
That's the solution I use with mod_lisp running behind Apache too, but I'd like to get away from Apache. I'll try haproxy.
HAproxy is really, really good.

Personally I also use nginx as reverse proxy a lot, but that's more because there's a ready to use Ingress Controller for kubernetes that uses it internally.

It’s not super common anymore but it is used.

Some examples:

• Clojure which runs on the JVM enjoys considerable popularity.

• Common Lisp seems to be popular amongst Quantum Computing researchers.

• Racket enjoys popularity by way of the Pollen Typesetting Engine.

• Emacs Lisp is used for all Emacs scripting.

• AutoLisp is used to script code for AutoCAD

• HackerNews is written in ArcLisp.

• Square Enix employs a proprietary dialect as a scripting language.

Many GNU programs come with a builtin Scheme interpreter (gdb, for example).
You mean GNU Guile?
Yep [0]. However GIMP does not use Guile, it uses TinyScheme for it's Script-Fu [1].

[0] https://www.sourceware.org/gdb/onlinedocs/gdb.html#Guile

[1] https://en.wikipedia.org/wiki/TinyScheme

It’s not popular among quantum computing groups. We largely use python. It’s popular in a group inside rigetti.
The first seems like a nonserious thing and D-Wave is a crank company.
Aye, no TRUE quantum computing company (except for Rigetti) wid dae that!
I guess I assumed Stylewarning was representative, although I'm not surprised at the use of python, I probably would've expected that had I not seen Stylewarning's video.
To understand why LISP matters (in theory anyway) is to understand the concept of reification [1]. What you choose to reify (make explicit) in a particular language is a design decision. It's directly related to point 0 in Wadler's law [2] - semantics.

The design of LISP makes eval() and LISP's very syntax as first-class citizens which adheres to the code is data/data is code pragma. It makes LISP homoiconic [3]. It's an interesting and incredibly powerful property. Often too powerful for inexperienced programmers.

[1] https://en.wikipedia.org/wiki/Reification_(computer_science)

[2] https://wiki.haskell.org/Wadler's_Law

[3] https://en.wikipedia.org/wiki/Homoiconicity

Not really, but Paul Graham likes it, and narrowly speaking, he's not wrong about its unique power and flexibility. I think those traits meant a lot more in the late 90s and early 00s, when powerful and flexible programming environments and engineers skilled in their use were much thinner on the ground than today, but I like it too, especially in the form of Emacs.
I think it's more accurate to say a lot of people like it. Especially for personal projects. Double-especially for compiler/interpreter personal projects (one of its key features is being extremely simple to parse).
The R engine began life as a very simple Lisp interpreter. There is also an R package which gives the Lisp-style representation of an R expression. You can even use it as a R to Lisp Compiler.

https://stat.ethz.ch/R-manual/R-patched/library/codetools/ht...

http://dan.corlan.net/R_to_common_lisp_translator/

Thanks. I wasn't aware of showTree.

Most R users don't realize everything in R can be written as a function, due to its Scheme roots. Example:

if (3 > 2) { print("hello") }

can be rewritten with backticks on the if:

`if`(3 > 2, print("hello"))

If the first argument is false, you need a third argument

`if`(3 < 2, print("hello"), print("go away"))

Essentially, the backticks replace some parens you'd use in Scheme, and then you can add some alternative syntactic sugar to write in Algol style.

Yup.

If you look in the source for R (in C), you will note that all of the data structure names end with Sexp.

I use it every day in the form of Emacs, and I'm slowly learning it because I find it a fascinating language. (I'm a sysadmin/devops by trade/experience, moving into team lead territory, so I'm not a coder by any stretch of the imagination)
Lisp ends up in nearly every project I work on. For instance, I'm using a custom Lisp for defining CPU behavior right now: https://github.com/daeken/libmoonage/blob/master/Generator/a...
Clojure (not Common Lisp, but a lisp) is more prominent than many people think. I use it, and it's a primary language in a R&D area at the fortune 50 company where I work.
Common Lisp keeps me sane, most of my paid work is in more primitive and constrained languages.

It's great for prototyping and trying out new ideas.

Common Lisp also has a good story for application bundling and deployment. It has almost always been my prototyping language (1) but is great for other purposes.

(1) started in around 1986 when I had to write a neural network product in C++ (SAIC ANSim). I did all my prototyping in Coral Common Lisp, and converted to C++ once I had Art2, Hopfield, Boltzmann, backdrop, recurrent networks, etc. figured out.

Not really, but you should learn it anyways. I bought a bunch of lisp books and have been working through them. It is not really objective but I already feel like I'm a better programmer after learning lisp. It has also been a great history lesson in programming languages. I see pieces of lisp in nearly all other languages.
ITA Software, which became Google Flights, was written in Common Lisp. I had heard stories about Google trying to reimplement it in another language, but don't know if that's true or whether it succeeded. Can anyone comment?
Oh yeah! I'm not using Common Lisp but ClojureScript to build the entire frontend for https://bravostudio.app

Basically using Clojure(Script) because it's a way faster way of developing software and frontends in particular. What you see inside of the platform (the frontend), is all built by one person since the start of the project.

do you mean the landing page or also the bravo studio featured on the video? how long did it take? because to create such editors is like a good deal of work and planning.
No, landing page is made in webflow by not-the-frontend-team, talking about the Bravo Studio featured in the video (accessible here: https://projects.bravostudio.app). We're a young startup so been doing less planning and more doing, maybe to a fault, as what we lacked in planning would have to be covered up by spending more time working on it.

But yeah, Bravo Studios frontend had it's initial commit May 27th so coming up to be about a year soon. Bunch of work mixed in on a Figma Plugin that didn't go anywhere as well, so I haven't been 100% focused on the frontend all the time but think we've made good progress so far.

I use Common Lisp and Clojure(Script) for personal projects. Lisp can be a tough sell in a corporate setting, however, some large companies do use Lisp. To my knowledge both Walmart Labs and Cigna use ClojureScript for at least some of their products.
You can find a partial list of companies that use some clojure on clojure.org: https://clojure.org/community/companies

It's not complete or up to date.

Hacker News is built with it
I do, in ClojureScript. Here are two of my main projects:

* https://github.com/Cirru/calcit-editor * https://github.com/Respo/respo

There is uLisp for IoT Arduino, ESP8266 and MicroBit

http://www.ulisp.com/show?3J

This company does, https://www.siscog.pt/en/
More like Lisp stuff gets guaranteed upvotes and visibility. HN does a lot of Lisp service. This is Paul Graham's site after all.
Just mutual admiration society. It's a parentheses hell and good only for self flagellation. It does have a sense of elegance and can be fun but again, the parentheses hell would be enough of a turn off once you start writing long programs.

Use a regular "functional" language, like Haskell or scala and you get the best of all worlds