Deleted Comment
Deleted Comment
> Drawn with great humility and thanks to one of my favorite people. Scott did all of the real work, and I threw in some dirty jokes. So, hey, a pretty good deal all around.
Gee, I wish they'd mentioned that in the literal first panel of the comic.
What do you think would be a good correction or disclaimer to add? Would it be sufficient to e.g. say that in this first part, we only implement a two-component ket? Generalizing the ket type to an arbitrary-size vector while keeping type constraints, perhaps briefly mentioning const generics (an upcoming language feature), etc could easily make for another part in this series. Making the ket into an actual vector could then give way to doing proper linear algebra on them, cleaning up some of the manually implemented operations here, as their teaching purpose has been fulfilled already.
Thoughts?
You made no attempt to explain what the two different states in a single ket mean: hint, it's superposition. Never provided even a trivial justification for why normalization is important; where is the actual physics?
Using Rust here is also quite pointless when you're just doing linear algebra... where is the actual benefit over Python or even Haskell?
You've written a very cute and inefficient math library, but calling this QC is just false advertising.
I remember learning about this at uni in one of the more advanced QM modules.
I remember thinking: Seriously, couldn't they've come up with a better name?
You're right, the essay needs a better explanation on what a ket and a quantum state is. I'll figure something out.
Excellent point with the superposition, I'll add that in! Same with the normalization - while adding the `is_valid` method to the struct makes sense programming story -wise, it'd be great to justify its origins and implications.
As for using Rust being pointless - I am writing this blog post series for three reasons: learning more Rust by doing, learning more quantum computing by doing, and sharing my journey as a tutorial. Using Rust for the sake of learning (and hopefully helping others learn) Rust is in my opinion a perfect reason to use Rust.
As for calling this QC - I'd clarify that this code does not intend to be a production-grade QC library, and the blog post series does not intend to be an exact, axioms-and-proofs type of an university level course that prepares you for the industry in one go. I'd think of it more as a Todo MVC app building journey with a quantum flavor - or something. That being said, I do plan to add more QC features in the next posts of the series, and incrementally add to the accuracy as much as I feasibly can. All this feedback here and links to more materials are helping me immensely, I want to learn more about this stuff!
Thank you for calling it very cute - I really appreciate that! ️