Recently had a discussion and challenge in comparing two languages, C++ and Python. I think modern C++ is holds up really well to so-called scripting languages to do quick and dirty utility programs. This is a reasonably short implementation of a prime number finder:
#include <cstdio>
inline bool prime(const auto _candidate, const auto *_first, const auto *_last) {
for (auto p = _first; p != _last && *p * *p <= _candidate; ++p)
if (_candidate % *p == 0)
return false;
return true;
}
int main(int _c, char** _v) {
const unsigned num_primes = 10000;
static unsigned primes[num_primes] = {2, 3};
for (unsigned i = 2; i < num_primes; ++i)
for (primes[i] = primes[i-1] + 2; !prime(primes[i], primes + 1, primes + i); primes[i] += 2);
printf("The %uth prime is: %u.n", num_primes, primes[num_primes - 1]);
return 0;
}
Several things. Mostly I’ve learned to re-embrace the spirit of C/C++ for brevity, such as single statement if and for blocks. But you really have to think about readability when you code in that style. The brief C style is only bad if it’s done without consideration about code aesthetics. The brief style shouldn’t be about reducing line count, but about increasing readability. It is a bit counter-intuitive coming from a university education that told you to put every if block in braces over multiple lines.
When coded in such a manner, modern C++ can approach the ease of writing that languages like Python enjoy.
