I've gotten best results with LLMs generating Go, Java, and C# code as they have the best combination of strong type systems and fast or no compile times.
I used TS and Go mostly with LLMs and they are very good at them. Python has been fine too honestly. A surprise entry is Flutter/Dart. They are very good at it. I think it's a mixture of types, the good tooling and focused documentation.
All of these I run in a cli that has automatic LSP in it so that's a huge factor too. The agent is automatically told when there would be compile time errors as well as linter issues.
I don't think that Devs making those chooses but business and industry forcing devs to explore other options. One of the main issues with Scala currently that is no good selling story anymore for a business peoples. Even Rust story with 'memory safety' very fragile because not a lot of businesses see it as huge issue which worth additional effort (probably only MS backing helps there).
In the past it was lot of selling points that business could see:
- 'better java' - more velocity over java without loosing anything
- 'type safety / FP' - less errors that cost money in production (backed by 'Typesafe/Lightbend' company)
- 'akka' - platform for distributed/concurrency applications (in pre kubernetes era was big demand for it)
- 'spark' - initially Scala was only way to use it fully
- 'twitter' - startup success story
- and few more
But now nothing from this list has any real meaning for peoples making decisions currently.
Kotlin actually suffer from this too as 'better java' not that big deal when java constantly improving.
However Kotlin has Google's as godfather, want to develop for Android with the official tools? Kotlin it is.
And no, Oracle lawsuit hardly has a role into it, as Android is still mostly all about Java ecosystem, Gradle, InteliJ, Android Java gets updated even if sloooowly (Java 17 LTS currently).
Had this not been the case and it would be yet another JVM guest language.
Just to put it in perspective, most Scala programmers rejected Scala3 before it was even written. The Scala team, in their infinite wisdom with a collective 2 years of professional programming under their belt knew better. Nobody switched and Scala2 has been slowly dying with their neglect ever since.
PS The Scala team should have been fixing their type inference engine which lacked some important features and needed a better (Horn clause based) architecture. They did a complete rewrite instead.
Then you have Metals for VSCode InteliJ plugins, while the Eclipse plugin was dropped.
InteliJ plugin is much further than Metals, however there is the conflict of interests with pushing Kotlin instead.
Meanwhile most Scala shops have pivoted to also give feature parity on modern Java, and Kotlin, thus reducing the interest in using Scala in first place.
However as mentioned, they are doing cool stuff with capabilities at EPFL for Scala 3.
I'd argue that any type system that don't support enforcing non-nil/nullability is not strong in any way and probably worse than not having any type system at all as they give a false sense of security.
All of these I run in a cli that has automatic LSP in it so that's a huge factor too. The agent is automatically told when there would be compile time errors as well as linter issues.