archives

Purely Functional Programming for Sensor Nets

Macroprogramming Myriads of Sensors


Or specifically, Region Streams: Functional Macroprogramming for Sensor Networks ("Macro" as in "big" not macros).

We are investigating high level languages for programming diverse, distributed networks of sensors. Our goal is to greatly simplify sensor network application design by providing high-level programming abstractions and primitives that automatically compile down to the complex, low-level operations implemented by each sensor node.


Sensor networks are an emerging computing platform consisting of large numbers of small, low-powered, wireless "motes" each with limited computation, sensing, and communication abilities. Sensor networks are being investigated for applications such as environmental monitoring, seismic analysis of structures, and tracking moving vehicles. Still, sensor network programming is incredibly difficult, due to the limited capabilities and energy resources of each node as well as the unreliability of the radio channel.

The language described in the paper, Regiment, is purely functional and uses techniques such as monads and functional reactive programming. It'd be quite ironic if this turned out to be the 'killer app' of pure FP. Sensor nets are related to Amorphous Computing and Swarm Computing which though mentioned in LtU appear never to have been a topic despite being quite deserving.

Grady Booch: Microsoft and Domain Specific Languages

Grady Booch's contribution to the discussion on UML vs. DSLs.

Along the way we learn about UML specialization mechanisms, UML profiles, and Grady's opinions as regards tool vs. language issues.

Scheme on the CLR

Common Larceny (alpha release) is a CLI-targeted implementation of the Scheme programming language. The compiler generates MSIL and is interoperable with other .NET languages.
(spotter: Brad)

Metaphors Power Software Development

Some recent forum topics regarding programming language phenomenology, language oriented programming, and natural programming languages may be connected through a common theme of software metaphors.

Software is entirely and thoroughly metaphorical. Metaphors pervade every element and aspect of software, from the lowliest variable name to the largest of enterprise architectures. Software is so steeped in metaphors that we often overlook the extent and nature of these metaphors. Like fish in water, software developers often do not perceive the medium that surrounds us: our natural languages, natural conceptual models, and the natural and linguistic metaphors we use every day in our software designs. Even so, software developers borrow ideas, terminology and organizational structures from every field they encounter and every problem they solve.

Should we explicitly include consideration of metaphors and characterize any gaps between the expressive power of our natural languages and programming languages in any phenomenological study of our programming experience?

Definition of Type

I am planning on using the following definition of type for my documentation on Heron:

A type is a semantic classification of a set of values. In other words it is a set of values which share some kind of information, whether it is intensional, extensional or otherwise.

Any comments?