1) Write Redis in C. Hard for some devs who only know Python, but good performance.
2) Write Redis in Python with C libraries. Doable for a Python dev, performance hit.
3) Write Redis in pure Python. A fun experiment to see the performance limitations of Python when compared to C running on the same machine.
It feels a bit sensationalist to me, and I see this all the time with projects these days. It's kind of disappointing.
However, if the experiment in question is, "using python glue code, can a developer string together a service that replicates the functionality of redis", then that illustrates what would actually happen in the real world.
For example, for a very junior Python developer, writing something in C is basically like asking a C developer to write assembly- possible, but they'd have to learn a lot of different things to do it.
Similarly, when I write Java, I want to be calling Arrays.sort(myarray) instead of writing my own sort (if the focus is on developer convenience and development velocity).
So, it's just a difference in what you're desiring to measure.
"Decent" is a weasel word, which suggests that the performance hit of following this approach is tolerable or acceptable. Sometimes it is, sometimes it isn't. It really depends on where you place the glue code, and where you expect the hot path to be.
In the case of a self-described "Redis clone" which ends up being Redis itself glued back together with Python, I'm not sure you can make that case.
> The entire purpose is to demonstrate that you can build a reasonable performance application built on high performance libraries and stick with idiomatic Python code.
I'm sorry to say but that isn't much of a demonstration. I mean, Python is already widely used as glue code to hold together high performance libraries, and it's already widely known and understood that gluing together code with Python brings in a significant performance hit. And that's ok, because people do it as a tradeoff between performance and some other kind of value-added.
But in this case I fail to see what value-added is being proposed, other than the personal portfolio side of things.
Well, your claim is that the author has missed the point, because I just quoted the authors point and his intended purpose. So I guess we both agree.
The entire purpose is to demonstrate that you can build a reasonable performance application built on high performance libraries and stick with idiomatic Python code.