18 comments

[ 19.1 ms ] story [ 584 ms ] thread
>This creates an interesting tension. Coding agents could dramatically reduce the cost of building an ecosystem while simultaneously weakening one of the forces that causes ecosystems to form in the first place.

This is deeply unintuitive but AI negates language specific ecosystems, while strengthening language agnostic ecosystems.

Pick whatever your favourite programming language is and its ecosystem. With AI someone can take your ecosystem and just port it to their language.

This means the only way you can protect your ecosystem is to play on all language fronts at the same time so porting the software to another language becomes a meaningless exercise.

I’m not sure. my read of this was that AI weakens human ecosystems in general because we don’t need to work together as much when we are all just working with AI separately, but maybe you have specific examples of language agnostic ecosystems in mind? I’m struggling to imagine what that would look like
maybe more like an ecosystem around a framework implemented in multiple language SDKs, here are two I use

https://adk.dev/

https://docs.dagger.io/reference/sdks

both can invoke modules written in other languages from your language of choice

Kubernetes is likely an interesting ecosystem to consider under this lens too

Platforms and programming systems, e.g. Beam.
> With AI someone can take your ecosystem and just port it to their language.

I don't think its that "just". Examples of porting we seen had some prerequisites: being self contained with very strong tests coverage, so AI could iterate N millions times and fix bugs in new implementation. Otherwise such porting could be very buggy and unmaintainable.

Don't all of "serious" programming languages meet that bar? Java, C#, Go, Python, etc all have enormous test suites. Once you get into the third party, things become much more uneven, but if you can restrict yourself to say the top N packages in a language, those are going to have better than average development practices which makes that plausible.
Why even assume that the most optimal programming languages for agentic coding are the ones that humans use? Maybe operate on ASTs directly? Some other form of programming that humans would find hard but that is a good fit for LLMs?
AI still makes mistakes on code with a trillion billion examples, but let’s invent a DSL that only AI can read and hope for the best?
Right on every count except that it needs to be bad for people
LLM's are trained on human code though. Converting the code to its ast tree and training ai on that would be trivial of course, but I imagine there would be information that explains why something exists that would be missed.
I don't care if it's optimal for them. It's clearly good enough. We have, in hand, the ultimate in auditable AI output. We may not be able to audit how it got to the code it delivered, but it is really quite good at delivering code we can read. It would be very silly for us to give it up so that they can be somewhat more efficient or something, if they even would necessarily be that much more efficient.

To the point that I would support banning the creation of an AI-only language that can't be read by humans. Huge, huge, huge step in the wrong direction.

...

Naturally, it is probably inevitable.

But it's still a terrible idea.

I agree. But I'm very sure that it will happen. AI the way we have put it together now will be tempted to create new languages whenever they communicate to optimize channel use.
That's what a good amount of people are doing, including in the Elixir ecosystem (where Jose Valim, the author of OP, mainly resides): build graph/vector DB-based code indexers and finders. LLMs seem to deal with those well and take less turns to give an answer or even find and address a smell.

We also need a metric ton of opinionated linting to sheep-herd codebases into a smaller amount of possible shapes -- which I'm strongly in favor of and see it as the next iteration (of the concept of a single code formatter a la Rust) because it'll put many other bikeshedding time-wasters to rest, hopefully forever.

To be honest though, it's mostly hypotheses and feelings; nobody has truly figured it out yet -- and if some have, they're keeping the secret sauce to themselves.

Operate directly on ASTs? An optimal language that is "hard" for humans to use (hardly), but a good fit for LLMs? No need to reinvent the wheel (endlessly). These guys have been at it and carrying the flag for a very long time now (they're probably pretty exhausted):

A Programmable Programming Language

https://cacm.acm.org/research/a-programmable-programming-lan...

See also:

What is a programmable programming language?

https://hiphish.github.io/blog/2019/06/22/what-is-a-programm...

> AI negates language specific ecosystems ... Pick whatever your favourite programming language is and its ecosystem

I think this is only true when it comes to LLM raw output. There's also the concern of checking its work. A compiler that can check many aspects of correctness (static types, null) is a huge boost to AI. It can use the compiler directly to check its own work.