Clang Plays Tetris -- Tetris As a C++ Template Metaprogram
New submitter mjvzb writes: Ever wish compiling was more fun? Well, I recently implemented Tetris as a C++ template metaprogram (code at Github). The game is played by recompiling its source, taking player input by compiler flag. The runtime program is only needed to print the game screen to the console and save the game state across compiler runs.
Implementing Tetris in templates is not as horrific as you may imagine, and I've put together a post covering the details. Once you get over the syntax, C++ metaprogramming is just like functional programming.
Implementing Tetris in templates is not as horrific as you may imagine, and I've put together a post covering the details. Once you get over the syntax, C++ metaprogramming is just like functional programming.
Who are you to judge that? Maybe he was lost in the depths of suicidal depression, and this project gave him a reason to drag himself out of it. Maybe an alien race will visit the earth and think that this is just so goddamn clever that there's no reason not to share their hyperdrive tech with us. Or whatever. But basically, fuck you and don't worry about what other people choose to do or not do.
Once you get over the syntax, C++ metaprogramming is just like functional programming.
No, the syntax is the entire thing wrong with C++ metaprogramming. It clearly wasn't designed for things like this. To clear up any doubt about the syntax, check out this file. In addition the inscrutable error messages (although those have improved over the past decade). If anyone likes template metaprogramming, I suggest they just use LISP.
That said, this project is really cool. Nice hack mattbierner.
"First they came for the slanderers and i said nothing."
metaprogramming is like functional programming in these senses:
1) Uses lots of recusion
2) Has no variables, only constants. Nothing is mutable.
3) Has functions
Because of 1 and 2, it helps to think in terms of functional programming if you want to do anything substantial.
"First they came for the slanderers and i said nothing."
If only the people who want to take on challenges like this put their skills to something actually useful....... There has GOT to be a better use of your knowledge and skills.
Sometimes people do things for fun........not because they want to please internet critics.
"First they came for the slanderers and i said nothing."
Say what?
Template metaprogramming is exactly functional programming.
Not only that, C++98 style was completely 100% pure with no mutabe state. You got recuursion and pattern matching (called [partial] specialisation). A class is essentially a function returning a type (well, multiple types) as internal typedefs. And as such functions are very much first class objects.
C++11 added some local mutable state. constexpr functions can now be evaluated at compile time. Those yielding an int can be used as template arguments.
SJW n. One who posts facts.
This is the most terrifying and ridiculous thing I've seen in my entire life.
Americans have spent more than a trillion hours watching reality TV. That is far more terrifying and ridiculous than someone playing with a Turing-complete compiler meta-language.
Then why would they blog about it... and then submit an article to Slashdot describing and linking to their own god dam blog.
Because other people like to see it, and it's really cool. Specifically, if you don't like this kind of thing, you shouldn't be on Slashdot. See also this.
"First they came for the slanderers and i said nothing."