Domain specific languages were brought into my attention recently and some people believe they are the Next Big Thing. I'm yet to form an opinion, but I do agree that raising the abstraction level in programming is going to continue, as it has done since the first computers.
Domain specific languages are one good way to raise the abstraction level, but they are nothing new. There has been domain specific languages as long as there has been programming languages. What is new, however, is that there will be new, better tools for developing domain specific languages, and that might be both a requirement, and a spark, for domain specific languages to become a mainstream programming concept, or the next big thing.
Martin Fowler's article about language workbenches describes well what can be expected from such tools, and how current modern development tools already prepare us for that. I agree with what Fowler writes, and one paragraph struck me especially:
My colleague Matt Foemmel described how this struck him one time while working in IntelliJ. He made a change that was strongly assisted by these features and suddenly realized that he wasn't typing text - instead he was running commands against the abstract representation. Although the IDE translated these changes in abstract representation back into the text - it was really the abstract representation he was manipulating. If you've had a similar feeling while working with a modern IDE you're getting a sense of what a language workbench does.
That's really what programming with a modern integrated development environment can be. It's not so much about typing a program, but manipulating the abstract representation of a program with the tools provided by the editor. Variable and method name completion, refactoring and code generation tools, they all help in that the programmer can think in higher abstraction level than just the basic syntax of the programming language.
This is the link between current development tools and those that will come, supporting more abstraction. So, while waiting for language workbenches for domain specific languages to become more widely available, I encourage programmers to get used with the tools in current modern development environments, to try them out and take full advantage of them. Not only because they help in common programming tasks and thus improve productivity, but they might also subconsciously affect the way your mind processes programming tasks. You could begin to think in higher-level concepts, and let the tool take care of mundane details of keeping everything in sync. That could make you a better programmer, or make you prepared for the future of programming, when you can look back to this day, wondering how much there has been progress.