Software Cabling (or SC) is a high-level visual module construction language, so instead of building programs from arithmetic operations, predicates, and I/O, like with other programming languages, an SC programmer builds programs from modules.  These modules are themselves constructed either using SC (in which case the modules are called "boards") or with your favorite programming language (in which case they're called "chips"). In other words, SC programs are built hierarchically, with the most basic pieces all written in standard programming languages. The role of SC is to manage complexity, and to illustrate and constrain how modules can interact--the circumstances under which each should be invoked, and how data is shared and/or passed between them.  The result is a program that is not only easy to build and understand, but one which is well-suited to run efficiently on a number of sequential, parallel, distributed, and grid platforms.

SC is unique in many ways, especially among module (or component) composition languages or parallel programming languages.  For example, SC is object-oriented, visual, Instead, SC relies on the programmer to provide these operations to it (in the form of smaller programs written in more conventional languages, called component languages), and SC will then invoke them at the appropriate times and deal appropriately with any results. Altogether, SC is: 
 

  • a coordination language, in that its role is to coordinate programs written in the component language(s).
  • a structured language, in that it makes it easy to see which operations in the program might be related in the resulting computation.
  • an object-oriented language, in that it supports the creation and use of abstract data types with module-based encapsulation, and these modules can in turn be related in a class-like hierarchy.
  • a high-level design language in that it serves to compose modules which may accept many complex data items and/or streams and may produce many resulting data items or streams.
  • a formal specification language, in that it has a formal semantics described by axioms.
So, SC serves to compose smaller (typically sequential) programs or specifications into a complete, larger program or specification which is well-suited to a number of sequential, parallel, and distributed platforms. In this role, it has a number of advantages over other parallel programming approaches. For example, SC makes very few alterations to the standard sequential component languages, and even those additions it does make do not change the behavior of the component program. That is very unlike traditional parallel programming approaches, where piecewise creation and/or testing of a program can be very difficult because messages or locks are assumed to be acted upon by other concurrent portions of the program. If a legal component of an SC program behaves a certain way in a standard sequential environment, it will act the same way in the SC program, and vice versa. This means that traditional debuggers, compilers, etc., can often be used without alteration. Another great advantage is that, when an SC program runs in a sequential environment (like your PC), it doesn't incur high communication overheads like message passing, so if you don't want parallel execution right now, you don't have to pay the price for it.

There's lots more information here on SC, and because elepar is the very inventor of SC, this is the right place to get it. See the FAQ's to understand more about the advantages and issues involved with SC, and the history page to see how SC came to be. To get a very high-level picture, see the one page Software Cabling "cheat sheet", and for more detail, look at the online SC tutorial (or "Primer"), and the papers cited on the references page. And, if you want a more personal touch, contact us about a hands-on tutorial.

 

 Get a "high-level" picture of SC

Check out the Cheat Sheet

Understand more about SC's advantages and issues

Check out FAQ's 

Want a more details-oriented view of SC?

Check out the SC Primer  or the papers cited on the Reference Page

Want to contact us for a hands-on tutorial?

Click here.