SIMPL: A Description

What is SIMPL?

SIMPL is a set of software libraries designed to allow programs to send, receive and reply data messages to and from one and other in an agreed upon format. The communication is of a synchronous nature as opposed to asynchronous. Asynchronous messages are like software interrupts or signals. Synchronous messages are designed in such a way that a program will wait until it receives a message at some predefined point within its instruction set. Such programs are generally known as receivers. The programs that send the messages are simply called senders. A receiver will wait at some point in its programming for a message from any number of sender programs. Once a message is received it is acted upon by the receiver which will acknowledge the sender with a reply. The sender will halt processing and await the reply from the receiver before carrying on with its programmed instructions. This halting or blocking behaviour is what coordinates the various programs involved. Programs have so far been referred to as senders or receivers, but in many cases a program will contain both forms of behaviour.

A straightforward example of a message being sent from a sender to a receiver is as follows: Suppose that there is program running on a system whose sole task is to log data to a file. This program which we will call Logger sits and waits for a message to arrive; it does nothing until a message arrives. Some other program wishes to log an event that has occurred and we will call it Sender. So, Sender composes a message and sends it to Logger. At this point Sender pauses awaiting a reply from Logger. Logger acknowledges the message is received by replying a message of zero content, Sender does not require any data from Logger, only to be allowed to carry on. Sender then carries on with whatever it needs to do. Logger then writes the message to a file and then waits for the next message to arrive. Logger can receive logging messages from anyone anywhere as long as the message format is something Logger understands.

Sender/Logger Pictorial Here

Given that receiver programs wait in a receive mode and sender programs send a message and then wait for a reply in a reply mode, the entire system resembles a state machine which implies that the system is always in a well-defined state. This aids greatly in debugging.

Even though the acronym SIMPL refers to Linux, the libraries mentioned above also run on MAC OS X, QNX and every flavour of UNIX we have encountered (such as AIX). Recently, SIMPL has been ported to run on the Arduino platform which is an inexpensive embedded microcontroller PCB. This sort of hardware runs without an operating system and is about the size of deck of cards. Accordingly, it can be placed in a very small space, requires no software licences, and runs only one program continuously.

The ability to send data from one program to another encourages the delineation of tasks within a system of programs. Instead of having one or a few monolithic programs performing many tasks we have more programs individually suited to a single type of task. These programs tend to be small in size as well as encapsulated with respect to function and purpose because they are focussed on a restricted set of activities. This provides a design philosophy that is contrary to a monolithic programming style. This allows more programmers to work in parallel, thus speeding up the development cycle. Moreover, it encourages each program to be unit tested separately without affecting the other parts. This allows each piece of the program structure to be maintained separately and more easily.

What software languages are SIMPL supported?

This is a list of the programming languages that have SIMPL support. The choice of the programming language(s) used in a project is or are determined by a number of factors, not the least of which is personal preference. There is a current project whose task it is to include PHP in this list.

Which operating systems will run SIMPL?

The following list indicates the operating systems where SIMPL programs are known to run. There is a project on the go that uses CYGWIN to allow SIMPL to run on Windows.

Note that any SIMPL supported program can communicate with any other SIMPL supported program regardless of hardware platform, operating system, or the language in which the program was written.

SIMPL Home SIMPL Web Courses SIMPL Book Recent Work Sudoku Puzzle