You can write the stuff that needs to access system calls, deal with hardware, heavy number crunching, etc. in C, but use a language with garbage collection, real strings, and a REPL for all the stuff that doesn't need to be chiseled out of diamond (and will probably change, anyway). For many things, slow prototypes are good enough. When you could do 95% of a project quickly in Python/Lua/Ruby/etc., writing everything in C anyway has the same downsides as any other form of premature optimization.<p>As a bonus, the border between the two languages often settles along conceptual seams in the codebase -- your low-level graphics rendering code shouldn't be tangled up with your enemy AI or UI templates, for example.<p>Rather than writing everything in a language that tries to do everything and winds a mess (C++), you can use two smaller, more focused languages.