Live data from Hacker News

I hate compilers

xeiaso.net

131–140 of 182 posts

Re: I hate compilers

#131
post #5

LLMs should be trained on and directly output binary.

On the off chance that you’re serious, that would result in disastrously bad output. The difference between “jmp $+15” and “jmp $+16” is inscrutable and the LLM would not be able to pick the right one without tooling. That tooling is a compiler. The higher level, the better chance the LLM can be steered to good output. Machine code is hopeless, don’t bother.

> The difference between “jmp $+15” and “jmp $+16” is inscrutable

Just like the difference between 'him' and 'her' is inscrutable taken out of context, but that's why LLMs have embeddings they use to store contextual information in huge vectors and have an input processing phase during which the input tokens gain contextual information, so that the LLM knows that 'him' refers to 'Peter' and 'her' refers to 'Jane'. Likewise it will be able to infer that $+15 is the 'success' branch of control flow and $+16 is the fail branch.

The way computer programs and natural language differ, is that in language, words with absolute or at least very constrained meanings are common, while code, is basically a pure manipulation of symbols, with variable and function names being meaningless helpers, and the actual meaning needs to be deduced from the way these symbols are manipulated.

In fact, I think LLMs are actually surprisingly good at this kind of abstract symbol manipulation, and are far less bothered than humans with 'add rax, rcx' by the fact that the meaning of 'rax' and 'rcx' are heavily contextual, as they dedicate a lot of time to build up rich contextual information that might be different in every place these symbols appear.

Re: I hate compilers

#132
post #81
post #77

Could have sworn the author was a nix(os) user already. I know it’s a meme but what all the problems they’re describing literally is solved by nix. The nix sandbox even catches calls for time for example to replace it with 0 for determinism.

They stopped using Nix due to disagreements with how the project was run. https://xeiaso.net/blog/2024/much-ado-about-nothing/

Weird article. The author is clearly heart-broken about some changes in how Nixos is managed - but what those changes were and why the author dislikes them is left completely unclear. The link to the Determinate blogpost doesn't clarify anything. I guess it might make sense to Nixos insiders...

Re: I hate compilers

#133

Earlier quoted context omitted.

> your "platform" is also typically a framework, like QT or AppKit or whatever you end up using That's not what I consider "low level programming". I don't use any of these. Yes you can do try and do plain Javascript. Honestly Javascript is a much less pleasurable environment than a compiled statically typed procedural language. The main advantage of the browser is you get a viewport, you get font rendering etc. with…

> That's not what I consider "low level programming". I don't use any of these. So say C linking to Xorg-libraries and drawing GUI that way isn't low level programming, then what is? Only assembly is "low level programming" or what? Meh, JavaScript is fine, like most dynamic Algol/C-like languages. Could be worse, could be TypeScript :) But personally, browser environment is a hell of a lot easier to target than doin…

[deleted]

Re: I hate compilers

#134
post #100

I’m still surprised by Anubis’ decision not to make the PoW have a useful output, for example a crypto, protein-folding like, or something else. And I speak as being generally very critical of cryptos, but here rewarding the website owner with some cents to have access seems fair, and resolves the traditional issues about micro-payments.

Patches welcome. I'd love to do protein folding too.

I would think twice before adding those type of features to Anubis. I like how Anubis currently does one thing and do that well. Once you make a captcha-like service that also does useful work, users will eventually perceive it as a useful-work-service that happens to have captcha-like function on the side, and that new perception will get a lot more people upset about Anubis.

We see this with Recaptcha where when it was first launched, some news sites praised it as making good use of what would have otherwise been wasted human effort. But eventually I started to see negative comments along the lines of how Recaptcha is just extracting free work to train self driving cars, nevermind the part about stopping bots. Since Recaptcha is now sometimes non-interactive, I am not sure if that data is still used for training, other than to improve Recaptcha itself, but the negative sentiment still holds whether that data is used or not.

Re: I hate compilers

#135
post #130

Earlier quoted context omitted.

I think the intentional part is that you want to print the date and time something's been compiled, and the accidental part is that you suddenly made your build non-reproducible. But usually the realization follows the initial intent by several weeks, if not months! Your comment shines as the embodiment of hindsight is 20/20.

> the accidental part is that you suddenly made your build non-reproducible But that's exactly what I don't get. How can that be considered "accidental"? How can any thinking person not realize that putting the build time into the compiled image will make every build different because, you know, different builds happen at different times? Has software engineering really been dumbed down so much that this is not immed…

With you on this especially because somebody I know asked me to help change their oil and they hadn't even considered there being waste oil to dispose of

Re: I hate compilers

#136
post #130

Earlier quoted context omitted.

I think the intentional part is that you want to print the date and time something's been compiled, and the accidental part is that you suddenly made your build non-reproducible. But usually the realization follows the initial intent by several weeks, if not months! Your comment shines as the embodiment of hindsight is 20/20.

> the accidental part is that you suddenly made your build non-reproducible But that's exactly what I don't get. How can that be considered "accidental"? How can any thinking person not realize that putting the build time into the compiled image will make every build different because, you know, different builds happen at different times? Has software engineering really been dumbed down so much that this is not immed…

The engineer who wants the build to be reproducible and the engineer who wants to have the build time in the compiled binary may not be the same person.

Re: I hate compilers

#137
post #54

Earlier quoted context omitted.

> Clang relies on address layout for ordering things I would consider that a bug tbh

If reproducible builds is a stated goal for Clang? I'm not sure that it is. If so, absolutely a bug.

Not sure if it's a stated goal somewhere official but there's been plenty of fixes of the years moving stuff to be deterministic, e.g https://github.com/llvm/llvm-project/commit/cdbde3aacc1260a7...

The internal programming guide also says which collections to use for deterministic iteration order: https://llvm.org/docs/ProgrammersManual.html#llvm-adt-setvec...

So definitely a bug here.

Re: I hate compilers

#138

Earlier quoted context omitted.

> Calculus is definitely the harder task, You’re only evaluating “harder” or “easier” based on the perspective of somebody who has a mammalian brain with millions of years of selective pressure to make it suitable for solving inverse kinematics problems. The point here is that when we start constructing agents or tools with different architectures to ourselves, it makes sense to reevaluate notions of whether somethin…

I'm evaluating them using an objective metric, which is how long each took to arise in the universe. It could have never been the case that calculus arose before inverse kinematics, because a thing like that could not interact with the real world. Also, I suspect you're comparing dissimilar things, because in one case you're looking at a brain doing both inverse kinematics and "calculus" (sense 1), and in the other y…

> I'm evaluating them using an objective metric,

I don’t think the metric is at all reasonable, and the fact that it’s “objective” doesn’t make up for its other shortcomings. I don’t think we have a basis for agreement here—I think you’ve framed the argument in a way that supports a “calculus is hard” conclusion merely by defining “hard” in such a way that supports your conclusion from the start, but I think that approach is only useful as a way to win an argument, and we’ve failed to share ideas once you start using that tactic.

Re: I hate compilers

#139

Earlier quoted context omitted.

Sure, but a signature doesn't prove that a particular binary came from a particular codebase - merely that a particular human (or other trusted entity, for varying degrees of "trusted") has vouched for it. Being able to reproduce the binary from the source code and being able to verify that it's the same as the original is quite important in some contexts.

> Being able to reproduce the binary from the source code and being able to verify that it's the same as the original is quite important in some contexts Why not build your own binaries and be done with that. If you don’t trust the compiler or the machine doing the build, just build the code yourself.

Sure, I can do that, but there's some value in being able to check quickly and easily that, for example, the xz utils binaries shipped by a major distro actually match the published source.

Also useful for checking that a binary containing GPLed code does actually correspond to its published source.

Re: I hate compilers

#140
post #130

Earlier quoted context omitted.

> the accidental part is that you suddenly made your build non-reproducible But that's exactly what I don't get. How can that be considered "accidental"? How can any thinking person not realize that putting the build time into the compiled image will make every build different because, you know, different builds happen at different times? Has software engineering really been dumbed down so much that this is not immed…

The engineer who wants the build to be reproducible and the engineer who wants to have the build time in the compiled binary may not be the same person.

Sure, but that is a completely different issue. People have mutually-conflicting goals on occasion. That is a Thing That Happens, but it is a very different phenomenon than being surprised by the obvious fact that putting a time stamp on your build makes that build non-reproducible.
Post reply on HN