The Intentional Platform
The Intentional Platform is an application platform for developing and running intentional applications. In intentional applications, knowledge becomes a tangible asset that computers can process. Similar to other processing technologies – such as word processing, natural language processing or transaction processing – knowledge processing operates on knowledge as input and transforms it into useful output. Examples include automating a business process or generating software.
Domain Specific Languages
Domain Specific Languages are used in the Intentional Platform to record knowledge and are projected through a projectional editor to provide an intuitive interface to the domain expert. The knowledge description has syntax, which is what is being represented and projected, and it has semantics, which is what is being executed. The knowledge is represented in a “language” as “code” in the traditional computing sense; “domain language” and “domain code”, i.e. language and code for a specific domain.
The Intentional Platform uses DSLs at its foundation. DSLs tend to be very technical and hence not suitable for business users. Therefore the Intentional Platform projects the DSL into a user interface experience that the business user is more comfortable with. The Intentional Platform uses a projectional editor that transforms DSLs into a user interface accessible to business users. The projections of the DSLs can be tuned to the exact need of the business domain expert – the person with the business domain knowledge.
Going Meta is a powerful technique to solve complex problems. By changing the level of abstraction at which a particular problem is viewed and solved, a much simpler solution can often be found. Applying the meta approach in software is especially powerful and has a long history. Intentional relies heavily on the idea of “going meta”.
Intentional builds on the idea that to solve a specific problem, develop a domain in which a more general problem can be described, and create the solution automatically as a special case. For example, instead of describing a particular problem in C++, express it in a language suitable to the problem domain and generate the implementation automatically.