It is spooky how much @rygorous and I agree on so many many things. So in lieu of me making a video of my ramblings, watch his instead.
https://www.youtube.com/watch?v=UBhT7nbWpMg
Breadth vs Depth in Programming

YouTube

@TomF @rygorous metaprogramming: i can only stand it once i have a pipeline that keeps a perfect trace of source locations for each element: where did the original expression come from, and where, if any, is the macro that expanded it? (which has its own trace but you don't need this information in the initial report, just the point of entry)

the problems are at transition points, e.g. when generating C code. i can only specify a # line, so filename + line. no column, let alone a trace.

@TomF @rygorous the other thing is, if there is evaluation then there is intermediate state, and when this evaluation happens at compile time, then some problems need a compile time step debugger (or at the very least compile time printf debugging.)

so one either needs to turn the program into a program that generates a program, so existing debugging facilities can be used, or one avoids compile time expressions completely and lets the existing optimizer infrastructure deal with it.

@TomF @rygorous "stroustrup believes there's a much simpler cleaner language underneath"

yes!

that language is called C

@lritter @TomF @rygorous Hear me out! C+.
@breakin @TomF @rygorous i'm serious, C is great as a target. as long as you don't write the code by hand.
@lritter @TomF @rygorous Yeah! I am contemplating my own compiler that outputs C. It makes sense!
@lritter Mostly because it is a fun exercise to design a language.
@breakin like hearing a cadet speak excitedly of going to war while you're lying in the wet mud of a trench, starving and freezing ;-)
@lritter Ah yeah well I don't have any actual ambitions but I hear it can be hard to actually try to make it good :)