To make those who not familiar with C++ to understand the algorithms.
Forum user and Armory client developer etotheipi put together a few nice images covering some aspects of the Bitcoin protocol, mostly related to transaction construction and verification; see this forum thread.
Other than that, though, most of the documentation is in code only. If you're comfortable with another language, you could try looking at BitcoinJ, a Java implementation of Bitcoin (client node functionality only), BitcoinSharp, a C# port of BitcoinJ, CBitcoin, a C99 Bitcoin library (also partial), Bitcoin-Ruby, BitcoinJS, and/or PyWallet.
In the end, though, currently the only complete reference implementation of Bitcoin is the original C++ code, so biting the bullet might be the only option.
Although it does not speak directly to programmers. The Khan academy has got a great set of conceptual videos about bitcoin internals