ADVANCE YOUR PROGRAMMING SKILLS IN C++

Resources for C/C++ Programmers and More

Recommended by Leor Zolman
(Updated 9/16/2015)

For Programmers:

For Anybody With a Computer:

C++ Resources

C++11/14

ISO C++ - Headquarters for C++ news, events, standardization progress, etc. A service of the Standard C++ Foundation.

Bjarne Stroustrup's C++11 FAQ - More than a FAQ, really...

Twilight Dragon Media (TDM) gcc Windows-resident C++ environment: After several days of Googling in search of a good g++ port that runs under Windows, I finally came across this native Windows command-line MinGW-based gcc C++ platform that works.There's now a streamlined installer, and for the most part, everything just works "out of the box"...no header file issues, concurrency support, etc.

MinGW C++ Compiler at nuwen.net - This is a beautifully packaged gcc 4.9.1 compiler distribution assembled by STL (Stepan T. Lavavej, Microsoft's C++ library guru) and packaged with the Boost libraries. Great for testing C++11/14 features. Only down-side: currently, no threading support.

Wandbox - The best online compiler I've seen; lets you test code with many different versions of all the best compilers: clang, g++, etc., but also supports myriad other languages.

Wikipedia C++11 page

JTC1/SC22/WG21 - The C++ Standards Committee web headquarters

C++14 Draft Standard (Direct PDF link, Working Draft dated 2013-10-13)

Elements of Modern C++ Style - Herb Sutter's "living document" on the most impactful new C++11 features

C++ and Beyond - High-quality, high-end conference series presented by Scott Meyers, Herb Sutter and Andrei Alexandrescu periodically at various picturesque locations. I attended the August 2011 edition in Banff, Canada and 2012 in Asheville, NC and 2013 in Snoqualmie, WA.. C++ education doesn't get any better than this.

C++ Rvalue References Explained - A great tutorial by Thomas Becker, taking the subject matter well into the realm of perfect forwarding.

Scott Meyers' article on Universal References (see correcsponding the video in the next section)

Lambdas, Lambdas Everywhere - Herb Sutter's slides from his talk. (For the video, see below)


Multimedia C++ Presentations

An Overview of C++11/14 Part I and Part II. Leor Zolman's two-part presentation at CppCon 2014 (excerpts from my Moving Up to Modern C++ course.)

Going Native 2012 - 2-day C++11 conference held Feb 2-3, 2012 at Microsoft in Redmond, WA with Sutter, Stroustrup, Alexandrescu et al., All the sessions are available for free streaming.

Herb Sutter - Why C++? (Amazing keynote talk from C++ and Beyond 2011)

Scott Meyers - Universal References in C++

Herb Sutter - Lambdas, Lambdas, Everywhere

C++: A Language for Modern Times (Herb Sutter interview, more on managed vs. native code tradeoffs)

Herb Sutter: Writing modern C++ code: how C++ has evolved over the years


Concurrency

The Free Lunch is Over (Herb Sutter) Seminal article (2005) heralding the transition from single- to multi-core computing

Welcome to the Jungle (Herb Sutter) "Sequel" (late 2011) to The Free Lunch is Over (article above), with up-to-date trends

Multithreading in C++0x Nice 8-part (so far) tutorial introduction to concurrency by Anthony Williams

C++11 Concurrency Series Methodical video tutorial (9 parts so far) by Bartosz Milewski

C++ Concurrency in Action Anthony Williams' seminal book on C++11 concurrent programming.

just::thread Complete C++ Standard Thread Library Drop-in library for MSVC and gcc by Anthony Williams. Great support!


Individual C++ sites of note:

Ever wonder what language the world-class software products are written in? This page lays it all out, including the evolutionary path taken by projects such as Windows, Linux, Office, MySQL, etc. Note the large number of entries in the "C++" column...

Herb Sutter's Blog: Essential reading if you want to keep up with what's going on in C++ language and library evolution. Herb's the chair of the ISO C++ Standards Committee, and he dutifully reports on what the commitee's voted into the standard after each meeting. Herb's also established himself as the concurrency guru with a current series of articles in DDJ on the topic (links for all the articles show up in the blog with the release of each new one.)

Boost: The incubator for C++ Standard Library components, more or less. Boost is a repository of community-developed, peer-reviewed C++ libraries. Several of the founders/activists are on the Standard Committee's Library Working Group. Do the math... Boris Shaling's book on the Boost libraries is available for free online viewing.

Generic Programming: Ground zero for the "Concepts" feature of some (hopefully) future version of C++. Concepts allow the compiler to diagnose type mismatches during template specialization with messages that are comprehensible, unlike the current pre-Concepts scenario. See STLFilt). A Concepts-enabled version of the gcc C++ compiler and Standard Library is available for experimentation here.

Microsoft Visual Studio Express Editions: Download Microsoft's latest C++ compiler, including IDE, for free!

The C++ Annotations: A wonderfully comprehensive, mature and very readable HTML-based C++ learning resource by Dr. Frank B Brokken of the University of Groningen, The Netherlands. It does assume the reader already has a strong C background.

Visual C++ Tips and Tricks: Tips on making the use of MSVC a bit more pleasant.

Scott Meyers' Site: Author of the seminal Effective C++ book series and an all-star speaker on C++.

Dan Saks' Site: Not only is Dan Saks an expert on all things C/C++, a former secretary of the ISO C++ Standards Committee and the leading educator on the use of C and C++ in the context of embedded systems....he's also a really, really nice guy. Most of my understanding of the motivation behind the design of C++ comes from Dan.

Steve Dewhurst's Site: Steve's the author of the excellent recent books C++ Gotchas and C++ Common Knowledge (as well as of the Advanced C++ course I offer.)

MinGW: Minimalist GNU for Windows: "A collection of freely available and freely distributable Windows specific header files and import libraries combined with GNU toolsets that allow one to produce native Windows programs that do not rely on any 3rd-party DLLs." And, finally, it comes with an honest-to-goodness self-contained self-installer: Go to the SourceForge download page, then locate "Automated MinGW Installer".

Dev-C++: A free IDE for C/C++ development. Very full-featured and elegant. The distribution comes with gcc 3.2 built in, so you can install Dev-C++ and use the IDE or just use gcc from the command line afterwards.

C++ Resources at thefreecountry.com: Links to all the free C/C++ compilers available on the web, collected in one place. Did you know Microsoft is giving their Visual C++ command-line compiler away for free??

Free Compilers and Interpreters from Freeware-Guide.com. Many free compilers, some open-source, for several different languages. (Both this and the previous site even list BDS C!)


Must-Have Books:

The C++ Standard Library: A Tutorial and Reference, Nicolai Josuttis, Addison-Wesley, 1999, ISBN 0-201-37926-0. Indispensable desk reference for the entire Standard Library, with many complete programming examples using the library facilities. Don't code STL without it!

Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14, Scott Meyers, O'Reilly Media. The latest book from Scott, focusing on best practices around all the new aspects of "Modern C++".

Effective C++, Third Edition: 55 Specific Ways to Improve Your Programs and Designs, Scott Meyers, Addison-Wesley, 2005, ISBN 0-321-33487-6. Latest revision of Scott's seminal "2nd book" on C++ (that is, the book to read after you learn the basics of the language.) It just gets better with age.

C++ Coding Standards, Herb Sutter and Andrei Alexandrescu, Addison-Wesley, 2005, ISBN 0-321-11358-6.

More Effective C++: 35 New Ways to Improve Your Programs and Designs, Scott Meyers, Addison-Wesley, 1996, ISBN 0-201-63371-X.

Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library, Scott Meyers, Addison-Wesley, 2001, ISBN 0-201- 74962-9. STL-specific "Effective" book. Again, assumes you've learned the fundamentals of the STL, and then takes you to the next level. I did the code testing for this book, and have the companion code archive available for download here.

Exceptional C++, Herb Sutter, Addison-Wesley, 2000, ISBN 0-201- 61562-2.

More Exceptional C++, Herb Sutter, Addison-Wesley, 2002, ISBN 0- 201-70434-X.

Exceptional C++ Style, Herb Sutter, Addison-Wesley, 2005, ISBN 0- 201-76042-8.

C++ Gotchas: Avoiding Common Problems in Coding and Design, Steven Dewhurst, Addison-Wesley, 2003, ISBN 0-321-12518-5.

C++ Common Knowledge: Essential Intermediate Programming, Steven Dewhurst, Addison-Wesley, 2005, ISBN 0-321-32192-8.


Other Very Useful Books:

C++ Concurrency in Action Anthony Williams' seminal book on C++11 concurrent programming.

C++ Templates: The Complete Guide, David Vandevoorde and Nicolai Josuttis, Addison-Wesley, 2003, ISBN 0-201-73484-2.

Beyond the C++ Standard Library: An Introduction to Boost, Björn Karlsson, Addison-Wesley, 2006, ISBN 0-321-13354-4.

The C++ Standard Library Extensions, Pete Becker, Addison-Wesley, 2007, ISBN 0-321-41299-0.


Reference and FAQ Sites:

Incompatibilities between ISO C and ISO C++: Nice resource, maintained by David R. Tribble.

Predefined C/C++ Compiler Macros: Useful resource.

C/C++ Reference: Sweet, simple, well-organized site for C and C++ language and library reference information. They provide a packaged, downloadable version as well. As they say themselves on the last line of the FAQ: "Think of it as a community service, for geeks."

Tech Talk about C++ and C: Nice FAQ from Comeau Computing.


Standard Template Library:

SGI STL Programmer's Guide

The C/C++ Reference site listed in the previous section has nice STL information.

STLFilt: An STL Error Message Decryptor for C++: Tooting my own horn: STLFilt is a collection of tools that work in conjunction with Comeau C++, gcc (including within the Dev-C++ IDE), Metrowerks CodeWarrior, Microsoft Visual C++, Intel C++ and Borland C++ to post-process STL-related error and warning messages, rendering them comprehensible to non-C++-gurus via the removal of extraneous fluff. And even some gurus prefer the messages decrypted...


C-Specific:

Programming in C: Excellent site for ISO C news, documentation/commentary and links.

C Programming Notes (to Accompany K&R): When I attended Hebrew school as a kid, we studied the Old Testament, and specifically the "Rashi", or commentary by some learned old Torah scholar that appeared side-by-side to the "official" text. This document, by Steve Summit, is like "Rashi for K&R", providing insightful commentary to the C Bible and pointing out the "deep sentence" gems scattered throughout that venerable tome.

comp.lang.c FAQ: The Frequently Asked Questions repository for the Usenet newsgroup.

And an antique: BDS C was first released in 1979 for CP/M-80 (Intel 8080 CPU, running at 2MHz with 64K max system RAM - but BDS C could be run on as little as a 40K system). Try it under the SIMH Altair simulator.


The D Programming Language:

The D Programming Language: The brainchild of compiler guru Walter Bright, D aspires to be successor to both C and C++...and the strangest thing is, it may actually succeed. I'd describe D as "The greatest hits of C, C++ and Java, with some additional original arrangements by Walter Bright". And I think he knows the score ;-)


Programming in General

History of Programming Languages : Links to all the articles of the three ACM SIGPLAN HOPL (History Of Programming Languages) conferences...while ACM membership is required to directly access the text of the papers through this site, Bjarne Stroustrup says, "Note that if you type the full title of a famous paper into a web search engine, there is a good chance that you’ll find the paper. Also, most computer scientists mentioned here have home pages where you can find much information about their work.". For example, here's the link to Bjarne's paper on the evolution of C++.

The Programming Languages Beacon: See what major programming languages were used to build what major software products/utilities.


General Tools and Resources

Not specifically software development-related, but these Windows tools have served me awfully well--most for many years--and their authors have provided me with exemplary tech support whenever I've needed it:

WordWeb: A free taskbar-resident dictionary/thesaurus utility. Select any word in any application, click on the "W" icon, and get instant pop-up definitions and synonyms! Perfect for school-age kids' systems.

Epsilon Text Editor: This is a commercial package, but IMHO the best implementation of EMACS in existence. Now, how often do you run into a commercial package where the author personally answers every technical question you email to tech support, and answers his own phone? I did it back in 1980 while supporting BDS C, but today it is truly a rare thing to find in as high-quality a commercial product as this.

ExamDiff Pro: Excellent file comparator utility. The first graphical app I've found good enough to wean me off the DOS-based character mode tool I'd been using for years.

JP Software: Home of TCC (formerly 4DOS and 4NT), powerful replacement command processors for Windows for those of us who can't quite get used to doing certain administrative and development tasks using a WIMP interface (Windows, Icons, Menus and Pointers)...and also can't stand the limitations of standard DOS/Windows batch scripting support. Crafting complex regression testing scripts for my STL Error Decryptor was a pleasure under 4NT...and would've been impossible using the native Windows command processors.

TaskInfo: Incredibly comprehensive Windows task monitoring utility. Want to know what files are being held open by what process? Want to terminate a process in less time than it sometimes takes Task Manager to just wake up? Try this.

HP-16c calculator emulator: WRPN, written by Emmet P. Gray, is a public domain calculator for Windows that is modeled after the Hewlett-Packard HP-16c. I use a real HP-16c for everything (the first set of batteries lasted about 15 years). I was overjoyed to discover this emulator, so my beloved calculator could be with me, virtually, anywhere, while at the same time remaining safe and sound on my office desk!


General Info Sites

Some of these may be megasites, but they always present their info well and have great content:

Snopes: Urban legends reference site. Do you receive forwarded email from well-intentioned friends and relatives, warning you of the dangers of cell phone use at gas stations or urging you to send email to that dying kid trying to set the record for number of emails received? Just find the rebuttal on this site, point 'em to it, and then politely urge them to check Snopes before sending out spam to the family.

NetLingo online dictionary: Nice resource, IMHO, for looking up all those funky Net acronyms, as well as computer terms in general. Also has a hilarious list of smileys and emoticons.


Privacy, Security, Anti-Virus/Spam/Adware Tools & Resources

Kaspersky Anti-Virus: I finally gave up on the free A/V solutions out there, because every time they were updated it became a roll of the dice as to whether they would continue to function. As far as I've been able to tell, every "big boy" AV package is also total crap. Kaspersky, on the other hand, just works: no mess, no fuss, no nagging, no viruses, no problem. Also don't seem to need SpyBot, Ad-Aware, etc., with Kaspersky running.

SpamArrest: I gave up on other ways of dealing with spam and switched to SpamArrest, a "challenge/response" system for reducing Spam, many years ago and never looked back. The only downside is having to browse through the held junk mail once in a while to make sure some stuff you really want isn't being held up, but overall this is much better than any other anti-spam solution I've tried yet. Good customer service/support, too.

National Do Not Call Registry: Now up and running. Register as many phone numbers as you like.


High-Quality Services (from High-Quality Craftspeople!)

BodyOasis: Expert structural bodywork (KMI, Kinesis Myofascial Integration) and therapeutic massage by Lisa Gray, in the North Shore area of Boston. Lisa's the best (and I'm not saying this just because I happen to be married to her...)

Words in a Row: Web site design and search engine optimization. Remember what it's like to work with a craftsperson who bends over backwards to make sure you're happy and never nickel-and-dimes you? No? Meet Jere Matlock and that's what you'll rediscover.

Elwell Design: Graphic design / creative marketing for business communication by the talented (and spirited!) Sharon Elwell.


Contact Us | Pricing | Copyright © 2016 by Leor Zolman | Links | Phone: 978-664-4178