Earlier quoted context omitted.
Agreed unfortunately, if Zigs whole selling point is meant to be a "nicer C" (and a much nicer DX than Rust because no fighting the borrow checker etc) - does that really matter in a world where an LLM is writing the code? I am not going to be fighting the borrow checker, the LLM is. And as always, the response you'll hear is: but AI sucks/hallucinates/could never replace me etc... Just look at the progress LLM'S hav…
Why would *any* programming language matter when LLMs can just directly output binaries from a sufficiently detailed spec ;) And specifically, why would Rust be a better choice than C or Zig when the LLMs get good enough to just write memory safe code in unsafe languages (they are already pretty good at finding memory safety bugs). IMHO for code generation, different things start to matter (like fast build times, whi…
My Software North Star
61–70 of 166 posts
Re: My Software North Star
#62Earlier quoted context omitted.
Why would *any* programming language matter when LLMs can just directly output binaries from a sufficiently detailed spec ;) And specifically, why would Rust be a better choice than C or Zig when the LLMs get good enough to just write memory safe code in unsafe languages (they are already pretty good at finding memory safety bugs). IMHO for code generation, different things start to matter (like fast build times, whi…
Writing memory safe code in unsafe languages requires global reasoning, which LLMs are terrible at. The whole point of a type system or a borrow checker like Rust's is to thread the requirements for safety throughout the program syntax in a way that makes it possible to spot problems locally. That's why LLMs tend to be rather good at writing Rust.
If you learn how to use arena allocators and in general use modern techniques, you don't need global reasoning to write correct memory management code pretty much never.
If your code is a RAII and abstraction maze, then yes, you will probably need global reasoning, but that's not the case with Zig.
Re: My Software North Star
#63Earlier quoted context omitted.
Why would *any* programming language matter when LLMs can just directly output binaries from a sufficiently detailed spec ;) And specifically, why would Rust be a better choice than C or Zig when the LLMs get good enough to just write memory safe code in unsafe languages (they are already pretty good at finding memory safety bugs). IMHO for code generation, different things start to matter (like fast build times, whi…
Writing memory safe code in unsafe languages requires global reasoning, which LLMs are terrible at. The whole point of a type system or a borrow checker like Rust's is to thread the requirements for safety throughout the program syntax in a way that makes it possible to spot problems locally. That's why LLMs tend to be rather good at writing Rust.
Re: My Software North Star
#64Damn this person's obviously is so bitter towards Rust... I wonder why he's so obsessed with it? I mean, if they really care about software correctness, I wonder why take a very discutibile position and say that "safety doesn't matter if you don't use the correct process". Yeah, I mean, having some guardrails is better than none, right? If they really cared about correctness, they would really strive to put all the p…
I don't get it. Are we reading the same article? This article is so generic that it reads like vacuous truth to me. But I don't see their bitterness towards Rust (or anything, really. It's just vacuous.) from it. Is this person a famous anti-rust'er or something?
There is a lot to dislike about this paragraph:
It doesn’t matter that the language you use is memory-safe, if you didn’t design for correctness or have no process that will eventually lead you to fixing all bugs.
Hang on. If I want to prevent all bugs, shouldn't memory safe make your correctness much easier to achieve? And what is this about fixing all bugs? You mean proofs? The stuff that Zig doesn't aim to do?And no, asserts don't fix all bugs, they just guarantee some of your invariants are held at best, used in test at worst.
Re: My Software North Star
#65Earlier quoted context omitted.
There is a pretty clear and important difference between a program that does something wrong , and a program that just doesn't do something somebody wants. "You don't support printing", "pressing the print button doesn't print", "pressing the print button crashes the computer" and "pressing the print button lets an attacker get root access to the system" are all different and it makes sense to distinguish them. (The…
> There is a pretty clear and important difference between a program that does something wrong, and a program that just doesn't do something somebody wants. Your argument hinges on all parties agreeing on what "wrong" means. Take a step back and consider that parties do not agree on a common definition of "wrong." Does "wrong" mean a gap between the spec and the implementation or a gap between a reasonable user's exp…
Re: My Software North Star
#66The adjective 'useful' is doing a lot of the heavy-lifting here. What kind of 'useful'? Normative? Empirical? Prescriptive? Pragmatic? 'Useful' is a very subjective north star.
>What kind of 'useful'? Someone says it's useful to them. If you get a consensus where >50% find it useful, then it's probably useful.
By that same measure: correctness, maintainability, and efficiency are not that useful.
I wasn't saying usefulness is not important, I'm saying this post conveniently crammed the hardest problem of writing software into a fuzzy adjective.
Re: My Software North Star
#67recently i've ran into products that feel like they were not meant to be used, but instead just follow some specification list. for me, the end user's experience goes above all.
> I do not hear the end user, therefore it does not exist
Not literally, but that's what it feels like.
It's probably safer, but in the long run you're not building any trust.
Re: My Software North Star
#68Earlier quoted context omitted.
There is a pretty clear and important difference between a program that does something wrong , and a program that just doesn't do something somebody wants. "You don't support printing", "pressing the print button doesn't print", "pressing the print button crashes the computer" and "pressing the print button lets an attacker get root access to the system" are all different and it makes sense to distinguish them. (The…
> There is a pretty clear and important difference between a program that does something wrong, and a program that just doesn't do something somebody wants. Your argument hinges on all parties agreeing on what "wrong" means. Take a step back and consider that parties do not agree on a common definition of "wrong." Does "wrong" mean a gap between the spec and the implementation or a gap between a reasonable user's exp…
Besides, in your example, either kind of gap could be a bug or a missing feature. It's a totally orthogonal question.
Re: My Software North Star
#69Earlier quoted context omitted.
There is a pretty clear and important difference between a program that does something wrong , and a program that just doesn't do something somebody wants. "You don't support printing", "pressing the print button doesn't print", "pressing the print button crashes the computer" and "pressing the print button lets an attacker get root access to the system" are all different and it makes sense to distinguish them. (The…
> There is a pretty clear and important difference between a program that does something wrong, and a program that just doesn't do something somebody wants. Your argument hinges on all parties agreeing on what "wrong" means. Take a step back and consider that parties do not agree on a common definition of "wrong." Does "wrong" mean a gap between the spec and the implementation or a gap between a reasonable user's exp…
Re: My Software North Star
#70The implication is that you should always strive to release software that isn’t overly buggy, isn’t slow, and is general a pleasure to use.