ABSTRACT

The IoT, or the network of smart devices, is an emerging new paradigm that is practically and theoretically efficient in resolving problems regarding the data consumption, integration, and communication among the smart devices. These smart but small devices provide a great opportunity, with the help of cloud-based backend, for computation and web-based front-end for interaction with the user. IoT application devices are distributed in a wide geographical area, thus the main concerns regarding the programming paradigm of IoT are as follows: heterogeneity caused by hardware, software and communication platforms, volume of generated data, various forms of generated data, varying speed of generation of data, latency sensitivity, coping with the frequent unavailability of devices caused by the limited power supply from batteries and the mobility of devices, choice of communication protocol, and lastly, sustainability. Among many approaches, one is to use the combination of two models, computational models and coordination models, consecutively. The programming languages of computational models are nesC, Keil C, Dynamic C, B#, R, and more. Coordination is considered from two different perspectives: centralized control or “orchestration” and distributed transparent control or “choreography.” The most used coordination programming models are Linda, eLinda, Orc, and Jolie. Another approach is to use “polyglot programming,” which is the art of developing solutions using different programming languages. This programming approach consists of the integration platform and the platform-supported languages. An inverse pyramid of three layers—stable (Scala, C, Java, etc.), dynamic (Groovy, Clojure, Js, etc.) and domain (Html, CSS, etc.)—is the architecture for polyglot programming. The existing programming frameworks (Mobile fog, Eliot, Pyot, etc.) will be surveyed accordingly the above discussions in this chapter to provide enlightenment regarding the different aspects of the programming paradigm of IoT.