Internet of Things has arrived giving birth to new problem domain that involves discover, connect, collect, act and mange things. We are not talking about few things here but a whole bunch - billions perhaps.
I have been programming for quite sometime now but never thought when is the right time to introduce new domain specific language or what is the difference between general-purpose language (GPL) and Domain specific language (DSL) anyway?
Thank you Wikipedia for the below summary.
A domain-specific language is a computer language specialized to a particular application domain. This is in contrast to general-purpose language (GPL), which is broadly applicable across domains, and lacks specialized features for a particular domain. There is a wide variety of DSLs, ranging from widely used languages for common domains, such as HTML for web pages, down to languages used by only a single piece of software. DSLs can be further subdivided by the kind of language, and include domain-specific markup languages, domain-specific *modeling languages* (more generally, specification languages), and domain-specific programming languages. Special-purpose computer languages have always existed in the computer age, but the term "domain-specific language" has become more popular due to the rise of domain-specific modeling.
A modeling language is any artificial language that can be used to express information or knowledge or systems in a structure that is defined by a consistent set of rules. The rules are used for interpretation of the meaning of components in the structure.
Domain-specific modeling (DSM) is a software engineering methodology for designing and developing systems, most often IT systems such as computer software. It involves systematic use of a graphical domain-specific language (DSL) to represent various facets of a system. DSM languages tend to support higher-level abstractions than General-purpose modeling languages, so they require less effort and fewer low-level details to specify a given system.
Let's break down the definition of DSL.
Modeling - Need to express things (Camera, Sensor..) and define rules which determine their behavior (Transmit data to remote only if there is a change in last 10 minutes)
Represent various facets - of things (temperature value of a sensor , angle of camera)
Higher-level abstractions - Applies more to things than anything else. For example communication with the device involves setting up respective driver level protocols, transforming messages for further processing. Imagine doing these low-level tasks for billions of varied devices!
Based on the simple definition of DSL, Internet of Things domain seem to fit the bill for having a new Domain Specific language.
Next immediate question to follow is - can we use existing domain and general purpose languages and address the need. This can be a tricky one. I always believed in jump start from something that already exists. The answer to use existing domain or start from scratch then becomes simple - try to use existing languages and frameworks where appropriate. This will help in reaching the goal sooner of building the system as well as adoption. Classic example where this principle has been applied is Apache Spark framework. The idea to support Java and Python as first-class languages to use the framework was brilliant.
I am convinced that Internet of Things problem domain needs to look from a broader angle starting with the debate of having a new domain specific language.
Atomiton Inc, is expanding and working on that broader angle. To start with we have Thing Query Language (TQL).
TQL Hierarcy
Thing Definition (TDL), Thing Interaction (TIL) and Workflow Definition (WDL) are part of Atomiton’s Atomic domain languages targeted to be a single unified language for interaction with broad range (Billions) of machines (Devices) that may be isolated, inter-connected, each with different message formats and communication protocols.
I am convinced that Internet of Things problem domain needs to look from a broader angle starting with the debate of having a new domain specific language.
Original Post
Include Page
Link - IoT - New domain, new domain specific language makes sense!
Link - IoT - New domain, new domain specific language makes sense!