3 ms·
I don't think you are making the point you think you are making, or you being unclear. Take the concurrency example. The is a big difference in understanding th
by hellofunk 9y ago
I don't think you are making the point you think you are making, or you being unclear. Take the concurrency example. The is a big difference in understanding the high-level concept of parallelism vs serial execution, which you suggest any library user understand, vs. understanding the C++ techniques and raw code that interacts with low-level threads to provide the library functionality. A good library does not require its users to understand its implementation in order to use its API -- that would be ridiculous most of the time. The burden falls on library authors to provide a good API abstraction that does not require users to understand the implementation; though some bad APIs may in fact require this of the users due to poor design.
- jackcviers3 9y agoYes, I think that I'm being unclear. As a user, I need to understand the top level abstraction of the library I am using - the api. I need to read that api's code and understand what it does, (not any deeper) in order to use it. If it is a low-level api that directly implements a thread-pool, I need to understand that. If it is a high-level template that implements the async continuation monad[1], I need to understand the api surface that I call, and just the body of that surface and type signature. 1: https://www.fpcomplete.com/blog/2012/06/asynchronous-api-in-c-and-the-continuation-monad https://www.fpcomplete.com/blog/2012/06/asynchronous-api-in-...