Low Level programing using c++

as long as you can find a compiler that supports that instruction set, you can write C++ code for it easily.

You could even wrap the registers in classes, so instead of saying

DDRB |= _BV(3);

you might say

Port portB(PINB, PORTB, DDRB);
portB.setDir(3, OUTPUT);

which makes it more C++-y and less C-y