Here’s an interesting article about a new paradigm in programming. It comes under different names : Intentional programming, MDA, generative programming, Language Oriented Programming.
This last name is suggested by Sergey Dmitriev (cofounder and CEO of JetBrains Inc., makers of the IntelliJ IDEA Java IDE). His opinion is that developers are currently restricted by their dependency on programming languages and developer tools. A solution to this can be defining DSLs (Domain Specific Languages), but they also have the disadvantage of not being general enough.
So he suggests that the solution could be a Language Workbench that allows creating as many DSLs as needed. The use of a DSL makes the mapping of the conceptual model solution to the program source code a lot more easier. In addition to that, it allows domain experts (non-programmers) to create programs using a very descriptive language created for that specific domain.
Read more here.
I have recently came across a very interesting view on our programming activity. It describes the use of Domain Specific Languages. These languages are small programming languages that are particularized to a specific problem at hand. Say instead of using big xml files for configuration we could define a small programming language to do the job.
This introduces a lot of advantages if you know when to use it. There are tools that can help us build programming languages very quickly. These tools are called language workbenches. It’s a different perspective than yacc and bison due to the fact that you describe your language using the abstract concepts and not syntax. The syntax is then generated to suit the abstract concepts. Thus you can quickly create very powerful and customized programming languages for each particular problem.
This can take application building and the customer closer together and reduce the number of programmers needed to build and maintain an application.