Control Matters
SPLat Controls' aperiodic newsletter

1 April 10
View online

C and Unix were just a big prank!

In an announcement that has stunned the computer industry, Ken Thompson, Dennis Ritchie and Brian Kernighan admitted that the Unix operating system and C programming language created by them is an elaborate April Fools prank kept alive for over 40 years. Speaking at the recent Linux Development Forum in Helsinki, Thompson revealed the following:

"In 1969, AT&T had just terminated their work with the GE/Honeywell/AT&T Multics project. Brian and I had just started working with an early release of Pascal from Professor Nichlaus Wirth's ETH labs in Switzerland and we were impressed with its elegant simplicity and power. Dennis had just finished reading 'Bored of the Rings', a hilarious National Lampoon parody of the great Tolkien 'Lord of the Rings' trilogy. As a lark, we decided to do parodies of the Multics environment and Pascal. Dennis and I were responsible for the operating environment. We looked at Multics and designed the new system to be as complex and cryptic as possible to maximize casual users' frustration levels, calling it Unix as a parody of Multics, as well as other more risqué allusions. Then Dennis and Brian worked on a truly warped version of Pascal, called 'A'. When we found others were actually trying to create real programs with A, we quickly added additional cryptic features and evolved into B, BCPL and finally C.

We stopped when we got a clean compile on the following syntax:

for(;P("\n"),R--;P("|"))for(e=C;e--;P("_"+(*u++/8)%2))P("|"+(*u/4) %2);

To think that modern programmers would try to use a language that allowed such a statement was beyond our comprehension! We actually thought of selling this to the Soviets to set their computer science progress back 20 or more years. Imagine our surprise when AT&T and other US corporations actually began trying to use Unix and C! It took them 20 years to develop enough expertise to generate even marginally useful applications using this 1960's technological parody, but we are impressed with the tenacity (if not common sense) of the general Unix and C programmer. In any event, Brian, Dennis and I have been working exclusively in Ada on the Apple Macintosh for the past few years and feel really guilty about the chaos, confusion and truly bad programming that have resulted from our silly prank so long ago."

Major Unix and C vendors and customers, including Nokia, HP and Intel have refused comment at this time. Microsoft, a leading vendor of BASIC and C tools, including the popular VB.NET and C#, stated they had suspected this for a number of years. They look forward to enhanced reliability and speed in Windows 8. It will be re-written from the ground up in VB.NET and is due out sometime this decade. An IBM spokesman broke into uncontrolled laughter and had to postpone a hastily convened news conference concerning the fate of the Blue Gene/V, merely stating 'VM will be available Real Soon Now'. A Sun Microsystems spokeswoman merely sipped her java and smiled enigmatically. In a cryptic statement, Professor Wirth of the ETH institute and father of the Pascal, Modula 2 and Oberon structured languages, merely stated that P. T. Barnum was correct.

RS232 (RS485) is not a protocol!

All too often people refer to RS232 or RS485 as protocols, and believe that if a device "has RS232" it will automatically be able to communicate with any other device that "has RS232". This is simply not true!
So what is RS232? RS232 is a standard that defines connectors, pin numbers and voltage levels, plus a few other purely electrical details. The voltage represent binary zeroes and ones (marks and spaces in RS232 terminology). RS232 does not even specify the character format that has come to be taken for granted, namely start bit, data bits and stop bits, nor baud rates (9600BPS, 115KBPS, etc). RS485 is a very different set of voltage level, but does not even specify connectors.
On top of this interface specification you need a specification that defines how data bytes will be encoded. This is where the familiar start, stop, data, parity and baudrate specifier comes in, but note that other schemes do exist.
Once you have characters defined and being transferred, you can specify how those characters are used to build up meaningful units of data, typically called packets or messages. This is the protocol specification. Protocols abound. Common names are ModBus, IP and TCP, but there are an almost infinite number of proprietary ones used for special purposes such as weigh scales, motion control boards or GPS modules.

Have you seen our easy to digest Finite State Machine tutorial?

"This is a really great presentation! I'm likely to reference your site in arguments with other LabVIEWers who think anything that contains a case structure is a "state machine". Are you aware of LabHSM by H VIEW Labs?"

 Paul F. Sullivan, Massachusetts

"He has all the virtues I dislike and none of the vices I admire."
- Winston Churchill

Q: What is the definition of an engineer?
A: Someone who solves a problem you didn't know you had, in a way you don't understand.

Subscription information
Please add to your Address Book or whitelist to ensure our emails reach your inbox. Click here for hints.

© Copyright 2010 SPLat Controls Pty Ltd. This communication does not constitute professional advice