The 1:1 is long gone, that is the UNIX K&R C days.
Modern compilers are full of heuristics, PGO driven optimizations, machine learning compiler passes, JIT compilers, and various kinds of GC implementations, the time of 1:1 mappings is long gone.
The 1:1 is long gone, that is the UNIX K&R C days.
Modern compilers are full of heuristics, PGO driven optimizations, machine learning compiler passes, JIT compilers, and various kinds of GC implementations, the time of 1:1 mappings is long gone.
All observable and defined side effects should be identical otherwise you have a compiler bug. Optimizations that are not generically semantics preserving may be used, but should only be used where the program is semantically identical for your use case otherwise you have incorrectly used the options available in your compiler.
For example a JIT compiler can produce completely different kinds of machine code depending on the application data that was processed, and the overall machine workload.
The output program does what the input source code does. The abstraction is a precise translation and non-leaky, it just admits multiple possible internals. That does not make the translation any less precise.
Newer languages consider this to be a misfeature, and have taken pains to define far more of the language semantics outright, even if the definition is simply "This is a compile error" or "This is a panic." It's interesting that we're now going back the opposite way with LLMs, with their ability to generate code that does something for any natural-language prompt being a major selling point.
Plus, these undefined behaviours are well-documented, even if easy to miss.
Whereas in LLMs, the whole thing is undefined behavior.
Bingo!
When you exploit undefined behavior using a compiler, what do you do? You verify that its output, the object code, does what you intended with the undefined code. Or else you at least have to test the heck out of it.
Gee, what is all that similar to ...
i cannot type "make me an exploit based on whatever these diffs fixed" into a compiler and get usable output. and i cannot type "make me a budget, here is 6 months of credit card receipts" into a compiler and get a budget. etc.
Here are some suggestions,
Workato, Boomi, Sitecore AI, Optimizely Opal, Workfront AI...
You will naturally have to split the budget calculation in a few agentic nodes, and maybe a couple of tools.
i thought we were talking about compilers vs. llms.
Agentic programming tools are nothing other than the old ideas from UML code generation in a new package.
Not sure I agree with that. That was still a transformation of sorts.
Better accept that in a few more model iterations, the code being generated is a matter of changing a markdown file.
This sentence from the article really stuck out to me.
> and you write the rule down so clearly that nobody (human or otherwise) has to guess again.
Writing rules, or steps, unambiguously in a high level language and having those statements translated to lower level languages, that ultimately get executed by a machine, is what compilers do.
The commands you gave were not unambiguous at all and although an LLM would produce a result, the result would definitely be nonsense.
"make me a budget, here is 6 months of credit card receipts"
For example, a valid budget requires some knowledge of expected income...
i forgot my golden rule of never giving examples or using analogies while on HN because people hyper focus on nitpicking the specifics of the example/analogy rather than the overall point being made.
amend my example to "make me a budget, here is 6 months of credit card receipts, and i make somewhere around $60k per year".
Yes, this is a real problem. It is also directly against the guidelines.
And it definitely is not what LLMs do, even if you pepper your rules with “NEVER, ever deviate from these rules”.
Same query to same AI, at different times of day will might not return the same answer. For example I wrote some docs for a class that had 14 methods. So I asked for autocomplete docs in 2 methods, and it followed other method comments well well. Then I asked to do the same task for 2 more methods and it fucked up, requiring manual edits.