I'm just a hobbyist (I use C++ wrapped in R for my research and exploration) but my dream is something like julia (https://julialang.org/) but with modern C++ syntax. I have really enjoyed the recent metaprogramming additions to C++ and would love to have that in an interactive environment with incremental jit. (I know this can be kind of done now but its not like using R Studio or other nice user platforms.) BTW, C++ is found in high performance scientific computing, but not as often as Fortran and C. TK On Tue, Apr 19, 2022 at 5:28 PM William Linkmeyer via Boost < boost@lists.boost.org> wrote:
+1
Although, I feel that there should be an *attempt* to make C++ libraries easy enough to use for anything.
(For example, say, use asio & beast for websites. I can dream, okay?)
WL
On Apr 19, 2022, at 10:42 AM, Vinnie Falco via Boost < boost@lists.boost.org> wrote:
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>
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost