Big Technical Note: From C++1998 to C++2020

Konstantin_Burlachen: <p>For people who are not entirely new to C/C++, here is an attempt to systematize language features of various C/C++ standards 03/11/14/17/20:</p>
<aside class="onebox githubblob" data-onebox-src="https://github.com/burlachenkok/CPP_from_1998_to_2020/blob/main/Cpp-Technical-Note.md">
  <header class="source">

      <a href="https://github.com/burlachenkok/CPP_from_1998_to_2020/blob/main/Cpp-Technical-Note.md" target="_blank" rel="noopener nofollow ugc">github.com</a>
  </header>

  <article class="onebox-body">
    <h4><a href="https://github.com/burlachenkok/CPP_from_1998_to_2020/blob/main/Cpp-Technical-Note.md" target="_blank" rel="noopener nofollow ugc">burlachenkok/CPP_from_1998_to_2020/blob/main/Cpp-Technical-Note.md</a></h4>


      <pre><code class="lang-md">**Technical Note. From C++1998 to C++2020.**

Contributors:

*Konstantin Burlachenko*

( https://burlachenkok.github.io, konstantin.burlachenko@kaust.edu.sa )

Revisions: Draft (v1.1)

----

Contents:
- [Introduction](#introduction)
- [Glossary](#glossary)
- [Motivation](#motivation)
  * [Downsides of Interpretable Languages](#downsides-of-interpretable-languages)
  * [Downsides of C/C++](#downsides-of-c-c--)
- [Deep principles of the Language](#deep-principles-of-the-language)
- [Why learn C++ if I know Python (Toy Example)](#why-learn-c---if-i-know-python--toy-example-)
</code></pre>



  This file has been truncated. <a href="https://github.com/burlachenkok/CPP_from_1998_to_2020/blob/main/Cpp-Technical-Note.md" target="_blank" rel="noopener nofollow ugc">show original</a>

  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>

<p>It’s an early draft of the note. In the future, some things that are tightly bound to C/C++ will be added.</p>
<p><strong>Why does it have a connection to Deep Learning?</strong></p>
<p>Most software in this world (after various wrappers) is written in C/C++. As a subset, it also includes tools, libraries, and frameworks for Deep Learning including PyTorch.</p>
<p>The famous (standard) Python interpreter used for prototyping (and sometimes beyond) <a href="https://github.com/python/cpython" rel="noopener nofollow ugc">Python</a> is also written in C/C++ and highly leverages into libraries written in C/C++. Underlying libraries for PyTorch are also written in C/C++ (or variations).</p>
<p>Two example scenarios when you need C++:</p>
<ul>
<li>
<p>Your project may require using C/C++ API from PyTorch for reasons of C++. So you also need to know that language in that case to some extent. Unfortunately, C/C++ was a complex language in the past, and that languages are still tricky for new adepts. That note systematizes features of the language.</p>
</li>
<li>
<p>Sometimes, when you want to go beyond existing methods and functionality, you may need to modify one of the mentioned projects for your needs (if the project is open source like PyTorch). For that purpose, you need to learn C/C++, whether you like it or not. C++ Language is the first step because frameworks are enormous, e.g., PyTorch has 5M lines of code. And once you go into details of the internal organization, it would not be an easy time. But you may need it.</p>
</li>
</ul>