Кіріспе
nesC (NES си) – TinyOS платформасы үшін қосымшаларды құруға қолданылатын компоненттік, оқиғаларға негізделген бағдарламалау тілі. TinyOS – бұл таратылған сымсыз сенсорлық желілерде қолданылатын кіріктірілген құрылғыларда жұмыс істеуге арналған операциялық орта. nesC, TinyOS-та қосымшаларды іске қосу үшін компоненттер «қосылған» C бағдарламалау тіліне жасалған кеңейтім ретінде құрылған. nesC атауы «желілік кіріктірілген жүйелер C» деген сөздердің аббревиатурасы.
nesC (pronounced "NES see") is a component based, event driven programming language used to build applications for the TinyOS platform. TinyOS is an operating environment designed to run on embedded devices used in distributed wireless sensor networks. nesC is built as an extension to the C programming language with components "wired" together to run applications on TinyOS. The name nesC is an abbreviation of "network embedded systems C".
Құралымдар мен интерфейстер
nesC бағдарламалары компоненттерден құралады, олар толық бағдарламаны құру үшін біріктіріледі ("қосылады"). Компоненттердің ішкі параллелизмi тапсырмалар түрінде болады. Басқару ағындары интерфейстер арқылы компонентке өтуі мүмкін. Бұл ағындар тапсырмаға немесе аппараттық үзіліске байланысты болады. Компоненттер интерфейстерді ұсынуы немесе пайдалануы мүмкін. Ұсынылған интерфейстер компоненттің пайдаланушыға ұсынатын функционалдығын көрсетеді, ал пайдаланылған интерфейстер компоненттің жұмысын атқару үшін қажетті функционалдығын көрсетеді. nesC-де интерфейстер екітаралы: олар интерфейс провайдері (командалар) және интерфейс пайдаланушысы (оқиғалар) іске асыруға тиіс функциялар жиынтығын анықтайды. Бұл компоненттер арасындағы күрделі өзара әрекеттесуді (мысалы, белгілі бір оқиғаға қызығушылықты тіркеу, содан кейін оқиға болғанда кері шақыру) көрсетуге мүмкіндік береді. Бұл өте маңызды, өйткені TinyOS-тегі барлық ұзақ командалар (мысалы, пакет жіберу) тоқтатылмайды; олардың аяқталуы оқиға арқылы хабарланады (жіберілді). Интерфейстерді анықтау арқылы, компонент sendDone оқиғасын іске асырмаса, send командасын шақыра алмайды. Әдетте командалар төмен қарай, яғни қолданба компоненттерінен аппараттық жабдыққа жақын компоненттерге, ал оқиғалар жоғары қарай шақырылады. Кейбір бастапқы оқиғалар аппараттық үзілістермен байланыстырылған. Компоненттер өз интерфейстері арқылы статикалық түрде байланыстырылған. Бұл орындалу уақытының тиімділігін арттырады, сенімді дизайнды ынталандырады және бағдарламалардың жақсы статикалық талдауын жүргізуге мүмкіндік береді.