nesC est un langage conçus pour incarner les concepts structurant et le modèle d'exécution de TinyOS. C'est une extension du langage C orientée composant ; il support alors la syntaxe du langage C et il est compilé vers le langage C avant sa compilation en binaire.
L'unité de code de base de nesC est le composant "component"
Un composant
Exécute des Commandes
Lance des Events
Dispose d'un Frame pour stocker l'état local
Utilise la notion de Tasks pour gérer la concurence
Un Composant implémente des interfaces utilisées par d'autres composants pour communiquer avec ce composant
Il existe deux types de composants
Module : composant implémenté avec du code
Configuration : composants reliés ensemble pour former un autre composant
Application: un ou plusieurs composants reliés ensemble pour former un exécutable
Composant : un élément de base pour former une application nesC. Il existe deux types de composants: modules et configurations
Module : composant qui implémente une ou plusieurs interfaces
Configuration : composant qui relie d'autres composant ensemble
Interface : définie d'une manière abstraite les interactions entre deux composants