kelnos
6 hours ago
I feel like everyone has some sort of justification for why their pet language is now the best because LLMs can work in it better for a bunch of reasons.
Javascript/Python is the best because there's so much code out there that the LLMs can train on, and LLMs can write lots of tests to make sure everything is correct. There's nothing to compile, so the LLM can iterate quickly.
Rust is the best because the LLM gets great feedback from the compiler because of its strong type system, and it can deal with the borrow checker for you.
Go is the best because it's a simpler language with a decent type system, and the LLM can reason about that well, and will never forget to check an `err` return. The compiler is fast, so the LLM can iterate quickly.
I could write similar praise for C, C++, Java...
At this point I don't think any language is the best "because LLMs". I think there are quite a few languages that LLMs are probably not good at, but you have lots of choices if you want something they are good at.
resonious
5 hours ago
Go is the best because it has a pretty fast runtime, very fast compile time, rich ecosystem, and is simple to deploy.
Fight me. As a classical software engineer, I hate Go, but in this new era it wins so easily. For web, at least. The subjective stuff about how the language feels is all out the window now.
yturijea
44 minutes ago
I'm making a galaxy civilization simulation using go-lang and it is sooo fast to compile and run, even on many iterations of the simulation, and I have 0 dependencies on risky 3rd party libraries etc.
As a quite well seasoned software engineer working many years with Java, C#, PHP etc. both in complex calculation systems and webservices, go-lang just feels superior in so many aspects. While I might still fare better in say Java is purely a function of me spending much more time in it.
So I see your point in myself and agree and agree. (I just don't hate go, I think we need to give it a chance)
mike_hearn
4 hours ago
All those things are true of Java/Kotlin, except even moreso. So LLMs should all write Java.
There's no good way to resolve these kinds of debates. I don't think AI changes much. It thinks in the same sorts of ways we do, just faster, so things humans find hard or unproductive can also be hard and unproductive for AI too. There are a few exceptions where it's able to reason fast enough that things which would be dumb for humans (like reading raw assembly or bytecode) are no big deal for AI. But mostly it's the same.
aktau
3 hours ago
> All those things are true of Java/Kotlin, except even moreso.
The parent did mention:
> ...and is simple to deploy.
Also, my experience with Java programs is that the memory overhead is even higher than Go (where it's a ~2x of what the program holds as heap due to the GOGC=100 default).
mike_hearn
2 hours ago
It's not harder to deploy in my experience. When people say this they tend to imagine deployment as "scp binary user@host". Well,
./gradlew installDist # build the app for deployment
rsync -avz --delete build/install/my-app/ user@host:my-app/
Just repeat to upload new versions. rsync vs scp isn't harder and the Java version will be faster (incremental). If the host doesn't have a JVM installed, ok... apt-get install one and your distro will keep it up to date. One command.But in reality most software isn't deployed by copying binaries around. You'd want it to be at minimum run by systemd or kubernetes, for example. And if you want a Docker container then it's pretty easy. Your framework probably configures it out of the box:
./gradlew dockerBuild
Push to the host and start it up.The reason it's not harder in the end is that the above takes cares of many annoying details that crop up in real deployment, like knowing what CPU and CPU extensions does the host have? Can you deploy incrementally without recopying the whole thing or does that not matter?
The above is for servers, but it's not really harder for CLI tools either. Fat JARs exist. If the user doesn't have a JVM, once again, they can install one easily from their package manager and then it's done - no need to create and distribute half a dozen binaries for all the different OS and CPU combinations that are out there.
But if you want to make AOT compiled binaries and get lower memory usage too, there is GraalVM which can do both. You've got the choice.
Note how the above debate isn't changed by AI in any way. Their weaknesses remain weaknesses, their strengths remain strengths. I wouldn't personally use Go because of its poor feature set and debugging support (errors don't reliably create stack traces). But the arrival of LLMs changes nothing about these preferences and choices. At most you can talk about token efficiency, in theory, but the attempts to measure the real world impact of that don't seem to have yielded decisive evidence.
erichocean
an hour ago
It's not any more difficult to build and run a JAR, either.
And compared to Go, the production observability is very good.
I also use Clojure and can observe my running app with a full REPL.
ModernMech
2 hours ago
> There's no good way to resolve these kinds of debates
This debate in particular is easy to resolve: there is no “best“ language for all use cases and I agree LLMs have not changed that. The best language for a scenario depends entirely on the scenario, so talking about best languages without a scenario in mind is completely the wrong discussion.
ndr
2 hours ago
I've managed to avoid Go until very recently.
AI + smaller docker images made me look at it again.
The fact I can test/build concurrently and much faster than rust, off the same repo without messing with sccache and worktrees, make it easily the winner for many web/self-contained scenarios.
atilaneves
3 hours ago
How is Go simpler to deploy than the alternatives? C++ has been able to compile to statically linked binary for ages.
I think Go's compile times are great for the AI age, but that "pretty fast runtime" is not.
pjc50
2 hours ago
I've written plenty of C++ for embedded systems, and very little Go, but if I find anyone trying to connect C++ to the web I will try to get them fired for cybersecurity violations.
Go is close enough on runtime for all reasonable purposes.
jjav
3 hours ago
Java has an extremely fast runtime and rich ecosystem. If we're going to never look at code and let AI handle it all (not sure I agree, but let's assume), then Java is the obvious best choice.
robmccoll
2 hours ago
Java has a slow iteration time - long compilation and slow startup. Common frameworks add even more time before the program does anything useful. A fairly complex Go web backend can recompile and completely start in under a second. A relatively simple Java backed can take more than ten seconds.
pjmlp
an hour ago
Only if you holding it wrong, write the same stuff in Java like in Go, without frameworks, all by hand and you will get your second.
Even better don't throw away the frameworks, learn to use JIT caches and hot code reloading tools, and you can even debug, edit and continue from the comfort of an IDE, doing several useful actions.
loglog
an hour ago
That's not Java being slow, that's Gradle and Spring being slow.
dzogchen
3 hours ago
Extremely token hungry though. Which will be a problem once the price goes up!
luipugs
4 hours ago
What about being a classical software engineer makes you hate Go?
toolslive
3 hours ago
probably the:
```
...
bla, err := doSomething(...);
if err != nil {
...
}
...
```
pattern.bigfishrunning
37 minutes ago
in C that's
...
...
err = do_someting(&bla, ...);
if err != 0 {
...
}
...
...It's not that different
kjs3
22 minutes ago
He didn't say he didn't hate C too.
latexr
3 hours ago
> Fight me.
No. I’m sick of flame wars, and I already was before LLMs turned everyone even more insufferable. You can fight yourself in your own corner, if you like. Never thought I’d miss emacs VS vim.
Use whatever language you want, I couldn’t give less of a shit. I have no desire to waste time on a dick-measuring competition, and that’s doubly true because people in these fights are measuring other people’s dicks.
> As a classical software engineer, (…) The subjective stuff about how the language feels is all out the window now.
Subjective stuff never mattered to people who take no pride in doing proper work. That hasn’t changed because of LLMs, it only shone a brighter light on those people.
mpweiher
5 hours ago
You forgot: Objective-Smalltalk is the best, because Agents need architectural guidance to avoid turning your codebase to mush and Objective-Smalltalk lets you express the architecture (and its constraints) directly in the code.
It also allows for coding at a higher level, meaning that code is closer to the prompts.
Is it actually true? OF COURSE IT IS!!!
So no idea, but after long dismissing that idea precisely because it looks like a "just so" explanation for my obvious favorite choice I am starting to come around to the idea that it might just be true in spite of the obvious bias...and definitely worth testing.
vconnor
4 hours ago
You jest, but only in Smalltalk you can add a method to the metaobject to do any computation via LLMs, given the object’s internal state.
Silly example. Instead of:
Calculator number: 2
Calculator operator: #plus
Calculator number: 2
(Calculator answer) print
You could just do: Calculator llm: “calculate the sum of 2 plus 2”
(Calculator answer) print
Smalltalk is introspective enough to make this integration a breeze, remains to be seen how prone to hallucinations this might end up being.EDIT: fix the wonky syntax
mwpmaybe
4 hours ago
> Ruby is the best because it's token-efficient
Is one I've heard...
pjc50
2 hours ago
How are LLMs with APL/J? Any language with ρ as an operator has to be pretty token efficient.
dan-robertson
2 hours ago
Why should <.> <length> be less tokens than <RHO> <SPACE>? Obviously there will be examples that more obviously use fewer tokens but I’m not sure that the token efficiency stuff is that correct in general. Especially as it is often a lot more work to craft the correct APL for a problem than to craft suboptimal but correct python.
varjag
5 hours ago
As the models get better we're increasingly into splitting hairs territory with these comparisons. A model might be more effective at Common Lisp than at Turbo Pascal but we're talking perhaps few tens of percent rather than some orders of magnitude differences. It doesn't really matter all that much any longer.
victorbjorklund
4 hours ago
Yea it is silly because everyone knows the best language for LLM:s is Elixir
flir
3 hours ago
I think the answer is definitely "most training data slurped". But for a lot of applications that should be assessed per-framework, not per-language.
(I like frameworks and libraries for LLM work. They keep the machine on the rails for longer, and the end product is more consistent).
bjoli
6 hours ago
I have a pet language Inm love because LLMs have shown themselves to be quite lousy at writing it. It makes programming a lot more fun when you have to do it yourself.
I mean, it can still reason about it, but the code it (Claude and Gemini) frequently doesn't compile and it throws edits onto it until it does. When it then compiles this pretty much c# written in a functional HM-typed sexpr language that lacks classes.
AI has been great help in writing the compiler, though. I got stuck in codegen after having written a lexer, parser and type checker, and not only did it make a faster and better code generator than I ever could, it also made the type checker about 5x fater.
caaqil
3 hours ago
> Rust is the best because the LLM gets great feedback from the compiler because of its strong type system, and it can deal with the borrow checker for you.
I thought Rust was the best because it was moral.