Why I don't spend time with Modern C++ anymore
linkedin.com
linkedin.com
and
> all sorts of reconfigurable hardware are being deployed in the field. Intel is currently shipping Xeon CPUs with embedded FPGAs. IOT is going to become a multi-billion dollar market in the next five years, and it is largely propelled by little $10 FPGAs that will require an astounding amount of qualified technologists to program them.
I can't say I disagree (I wrote arachne-pnr [0] last year to learn about exactly these technologies) but I don't know how many people are going to be developing next generation of high performance systems in VHDL and Verilog compared to modern programming languages. I think there is a huge opportunity for tool development in this space.
Given that the focus of the article is mostly bleeding edge C++, and not C++ in its entirety, I'm justified in suspecting that he would have you do C++ work using C++98 or C++2003.
(In which case I strongly agree; I think C++ developed into the best version of its kind of thing in around that era, and is now basically in a kind of Rococo decline.)
In the future it's best to email hn@ycombinator.com with something like this, because then we're sure to see it.
I agree with the author's criticisms of many C++ features. At the same time, I think that a proper simple, modern subset of C++ exists that is much more productive and safer than C, without sacrificing performance. You can also optimize progressively, for example start with using std::string and std::vector and then replace the stock implementations if they aren't performant on your target architecture. I would not, however, recommend using C++ for GPU kernel code - a mix of C++ for CPU code and C for GPU kernel code works best. It is not ideal, but it's the best toolset available for serious industrial development.
FPGAs are exciting, but they've also been the "next big thing" in general purpose computing forever. Obviously it makes sense to use FPGAs for certain HFT and embedded applications, but that's not the same as general purpose computing which is what C/C++ is for. Not to mention, FPGA compile times can take hours or even days, which pales in comparison to most C++ template overhead.
I would also say that for IOT, I'm not sure why it is obvious that "$10 FPGAs" should dominate. Why not a $2 microcontroller? Embedded devices have been around long before "IOT" became a buzzword, and we can see that microcontrollers, FPGAs, SOCs, and custom ASICs all have a role to play depending on the application.
Furthermore, many of his arguments seem to be statements about all high level languages.
At first, I didn't understand it so I feared it. Then I understood some of it, so I liked it. Finally, I understood most of it, so the mirage dissolved in front of my eyes and I no longer seek it.