Twisted Oak Studios is a software studio whose blog has deep technical posts on quantum algorithms, type systems, and Objective-C.
Commenters call its Grover's algorithm explainer a great beginner-friendly read, and one says the Objective-C post matches their own opinions.
Besides scientists, I don't really see quantum computers as being useful computationally. There's breaking cryptography, but then you're spending billions to inconvenience people into moving to a different quantum-resistant algorithm.
What about creating cryptography? Wikipedia has a few interesting applications:
https://en.wikipedia.org/wiki/Quantum_cryptography
I'm not a cryptographer - are security people excited about building all sorts of weird quantum protocols?
> “Then you let the computer check all possible solutions essentially—or a very large combination of them—and come back with an answer,” he says. In a quantum computer, there’s no mathematician cracking the problem, he says. “The laws of physics crack the problem for you.”
That sounds more like an NTM than a quantum computer. An NTM would turn its owner into a God.
> Superposition is the mind-bending observation that a particle can be in two states at the same time. Bring out your ruler to get a measurement, however, and the particle will collapse into one state or the other. And you won’t know which until you try, except in terms of probabilities.
It's not probabilities because people think of those as real numbers. The coefficients are complex numbers. There's a probability monad, for example, but no quantum monad:
http://twistedoakstudios.com/blog/Post5485_what-isnt-a-monad
The article sort of mentions it later on when they quote Scott Aaronson, but I suspect the author didn't understand and…
I talked about c#'s lambda syntax, which Java later borrowed, below. For the other points:
I have seen a little of the interface vs function conversions in modern Java, and it seems a decent enough small convenient feature in the context of Java, but it doesn't feel like a big win that I would cry out for in C# code.
Defaulting to not-null and immutable values is a trend in several recent languages, e.g. from Swift and Rust to F#. This IMHO looks like a good step forward and I welcome it, however it's hard to see how this would be comprehensively added into existing languages like Java or C# with an existing legacy of not working that way. Opting into Not-null in c# has been talked about many times (1) in various forms, even implemented using attributes (similar enough to type annotations). (2)
1) http://twistedoakstudios.com/blog/Post330_non-nullable-types-vs-c-fixing-the-billion-dollar-mistake
2) http://stackoverflow.com/questions/792531/c-how-to-implement-and-use-a-notnull-and-canbenull-attribute
When I wrote "predict" there, I was referring to whether the predicted probabilities approach the true underlying probabilities, and Solomonoff induction can "predict" a true random number generator in that sense because its predicted probabilities will approach those of the random number generator. [1] However, if you tried to use it to predict a halting oracle, the halting oracle would be deterministic but Solomonoff induction would never be able to predict it with complete confidence, and this is what I was referring to in that paragraph.
But you're right that random numbers are inherently unpredictable; maybe I should add another footnote explaining what I meant there. (Edit: I added a clarification to the paragraph you quoted.)
[1] http://twistedoakstudios.com/blog/Post5623_solomonoffs-mad-scientist in the "Thinking with Programs: Random Data" section
After Shor's algorithm a good follow up would be to learn about Grover's Algorithm[1]
Here is a fantastic explanation of it: http://twistedoakstudios.com/blog/Post2644_grovers-quantum-search-algorithm [More technically involved explanation]
Interesting factoid: Scott Aaronson[2] interned with Lov Grover[3] at Bell Labs as a teenager!
[1] https://en.wikipedia.org/wiki/Grover%27s_algorithm
[2] https://blogs.scientificamerican.com/cross-check/scott-aaronson-answers-every-ridiculously-big-question-i-throw-at-him/ [This is a great interview, btw!]
[3] https://en.wikipedia.org/wiki/Lov_Grover
I agree. You can only write so much object-to-data packing code followed by the redundant data-to-object packing code before you realize there's an exploitable pattern here.
(I had exactly this experience, in fact[0][1]. My name was way worse, though: "Jars".)
0: http://twistedoakstudios.com/blog/Post4708_optimizing-a-parser-combinator-into-a-memcpy
1: https://github.com/Strilanc/Tinker/blob/master/Warcraft3/Protocol/Game%20Action%20Protocol.vb#L459
It's basically impossible to measure the one-way latency, without external information in the form of clock synchronisation done externally. See http://twistedoakstudios.com/blog/Post2353_when-one-way-latency-doesnt-matter
This fact is also the basis for special relativity (different observers may choose different simultaneity conventions - for example Einstein synchronisation)