HNHacker News
TopNewBestAskShowJobs

abreslav

15 karma · joined November 11, 2013

submissionscomments
abreslav··on Kotlin creator's new language: talk to LLMs in specs, not English
> * model transforms text into a formal specification

formal specification is no different from code: it will have bugs :)

There's no free lunch here: the informal-to-formal transition (be it words-to-code or words-to-formal-spec) comes through the non-deterministic models, period.

If we want to use the immense power of LLMs, we need to figure out a way to make this transition good enough

abreslav··on Kotlin creator's new language: talk to LLMs in specs, not English
When you translate spec to tests (if those are traditional unit tests or any automated tests that call the rest of the code), that fixes the API of the code, i.e. the code gets designed implicitly in the test generation step. Is this working well in your experience?
abreslav··on Kotlin creator's new language: talk to LLMs in specs, not English
Very much agree on coverage. We're actually doing something in that area: https://codespeak.dev/blog/coverage-20260302

For now, it's only about test coverage of the code, but the spec coverage is coming too.

abreslav··on Kotlin creator's new language: talk to LLMs in specs, not English
Very much agree. I like the imperative vs declarative angle you take here. Thank you!
abreslav··on Kotlin creator's new language: talk to LLMs in specs, not English
We'd love to hear your feedback! Feel free to come to our discord to ask questions/share experience: https://l.codespeak.dev/discord
abreslav··on Kotlin creator's new language: talk to LLMs in specs, not English
There are different kinds of tests:

* regression tests – can be generated

* conformance tests – often can be generated

* acceptance tests – are another form of specification and should come from humans.

Human intent can be expressed as

* documents (specs, etc)

* review comments, etc

* tests with clear yes/no feedback (data for automated tests, or just manual testing)

And this is basically all that matters, see more here: https://www.linkedin.com/posts/abreslav_so-what-would-you-sa...

abreslav··on Kotlin creator's new language: talk to LLMs in specs, not English
Two things to mention here:

1. You are right that we can redefine what is code. If code is the central artefact that humans are dealing with to tell machines and other humans how the system works, then CodeSpeak specs will become code, and CodeSpeak will be a compiler. This is why I often refer to CodeSpeak as a next-level programming language.

2. I don't think being deterministic per se is what matters. Being predictable certainly does. Human engineers are not deterministic yet people pay them a lot of money and use their work all the time.

abreslav··on Kotlin creator's new language: a formal way to talk to LLMs instead of English
We are not trying to make things easier for LLMs. LLMs will be fine. CodeSpeak is built for humans, because we benefit from some structure, knowing how to express what we want, etc.
abreslav··on Kotlin creator's new language: a formal way to talk to LLMs instead of English
> Also it seems that the tool severely limits the configurability of the agentic generation process, although that's just a limitation of the specific tool.

Working on that as well. We need to be a lot more flexible and configurable

abreslav··on Kotlin creator's new language: talk to LLMs in specs, not English
> The limitation seems to be that you can't modify the code yourself if you want the spec to reflect it

Eventually, we'll end up in a world where humans don't need to touch code, but we are not there yet. We are looking into ways to "catch up" the specs with whatever changes happen in the code not through CodeSpeak (agents or manual changes or whatever). It's an interesting exercise. In the case of agents, it's very helpful to look at the prompts users gave them (we are experimenting with inspecting the sessions from ~/.claude).

More generally, `codespeak takeover` [1] is a tool to convert code into specs, and we are teaching it to take prompts from agent sessions into account. Seems very helpful, actually.

I think it's a valid use case to start something in vibe coding mode and then switch to CodeSpeak if you want long-term maintainability. From "sprint mode" to "marathon mode", so to speak

[1] https://codespeak.dev/blog/codespeak-takeover-20260223

abreslav··on Kotlin creator's new language: talk to LLMs in specs, not English
I second that :)
abreslav··on Kotlin: A New Hope in a Java 6 Wasteland
Great slides! I hope we'll be able to adopt this style for our introductory materials
abreslav··on Kotlin: A statically-typed language that compiles to JVM bytecode and JavaScript
Many ideas of this sort are flying around, but we postpone the decision to some time after 1.0