|
Boost : |
From: Vinnie Falco (vinnie.falco_at_[hidden])
Date: 2022-04-19 14:42:04
It might be interesting to think about where C++ and Boost will be in
the next 20 years and in the next 50 years. There has been an
explosion of research and development into new programming languages
(Rust being the most visible example). C++ is hardly the most popular
language (Python is, if the TIOBE index is to be believed). But C++ is
an essential language because it occupies the unique position of being
as close as possible to assembly language while remaining high level.
The zero-cost abstractions, metaprogramming, and powerful
compositional tools of C++ still have no competitors and they are
unlikely to have them any time soon.
This doesn't necessarily mean that C++ is good for everything; there's
an opportunity cost for all this. C++ code is generally more complex,
harder to read, and harder to write than other code. Other languages
are much better suited for certain tasks. No one should be
implementing a content-driven website using Asio and Beast for
example. But for the things that C++ is good at, it excels at them. A
recent reddit post [1] provided a decent list::
* games
* databases
* high frequency trading
* search (Google/Bing/DuckDuckGo)
* web browsers (Chrome/Safari/Edge)
* virtual reality headsets (Facebook)
* distributed systems at big tech companies (Google/Microsoft/Facebook)
* low level libraries (machine learning libraries like tensorflow and pytorch)
* compilers, virtual machines, interpreters (JVM/gcc/LLVM)
* robotics & hardware (ex: self driving cars, planes, missiles, space
ships, etc)
My opinion is that wg21 (the C++ standards committee) has been growing
increasingly out of touch with the needs of the larger C++ community.
Not necessarily out of malice, but because the bureaucratic process of
the committee does not align the incentives of its members with users.
I predict that we will see the C++ standard library become
increasingly irrelevant by not only failing to produce stable things
that people want, but also by not even keeping up feature-wise with
the library ecosystem of other languages. Where is Requests [2] for
C++? Python has had this for over a decade.
In case you think I'm exaggerating, look at this comment from Reddit:
...a major vendor is getting ready to release a product that does
not allow user applications to directly access TCP sockets so
the only way to get any network access is to go through their
standard library which only supports backdoored HTTPS.
This vendor of course is Apple, as can be seen in P1860R0 [4]. We
should not expect that wg21 will be able to deliver an important
feature such as networking in a form that will be usable or
recognizable to non-committee members.
What does this mean for C++ and Boost? I believe there is a
significant opportunity for Boost to step in and become the rational
collection of actually useful libraries that the C++ standard library
is not. We already have networking, some protocols, and JSON. We (the
existing Boost authors and contributors) might consider looking to the
list above of industries that use C++, and focus our efforts more
towards providing libraries that enhance those industries. Perhaps by
reaching out to leaders in those fields we might establish working
relationships and build, say, the next Boost.Tensorflow or something
like that. I don't know.
Oh, and add "cryptocurrency" to the list above. C++ is the language of
blockchain, because performance matters.
What do you think?
Thanks
Vinnie
[1] <https://www.reddit.com/r/cpp/comments/u5vjni/comment/i54qbzq>
[2] <https://docs.python-requests.org/en/latest/>
[3] <https://www.reddit.com/r/cpp/comments/u6z8gr/comment/i5caxr6>
[4] <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1860r0.html>
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk