Overview ****************************** The Huxon language is a programming language designed to simplify the development of IoT algorithms and applications. Rather than being a standalone programming language, Huxon language is embedded in C++. This means that you can use Huxon directives inside C++ to define a representation of a Huxon algorithm. The main elements of a Huxon algorithm are: - **Sources**: generate data at a given rate, inside the Huxon language sources are provided by sensors - **Channels**: combine data from one or more input elements, the rate at which the output data is generated and its type depend on the channel logic - **Processing Nodes**: read data from a channel, modify it using custom C++ logic and generate a new output All the elements inside a Huxon algorithm run in parallel and execute their functionality as soon as new data is available. By combining multiple elements it is possible to define a data processing pipeline that runs continuously and produce data in real time, obtained from many sensors displaced in (possibly) distant locations. .. image:: img/data_processing_graph.png :width: 600px :alt: DevContainer Build Algorithms written using the Huxon language can be uploaded to `Huxon `_ and used for creating virtual sensors. A **virtual sensor** is simply a Huxon algorithm in which each declared sensor is assigned by the user to a corresponding physical sensor of an infrastructure. The virtual sensors created from a Huxon algorithm can then be deployed on a physical infrastructure with `Huxon `_. During the deployment, Huxon takes care of partitioning and mapping the elements of the algorithm on the physical nodes of the infrastructure, hence automatically creating a distributed implementation of the specified Huxon algorithm. To get started using the Huxon language, we suggest to: 1. access the :ref:`prerequisites and setup` section to download the necessary tools 2. go through the :ref:`tutorial` section for a guided introduction to the Huxon language