Live data from Hacker News

Game Jam 2 Results

wasm4.org

171–180 of 193 posts

Re: Game Jam 2 Results

#171
post #166
post #161

Earlier quoted context omitted.

> That sounds an awful lot like bypassing the borrow checker. I guess you could argue it's bypassing borrow checker in weakest possible sense. Borrow checker checks borrow. You aren't borrowing you are doing pointer manipulation, and presenting it with stuff that isn't its duty to check. I argue for this because people think that unsafe region is no mans land and that rules of borrow checking don't exist there. That…

> You aren't borrowing you are doing pointer manipulation, and presenting it with stuff that isn't its duty to check. Yeah exactly - you're sectioning off parts of the code and telling the borrow checker to trust you that it's ok. You can't simultaneously argue that unsafe languages are categorically bad and also use unsafe rust as an argument against rust's limitations. Unsafe is either bad or it isn't. > That said,…

> You can't simultaneously argue that unsafe languages are categorically bad and also use unsafe rust as an argument against rust's limitations. Unsafe is either bad or it isn't.

Why not? Rust has unsafe programming as opt-in; and the unsafe stuff is delimited with language constructs.

A nuanced argument is possible like that situation is better than unsafe computation with no opt-out, requiring very careful programming plus ad hoc tooling.

Re: Game Jam 2 Results

#172
post #169
post #166

Earlier quoted context omitted.

> You aren't borrowing you are doing pointer manipulation, and presenting it with stuff that isn't its duty to check. Yeah exactly - you're sectioning off parts of the code and telling the borrow checker to trust you that it's ok. You can't simultaneously argue that unsafe languages are categorically bad and also use unsafe rust as an argument against rust's limitations. Unsafe is either bad or it isn't. > That said,…

> You can't simultaneously argue that unsafe languages are categorically bad and also use unsafe rust as an argument against rust's limitations. Unsafe is either bad or it isn't. I'm not arguing philosophically. I'm arguing from a safety viewpoint. A language that's 100% unsafe is worse than a language that's 1% unsafe. Saying it's not perfectly safe is sophistry. Nothing is perfectly safe, but you still don't hand o…

> Saying it's not perfectly safe is sophistry. Nothing is perfectly safe, but you still don't hand out your sensitive bank information to random person on the Internet/street/etc.

You want to make a nuanced argument that calculated unsafety is better than general unsafety, but you don't want to accept a nuanced argument that Rust's safety tools maybe a detriment in some use-cases.

> Assume data race happen. Would you prefer to audit 30k lines or 3? Unsafe language is unsafe everywhere. In Rust, you can limit your search to unsafe regions.

It depends on the use-case.

> Sure, but if your implementation has a data race error, that when triggered happens causing massive loss of funds. First you'll have to find the issue (good luck searching most of language and deps). Then you need to patch it to prevent future errors. And it can happen again. So maybe 3 days here, 5 days there, 4 days there, and so on.

This is a strawman argument which doesn't reflect reality. C/C++ is actually the main language used in HPC applications like high frequency trading, and they have massive incentives to choose the correct tool for the job.

> If you want HPC and safety use Java/C#/Lisp, no Rust necessary.

You can't. I chose HPC deliberately as an example: in HPC performance is the most important constraint. You couldn't use a garbage collected language because you will not be able to optimize memory performance beyond a certain point since you don't have direct control over allocations.

> On that I agree. If your game is one and done (no maintenance), no user content, no MP, basically worse that can happen is crash sure go ahead. Jams are in that way perfect candidates for small langs where speed of development is crucial.

Then what are we arguing about if you agree with me?

> Keep in mind that in Rome everything was written without spaces for hundreds of years. From their POV the spaces would be just unnecessary fluff.

You don't know that. They might have looked at spaces and understood immediately that it was an improvement.

> And there are still languages that have little to no spaces, so spaces aren't even universally accepted. See Chinese and Japanese.

What point are you trying to make? Wouldn't that support my argument that there's room for different modes of programming, both safe and unsafe?

> I don't understand, this wasn't specific about just systems language? Going from C# to Zig is a safety downgrade (but a possible performance uplift). And GC langs have been used in OS implementations.

I could have also said "most systems programmers don't program in safe languages". The point is the jury is still very much out on whether language-level memory safety is the best solution for all systems programming languages. It's relevant because Zig is the language you are cliticising.

> Status quo is C, which has null - a trillion dollar mistake (adjusted for inflation and software spread :P)

You can focus on the negatives because C is literally the most successful PL ever which the entire world is built on. People are already talking about how GC is a mistake for a lot of applications. Maybe 10 years from now we will be talking about some big mistake Rust made with async colored functions.

Maybe it will turn out Zig's approach is the right one. We don't know yet.

> My point that we use Python won in ML because allowing people to achieve value isn't the only important aspect.

It's the most important aspect. Every other aspect is just relevant to how you deliver value.

> But safety and reducing footguns should be ideals for any language to strive.

I'm sorry but you seem to be missing my entire argument. You agree there are tradeoffs. You agree there are use-cases where safety might not be the most critical thing. You have agreed with every component of my argument but you then want to draw the conclusion that safety is somehow a requirement for every new language.

Re: Game Jam 2 Results

#173
post #168

Earlier quoted context omitted.

> It “could”, in the same sense that “vaccine could cause autism” No. The claim "design with tradeoffs X leads to more correct programs than design with tradeoffs Y" is the one that requires evidence. The null hypothesis is that it doesn't. > Interestingly enough, you spend much, much, more time talking about it than himself… As I said, software correctness is my thing. When I saw Zig's brilliant, revolutionary desig…

> No. The claim "design with tradeoffs X leads to more correct programs than design with tradeoffs Y" is the one that requires evidence. The null hypothesis is that it doesn't. What's the argument here? Is it OK then to question the existence of the Apollo program because “the yanks never went to the moon” is the null hypothesis? We've plenty of evidence that Rust offers better guarantees than C (even though with you…

> What's the argument here?

The argument is that you don't have a hypothesis and then put the burden of proofs on others to prove that it's untrue. The justification for why science must work like this is that most associations must not be true correlations.

> We've plenty of evidence that Rust offers better guarantees than C

True, but our starting point was that neither C (let's call it 0 sound safety) nor Idris (let's call it 100 sound safety) are the best approach, i.e. we know that the most effective way is something in the middle, i.e. we already know that more soundness is sometimes better and sometimes worse.

> Now since Zig doesn't address the most prominent source of critical defects in C

No, that's your claim. Zig is as different from C as Rust is. Zig does make sound guarantees of spatial memory safety (which neither C nor C++ do), and unlike C or C++, pointers cannot be created from "thin air" with pointer arithmetic or with hidden casts such as unions, i.e. Zig has precise knowledge of what a pointer is. This makes tooling for detecting temporal memory unsafely much more powerful and precise in Zig than in either C or C++.

> Yet you're like two thousand words in and you've not even begun to hint at what part of Zig designs makes it especially good for correctness compared to C.

I hope I now did. Plus, its expressiveness is that of C++ (or Rust), not C, while being very simple (two languages are as expressive if there aren't programs in one that require more lines in the other than by a constant factor; C++ has program facilities that require exponentially more lines in C).

> but that doesn't mean we know nothing

Well, whether Rust makes it easier to write correct programs is something we don't know.

> so far sanitizer and other runtime tools haven't been enough to get it right in practice.

You're talking about sanitisers for C/C++. Zig is very different. Again -- full spatial safety, and precise pointers.

> but for the moment it has yet to prove anything on that front.

Sure, and Rust too.

> Yes I am, because ”eliminating completely* such errors” is the standard for every language designed after 1985 that has reached even limited use

That is a very bad argument. You could just as well say that the standard is not to have safety based on substructural types because that's probably too costly. I think it's funny to pretend that Rust's way to memory safety isn't very different from, say, Java's, and doesn't come at a significant cost. It obviously is, and does, and the question we don't know the answer to is: is that a better tradeoff than Zig's?

Also, the number of low-level languages designed after 1985 that have reached even limited use is too small to make any generalisation, let alone a standard, and it opens you to a far worse argument: despite the popularity of memory safety in the application space, no low-level language that has achieved significant use has been memory-safe. Don't try to build statistics on a small sample. Not only is the argument bad, but it can just as easily be turned against you.

> And by “happen” or “completely eliminate” I mean “happen enough that it surfaces significantly to the user”

This is the argument Rust is making that those who aren't so involved in software correctness find compelling, but it is nonetheless false. It goes like this: we have lots of kinds of bugs, if we can eliminate some with soundness, then that must be better! Most formal methods researchers found that argument so convincing in the 70s that they almost accepted it axiomatically. Except it turned out not to be true. Less sound approaches proved more effective overall despite not "eliminating" classes of bugs. But we don't know where the sweet spot is yet.

> Correctness you said?

I don't understand your complaint. First, I hope you're not claiming that programs written in Rust don't have very serious bugs, just as bad as segfaults. Second, you're trying to draw a trend out of tiny samples again; this never ends well. You're a step away from saying, 100% of commercial Zig programs crash, Anyway, my personal opinion of Rust, as someone who mostly programs in C++ is that it doesn't address the two main issues with the language -- a complex language that requires non-local reasoning, making reviews hard and slow and requiring too much thought about the language rather than the algorithm, and a slow build-test cycle that results in less testing than more "agile" languages. Zig, on the other hand, starts with those two problems, so while I have no idea whether Zig (or Rust for that matter) would ever succeed in the market and that I would ever get to use it "in production", the language that would address my biggest issues in low-level programming would look much more like Zig than like Rust.

Moreover, I think Rust made the same big mistake C++ did: trying to get a low-level language to look like a high-level one on the page (so-called "zero-cost abstractions"). I think that design philosophy has little pros and too many cons.

Re: Game Jam 2 Results

#174
post #173

Earlier quoted context omitted.

> No. The claim "design with tradeoffs X leads to more correct programs than design with tradeoffs Y" is the one that requires evidence. The null hypothesis is that it doesn't. What's the argument here? Is it OK then to question the existence of the Apollo program because “the yanks never went to the moon” is the null hypothesis? We've plenty of evidence that Rust offers better guarantees than C (even though with you…

> What's the argument here? The argument is that you don't have a hypothesis and then put the burden of proofs on others to prove that it's untrue. The justification for why science must work like this is that most associations must not be true correlations. > We've plenty of evidence that Rust offers better guarantees than C True, but our starting point was that neither C (let's call it 0 sound safety) nor Idris (le…

P.S.

In the nineties I worked on a big defence project that was written half in C++ and half in Ada. Ada was the Rust of the day, plus it had the weight of the US DoD behind it, which was no small thing. But at the time it was a much more complex language than C++, so we had to have "language lawyers", and, just as bad, its build time was much worse, that in the end we just couldn't test it as well as our more ostensibly sloppy C++ code, the result being that we gradually shifted away from Ada.

I'm not saying that the vision of the seventies of "more language; more formal soundness" is always wrong, but it's certainly isn't always right. The biggest improvement in software correctness that saved us from the total software collapse prophesied by the "formalists" of the seventies, like Dijkstra and Tony Hoare, was the advent of automated unit tests. It's been so effective that it surprised those formalists (like Hoare) as well as confounded those PL people who believed that more and better types are always better (so much so that correctness differences between languages have been very hard to find in recent years except in special circumstances, such as JS vs TypeScript). We learnt that "more language" isn't always the best answer, although sometimes it could be. We just don't know where the "best" tradeoffs are, or even if they're universal. In the past couple of decades we've also learnt more about software correctness from complexity theory, "hard" results that just weren't known to Dijkstra, and that put limits on the effectiveness of soundness. We also learnt some empirical "soft" results -- such as this one [1] -- that showed that sometimes soundness just pushes the bugs elsewhere (i.e. people write code that satisfies the language, yet manage to do this without addressing the fundamental issue, so the catastrophic bug just manifests differently).

None of that is surprising in retrospect. Bugs occur due to a lack of exhaustiveness in human reasoning (or even machine reasoning, as we now have the complexity theory to understand that), so if you're writing an algorithm whose object-lifetimes considerations are too onerous for humans, it is likely that there are other aspects of it that are equally onerous. So what is the right price to pay to prevent that algorithm failing due to use-after-free specifically?

So when a language offers to eliminate certain classes of bugs, even important classes, but possibly at the cost to both static and dynamic functional reasoning -- through reviews and tests -- it is in no position to say that it's obviously the right approach, and that's why there's no consensus that it is. Zig opts to eliminate fewer classes of bugs, up to the point that doing so is free. That's certainly an equally valid hypothesis, a-priori at least, and it will be interesting to see how things develop.

[1]: https://www.usenix.org/system/files/conference/osdi14/osdi14...

Re: Game Jam 2 Results

#175
post #172
post #169

Earlier quoted context omitted.

> You can't simultaneously argue that unsafe languages are categorically bad and also use unsafe rust as an argument against rust's limitations. Unsafe is either bad or it isn't. I'm not arguing philosophically. I'm arguing from a safety viewpoint. A language that's 100% unsafe is worse than a language that's 1% unsafe. Saying it's not perfectly safe is sophistry. Nothing is perfectly safe, but you still don't hand o…

> Saying it's not perfectly safe is sophistry. Nothing is perfectly safe, but you still don't hand out your sensitive bank information to random person on the Internet/street/etc. You want to make a nuanced argument that calculated unsafety is better than general unsafety, but you don't want to accept a nuanced argument that Rust's safety tools maybe a detriment in some use-cases. > Assume data race happen. Would you…

> You want to make a nuanced argument that calculated unsafety is better than general unsafety,

No. I'm making a simple argument. More safety is better than less safety. You're trying to move argument that since perfect safety is impossible it's not worth pursuing. This is the sophistry part.

> It depends on the use-case.

No it doesn't. Debugging 30k lines is always going to take more than 3/30/300 lines especially when data races are involved.

> This is a strawman argument which doesn't reflect reality.

I said it's a contrived counter example for a contrived example.

> You can't. I chose HPC deliberately as an example: in HPC performance is the most important constraint.

There are HFT systems using Java, few were on HN even. That said, you might have thought of UHFT, but those use FPGA and ASIC, so not even C/C++ would be really correct.

> You don't know that. They might have looked at spaces and understood immediately that it was an improvement.

I know human nature. What we are used to is what we consider natural/ergonomic.

And for the record ancient Greek and Romans made it point of pride to know where and how words end.

> Wouldn't that support my argument that there's room for different modes of programming, both safe and unsafe?

Well, not really. I'm saying ergonomic isn't universal. Due do mixing with English and other such languages what's considered ergonomic is shifting towards spaces and punctuation.

> It's the most important aspect. Every other aspect is just relevant to how you deliver value.

Ok, I see where you are coming from but I fundamentally disagree. If you prioritize delivering stuff fast (move fast, break things) you'll end up with a lot of broken software, and unmaintainable messes along the way.

Maintainability and safety should be primary motivatiors.

Without safety, your performance gains can be rendered moot point anyway. And without maintability your code performance will slowly rot and die.

Re: Game Jam 2 Results

#176
post #173

Earlier quoted context omitted.

> No. The claim "design with tradeoffs X leads to more correct programs than design with tradeoffs Y" is the one that requires evidence. The null hypothesis is that it doesn't. What's the argument here? Is it OK then to question the existence of the Apollo program because “the yanks never went to the moon” is the null hypothesis? We've plenty of evidence that Rust offers better guarantees than C (even though with you…

> What's the argument here? The argument is that you don't have a hypothesis and then put the burden of proofs on others to prove that it's untrue. The justification for why science must work like this is that most associations must not be true correlations. > We've plenty of evidence that Rust offers better guarantees than C True, but our starting point was that neither C (let's call it 0 sound safety) nor Idris (le…

You've got this funny habit to quote super tiny excerpt from my sentences, and reacting to things very loosely related to what I actually wrote. Why bother with the quotes then?

> Zig does make sound guarantees of spatial memory safety

Mr Walton gave an insightful overview of the many caveats that comes with this statements.

> two languages are as expressive if there aren't programs in one that require more lines in the other than by a constant factor

This is a very concise way of describing explicitness, I like it.

> Don't try to build statistics on a small sample. Not only is the argument bad, but it can just as easily be turned against you. […] Second, you're trying to draw a trend out of tiny samples again; this never ends well.

The famous “statistics” tropes… you know, getting a massive amount of data point and making regressions on top is not the only way to produce knowledge. Once again, epistemology classes for all are sorely needed… Fortunately, the parachutes inventors didn't wait for the numbers to get big enough before handing them to paratroopers ;).

> Also, the number of low-level languages designed after 1985

Yes, but I already answered to this argument: this has nothing to do with low-level here, in that particular case Zig is trying to replace JavaScript, which means it's fair to compare it to JavaScript and other languages.

> I don't understand your complaint. First, I hope you're not claiming that programs written in Rust don't have very serious bugs, just as bad as segfaults.

No, this paragraph is part of the sub-discussion about the statement “Zig has a pretty good memory safety story”, it doesn't involve Rust in any ways.

> You're a step away from saying, 100% of commercial Zig programs crash, I have another analogy for you: it's like talking about someone who's just eaten an unknown mushroom and is now dying. I can't be sure that it's the mushroom that's killing him (and the standard scientific procedure to be sure about that doesn't involve giving the said mushroom to 100 person just to get a big enough sample set), but we been told not to eat random mushrooms and “it's not the mushroom fault” is not the most reasonable answer at that point, even though the sample is “just 1”. But hey, I can wait until more people it that mushrooms so I can have more data point, I'll keep counting.

> Moreover, I think Rust made the same big mistake C++ did: trying to get a low-level language to look like a high-level one on the page (so-called "zero-cost abstractions"). I think that design philosophy has little pros and too many cons.

This is the main issue in fact. You don't like the language (which is fine) because it takes too much inspiration from C++, but then you're trying to give rational argument of why “it's not that good”. And that's why your argument aren't compelling, and so hand-wavy for the first few thousand words.

In fact there are quite a few people here on HN who've picked Zig as the “herald of the fight against rust dominance” because they where offended by the Rust Evangelism Strikeforce, like what happened with Nim earlier (a decade-old language that interestingly enough had a popularity boost on HN as an alternative to Rust when Rust's influence grew, before disappearing into oblivion when the next champion (Zig) rose).

As a side note it's actually interesting to see how Mr Walton has evolved over the year as a reaction to the “we need a champion against Rust” crowd: he went from “Rust is nice, you should try it” to straight “stop advocating memory-unsafe languages just because you don't like Rust for heaven's sake”.

Re: Game Jam 2 Results

#177
post #174
post #173

Earlier quoted context omitted.

> What's the argument here? The argument is that you don't have a hypothesis and then put the burden of proofs on others to prove that it's untrue. The justification for why science must work like this is that most associations must not be true correlations. > We've plenty of evidence that Rust offers better guarantees than C True, but our starting point was that neither C (let's call it 0 sound safety) nor Idris (le…

P.S. In the nineties I worked on a big defence project that was written half in C++ and half in Ada. Ada was the Rust of the day, plus it had the weight of the US DoD behind it, which was no small thing. But at the time it was a much more complex language than C++, so we had to have "language lawyers", and, just as bad, its build time was much worse, that in the end we just couldn't test it as well as our more ostens…

You're basically saying the same thing over and over between different posts, but here's one interesting thing:

> so if you're writing an algorithm whose object-lifetimes considerations are too onerous for humans, it is likely that there are other aspects of it that are equally onerous.

The thing is that you have lifetimes considerations in Zig too. You need to know when to free memory, so you explicitly need to reason about it, just like in Rust in the worse case (when RAII alone isn't enough) but you don't have tools to helps you know when to free and when not to (and only tools to diagnose when you've missed it) so Zig actually adds cognitive burden, not removes it. In the end you'll be reclaiming the memory at the same place (which is where the object is not used anymore and safe to free).

And you keep pointing to reviews and tests, as if rust made it harder, when in fact it makes it marginally easier than for most languages, with its built-in test framework well integrated in the entire stack, and the ability to see where mutations happen. Of course it's not revolutionary nor even unique, but on those two specific subjects in is in fact in among the best languages out there.

So you keep talking about Rust's cost, but the thing is that you can't really pinpoint what types of cost this is about (except with the hand-wavy concept of “language complexity”), and the examples you give are off.

Re: Game Jam 2 Results

#178
post #174

Earlier quoted context omitted.

P.S. In the nineties I worked on a big defence project that was written half in C++ and half in Ada. Ada was the Rust of the day, plus it had the weight of the US DoD behind it, which was no small thing. But at the time it was a much more complex language than C++, so we had to have "language lawyers", and, just as bad, its build time was much worse, that in the end we just couldn't test it as well as our more ostens…

You're basically saying the same thing over and over between different posts, but here's one interesting thing: > so if you're writing an algorithm whose object-lifetimes considerations are too onerous for humans, it is likely that there are other aspects of it that are equally onerous. The thing is that you have lifetimes considerations in Zig too. You need to know when to free memory, so you explicitly need to reas…

> You need to know when to free memory, so you explicitly need to reason about it, just like in Rust

Obviously! But my point was that that reasoning isn't additive. If an algorithm is complex enough that you have to carefully reason about its object lifetime, then you might have to carefully reason about it even if you're guaranteed to get the lifetime right. Or, rather, sometimes you might, sometimes maybe not, and other times the extra burden of the language is just a chore.

> so Zig actually adds cognitive burden, not removes it

In that regard -- absolutely, in others, it reduces it. Rust's soundness obviously does some good things -- at a price. The question isn't whether those things work, but if they're worth the price. I'm not saying Rust doesn't give me value for my effort; we just don't know if it's more or less than what Zig gives us.

> but on those two specific subjects in is in fact in among the best languages out there.

Except Zig takes that to another level. Rust has some brilliant innovations -- like the borrow checker -- but Zig's entire design is a quite revolutionary, and in multiple ways. That's why I find comparisons between it and C to be so misleading. We've never seen anything like it before.

> So you keep talking about Rust's cost, but the thing is that you can't really pinpoint what types of cost this is about

I don't need to justify why Rust isn't the best approach out there; the onus is on Rust. If we knew which of Rust's approach or Zig's or maybe others altogether worked best, then we wouldn't be trying all of them. We are because we don't know.

But assumptions that soundness was the best approach proved wrong in a surprising ways in the past, and a combination of soundness and unsoundness (those "hand wavy" techniques of testing and reviews) are what proved effective. Bot Zig and Rust believe in such a combination, only in different measures. Perhaps in time we'll find out which works better, but you can't say, "fine, sometimes soundness is better and sometimes it's worse, but my mix is better than yours because it has more soundness."

Now, I'm not trying to convince you, or anyone, that Zig's approach to correctness works better than Rust's; we simply don't know. What I'm trying to get across is why both approaches are novel and interesting enough that we need to try both.

BTW, there's another axis we need to consider. The goal of software correctness from the industry's perspective is not how to write more correct software, but how to write more correct software with the programmers we have. That's why, even though it's possible that the few who can make effective use of Idris might (although maybe not) be able to produce more correct programs than others, few consider Idris as the probably solution to the problem because so few programmers would be able to put it to good use. A language that improves correctness by X around for Y programmers contributes less overall to correctness than a language that improves it by X/2 for 5Y programmers.

Re: Game Jam 2 Results

#179
post #175
post #172

Earlier quoted context omitted.

> Saying it's not perfectly safe is sophistry. Nothing is perfectly safe, but you still don't hand out your sensitive bank information to random person on the Internet/street/etc. You want to make a nuanced argument that calculated unsafety is better than general unsafety, but you don't want to accept a nuanced argument that Rust's safety tools maybe a detriment in some use-cases. > Assume data race happen. Would you…

> You want to make a nuanced argument that calculated unsafety is better than general unsafety, No. I'm making a simple argument. More safety is better than less safety. You're trying to move argument that since perfect safety is impossible it's not worth pursuing. This is the sophistry part. > It depends on the use-case. No it doesn't. Debugging 30k lines is always going to take more than 3/30/300 lines especially w…

> No. I'm making a simple argument. More safety is better than less safety. You're trying to move argument that since perfect safety is impossible it's not worth pursuing. This is the sophistry part.

I'm not trying to move anything. I've made the consistent argument from the beginning that more language-level safety is not the most important design constraint for all use-cases.

> No it doesn't. Debugging 30k lines is always going to take more than 3/30/300 lines especially when data races are involved.

Yes it does. See HPC use-case.

> There are HFT systems using Java, few were on HN even. That said, you might have thought of UHFT, but those use FPGA and ASIC, so not even C/C++ would be really correct.

The point still stands.

> I know human nature. What we are used to is what we consider natural/ergonomic.

Ok now I suspect you're deliberately waisting both of our time. You can't claim to know what romans thought about spaces.

> If you prioritize delivering stuff fast (move fast, break things) you'll end up with a lot of broken software, and unmaintainable messes along the way.

I never said you should prioritize delivering stuff fast. I said you should focus on delivering value. So if your code is an unmaintainable mess, cleaning up your code is going to be the shortest path to delivering more value because it affects your velocity.

If you're writing OS-level networking code, safety is going to be critical to delivering value because security is paramount to your mission.

If you're writing a game, having direct, explicit, ergonomic access to memory may be more relevant to delivering value than slowing yourself down to make sure you are 100% sure every line of code is safe.

> Maintainability and safety should be primary motivatiors.

Unless they're not. If I'm prototyping a project it might me much more important to get something in front of users to see how they like it than it is to make something safe and maintainable.

Some code is used and built on for years and years. Other code is used and thrown away after it serves its purpose.

Re: Game Jam 2 Results

#180
post #178

Earlier quoted context omitted.

You're basically saying the same thing over and over between different posts, but here's one interesting thing: > so if you're writing an algorithm whose object-lifetimes considerations are too onerous for humans, it is likely that there are other aspects of it that are equally onerous. The thing is that you have lifetimes considerations in Zig too. You need to know when to free memory, so you explicitly need to reas…

> You need to know when to free memory, so you explicitly need to reason about it, just like in Rust Obviously! But my point was that that reasoning isn't additive. If an algorithm is complex enough that you have to carefully reason about its object lifetime, then you might have to carefully reason about it even if you're guaranteed to get the lifetime right. Or, rather, sometimes you might, sometimes maybe not, and…

> Obviously! But my point was that that reasoning isn't additive

That's a very very strong claim without any supporting argument. And I'd be very surprised if it was true. (the success of the Stylo project on Firefox is a significant counter-example for instance).

> -- at a price.

once again, the abstract “price” is invoked, without any characterization… thousands of words later, we still don't know what price you're talking about…

> Except Zig takes that to another level. Rust has some brilliant innovations -- like the borrow checker -- but Zig's entire design is a quite revolutionary, and in multiple ways.

pron waves hands vigorously

You've shown a real difficulty so far to substantiate your argument with anything concrete (on the “price” of Rust, as well as on the “revolutionary” aspects of zig), though you've spent litterally thousands of words on the topic (and not just this discussion, but many before). As the French quote goes ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire viennent aisément, it makes me think you've mostly a gut feeling (Rust bad, Zig good) about this things and not a rational argument.

> I don't need to justify why Rust isn't the best approach out there; the onus is on Rust.

Nope, Rust is the state of the art, and Rust has demonstrated significant benefits over the previous state of the art. Now if Zig comes and wants to challenge it[1], fine but the burden of the proof is on Zig. Want to prove that essential oils are better than antibiotics? Go ahead, but the onus is on you.

> BTW, there's another axis we need to consider. The goal of software correctness from the industry's perspective is not how to write more correct software, but how to write more correct software with the programmers we have.

> […]

> A language that improves correctness by X around for Y programmers contributes less overall to correctness than a language that improves it by X/2 for 5Y programmers.

Yup, and that's why garbage collected languages are the clear winners of the past three decades.

But Rust is especially well-placed in that regard, because most of its users (even the early adopters) are coming from a managed-language background. And anecdotally, making low level code accessible to more developers coming from a more general-computing background is the main reason why Linus Torvalds is interested to get Rust to the kernel.

[1]: in fact this has never been an explicit goal of Zig's creator, who just want to make his programming language without bothering anyone else. He has nothing to prove, and he's never shown any willingness to take part of the kind of silly arguments, this is only the reactionary “Rust bad, need a champion to rant against Rust in online forums” crowd, who does that.

Post reply on HN