
nesC (Network Embedded Systems C) es un lenguaje de programación basado en C, enfocado y optimizado para su uso en aplicaciones de redes de sensores. Su origen se debe al deseo de disponer de un lenguaje específico que cumpliese con el modelo de ejecución y los conceptos del sistema operativo TinyOS, el cual se describe a continuación. No fue hasta la versión 1.0 de TinyOS cuando se reescribió todo el código en nesC. En versiones anteriores (por ejemplo, la versión 0.6) de TinyOS todo el sistema operativo y la programación de aplicaciones fue desarrollada en C. Esta necesidad de desarrollar un nuevo lenguaje de programación específico para redes de sensores inalámbricos viene motivada por el tipo de aplicaciones que se desarrolla, que se caracterizan por:
- Son aplicaciones basadas en recolección, difusión y control de la información obtenida del sensor, es decir, no son aplicaciones de propósito general.
- Tienen que reaccionar ante cambios en su entorno (eventos).
- Es preciso optimizar la limitada cantidad de recursos que ofrecen los nodos (memoria,capacidad de computo, consumo de energía)
- Deben ser aplicaciones estables, puesto que deben correr durante meses/años sin intervención humana.
- Precisan de control de errores en la manejo de datos.
- Son aplicaciones en tiempo real (envío de mensajes a la red).
Teniendo en cuenta estos aspectos, nesC aporta como concepto innovador la metodología de lenguaje orientado a componentes. Con respecto al lenguaje C tradicional, en nesC, se precisan restricciones teniendo en cuenta a las limitaciones de los nodos. Estas precondiciones estáticas del lenguaje, son la base de la optimización y permiten al compilador realizar análisis profundos sobre el código. Además nesC permite desarrollar interfaces y componentes y estos últimos pueden ser a su vez módulos o configuraciones.


