I was hoping for something like a language with properties that change/morph as it functions, that make an LLM unable to use it by not having a means to track and continuously reference the changing cipher/state or something.
I was hoping for something like a language with properties that change/morph as it functions, that make an LLM unable to use it by not having a means to track and continuously reference the changing cipher/state or something.
A LLM will probably have trouble with C if it had no training in C and you just dumped the specs as part of the prompt...
If the LLMs were thinking in the sense that some people say they are, they will easily recognize the adversarial nature (e.g. letter counting in the language) and build their own tools to write conformant code right away. As a normal human would also build tools to solve the things we know we're not naturally good at.
The effect should be that a few tokens are spent on building the tool, and then the rest of the problem can be solved with a "normal" amount of tokens without brute-forcing the solution.
If the LLMs are glorified pattern matchers they might not find enough patterns in the corpus of human knowledge and remain inefficient at it.
The weakness I see is rather that this kind of problem-solving can be pattern matched on the corpus of existing human knowledge, so it may be that pattern matching on human thinking might still be enough to solve these problems.
I'm antagonistic to the deployment and use of LLMs for a variety of reasons. Nevertheless "pattern match on a huge database" is a poor way to think about how these systems operate. They are networks of semantic and syntactic relationships; when you inject words, the network activates in ways that are hard to predict if you think of it mere "pattern matching" (although some of the activation will be that). If you then feedback the activation into the network (various ways to do this), the result is even less like "pattern matching" a just a little bit more like "thinking" ...
Programming state gets way more complicated, but code is generally written to help people understand it greatly simplifying the process. Feed in “cursed” code leveraging obscure language features in creative ways and LLM’s and most people fail.
You're right that it's worth considering in the same way as the letter counting tricks, since coding agents can get around that in the same way. But I would say the letter counting has the advantage that it at least is easy for humans.
I am just as interested in making the language hard for LLMs as for LLMs+coding agents though.
Note: * = Anchor player (fixed rating, used for calibration)
The fact that you can make something obtuse and difficult to use for everyone is less interesting than what is displayed here.
and there's nothing about what is described here that strikes me as not being "obtuse and difficult to use" for humans. Here's a quote from the spec:
> The language treats adverbs as identifiers, but referring to them requires anagrams.
"The design is very human!"
The attempt is certainly made to keep it as human friendly as possible, there is definitely room for improvement though. I'd love ideas of how to make it easier for humans while keeping it hard for LLMs.
let see how soon llms will handle simpler case?