Rust's real superpower is its tooling. Cargo handles package management, building, testing, documentation, and publishing. The compiler's errors explain what went wrong and where it happened. Installing the toolchain with rustup is quick and painless, even on Windows. I can't know that it's best in class, but it's certainly the best I've used.
I can see another language having a more expressive type system, I've come up against the limitations of Rust's type system more than once, but the tradeoff isn't worth it if I have to go 20 years back in time in terms of tooling.
Rust is much older than Zig, though, and there's nothing stopping Zig (or any future language that doesn't adopt Rust's precise set of guarantees) from having the same, or possibly better. Given Zig's immaturity, I certainly wouldn't use it for any serious production software today.
BTW, I'm not saying Rust is bad. All I'm saying is that the attempt at proving it's objectively best by leaning on memory-safety is not really as objective as the people who make that claim seem to think it is.
I hadn't heard of ATS before, and I think that I mistook your using it as an example of "more isn't always better" and thought you were suggesting it as an actual alternative.
I'm looking for the next thing I want to learn, and have been leaning towards logic programming and theorem provers, so you inadvertently piqued my interest.
Sure, just keep in mind that various formal verification tools vary greatly in their usability, even theorem provers. I.e. the experience with ATS will be quite different from Lean, which will be quite different from TLA+.
That C++ already has many implementations of sparse sets seems to be a point in favor of sparse sets rather than a point against Rust, especially given that C++ doesn't need them the same way Rust does.
Well, there's several implementations because it's a bit of a leaky abstraction, and implementation details matter/vary across use-cases, which is consistent w/ my experience of rust having heavy fragmentation in applying the array-index pattern for "weak pointers."
We must be working from different definitions of efficient.
Yes, the CCP can say jump and expect their corporations to do so, but when everyone in a modern economy jumps at the same time, massive oversupply is the result. More market-based economies are also prone to similar overproduction when everyone gets caught up in the same mania (see AI datacenters), but investors will eventually stop lighting their money on fire when it becomes clear that the returns aren't there. Chinese companies, on the other hand, will just keep jumping until the CCP decides that they are done jumping.
Our feedback loop is geared towards only doing things that provide a return on investment. Their feedback loop has things like social stability and global competitiveness as competing goals to actually doing productive work.
Yes, they are able to accomplish a tremendous amount when they set their minds to it, but doing a tremendous amount more of something than there is actual demand is waste, the opposite of efficiency.
When I say they prioritize social stability, I mean that they won't stop producing cars regardless of how little economic sense it makes because they need to keep people employed to stave of massive civil unrest. And global competitiveness counts for little when the countries they want to export to implement anti-dumping policies to protect their own industries from government-subsidized Chinese exports.
>What's next, complaining that some doctor is an asshole for appearing on TV to refute people claiming ivermectin cures covid, thus making it impossible for people to seriously study ivermectin's covid benefits? Or that they were too aggressive in responding to the shyster?
That might not be the best example to use here because the incentives are entirely backwards. The people claiming to have ESP were doing it for fame and money, whereas the scientists and medical professionals claiming that ivermectin was effective for treating COVID were doing it in spite of the professional stigmatisation that came with it. The unscrupulous would have been shilling for pharma as they always have, that's where the money is, not sticking their necks out for some off-patent drug.
>the scientists and medical professionals claiming that ivermectin was effective for treating COVID were doing it in spite of the professional stigmatisation
Many of those people went from earning six figures a year as medical professionals to earning six figures a month as "influencers". Patreon has radically altered the marketplace of ideas, for better and for worse; for those who are unscrupulous or merely deluded, there are now some very attractive alternatives to mainstream legitimacy.
For the most part you have the financial incentives of pharma backwards... it is very easy to make a killing and because very famous being the kind of doctor or scientist willing to go to bat for pseudoscientific ideas. They get invited to podcasts, make their own podcasts, accrue thousands of followers, get paid to write articles for right-wing think tanks, get easy ghost-written book deals.... and after Trump's election, high-profile positions in the government. This is especially true for people who fail at the normal scientist / doctor career path.
I also don't really think there is any money per se in "shilling" for pharma, at least for like, 99% of doctors and scientists. Pretty much all doctors and scientists I know who dedicated a lot of time to communicating on covid-19, including studying ivermectin, running the trials on it that failed, didn't really get any extra money for doing so. Just a lot of hate mail.
Any examination that isn't done in person on general course material (nothing an LLM could prepare for you) is just stubborn refusal to protect students from themselves in an age where anything else can be faked. Graded homework and take-home assignments are dead as useful pedagogical tools.
Death of homework could be a great thing. The education system teaching that schoolwork must be done at home is conditioning future workers to accept working late and taking their work home.
You're conflating education work with productive work. School is about learning, for one's personal fulfilment. You're supposed to do that mostly on your own time. School is just a way to keep you motivated to learn a particular thing, and the notion of homework is necessary to reinforce that learning happens on your own and in a classroom.
But actually mostly on your own. 45 minutes twice a week in a classroom is just not enough time to learn anything of substance and depth. The Thursday-to-Tuesday memory loss is especially profound; Tuesday class is mostly spent reminding everyone who didn't do their homework what we had talked about last Thursday.
No, it would not. Even conversions using "as" are discouraged in favor of conversion traits such as From and TryFrom. Rust's goals of being explicit and correct are at odds with people wanting things to be immediately simple and easy to use.
On the contrary, I find indices to be the most natural way to represent anything that resembles a graph in Rust. They allow you to sidestep the usual issues that arise with ownership and borrowing, particularly with mutability, by handing ownership to the collection and using indices to allow nodes to refer to one another. It's delightfully simple compared to the mess of Arc and RefCell that tends to result when one tries to apply patterns from languages that leave "shared XOR mutable" as the programmer's responsibility. That's not to say that Vec and usize are appropriate for the task, but Rust's type system can be used to do a lot better.
Does this word mean "not the way things mathematicians teach things"? My experience has been that mathematicians teach things that are useful to mathematicians to students who are not going to be mathematicians and would be better served learning other things. I wasted countless hours of my life finding analytical solutions to toy calculus problems in a universe that will never yield to those methods.
>My stance on quaternions is that they are an opaque representation of what they are trying to do, which makes them unnecessarily-difficult and annoying. Not to mention hard to learn to visualize.
I've seen some remarkably confusing attempts to understand and visualize these things. This has always baffled me because the equivalent objects in geometric algebra aren't that hard to understand. I really think this is a problem with your pedagogy. You've hidden the geometric meaning of the bivector components in these imaginary components, i,j,k, and you have to take it on faith that i*j=k and instead of it being just the product of two bivector blades.
>The notion of an exponential map and exponentiating generators is, IMO, much more "natural" and intuitively straightforward than the alternatives.
That's because you learned it that way. Exponentiating an oriented area to generate a rotation is perfectly intuitive to me, and I'm not sure how somebody could be confused by the fact that a bivector can be an oriented area or the logarithm of a rotation because it's a simple matter of context.
By "unpedagogical" I mean: very hard to learn, and even when you learn it, often hard to explain. It's information that doesn't compress well, generalize well, or really convey direct understanding of what's going on. Maybe not the best word for this. Really, I just mean "bad". To me it's incomplete knowledge; it needs to be improved upon so that it makes more sense for people who need to know it. In doing so it will also become easier to learn.
I think quaternions are confusing, GA bivector notations are less confusing but still confusing, and the operator version which I endorse is the least confusing of the three. This is just an aesthetic judgment on my part. IMO if things were taught in the way I prefer, more people could learn them, faster, and come away with a more solid understanding afterwards for less work. (You and I agree that GA's version is better than quaternions for the same reason. I just think that there are better versions still.)
If you want to tell someone that exponentiating an area gives a rotation, you need to basically deal with the fact that that sentence sounds like nonsense. An area's an area, why would exponentiating it... do... anything? My preferred explanation of all this stuff avoids that saying things that sound like nonsense.
(I prefer to think of a bivector not as an oriented area per se but as a type of tensor which happens to represent those things, but also represents other things, including the logarithms of rotations, due to the properties that those two things happen to share. That's a perspective that generalizes very well, compared to the GA version, because it separates the tensor representation from the operators; the two sides end up generalizing in different directions as you go to more complicated objects. When I get around to writing to my own exposition on this I'll go through that perspective very methodically.)
>If you want to tell someone that exponentiating an area gives a rotation, you need to basically deal with the fact that that sentence sounds like nonsense.
It's not just an area though, it's an area with orientation and magnitude. It's the complex exponential function extended to 3 dimensions.
>By "unpedagogical" I mean: very hard to learn, and even when you learn it, often hard to explain. It's information that doesn't compress well, generalize well, or really convey direct understanding of what's going on. Maybe not the best word for this. Really, I just mean "bad".
I can see where you're coming from on the learning part. There are as many different ways of learning GA as there are teachers, and this does hold it back.
>To me it's incomplete knowledge; it needs to be improved upon so that it makes more sense for people who need to know it. In doing so it will also become easier to learn.
I wish you luck, and I hope that I find it on here someday.
I can see another language having a more expressive type system, I've come up against the limitations of Rust's type system more than once, but the tradeoff isn't worth it if I have to go 20 years back in time in terms of tooling.