Joule is a capability-secure massively-
concurrent dataflow programming language, designed for building
distributed applications. It is so concurrent that the order of statements within a block is irrelevant to the operation of the block. Statements are executed whenever possible, based on their inputs. Everything in Joule happens by sending messages. There is no
control flow
In computer science, control flow (or flow of control) is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated. The emphasis on explicit control flow distinguishes an '' ...
. Instead, the programmer describes the flow of data, making it a
dataflow programming language.
Joule development started in 1994 at ''Agorics'' in
Palo Alto, California
Palo Alto ( ; Spanish language, Spanish for ) is a charter city in northwestern Santa Clara County, California, United States, in the San Francisco Bay Area, named after a Sequoia sempervirens, coastal redwood tree known as El Palo Alto.
Th ...
. It is considered the precursor to the
E programming language.
Language syntax
Numerals consist of
ASCII
ASCII ( ), an acronym for American Standard Code for Information Interchange, is a character encoding standard for representing a particular set of 95 (English language focused) printable character, printable and 33 control character, control c ...
digits 0–9;
identifier
An identifier is a name that identifies (that is, labels the identity of) either a unique object or a unique ''class'' of objects, where the "object" or class may be an idea, person, physical countable object (or class thereof), or physical mass ...
s are
Unicode
Unicode or ''The Unicode Standard'' or TUS is a character encoding standard maintained by the Unicode Consortium designed to support the use of text in all of the world's writing systems that can be digitized. Version 16.0 defines 154,998 Char ...
sequences of digits, letters, and operator characters that begin with a letter. It is also possible to form identifiers by using Unicode sequences (including whitespace) enclosed by either straight (' ') or standard (‘ ’) single quotes, where the backslash is the escape character.
Keywords have to start with a letter, except the ''•'' keyword to send information.
Operators consist of Unicode sequences of digits, letters, and operator characters, beginning with an operator character.
Labels are identifiers followed by a colon (':').
At the root, Joule is an
imperative language and because of that a statement-based language. It has a rich expression syntax, which transforms easily to its relational syntax underneath. Complex expressions become separate statements, where the site of the original expression is replaced by a reference to the acceptor of the results channel. Therefore, nested expressions still compute completely concurrently with their embedding statement.
If amount <= balance
• account withdraw: amount
else
• account report-bounce:
end
An identifiers may name a channel to communicate with the server. If this is the case, it is said to be ''bound'' to that channel.
References
External links
Joule: Distributed Application FoundationsC2: Promise Pipelining
Concurrent programming languages
Object-oriented programming languages
Secure programming languages
Capability systems
{{compu-lang-stub