Productivity, Portability, and Scalability through Domain-Specific Languages