CoreLang Introduction
There is a common thread throughout this site (although some of the content pre-dates this thinking) which is that concise languages (domain specific languages) should be used to describe business logic, processes, business aims and architectural solutions. Pictures are great to communicate high-level concepts but detailed thinking needs an exact textual description - we do not use flow charts to design programs, not in the last 30 years anyway.
The Domain Specific Language (DSL) section of this site explores different languages and uses - but a key concept is that they will have a common metaphor / style and will be modular - will allow a new language to be build using pre-built DSL sub-languages.
Moreover the common compute technology (a common bytecode interpretor) will also support some of the more detailed system architecture - a common compute machine will support distributed computing, for example supporting thin clients and distributed BPM processing.
To achieve this we need to define a superset language - if you like a grand unified language which will show what the common syntax will look like. This will provide the ground rules for the different DSL languages we will define and implement - it will provide the common syntax metaphor that will allow developers to feel that the DSL have a common heritage. It will also allow us to define the superset bytecode and assembler language needed for the runtime.
This language is called CoreLang.
Will CoreLang ever be implemented? I believe the answer is yes in time ... but subset specific DSLs will be implemented first, each a step in the overall CoreLang implementation.
So the key initial CoreLang deliverable are:
- The overall language syntax and draft reference
- The CoreLang parser
- The draft bytecode (CLBC) and assembler (CLAL) definition and implementation.
This will provide a firm foundation for early developments of our DSL languages and distributed compute capability.