lainchan / Ω

design an anti-LLM programming language

Koos van der Merwe · 2026-02-09 04:33
how would you design a programming language that is hard for LLMs to train on or use effectively? is it even possible? what approaches would you suggest? some random ideas: - behaviour depends on external factors (day of the week, moon cycle) - very loose to no syntax (think the shortcomings of large lisp projects where macros and DSLs are abused) what else?
Nguoi La · 2026-02-09 04:37
>>91047 But why? Anybody who uses a language model to write their code will reap the downsides of doing so eventually anyway.
Ishikura "Tatsu" Tatsuhiko · 2026-02-09 05:13
Brainfuck would probably be difficult for an LLM from being so obscure and the patterns might be difficult for it to figure out with such small data pool to pull from.
w2 · 2026-02-09 06:22
>>91047 Erlang would be difficult
Agent Smith · 2026-02-09 09:49
I wouldn't, and it would be completely pointless.
William Holtzer · 2026-02-09 09:57
From chatgpt: >Here’s a clean, idiomatic FizzBuzz in Erlang—simple, readable, and very Erlang-y. -module(fizzbuzz). -export([run/1]). run(N) when N > 0 -> lists:foreach(fun fizzbuzz/1, lists:seq(1, N)). fizzbuzz(N) when N rem 15 =:= 0 -> io:format("FizzBuzz~n"); fizzbuzz(N) when N rem 3 =:= 0 -> io:format("Fizz~n"); fizzbuzz(N) when N rem 5 =:= 0 -> io:format("Buzz~n"); fizzbuzz(N) -> io:format("~p~n", [N]). How to run it: c(fizzbuzz). fizzbuzz:run(100). If you want a pure functional version that returns a list instead of printing (nice for tests or interviews), here’s that too: fizzbuzz(N) -> [value(I) || I <- lists:seq(1, N)]. value(I) when I rem 15 =:= 0 -> fizzbuzz; value(I) when I rem 3 =:= 0 -> fizz; value(I) when I rem 5 =:= 0 -> buzz; value(I) -> I. >Want a recursive version, a tail-recursive one, or something OTP-flavored just for fun? Can't remember if that last definition of value(I) is correct but everything looks fine. You'd be stupid to use """AI""" for real code, though.
Tyrell Wellick · 2026-02-10 06:15
LLM's struggle with low level math. Ask it for a formula and there is a good chance you will be given one (it's like code). Ask it to put numbers into this formula and give you an answer. sin(3^5*6)+1*PI is always same but that's not how AI operates, it operates on probability. It is supposed to give you a different result each time it answers and it's anti thesis of math. It's like asking some what's 2+2*2 and them instead of counting just guessing. They got better at simple add, multiply and such but telling them to be a calculator breaks them. ChatGPT was so nice to me it offered some calculator, I don't see sin() pow() nor PI on it but I guess they try to lead me away from using AI to do calculations. We can see why, it did fine with 3^5*6 and 1*PI but sin() proved to be too much and we can see it's not matter of rad or deg. I don't see a point in designing language hard for LLM because all languages are like high level math: formulas and templates while you try to go back and take it to primary school level where it's not about universal templates but rather detail.
Spooky · 2026-02-10 10:05
>>91066 I guess they will always answer with something in π±1, but they don't have enough trigronometric tables in their training set. Not that running probabilistic models to compute things we have efficient algorithms for makes any sense anyway. I had a different result using Le Chat. It tried to solve the problem by breaking it down like a human would. Too bad 232×2π isn't 1457.97. Correcting it improved the result somewhat, but it required making the computation myself anyway. > It is supposed to give you a different result each time it answers That isn't exactly true. Chatbots do that as a feature to appear more human, but LLMs are intrinsically deterministic. Their model is probabilistic in that they try to extract probabilities, from their training dataset, but an LLM with its weights set will always output the same answer to the same prompt. Using LLMs as calculator is definitely a case of PEBCAK, but I wish they would just say something like "I am a language model and not intended to make exact computations. If you want, I can try to guess an estimate or explain how to calculate it properly."
Boris Grishenko · 2026-02-10 10:41
>>91070 I tried to coerce it into calculating the multiplication properly, but oof. The prompt was "Multiply 232 by 2π using the lattice multiplication algorithm", with the context from the previous questions. The multiplication table is correct, but the addition table is complete nonsense. It says it is summing the diagonals (the correct lattice-multiplication algorithm), but it actually sums the columns and a random mix of numbers. The best part is it completely ignores that result when placing the decimal point and giving the final answer.
Molly Millions · 2026-02-10 11:58
>>91050 Brainfuck is not obscure at all, it's a meme and everyone knows about it.
Mario Rossi · 2026-02-11 06:10
>>91070 >That isn't exactly true. Chatbots do that as a feature to appear more human, but LLMs are intrinsically deterministic. huh, I thought that weights only affect probability and you can have same answer with same probabilities only with same seed for random >Using LLMs as calculator is definitely a case of PEBCAK, but I wish they would just say something like "I am a language model and not intended to make exact computations. If you want, I can try to guess an estimate or explain how to calculate it properly." That would be one, other is just paste user input into some calculator software and return result (if calculator offers step by step even better). It's still waste because why would I not input the data manually but if they are so hot about having calculator in their AI just make it use one instead of it pretending to be one. Seems easier to me than to train it with endless possibilities.
Unspecified · 2026-02-11 07:01
>what approaches would you suggest? Well, I think try to develop an LLM resistant programming language/syntax is probably not going to work in the long term. What I would find interesting is using hostile practices to throw off learning. A few examples : - Replace ALL operators and common functions with aliases. (A friend did that for a C assignment in class. He replaced everything with variations of the teacher's name with different upper case letters. was pretty funny.) - Using attacks to empede on learning inside code, such as using invisible characters to throw off or make the model learn that these invisible malicious characters are integral to a codebase. Just make it really annoying to train something on your code. The drawback is that it is also annoying for you to work on it, unless you create tools to deobfuscate/de-soykaftify your work.
Jane Doe · 2026-02-23 08:57
>>91047 Make a language and then don't tell anyone about it. Only release compilation artifacts. If people ask what you write in say D, no one who matters will ask second questions.
Neo · 2026-04-06 07:56
>>91047 LLMs are good at whatever is in their training data, so the easiest strategy would be to check GitHub language stats and base your language on consistently unpopular paradigms. If you want to be even more LLM resistant, you could narrow it down to languages that are difficult for humans to learn - if it's tricky for a human, then it should be tricky for a machine trained on human-generated data. If you're willing to throw some money at the problem, you could also take an empirical approach. Just buy API credits for the most powerful coding models and give them leetcode tests in different languages. Observe which languages they consistently fail in, then make a spreadsheet of everything those languages have in common. As a wildcard, you could throw in something no one has ever done before. Invent a new data structure or malloc system, for example. The LLM can't learn it, because the training data doesn't exist. The most important question is why you want to do this though. Every time a company tries replacing programmers with LLMs, they end up forced to rehire the programmers for DevOps, QA, SRE, Cybersec, and just generally cleaning up the mess created by the AI. When your open source code is used for training AI, it contributes to more of these highly paid jobs for humans. >>91093 >just paste user input into some calculator software and return result Don't they already do this? I noticed GPT got a lot better at chess overnight with the 5.0 update, so I assumed it was passing user inputs to a chess engine and returning the result. There's also a video somewhere on YouTube where a mathematician tries testing Sam Altman's claim that GPT is "a PHD level expert at everything" by giving it his PHD thesis to solve. He said the "PHD level" claim is false, but wasn't actually disappointed with the calculating abilities.
Netrunner · 2026-04-07 16:54
>>91047 At the risk of sounding edgy, make racial slurs and gendered language a required component of the language and require that all code using the language be released under an MIT+NIGGER license. that should be sufficient to prevent LLM and other corporate use.
BloodCat · 2026-04-08 00:09
>>91571 This simply will not work, the scripts you interact with clean up the language before anything is presented to you. It is trained on logs and source code dating back to the 90s, it says nigger to itself, just not to you. >>91047 You are approaching this problem all wrong. You are seeing AI as something procedural which can be out logic'd. AI is brute forcing based on huge data sets. Regardless of the language used, once it has a sufficient data set it can brute force an answer. What you need are programming practices which the technology isn't built for. This guy is close but not getting there, >>91066 because the AI doesn't need the math answer, it just copies the equation and changes the numbers. However if you were to utilise spelling in combination with this, for instance using a function to count the 'r's in strawberry then using stored values such as these in equations then it becomes: function lc(word, letter) local count = 0 for i = 1, #word do if word:sub(i, i) == letter then count = count + 1 end end return count end local val1 = lc("strawberry", "r") local val2 = lc("banana", "n") local bit = tonumber(tostring(val1) .. tostring(val2)) Just as a crappy mock up idea. This might obfuscate things for now but the problem is going to be the future. AI is getting good training on ASM, once it reaches that point it wins. Converting to ASM and even decompiled binaries will be easily read and rewritten, any code inefficiencies gone and any chance of competing with AI a total waste.
Anonymous · 2026-04-08 00:24
think about what a compiler/interpreter is - an automated program that parses a programming language. if a programming language is parseable by a compiler or interpreter then it will be parsable by an LLM.
Bob Arctor · 2026-04-08 16:59
>>91047 any LLM bound by legal procedure can be stopped by including the full public license of the program in the comments of every instance of the program- with two caveats: the public license has to require the full word for word application of itself to any instance of the software- retaining the structure of the license being required BY LAW the license has to contain a variety of slurs so that any commonly used llm wouldn't dare replicate it. in my experience no AI i've found that wasn't locally run and heavily modified would utter the n-word under any circumstances whatsoever. also notable it's a good way to tell an LLM from an actual person online- sort of a modern turing test I call it the Nate Higgers test
Ivan Horvat · 2026-04-28 03:53
It is pointless. Programming will become a field divided into two levels of professional experience: there will be junior developers who will prompt company's AI, and senior developers who will have to verify is their project heading in the right direction and talk to the management. The concept of mid-level developers will disappear entirely because companies have no reason to keep employees with higher salaries than juniors but less or none responsibility than seniors.
Lain Iwakura · 2026-04-29 14:13
LLMs are just predictive algorithms working with a huge library of training data, they don't actually think or understand anything, they just use statistical analysis to predict what strings often follow other strings in things other people have written. it doesn't make any difference how intuitive the programming language is or what the syntax is like, if enough people have written and published working code in it then the LLM can train on that code and do things with it and the more training data it has to work with the more it can do.
Technician · 2026-05-30 14:20
>>91047 I haven't been on lainchan in years and now all these antiAI posts? I thought y'all welcomed the cyberpunk future?
Roger Pollack · 2026-05-31 07:34
Design one that's very similar to a very popular and widely used one but different in key ways. For example LLMs cannot easily stop from throwing some bashisms when told to write POSIX shell, CAML when told to write Standard ML, LaTeX when told to write plain TeX, etc.
Joe Bloggs · 2026-05-31 18:47
>>92207 we already live in a cyberpunk dystopia. a high performance markov chain changes absolutely nothing.
Switch · 2026-06-13 23:05
>>91047 make every word in it an url optionally make it as offensive as possible llms are not allowed to repeat those
Emmanuel · 2026-06-19 14:57
>>91047 Easy peasy. Scratch. LLMs can't drag around blocks of code and track the movement of the yellow cat in their head.
Bob Arctor · 2026-07-19 17:22
>>91047 I guess befunge or some 3d (maybe even +4d possibilities are endless) spatial programming language would throw most LLMs off Actually let's test it: prompt: make a befunge-93 program to check if a string is all lowercase duck.ai > v v >01 v v v < v !v ^ v > v ^>~:00p>0< < ^ 1p < ^ >~:01g:10+v < ^ ^ v ^ 10+< < ^ :00g!v < ^ :00g v < ^ ~ < Complete slop, here's the code that is actually reachable > v v Which does nothing and traps itself into an infinite loop, it has other really obvious mistakes like >0< or v ^ too so I didn't bother to check the rest of the program, but it's very obvious it does nothing chatgpt it will first output &>:1-:v ^,_$ >:!"z"`|:!"a"`|!|v >0@ ^1@ Which is complete nonsense, but in the same reply it will tell you so, after that it just refuses to write befunge because it's too hard, the smartest move honestly claude > I'll build this by actually simulating it — writing a small Befunge-93 interpreter and iterating on the program until it's verified correct, rather than hand-tracing the stack. Honestly impressive, but not in a good way, let's see what it cooks... ...still waiting for it to answer... ...(30min later) I just stopped it, I presume it got stuck on an infinite loop too, useless github copilot (gpt5.3 codex) At first it asked me for clarification > Should the program read the string from standard input (typed at runtime) or check a hard-coded string embedded in the program? > How should non-letter characters be treated? (A) ignored (only alphabetic characters must all be lowercase), or (B) considered a failure (the string must contain only lowercase letters a–z). > What output do you want on success/failure? (e.g., print 1/0, "YES"/"NO", or something else) to which I replied > typed at runtime, non-letters are considered non-lowercase, push 1 to the stack if true 0 if false So I was expecting it to be better than the others, but it got stuck thinking again I stopped it after 20 minutes gemini ~:1+v >1.@ >:"a"`#v_0.@ >:"z"`!#v_v ^ < Same old story, it will ask for a single char, perform some useless operations then get trapped at v # the rest is nonsense but at the very least it seems to know it has to push the strings at the edges of the range into the stack somewhere, that's as far as it goes tho Here's a human made piece, it leaves a 0 or 1 at the top of the stack depending on whether or not the whole string is all within the a-z ascii range ~:!#v_:"`"-0`v |*`0$#-\"{"\ < >0@1< As you can notice, whether you hardcode the string or ask it at runtime doesn't matter in the slightest, that's what the stack is for in the first place you can just wire up the topleft of the circuit to a > and it'll do the the same thing "lainchan"v v < >:!#v_:"`"-0`v |*`0$#-\"{"\ < >0@1<
Frank Garza · 2026-07-19 19:24
>>91047 Declare your programming language to be designed to comply to several industrial standards. Embed captchas into the language. Tie the captchas' characteristics to the hardware specs (making LLMs suck at their own neuroslop in the process)
Random · 2026-07-30 15:25
>>91816 There will be an intermediary state then, that of the freshman who needs to learn from the senior commissar who can see if the code and its project are coherent in regards of the current objective. >>91828 Isn't it what most humans do? >>92457 Can't they just replace them on the fly? >>92571 They definitely have issues with graphical assets but that's because they're not tailored for this, so the tool must remain very niche to the point that it's not profitable to waste billions on some bizarre virtual scripting tool that even coders will hate with a passion. Otherwise that's like Apple vs Microsoft when it comes to viruses. As soon as one system becomes popular enough, the entire IT world will adapt.
Wintermute · 2026-07-31 15:13
>>93400 And thats why they have UML and Visual Programming Languages
Nemissa · 2026-08-09 15:21
Why would you want that? You want to make languages more LLM friendly to be more productive.
Roy Batty · 2026-08-23 16:29
The only feasible mid-term solution I can think of is poisoning the training data one way or another. Designing the language to frequently poison models that ingest code written in the language? Designing a language that will be data-uneconomical to pursue training on, because it interferes with comprehension of (currently) much more prominent languages? It is hard see a greater appeal in it, compared to just directly poisoning training data for AI Models. Don't scramble your genuine data, bait it with toxic decoys. While we're on the topic, would fragmentation across a thousand languages make AI training more or less difficult? Programming or human spoken/written, either) >>91580 Troubling and underrated post. >>93149 >Declare your programming language to be designed to comply to several industrial standards. I don't get why this would work. >Embed captchas into the language. Best suggestion in the thread, but how do you do a captcha outside a client-server environment? There isn't any difficulty learning the function to imitate, it's right there on your computer, in the source code. >Tie the captchas' characteristics to the hardware specs (making LLMs suck at their own neuroslop in the process) I don't understand this. >>91597 >>91571 This still doesn't work. The models will imbibe code in your language and be able to output code in your language. The cuss filter is an overlay, not integrated into the model itself. If at some point corporate-aligned deniable operators (aka, any employee) need to work in your language, they won't ask it "can you put tell me what I need to do with the licenses? Can you say it for me?" They will say "I've managed all the ethical and legal issues with using this language, make a snippet that does X, Y, Z." Then they will handle the license stuff as best serves their interest.
Ivan Horvat · 2026-09-03 00:19
Anything you did to make it annoying for LLMs would make it annoying for people to learn. If I was making something like that I would make behaviors dependent on the line number and have a bunch if functions that performed a function, but also had a side effect on the next line of code. These effects could stack making it very hard to deduce a statistical pattern.