{"id":23,"date":"2016-02-26T21:47:09","date_gmt":"2016-02-26T21:47:09","guid":{"rendered":"http:\/\/forell.local\/?page_id=23"},"modified":"2021-12-24T20:30:40","modified_gmt":"2021-12-24T20:30:40","slug":"c-resources","status":"publish","type":"page","link":"https:\/\/www.dreik.se\/index.php\/c-resources\/","title":{"rendered":"C++ resources"},"content":{"rendered":"<p>The web is filled with very good material on C++. A lot of good books also exist. Here are a few resources well worth to read\/watch, which I have come in contact with over the years.<\/p>\n<h2>FAQ and reference<\/h2>\n<ul>\n<li><a href=\"http:\/\/en.cppreference.com\/w\/\" target=\"_blank\" rel=\"noopener\">cppreference.com<\/a> &#8211; a wiki style c++ reference page.<\/li>\n<li><a href=\"https:\/\/en.wikibooks.org\/wiki\/More_C%2B%2B_Idioms\" target=\"_blank\" rel=\"noopener\">C++ idioms<\/a><\/li>\n<li><a href=\"https:\/\/stackoverflow.com\/questions\/tagged\/c%2b%2b-faq\" target=\"_blank\" rel=\"noopener\">stack overflow C++ FAQ<\/a><\/li>\n<li><a href=\"http:\/\/www.parashift.com\/c++-faq\/\" target=\"_blank\" rel=\"noopener\">FAQ lite<\/a><\/li>\n<li>Bjarne Stroustroups <a href=\"http:\/\/www.stroustrup.com\/C++.html\" target=\"_blank\" rel=\"noopener\">questions and answers<\/a>.<\/li>\n<\/ul>\n<h2>Talks<\/h2>\n<ul>\n<li>atomic weapons by Herb Sutter: <a href=\"http:\/\/channel9.msdn.com\/Shows\/Going+Deep\/Cpp-and-Beyond-2012-Herb-Sutter-atomic-Weapons-1-of-2\" target=\"_blank\" rel=\"noopener\">part 1<\/a> and <a href=\"http:\/\/channel9.msdn.com\/Shows\/Going+Deep\/Cpp-and-Beyond-2012-Herb-Sutter-atomic-Weapons-2-of-2\" target=\"_blank\" rel=\"noopener\">part 2<\/a><\/li>\n<li><a href=\"http:\/\/exceptionsafecode.com\/\" target=\"_blank\" rel=\"noopener\">using C++ exceptions<\/a> by Jon Kalb<\/li>\n<li>template meta programming by Walter E Brown: <a href=\"https:\/\/www.youtube.com\/watch?v=Am2is2QCvxY\" target=\"_blank\" rel=\"noopener\">part1<\/a> and <a href=\"https:\/\/www.youtube.com\/watch?v=a0FliKwcwXE\" target=\"_blank\" rel=\"noopener\">part2<\/a><\/li>\n<\/ul>\n<h2>Books<\/h2>\n<ul>\n<li><a href=\"http:\/\/cc2e.com\/\" target=\"_blank\" rel=\"noopener\">code complete<\/a> (also see below under working in teams)<\/li>\n<li><a href=\"http:\/\/www.gotw.ca\/publications\/xc++.htm\" target=\"_blank\" rel=\"noopener\">exceptional C++<\/a> by Herb Sutter<\/li>\n<li><a href=\"http:\/\/www.aristeia.com\/books.html\" target=\"_blank\" rel=\"noopener\">effective C++ by Scott Meyers<\/a><\/li>\n<li><a href=\"https:\/\/stackoverflow.com\/questions\/388242\/the-definitive-c-book-guide-and-list\" target=\"_blank\" rel=\"noopener\">List of C++ books on stack overflow<\/a><\/li>\n<\/ul>\n<h2>Hardware, memory, optimization<\/h2>\n<ul>\n<li><a href=\"http:\/\/www.agner.org\/optimize\/blog\/\" target=\"_blank\" rel=\"noopener\">Agner Fogs optimization guides<\/a><\/li>\n<li>How a cpu deals with threading, synchronization, caches and other performance related stuff: <a title=\"Whats new in cpus since the 80s\" href=\"http:\/\/danluu.com\/new-cpu-features\/\" target=\"_blank\" rel=\"noopener\">Whats new in cpus since the 80s<\/a><\/li>\n<\/ul>\n<h2>What every programmer should know about&#8230;<\/h2>\n<ul>\n<li><a href=\"http:\/\/docs.oracle.com\/cd\/E19957-01\/806-3568\/ncg_goldberg.html\">floating point arithmetic<\/a><\/li>\n<li><a href=\"http:\/\/people.freebsd.org\/~lstewart\/articles\/cpumemory.pdf\" target=\"_blank\" rel=\"noopener\">computer memory<\/a> (a bit long to read, but very detailed and interesting)<\/li>\n<li>security: <a href=\"https:\/\/stackoverflow.com\/questions\/2794016\/what-should-every-programmer-know-about-security\" target=\"_blank\" rel=\"noopener\">here is a good entry on stack overflow<\/a> with pointers to other resources.<\/li>\n<li>security: quick and fun introduction video and more: <a href=\"https:\/\/www.crypto101.io\/\" target=\"_blank\" rel=\"noopener\">crypto 101<\/a><\/li>\n<li><a href=\"http:\/\/www.joelonsoftware.com\/articles\/Unicode.html\" target=\"_blank\" rel=\"noopener\">character encoding<\/a><\/li>\n<li>undefined behaviour: <a href=\"http:\/\/blog.llvm.org\/2011\/05\/what-every-c-programmer-should-know.html\" target=\"_blank\" rel=\"noopener\">part1<\/a> <a href=\"http:\/\/blog.llvm.org\/2011\/05\/what-every-c-programmer-should-know_14.html\" target=\"_blank\" rel=\"noopener\">part2<\/a> <a href=\"http:\/\/blog.llvm.org\/2011\/05\/what-every-c-programmer-should-know_21.html\" target=\"_blank\" rel=\"noopener\">part3<\/a><\/li>\n<li><a href=\"https:\/\/stackoverflow.com\/questions\/11962457\/why-is-using-an-uninitialized-variable-undefined-behavior-in-c\/11965368#11965368\">undefined behaviour on uninitialized variables<\/a><\/li>\n<\/ul>\n<h2>Working in teams<\/h2>\n<ul>\n<li><a href=\"http:\/\/cc2e.com\/\" target=\"_blank\" rel=\"noopener\">code complete<\/a> &#8211; A few years ago, I read the section on which measures are the most effective for writing high quality, maintainable code. That has paid off well, I recommend reading the section on code review compared to unit test and other techniques.<\/li>\n<li>the <a href=\"http:\/\/www.joelonsoftware.com\/articles\/fog0000000043.html\" target=\"_blank\" rel=\"noopener\">Joel Spoilsky test<\/a><\/li>\n<\/ul>\n<h2>Quizzes and eye openers<\/h2>\n<p>These are good to look at in case you think you know all about C++!<\/p>\n<ul>\n<li><a href=\"http:\/\/kukuruku.co\/hub\/cpp\/secrets-of-the-conditional-ternary-operator\">ternary operator magic<\/a><\/li>\n<li><a href=\"http:\/\/cogitolearning.co.uk\/?p=1669\">pure virtual function with content<\/a><\/li>\n<li>some caveats, valid for c but some also for C++:<a href=\"http:\/\/kukuruku.co\/hub\/programming\/i-do-not-know-c\"> I do not know c<\/a><\/li>\n<li><a href=\"https:\/\/stackoverflow.com\/questions\/1628768\/why-does-an-overridden-function-in-the-derived-class-hide-other-overloads-of-the\">name hiding<\/a><\/li>\n<li>there are more or less subtile differences between C and C++. Good to know in case you work with c programmers! <a href=\"https:\/\/en.wikipedia.org\/wiki\/Compatibility_of_C_and_C%2B%2B\">compatibility between C and C++(wikipedia)<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>The web is filled with very good material on C++. A lot of good books also exist. Here are a few resources well worth to read\/watch, which I have come in contact with over the years. FAQ and reference cppreference.com &#8211; a wiki style c++ reference page. C++ idioms stack overflow C++ FAQ FAQ lite [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-23","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.dreik.se\/index.php\/wp-json\/wp\/v2\/pages\/23","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dreik.se\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.dreik.se\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.dreik.se\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dreik.se\/index.php\/wp-json\/wp\/v2\/comments?post=23"}],"version-history":[{"count":2,"href":"https:\/\/www.dreik.se\/index.php\/wp-json\/wp\/v2\/pages\/23\/revisions"}],"predecessor-version":[{"id":90,"href":"https:\/\/www.dreik.se\/index.php\/wp-json\/wp\/v2\/pages\/23\/revisions\/90"}],"wp:attachment":[{"href":"https:\/\/www.dreik.se\/index.php\/wp-json\/wp\/v2\/media?parent=23"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}