The idea is to offload the grunt work by creating a set of abstractions specific to a particular domain. This makes it really easy for the application programmer "to do what they want to do" in a substantially smaller amount of code. This means that the burden is shifted to the DSL creators which need to come up with the appropriate abstractions (can't be too limited in scope or too general) while also yielding efficient implementations on (ideally) all hardware.
The idea is to offload the grunt work by creating a set of abstractions specific to a particular domain. This makes it really easy for the application programmer "to do what they want to do" in a substantially smaller amount of code. This means that the burden is shifted to the DSL creators which need to come up with the appropriate abstractions (can't be too limited in scope or too general) while also yielding efficient implementations on (ideally) all hardware.