IoT - New domain, new domain specific language makes sense!

by Baseer Khan


 

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.

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.

More at.

http://www.atomiton.com