Type hints and static typing are completely orthogonal. It is merely more common for the designers of dynamically typed languages to make the mistake of not allowing type hints pretty much every where and requiring them…
> While typing is dynamic, I rarely see this being used, perhaps with the exception of identifying empty variables with None. Most identifiers are born and die the same type. It would be interesting to see how much…
I don't see the connection between white space in PLs and parenthesis in math. On the other hand: Let's consider what the Python-like version of math actually look like: f(x) = : x, if x > 0 -x/2, if x < 0 and x is even…
> A couple of newlines to create a new paragraph is semantic whitespace, as one newline or a space would not do so. Markdown (although not HN's Markdownesque syntax) even has significant trailing whitespace, which I…
Looking at the examples you've provided, I'm pretty sure the Linux kernel's codebase dwarfs their combined codebases into insignificance. Since it is very hard to not have NP-hard asymptotic complexity when formally…
Rust was considered for Zircon. The only reason it wasn't chosen was that at the time Rust wasn't yet sufficiently mature for embedded. And it really wasn't. In the meantime, Google makes extensive use of Rust in new…
> Regarding Linus ... I wouldn't trust Big tech as far as I can throw one of their server farms. That said, I doubt that Linus's spirit is broken and he's simply surrendering to them. Assuming you aren't just…
1. Yea, a road that was used for target practice during a large-scale NATO training exercise is the same as a road that could do with a bit of maintenance with painted potholes to warn people. After all, they both have…
I could never figure out Githut2.0. Githut1.0 had a much nicer interface and although Rust looked bad on first impression, just moving it left a set period of time (or vice versa moving Go right a set period) showed…
Agreed. But it can also mean not actually achieving at all what you set out to do. I don't know if that is the case for Loom specifically, but that seems to be what was implied by the parent comment.
I don't see any such note and it's 8 days later. May be you should check your comment again? Also, while games aren't exactly regular applications performance-wise, I think they fall more under that than embedded or…
I'm getting a bit off topic here, but if you haven't heard about it yet, you might be interested in https://ferrous-systems.com/ferrocene/. Some quotes from the linked page: > Ferrocene is a sustainable effort led by…
If the borrow checker of 1.52.1 "screeches" on every LOC but it compiles on 1.0 then very likely either there's some bug in 1.52.1 that you should report or you code was never correct and should never have compiled in…
It's not just the GC, Go's Interfaces are very heavy weight (including in TinyGo). Its green threads are very heavy weight (including in TinyGo)... Oh. And a GC is really unacceptable in a kernel (though not necessarily…
I'm no expert in this domain but it seems to me that RedLeaf (implemented in Rust and formally verified) is vastly superior to seL4. AFAIU RedLeaf is orders of magnitude cheaper to formally verify to a much higher…
It seems like he did. (Or may be someone else's. I didn't check the repo.) Common Lisp is the second slowest on his results table.
Huh? Plenty of CVEs found in C/C++ codebases were introduced decades before they were discovered. In fact, it seems to me that the older a C/C++ codebase is (especially C++), the more bugs is has, simply because…
> Having standard serialization is just gonna be boilerplate and unneccessary for many programs. And for a lot of programs having to keep generating and parsing strings is just a bunch of unnecessary boilerplate. >…
Yes and more: 1. Lack of "manual memory management" can be taken as GC (though Rust is neither GC'd nor manual memory managed, it's declaratively memory managed) and a GC is unacceptably expensive for systems…
I agree. But this particular example ironically has nothing to do with dynamic typing.
> So what's the type signature of `print()` then? I like the way Rust makes clear what are the different possibilities: In Rust we use a macro to handle variadic arguments, but if it was just a case of supporting…
It has nothing to do with the difference between strong and weak typing and also has nothing to do with the difference between weak and strong typing. It is about Python not disambiguating between variable shadowing and…
This has nothing to do with either dynamic or weak typing in Python. It's just Python not disambiguating between shadowing and reassignment. Here's a comment of mine that explains why Python is weakly typed:…
Python is more strongly typed than JS/Perl, granted. But it is still very weakly typed overall. Here are some examples: 1. if list(): pass # implicit coercion from collection -> None -> bool. (Very uncommon weak typing…
Python abounds with corner cases and gotchas. It may have fewer than JS/Perl, but that really isn't saying much. It may hide them until a test or real-world use shows you you've stepped on them but that's not always a…
Type hints and static typing are completely orthogonal. It is merely more common for the designers of dynamically typed languages to make the mistake of not allowing type hints pretty much every where and requiring them…
> While typing is dynamic, I rarely see this being used, perhaps with the exception of identifying empty variables with None. Most identifiers are born and die the same type. It would be interesting to see how much…
I don't see the connection between white space in PLs and parenthesis in math. On the other hand: Let's consider what the Python-like version of math actually look like: f(x) = : x, if x > 0 -x/2, if x < 0 and x is even…
> A couple of newlines to create a new paragraph is semantic whitespace, as one newline or a space would not do so. Markdown (although not HN's Markdownesque syntax) even has significant trailing whitespace, which I…
Looking at the examples you've provided, I'm pretty sure the Linux kernel's codebase dwarfs their combined codebases into insignificance. Since it is very hard to not have NP-hard asymptotic complexity when formally…
Rust was considered for Zircon. The only reason it wasn't chosen was that at the time Rust wasn't yet sufficiently mature for embedded. And it really wasn't. In the meantime, Google makes extensive use of Rust in new…
> Regarding Linus ... I wouldn't trust Big tech as far as I can throw one of their server farms. That said, I doubt that Linus's spirit is broken and he's simply surrendering to them. Assuming you aren't just…
1. Yea, a road that was used for target practice during a large-scale NATO training exercise is the same as a road that could do with a bit of maintenance with painted potholes to warn people. After all, they both have…
I could never figure out Githut2.0. Githut1.0 had a much nicer interface and although Rust looked bad on first impression, just moving it left a set period of time (or vice versa moving Go right a set period) showed…
Agreed. But it can also mean not actually achieving at all what you set out to do. I don't know if that is the case for Loom specifically, but that seems to be what was implied by the parent comment.
I don't see any such note and it's 8 days later. May be you should check your comment again? Also, while games aren't exactly regular applications performance-wise, I think they fall more under that than embedded or…
I'm getting a bit off topic here, but if you haven't heard about it yet, you might be interested in https://ferrous-systems.com/ferrocene/. Some quotes from the linked page: > Ferrocene is a sustainable effort led by…
If the borrow checker of 1.52.1 "screeches" on every LOC but it compiles on 1.0 then very likely either there's some bug in 1.52.1 that you should report or you code was never correct and should never have compiled in…
It's not just the GC, Go's Interfaces are very heavy weight (including in TinyGo). Its green threads are very heavy weight (including in TinyGo)... Oh. And a GC is really unacceptable in a kernel (though not necessarily…
I'm no expert in this domain but it seems to me that RedLeaf (implemented in Rust and formally verified) is vastly superior to seL4. AFAIU RedLeaf is orders of magnitude cheaper to formally verify to a much higher…
It seems like he did. (Or may be someone else's. I didn't check the repo.) Common Lisp is the second slowest on his results table.
Huh? Plenty of CVEs found in C/C++ codebases were introduced decades before they were discovered. In fact, it seems to me that the older a C/C++ codebase is (especially C++), the more bugs is has, simply because…
> Having standard serialization is just gonna be boilerplate and unneccessary for many programs. And for a lot of programs having to keep generating and parsing strings is just a bunch of unnecessary boilerplate. >…
Yes and more: 1. Lack of "manual memory management" can be taken as GC (though Rust is neither GC'd nor manual memory managed, it's declaratively memory managed) and a GC is unacceptably expensive for systems…
I agree. But this particular example ironically has nothing to do with dynamic typing.
> So what's the type signature of `print()` then? I like the way Rust makes clear what are the different possibilities: In Rust we use a macro to handle variadic arguments, but if it was just a case of supporting…
It has nothing to do with the difference between strong and weak typing and also has nothing to do with the difference between weak and strong typing. It is about Python not disambiguating between variable shadowing and…
This has nothing to do with either dynamic or weak typing in Python. It's just Python not disambiguating between shadowing and reassignment. Here's a comment of mine that explains why Python is weakly typed:…
Python is more strongly typed than JS/Perl, granted. But it is still very weakly typed overall. Here are some examples: 1. if list(): pass # implicit coercion from collection -> None -> bool. (Very uncommon weak typing…
Python abounds with corner cases and gotchas. It may have fewer than JS/Perl, but that really isn't saying much. It may hide them until a test or real-world use shows you you've stepped on them but that's not always a…