Joule is a capability-secure massively-
concurrent
Concurrent means happening at the same time. Concurrency, concurrent, or concurrence may refer to:
Law
* Concurrence, in jurisprudence, the need to prove both ''actus reus'' and ''mens rea''
* Concurring opinion (also called a "concurrence"), a ...
dataflow programming
In computer programming, dataflow programming is a programming paradigm that models a program as a directed graph of the data flowing between operations, thus implementing dataflow principles and architecture. Dataflow programming languages share s ...
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 ''im ...
. Instead, the programmer describes the flow of data, making it a
dataflow programming
In computer programming, dataflow programming is a programming paradigm that models a program as a directed graph of the data flowing between operations, thus implementing dataflow principles and architecture. Dataflow programming languages share s ...
language.
Joule development started in 1994 at ''Agorics'' in
Palo Alto, California
Palo Alto (; Spanish for "tall stick") is a charter city in the northwestern corner of Santa Clara County, California, United States, in the San Francisco Bay Area, named after a coastal redwood tree known as El Palo Alto.
The city was es ...
. It is considered the precursor to the
E programming language
E is an object-oriented programming language for secure distributed computing, created by Mark S. Miller, Dan Bornstein, Douglas Crockford, Chip Morningstar and others at Electric Communities in 1997. E is mainly descended from the concurrent ...
.
Language syntax
Numerals
A numeral is a figure, symbol, or group of figures or symbols denoting a number. It may refer to:
* Numeral system used in mathematics
* Numeral (linguistics), a part of speech denoting numbers (e.g. ''one'' and ''first'' in English)
* Numerical d ...
consist of
ASCII
ASCII ( ), abbreviated from American Standard Code for Information Interchange, is a character encoding standard for electronic communication. ASCII codes represent text in computers, telecommunications equipment, and other devices. Because ...
digits 0–9;
identifiers are
Unicode
Unicode, formally The Unicode Standard,The formal version reference is is an information technology standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems. The standard, wh ...
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.
Keyword
Keyword may refer to:
Computing
* Keyword (Internet search), a word or phrase typically used by bloggers or online content creator to rank a web page on a particular topic
* Index term, a term used as a keyword to documents in an information syst ...
s have to start with a letter, except the ''•'' keyword to send information.
Operators
Operator may refer to:
Mathematics
* A symbol indicating a mathematical operation
* Logical operator or logical connective in mathematical logic
* Operator (mathematics), mapping that acts on elements of a space to produce elements of another sp ...
consist of Unicode sequences of digits, letters, and operator characters, beginning with an operator character.
Labels
A label (as distinct from signage) is a piece of paper, plastic film, cloth, metal, or other material affixed to a container or product, on which is written or printed information or symbols about the product or item. Information printed d ...
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