News for hackers. Stuff that matters.
Re:Why is Common Lisp not the most popular programming langu... by jjav on Wednesday February 14, 2024 @07:39PM (#39377649)
I didn't see mentioned in the thread (maybe missed it) the #1 reason, IMO, that Lisp can't be popular in companies.

Everyone should take the time to learn Lisp and do a handful of personal projects with it. It'll help your growth as a software engineer. Just do it!

But that doesn't make it a great corporate language. Lips is infinitely flexible, you can mutate it to be what you want. That's cool and feels awesome.

Also: a maintenance nightmare as soon as you have more than ~1 person working on the codebase!

Everyone surely has heard the joke/truism how C++ can be great as long as you only use a sane subset. But every team uses a different subset. Now imagine something like Lisp where every developer & team morphs it in a different way and you have a product with hundreds of developers on it. Try maintaining that without going insane.

The anti-Lisp is something like Go. Simple, not very flexible, everyone does it the same way mostly, you can plug & play developers like scrum demands we do.

Re:Why is Common Lisp not the most popular programming langu... by brlewis on Wednesday February 14, 2024 @07:57PM (#39377788)
In companies, most languages have some kind of system to enforce style guidelines and restrict which dependencies can be used. Companies already restrict the flexibility of the languages they are already using. So flexibility is not the reason Lisp is unpopular among companies.
Re:Why is Common Lisp not the most popular programming langu... by jjav on Thursday February 15, 2024 @03:04AM (#39380225)
> some kind of system to enforce style guidelines

Are you talking about autoformatters like gofmt and its ilk? That won't enforce a consistent approach in Lisp which allows the programmer to infinitely outsmart any tool.

Or if you're talking about written-down guidelines, that can help, for a while. But those morph over time too, and so does the new code but the old code lives on forever. Every time a new CTO/Chief Architect shows up, things change but the existing code doesn't. Since we're on the topic of large companies with decades-old codebases, things have changed many many times and you'll have a very inconsistent mess in your hands. It happens even in fairly rigid languages like Java, I can't imagine what you'd end up with Lisp.

Has there ever even been any Lisp-based company with a 20+ year old codebase where a cast of tens of thousands of developers have worked on it over the years? I can't think of any but maybe I haven't heard of it.

Lisp is awesome for a team of 1 (for about a decade I used to write all my personal use code in Lisp) or maybe a small tighly-knit group. Beyond that, I can't see it working well over the long haul.

Re:Why is Common Lisp not the most popular programming langu... by brlewis on Thursday February 15, 2024 @08:09AM (#39382225)
I definitely include linters, not just style formatters.

> It happens even in fairly rigid languages like Java, I can't imagine what you'd end up with Lisp.

I imagine it would be about the same, with human factors dominating. If Lisp's flexibility pushed in the direction of inconsistency, the ease with which you could write codemods for Lisp would push in the direction of consistency.

> Has there ever even been any Lisp-based company with a 20+ year old codebase where a cast of tens of thousands of developers have worked on it over the years? I can't think of any but maybe I haven't heard of it.

I haven't heard of any either. If you hear about one, LMK if they're hiring.

Re:Why is Common Lisp not the most popular programming langu... by tonyarkles on Thursday February 15, 2024 @08:15AM (#39382280)
While ITA no longer exists as a separate entity I don’t think, my understanding is that they pretty much wrote everything in Lisp.

https://en.wikipedia.org/wiki/ITA_Software

https://franz.com/success/customer_apps/data_mining/itastory...

Grammarly too, although I don’t think it qualifies as a 20-year codebase: https://www.grammarly.com/blog/engineering/running-lisp-in-p...

Re:Why is Common Lisp not the most popular programming langu... by farray on Thursday February 15, 2024 @02:12PM (#39387069)
ITA started doing everything in Lisp, but especially as the original coding founder left, started hiring people doing stuff in Perl, Python, Ruby, Java, shell, C++, PL/SQL, etc.

The core software was still Common Lisp, but lots of cruft got added, and Conway's Law kicked in mightily.

Re:Why is Common Lisp not the most popular programming langu... by mm007emko on Friday February 16, 2024 @04:03AM (#39394772)
And what's the point of having Lisp if you can't use it? Unpopular opinion alert: Bigger companies want programmers to be replacible resources which means they need to have huge talent pools. If you choose your tech stack for the fact that you can retain your people for only 12 to 18 months, you can't effectively use any of the advantages Lips languages offer to you.
Re:Why is Common Lisp not the most popular programming langu... by shrimp_emoji on Wednesday February 14, 2024 @07:44PM (#39377686)
> Simple, not very flexible, everyone does it the same way mostly, you can plug & play developers like scrum demands we do.

I think that's why Python beat Ruby. :p

Re:Why is Common Lisp not the most popular programming langu... by jjav on Wednesday February 14, 2024 @07:48PM (#39377715)
Agreed. And why I love Ruby and hate Python. But yes.
Re:Why is Common Lisp not the most popular programming langu... by richie_adler on Wednesday February 14, 2024 @08:04PM (#39377845)
Ruby is "perl-esque" in syntax, and of course TIMTOWTDI is opposite to the 13th item of the Zen of Python, so it's understandable some dislike to an express design decision.

But hate? Really?

Re:Why is Common Lisp not the most popular programming langu... by renewedrebecca on Wednesday February 14, 2024 @09:00PM (#39378244)
I personally really do hate python.
Re:Why is Common Lisp not the most popular programming langu... by jjav on Thursday February 15, 2024 @03:12AM (#39380257)
> But hate? Really?

Yes; well maybe hate it a strong word reserved for life and death matters, but I intensely dislike python. It's like nails on a chalkboard reaction for me. It drives me crazy that it has become popular.

Re:Why is Common Lisp not the most popular programming langu... by shrimp_emoji on Thursday February 15, 2024 @02:20PM (#39387185)
Wow. I feel that way with C# and Java, but mostly without any reasons I can rationally articulate. Meanwhile, I love Python!
Re:Why is Common Lisp not the most popular programming langu... by Turing_Machine on Friday February 16, 2024 @10:02AM (#39397950)
> But hate? Really?

Coding with Python makes me feel like I'm hand-washing dishes that have been dirtied and left in the sink for several days.

I know that many like Python, and I'm not arguing against that in any way. Whatever floats your boat, mang.

However, trying to tell me why I "ought to like" Python is like telling me why I "ought to like" cilantro. I know you think it's delicious. To me it smells like squashed bugs, and tastes like dish soap.

Re:Why is Common Lisp not the most popular programming langu... by skinner927 on Friday February 16, 2024 @11:51PM (#39406485)
The dish soap thing is genetic if you didn’t know. The majority of the world doesn’t taste the dish soap.
Re:Why is Common Lisp not the most popular programming langu... by bitwize on Wednesday February 14, 2024 @11:42PM (#39379189)
> Also: a maintenance nightmare as soon as you have more than ~1 person working on the codebase!

Lisp isn't any harder to maintain than any other language. The Lisp codebases I've worked on, even professionally, were originally written by talented, experienced engineers and were in fact wonderful to maintain.

> Now imagine something like Lisp where every developer & team morphs it in a different way and you have a product with hundreds of developers on it.

Dr. Ian Malcom's could/should distinction applies here. Most Lisp teams do not "morph the language" willy-nilly. They set standards of what to do and what not to do, establish a house style, build up a library of in-house functions and macros, and the more junior programmers imitate the more senior ones, just like any other dev team in any other language. And the vast majority of Lisp teams are small, even if they are working on large applications.

"We wanted to make it possible for very large projects to be done by small teams of people and for smaller ones to be done by one person." --Tom Diaz, Director of Software Products, Symbolics, 1986: https://www.youtube.com/watch?v=-K01FQ73xgY&t=144s

> The anti-Lisp is something like Go. Simple, not very flexible, everyone does it the same way mostly, you can plug & play developers like scrum demands we do.

I think you might be on to something. Symbolics was very much in danger of making large software projects possible by one person or a small team of people. It seems as if the corporate world has responded to the proliferation of more powerful software development tools -- not only in Lisp, but certainly Lisp and Smalltalk had an outsized influence -- by lowering the skill ceiling to make devs more fungible, and creating more and more process to hobble their productivity so as to justify larger teams of devs and dev-adjacent personnel: PMs, POs, scrum masters, etc.

Re:Why is Common Lisp not the most popular programming langu... by Jensson on Thursday February 15, 2024 @03:22AM (#39380306)
> The Lisp codebases I've worked on, even professionally, were originally written by talented, experienced engineers

But companies have untalented junior engineers, you need a language they can write while still remaining structured.

Talented professional engineers can write assembly language in a very easy to read and structured manner. But there is a reason basically everyone writes in structured languages today instead of unstructured, that enforced structure helps make code more readable and uniform.

Re:Why is Common Lisp not the most popular programming langu... by bitwize on Thursday February 15, 2024 @06:33PM (#39390808)
With good leadership, untalented junior engineers can become very productive junior engineers. I've seen it happen. Within weeks some kids fresh out of college, who had been taught everything mainly in Java (this was still the JavaSchool era, more or less) were proficiently and happily contributing to our C++ code base. They were pretty good, but they weren't Carmack or anything.

Now if your leaders are untalented, you have an organizational issue: you're promoting schlubs. Why are you doing that? Stop doing that.

Re:Why is Common Lisp not the most popular programming langu... by Capricorn2481 on Thursday February 15, 2024 @04:10AM (#39380581)
> I think you might be on to something. Symbolics was very much in danger of making large software projects possible by one person or a small team of people. It seems as if the corporate world has responded to the proliferation of more powerful software development tools -- not only in Lisp, but certainly Lisp and Smalltalk had an outsized influence -- by lowering the skill ceiling to make devs more fungible, and creating more and more process to hobble their productivity so as to justify larger teams of devs and dev-adjacent personnel: PMs, POs, scrum masters, etc.

This is a ridiculous LISP conspiracy theory that really needs to die. What world are you living in that corporations actively want their employees to work slowly or to have too many employees? Who does that benefit?

If lisp were genuinely powerful, corporations would be able to make bigger projects faster.

Re:Why is Common Lisp not the most popular programming langu... by Avicebron on Thursday February 15, 2024 @07:35AM (#39381935)
I think the key point was that maintaining control over the employees by making them replaceable has more benefit that better products. That's what market capture is for
Re:Why is Common Lisp not the most popular programming langu... by bitwize on Thursday February 15, 2024 @09:48AM (#39383302)
> What world are you living in that corporations actively want their employees to work slowly or to have too many employees? Who does that benefit?

1) In the corporate world, a larger headcount under you means you get more funding for your initiatives. If you get things done with a team of five, that signals to upper management that that's all you need and your budget will be adjusted down accordingly.

2) When it comes to software, companies favor the ability to monitor and control the development process from above over speed. Agile only gets uptake among large orgs inasmuch as Agile consultants promise them this.

3) There is, decades after The Mythical Man-Month, a sense that you can get a good programmer's worth of output -- without a good programmer's worth of risk -- out of several, much more fungible, mid programmers.

4) Egos on the line. Tom Smykowski from Office Space is real. Need proof? Propose something sensible like having engineers talk to, or shadow, customers so they can see what the pain points are in their work and which pieces of the software need attention... and see who bristles.

No conspiracy is needed. Companies can remain stubbornly dysfunctional, and will bizarrely spend more to protect that dysfunction, for decades, than to try something better. My father proposed more resilient ways of running an assembly line in the 1960s, upper management laughed. In the 1980s what he proposed was one of the tenets of the "Toyota Way", but it took until the 90s/2000s for American managers to start listening.

This goes double when you realize that software is off most companies' critical path, and addressing performance issues among software teams is way less important than addressing performance issues among, say, sales and marketing teams.

Re:Why is Common Lisp not the most popular programming langu... by Capricorn2481 on Thursday February 15, 2024 @12:14PM (#39385285)
Your comments are describing two different things.

- Technical leaders choosing a language that's easy for developers to Grok to make them more fungible, and make onboarding easier. - Corporate managers purposefully choosing a language as a "Response" to Common Lisp, as you said, to tank the performance of a company for more funding.

One is actually happening, the other requires me to believe corporations even know what Common Lisp is, which would be amazing. You're lucky if management even knows what Python is.

The conspiracy theory I'm referencing is the fact that people think Corporations just hate developer proficiency and will actively fight against tools that make people more proficient. That is different from someone coming to a manager with, from the managers perspective, an idea that could increase efficiency but make them look bad. The first is not something a manager actively does, but the second is an insecure reaction to someone "Rocking the boat."

Common Lisp did not take the world over for lots of reasons beyond hand wringing PMs.

Re:Why is Common Lisp not the most popular programming langu... by bitwize on Thursday February 15, 2024 @04:27PM (#39389156)
You're missing the point.

It's not really a response to Lisp as such, it's a response to anything which makes developers more productive. Developments from the Lisp world have had trickle-down effects that make other languages and IDEs more powerful: garbage collection, hot-reloading, etc. The productivity gains realized by these developments, however, have been more than neutralized by a concomitant increase in corporate BS. So it's not really a conspiracy of orgs out to get Lisp but it does make Lisp a bad fit for organizations which rely on inertia, ego, and fungible worker-units, which is most of them.

Re:Why is Common Lisp not the most popular programming langu... by kiviuq on Thursday February 15, 2024 @01:21PM (#39386254)
Lisp's primordial sin is the fact that it is FP. US cooperations never supported FP (see Microsoft and F#). FP is largely a European phenomenon.
Re:Why is Common Lisp not the most popular programming langu... by kagevf on Friday February 16, 2024 @03:00PM (#39402189)
Lisp is non-opinionated and supports FP, OOP, AOP, in whatever mix you want.
Re:Why is Common Lisp not the most popular programming langu... by jjav on Thursday February 15, 2024 @04:49PM (#39389501)
> This is a ridiculous LISP conspiracy theory that really needs to die.

Not really. Lisp can be a power amplifier if you can keep it under control. But, as I've argued above, that limits you to a small stable team.

If I could start a new company with a few solid Lisp buddies and I knew that's going to be the core team for the next decade, I think I'd use Lisp and it would be a significant productivity gain.

But but but.. those are some unrealistic constraints. If I'm starting a company presumably I want the company to keep growing as much as possible, not stay with a few core people for years. So no, I wouldn't use Lisp.

> to have too many employees

All of them, the goal of both startups and public companies is to continuously grow. As soon as growth stops that is seen as a problem and the decline begins. The only exception is privately held companies who don't run on VC money and don't have any intention to become public. Those might be the best candidates for Lisp.

> to work slowly

No company specifically wants that, but they vastly prioritize being able to hire 10,000 scrum interchangeable cogs to do development and that's not the environment where Lisp works well.

Re:Why is Common Lisp not the most popular programming langu... by lispm on Thursday February 15, 2024 @05:32PM (#39390143)
It's possible to build teams in the low hundreds. Example:

https://www.youtube.com/watch?v=hMVZLo1Ub7M

Siscog, company is 37 years old, 130 employees, 1.7 Million lines of Lisp code. In the planning/scheduling domain for railway companies.

Other example ITA Software, bought by Google for $700 Million dollar. 100+ Lisp developers.

Re:Why is Common Lisp not the most popular programming langu... by jjav on Thursday February 15, 2024 @06:46PM (#39390942)
> Siscog

This is really cool! Had not heard about them. Thanks!

Nice, so looks like low hundreds of developers may be possible given the right environment.

That said, I don't feel it disproves my impression. If the company is 37 years old, still privately held and still has less than a hundred developers then it is clearly not a company looking to grow fast above all else. So feels like a nurturing environment for Lisp.

Re:Why is Common Lisp not the most popular programming langu... by lispm on Thursday February 15, 2024 @10:50PM (#39392982)
> looking to grow fast above all else

They may also not need to. They may have enough people working in a productive environment. If you add a Lisp feature to a large code base, it may not take a lot of time to do so, given the possibility of an incremental development style with Lisp (-> changing running applications incrementally).

Re:Why is Common Lisp not the most popular programming langu... by ragall on Friday February 16, 2024 @09:21AM (#39397372)
> What world are you living in that corporations actively want their employees to work slowly or to have too many employees?

Many companies are risk-averse and prefer predictability to performance. They therefore often choose slow and outdated software products instead of newer, more efficient ones and they prefer using tools that require large amounts of developers, but in a predictable fashion. Using a tool that allows a very small team to perform the job of 10x as many is risky because the bus factor becomes that much higher, as well as the difficulty in finding and training replacements.

Re:Why is Common Lisp not the most popular programming langu... by lispm on Thursday February 15, 2024 @07:06AM (#39381712)
> Symbolics was very much in danger of making large software projects possible by one person or a small team of people.

Just that there were very few of these people. A typical saying: "there were more Lisp Machines (~ 10000 were made in one decade, over all Lispm companies) than programmers for them."

Re:Why is Common Lisp not the most popular programming langu... by fl0ki on Friday February 16, 2024 @08:35AM (#39396784)
> The anti-Lisp is something like Go. Simple, not very flexible, everyone does it the same way mostly, you can plug & play developers like scrum demands we do.

This has not been my experience with Go. The only areas where Go actually enforces consistency is that gofmt has no configuration surface, and Go Modules conclusively won the dependency management war. Other than that, it's still a lawless wasteland.

Foreword: Go is not bad, far from it. It does a lot of things right and you can do a lot worse. But myths around its simplicity, idioms, best practices, etc. have created a generation of monstrous tech debt hiding behind tidy syntax.

One of the worst myths is that it's easy to see the right way to do something in Go, because now when everyone does things their own batshit ways, they each think they did it the obviously right way.

* Go has no build system, and you'll need one for anything but the most trivial projects. Many use `make`, but some people insist that `just`, `ninja`, etc. are worth people having to install extra dependencies. The worst is when projects use straight shell scripts, having all of the platform compatibility problems of make with none of the benefits.

* Go has no macros. Do you use reflection, code generation, or write everything out by hand. You can't even parse some JSON without being forced to make a choice here. (The standard library option, `encoding/json`, is the worst by far. It's also the most popular because of course it is.)

* Even when you're done with that, you still have to choose a way to validate that input, because e.g. Go doesn't even have a concept of a value being "required" so you'll be introducing that somehow. The "validation" frameworks (sigh) that have an opinion on this still do it inconsistently for different builtin types, and often silently do nothing for custom types. Good luck being consistent even within a project let alone between projects and teams.

* Go generics are very limited, and how you work around those limitations can vary greatly, e.g. do you use receiverless methods to simulate associated constants/functions or do you go back to reflection for those. There's still no solution for associated types, you either make do without them or abandon the type system altogether and use reflection. (In a LISP thread it might be hard to imagine just how bad this can get, because there's dynamically typed in a language that's built for it, and there's dynamically typed in a language pretending to be statically typed)

* Channels, mutexes, and atomics all have their place, but most people never understand their tradeoffs properly (and community myths do more harm than good), so not only do they architecture projects around different options, but often the wrong options for their requirements. People will make performance arguments with no measurements, and correctness arguments with no proofs, etc. and when you join an existing project you'll be sifting through its uniquely crafted wreckage to figure out what invariants can even begin to hold.

* The Go community has a lot of vitriol against testing frameworks, but Go has no useful functions for comparing values of non-trivial types, so you either use a test framework after all or reinvent one badly. You can't even define equality in Go recursively through pointer, slice, or map types -- strings compare by contents, pointers compare by address which is almost never useful, and maps and slices cannot be compared at all. It's not even consistent among builtin types. It's very common to use reflection here, see above, this is its own special hell.

* Go has no sum types, pattern matching, or enums. (No, multiple value returns are not enums, they are not a type you can use as a map key, they cannot nest, etc). You'll be reinventing these somehow with structs and interfaces and switches which have to choose to panic or ignore unexpected branches. Many projects, knowingly or not, create unenforceable sum types where different records use different subsets of fields of a struct. It makes C look modern and high-level, because at least C has unions.

I could go on. Go gets far more credit here than it deserves. Again, it does a lot right and it can be used well, but you should not expect quality or consistency from a broad range of programmers just because it's Go. Management that banks heavily on this myth generally pays for it dearly.

Re:Why is Common Lisp not the most popular programming langu... by jjav on Friday February 16, 2024 @03:24PM (#39402474)
> Go gets far more credit here than it deserves.

When I said it is kind of the anti-Lisp, I wasn't thinking of it as credit...

Re:Why is Common Lisp not the most popular programming langu... by skinner927 on Friday February 16, 2024 @11:57PM (#39406518)
I needed this. Thank you.