    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
     <channel>
        <title>ACCU  :: Reviews</title>
        <link>https://members.accu.org/index.php/articles/2757</link>
        <description>Professionalism in Programming</description>
        <dc:language>en-us</dc:language> 
        <dc:creator>Administrator</dc:creator> 
        <admin:generatorAgent rdf:resource="http://www.xaraya.org" /> 
        <admin:errorReportsTo rdf:resource="mailto:webeditor@accu.org" />
       <sy:updatePeriod>hourly</sy:updatePeriod>
       <sy:updateFrequency>1</sy:updateFrequency>
       <docs>http://backend.userland.com/rss</docs>




<div class="xar-mod-head"><span class="xar-mod-title">Programming Topics + CVu Journal Vol 32, #1 - March 2020</span></div>

<table border="0" cellpadding="1" cellspacing="0">
    <tbody>
    <tr>
        <td valign="top">
            Browse in :
       </td>
       <td valign="top">

                                            <a href="https://members.accu.org/index.php/articles/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c13/">Topics</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c65/">Programming</a>
<br />

                                            <a href="https://members.accu.org/index.php/articles/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c76/">Journals</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c77/">CVu</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c408/">321</a>
<br />

                                            <a href="https://members.accu.org/index.php/articles/c65-408/">Any of these categories</a>

                    -                        <a href="https://members.accu.org/index.php/articles/c65+408/">All of these categories</a>
<br />
</td>
   </tr>
   </tbody>
</table>




<div class="xar-error">
   <p>
 <strong>Note:</strong> when you create a new publication type,
the articles module will automatically use the templates
<em>user-display-[publicationtype].xt</em>
and <em>user-summary-[publicationtype].xt</em>.
If those templates do not exist when you try to preview or display a new article,
you'll get this warning :-)  Please place your own templates in themes/<em>yourtheme</em>/modules/articles . The templates will get the extension .xt there. </p>
</div>
<div class="xar-norm xar-standard-box-padding">
   <h1><strong>Title:</strong>&nbsp;Reviews</h1>
<p><strong>Author:</strong>&nbsp;Bob Schmidt</p>
<p>
<strong>Date:</strong> 02 March 2020 22:05:45 +00:00 or Mon, 02 March 2020 22:05:45 +00:00</p>
<p><strong>Summary:</strong>&nbsp;The latest roundup of reviews.</p>
<p><strong>Body:</strong>&nbsp;<p class="EditorIntro">We are always happy to receive reviews of anything that may be of use, or of interest, to software developers. The emphasis will tend to be on technical books, but we are also interested in less-technical works â€“ for example, the humanities or fiction â€“ and in media other than traditional print books.</p>

<p class="EditorIntro">Do you know of something you think deserves â€“ or does not deserve â€“ a wider audience? Share it here. We're keen to highlight differing opinions on the same work, so if you disagree with a review here do send in your own!  Contact Ian Bruntlett at reviews@accu.org.</p>

<h2>C++17 In Detail</h2>

<p><img src="/content/images/journals/cvu32-1/Reviews/CppInDetail.png"/></p>

<p><strong>By Bartlomiej Filipek, published by Leanpub, 2019 (continuous updates), 378 pages, ISBN: 978-1798834060</strong></p>

<p><strong>Reviewed by Paul Floyd</strong></p>

<p>This book is available with continuous updates: https://leanpub.com/cpp17indetail</p>

<p>Highly recommended</p>

<p>C++17 is the second iteration following a three year cycle and at the end of last year (2019) we started getting some books specific to C++17. I felt that C++14 got fairly thin coverage in the publishing world (Programming Principles and Practice, Effective Modern C++ and thatâ€™s about it). C++17 seems to be doing better, with second editions of C++ Templates, A Tour of C++ and C++ Concurrency in Action already. Perhaps authors and publishers are having a harder time keeping up with C++ versions? Perhaps also thereâ€™s more to write about in C++17.</p> 

<p>Getting back to the book itself, the book covers only the new features of C++17. You will need to have to have a good understanding of C++ to be able to get much benefit from the book. The first example on page 3 illustrates several new features. If you are not familiar with <code>std::map</code>, brace initialisation, <code>auto</code> and range based <code>for</code> then you wonâ€™t appreciate how much is new.</p>

<p>The book is broken down into three parts: language, library and use cases. There is plenty of information in each chapter on the C++ Standards Committee papers, where the various changes were proposed, and also of which compilers and versions support each feature. The first few chapters cover some fairly basic items that clean up and simplify the language. I expect that Python programmers will appreciate the new Structured Bindings. Chapter 5 Templates (including fold expressions and â€˜<code>if constexpr</code>â€™). In my opinion these are the most important changes in C++17 (especially â€˜<code>if constexpr</code>â€™) which continue the process of enabling easier and more powerful template programming. The language part ends with a chapter on attributes.</p>

<p>The second part covers the library. The first three items â€“ <code>std::optional</code>, <code>std::variant</code> and <code>std::any</code> â€“ have been with us for some time in <code>boost::guise</code>. Itâ€™s good to see these in the library and I think that they will be very useful tools. I likes the coverage of performance and exceptions, and there are also summaries of changes from the <code>boost::versions</code>.</p>

<p>The next three chapters are dedicated to strings: <code>std::string_view</code>, string conversions and string searching. Searching isnâ€™t really up my street, but itâ€™s always good to know. <code>string_view</code> and the conversions look promising, at least from a performance perspective. I had already heard some misgivings about the risks of using <code>string_view</code>, and that is well covered. The next two chapters are big items: Filesystem and Parallel Algorithms. There is a lot to cover for filesystems, but everything is covered albeit briefly, and there are a few decent examples of using the interface. Parallel Algorithms is mostly about performance. A little niggle here, I would have liked to see some more useful example for the uses of <code>std::reduce</code>/<code>std::transform_reduce</code>, for instance the variance with an explanation of why <code>std::reduce</code> is not suitable for such calculations. There is a fair amount of performance analysis. The last two chapters of Part 2 cover small items and standard library cleanup.</p>

<p>The last part is a brief overview of some use cases. The first three are refactoring using <code>optional/variant</code>, <code>[[nodiscard]]</code> and <code>if constexpr</code>. The last example parallelises a CSV file reader.</p>

<p>I enjoyed reading the book. It is concise enough that I could read it all in a few days whilst at the same time giving enough coverage that I had a clear impression of the new additions to C++17.</p>

<h2>C++17 The Complete Guide</h2>

<p><img src="/content/images/journals/cvu32-1/Reviews/Cpp17.png"/></p>

<p><strong>By Nicolai M. Josuttis, published by Leanpub, 2019, 454 pages, ISBN: 978-3967300178</strong></p>

<p><strong>Reviewed by Paul Floyd</strong></p>

<p>The book is available with continuous updates: https://leanpub.com/cpp17</p>

<p>Highly recommended</p>

<p>One of the most difficult aspects with this book is that it is similar to C++17 In Detail by Bartlomiej Filipek. If you are asking yourself â€œWhich one should I get?â€, then Iâ€™m afraid that Iâ€™m not going to be much help as my usual answer to such a question is to buy both. This book is slightly longer and a bit denser.</p>

<p>This book only covers the â€˜deltasâ€™ that C++17 has added to (and to a small extent subtracted from) the prior C++ standards. This means that you will need to have a good working knowledge of C++03/11/14 in order to read and benefit from this book.</p>

<p>There are six sections to the book: basic language, template features, new and changed library components, expert utilities and finally general hints. Each section is divided into chapters of around 10 pages (a bit longer for features that require a lot of details like â€˜filesystemâ€™). The overall style is mostly descriptive text with annotated snippets. There are some longer examples of runnable code, for instance a <code>mallinfo</code>-style allocator tracker for <code>new</code> and <code>delete</code>. I wonâ€™t go into detail on all of the 35 chapters (the table of contents can be seen on the bookâ€™s Leanpub web page). Suffice it to say that I felt that there is a good amount of coverage on all of the topics.</p>

<p>One little thing that I felt could have been added is a brief word on compiler/standard library/platform support. Iâ€™d like to play around with the parallel algorithms a bit, but only some compiler/library/platform combinations support them currently.</p>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
