What about a third way?  I have not used the GNU version of Ada or Pascal, but you get C&#x2F;++ style allocation choices (static, stack, heap) without all of the safeties turned off.<p>Having bounds checks (with line number error reporting, rather than secondary, tertiary... damage followed by a core dump), and the use of non-null references (as well as pointers for the initial allocation from the heap) goes a long way towards eliminating much of the time wasting bullshit that C&#x2F;++ brings into your life.<p>C is good for portable assembler.  Otherwise, I want something less wacky than C++ to be &quot;effective&quot; with at a medium low level, and something higher level than Java for most other apps.