CosmicOS: a Coder's Contact Message
CosmicOS is a way to create stand-alone messages suitable for conversations across large gulfs of time and space. It is a preamble you can borrow to bootstrap up to a decent shared vocabulary, without making too many assumptions. CosmicOS is inspired by Hans Freudenthal's language, Lincos, and Carl Sagan's book, Contact.
The message so far communicates:
- Basic mathematics and logic. Just to start somewhere.
- Basic elements of programming. I'm a programmer, I'm biased.
- 2D logic circuits and a program to evaluate them. Just for fun.
- A very minimal virtual machine for running Java byte code, and a tiny game written in Java. Likewise, just for fun.
The idea is to communicate the usual math and logic basics, then use that to show how to run programs, then send interesting programs that demonstrate behaviors and interactions, and start communicating ideas through ”theater” rather than dry logic. This is inspired by Freudenthal's idea of staging conversations between his imaginary characters Ha and Hb.
Message in plain text form
The message can be rendered in plain text. This is not the form in which it would be transmitted!
Message in 4-symbol form
Traditionally, CosmicOS has been represented as a long sequence of four symbols. Labeling them arbitrarily as 0, 1, 2, and 3, the message begins like this:
Estimating message entropy by compressing this message, we get: 22 kB. This message form has some major revisions pending to ease comprehension. Please be forgiving. It'll all get fixed in an instant of galactic time.
The message is organized as follows:
- The message consists of a sequence of statements that can be evaluated, and each statement evaluates to true.
- The message can refer to itself and change its own syntax as it goes.
- A core set of operators are introduced by showing examples of their use.
- Once a sufficient set of operators is available, most new concepts are introduced both by examples and a definition in terms of what is already known.
- The message is more like a programming language than a human language, and is related to Brian McConnell's notion of ACETI. The goal is to transmit simulations whose behavior can be examined and discussed, and to introduce higher-level notions in terms of those simulations.
The message uses the following syntax (shown in plain-text form):
symbol meaning ( marks beginning of an expression ) marks end of an expression | opens a parenthesis which will self-close at the next parenthesis. (A B | C | D) is another way to write (A B (C (D))). This greatly simplifies complex expressions. $ $A is shorthand for (A). ; marks end of a statement
There are also numbers and arbitrary symbols. If there's no other syntax between two of these, they must be separated from each other by whitespace. How all of this is encoded is subject to change. Originally, CosmicOS converted all arbitrary symbols into numbers, and encoded numbers in binary. The message will remain compatible with this, but the encoding of symbols is being changed.
I've chosen the GPL for whimsical reasons. If it is a problem for you just file an issue. I'm a license push-over.
||The CosmicOS software is licensed under the CC-GNU GPL.|
||The CosmicOS webpages are licensed under a Creative Commons Attribution-ShareAlike 2.5 License.|