[Cortex M3 CPUs] suck in comparison to the Cortex-M0
Actually, I find it quite the opposite.
Cortex-M0 doesn't support the 32bit "Thumb-2" instructions, which means that many of your traditional ARM instructions are completely missing (divide), or have severe limitations (no "AND/OR/EOR" with immediate values, LDR/STR indexed-with-offset limited to offsets <32, more.) It's a PITA to program in assembly language, and the code produced by even good compilers is frequently big, slow, and ugly (compared to the CM3.)
Note that this is completely different than "the new ST M0 chips have less F-ed up peripherals than the ancient 32f103", which has nothing to do with CM0 cs CM3 CPUs.
Now, it does seem that CM3 has largely lost vendor interest in favor of CM4 (and CM0); I don't quite understand why that's the case - I suspect it has more to do with hardware licensing and implementation details than CPU architectural issues. (Doesn't the M0 have a flat-rate license fee, rather than a royalty-based scheme?)
Every language can be "write only" it depends how badly (or cleverly) one writes their code.
I suppose I would believe that the main reason that Forth tends to be looked on a more "write only" than C/C++ is that there's a large community of C/C++ programmers who have done a pretty good job of establishing acceptable and unacceptable "styles" of C/C++ programming. And Forth is more of an "everyone is on their own" situation.
But that's still means that Forth has a problem :-(
(Assembly language has a similar problem. Back when I worked on assembly language code for a living, the target system had well-established standards in terms of macro definitions (including complex data structures), calling conventions, formatting, name selection, and so on. Code written in that community was pretty understandable and portable between maintainers. Nowadays, in our modern "why would you want to program in assembly?" age, it's more of a free-for-all :-( )