Lately there has been quite some discussion in this forum about the use of C++ in this project.
Great parts of the discussion in different topics was about the (questionable) benefits of OOP, others about C vs. C++. Also a lot about good practices of using C++ in general. A lot of this reminded me of long ago discussions from the early nineties when OOP was new. When there were a growing number of programming languages jumping on the OOP train and people were confused about whether it was worth jumping, too.
Since then it has been a long time and OPP in general and C++ in particular proved to be very valuable tools. The facts that gcc, the compiler we use for this project, is written in C++ and there are even quite established commercial operation systems that are entirely written in C++, speak in its favor. Especially, when it comes to commercial applications, we can certainly be sure that people think well, before selecting a language. In many areas, C++ became a de facto standard.
C++ is very versatile. It can be used from huge applications like OSs down to tiny, embedded applications like this firmware we are excited about. For many problems there are certainly no one size fits all solutions. However, as C++ has been around for so many years, time allowed for a development of good practices and a huge amount of decent language specific idioms that may be used out of the box.
It is good practice to consult the relevant literature to get familiar with the language before entering discussions. It is also a good practice to first check what’s already there in terms of C++ idioms and solutions and to benefit from all those good ideas and also all the errors committed by an entire generation of C++ programmers prior to us.
The web is full of good resources that can help studying the language and to check out what is good and what pitfalls are better avoided. Today there’s only little need to go to a library to search for books about programming languages.
I would love this topic to become a place to share our experience with C++, the way we approach and learn it and, what we think are good sources of information (websites, books, papers, etc.). It could also be about where to search for solutions to particular problems. This information can help new users and C++ newbies to reach the necessary level of language competence that is required to work with sketches, to write plugins or to contribute to the core parts of the project.
Here’s my favorite web page.
Marshall Cline and Bjarne Stroustrup (the inventor of the language) recently joined their C++ FAQs. This work addresses all possible sorts of problems one might encounter while learning and working with C++. Everything is written as a FAQ and mostly from the perspective of the frowning user. This website may be used very well as a search engine for any C++ related topics.
Especially Marshall’s FAQ, that I followed since he started it more than a decade ago, is in an unique equilibrium between being informative and fun to read. There is also a printed version, just search for ‘C++ FAQs’.