Programming WSN nodes requires knowledge of specific hardware which depends on the WSN architecture. A method to provide the benefits of high level languages is to use a hardware abstraction layer. For designing of a programming model for wireless sensor networks (WSN), the number of factors we have to consider such as low power capacity, low memory capacity types of sensors, sensing capabilities, etc. The adhoc-networking characteristic of WSNs, its nonviable physical access, and the fact that WNS's are typically programmed in low-level paradigms, and the nonexistence of a robust semantic for existing languages are features that burden the task of programming sensor networks. Due to the lack of advantages obtained from the last generation high level programming languages, the growth of WSNs is significantly impeded. An approach to program WSN is using a high-level programming language combined with robust semantics. This combination is not provided by any existing programming languages. Consequently, it is not possible to prove the equivalence between the semantics of the language and its implementation. Therefore, a semantic gap is induced.