newJOSS is a programming language roughly inspired by
JOSS.
I don't think the name is going to stick around forever, but until it's semi-usable, it'll stay.
JOSS itself has three main features that I think are impressive.
0. A section/line numbering system that allows writing code out of order, and is easy to implement.
1. A syntax resembling English, that doesn't allow deeply nested expressions.
2. An entirely REPL driven interactive experience.
Literati, the literate programming framework, fulfills the first point.
This language represents the second point, but will eventually encompass them all.
More work needs to be done, expanding this interpreter to have more sensible scoping, nicer syntax, and a bytecode target.
As it stands, newJOSS took a day to write, and is thoroughly inadequate for use.
Its main design consideration was the ease with which you can write an interpreter for it, which it definitely satisfied.
A copy of the source (in Javascript) can be found at
/pub/JOSS.js.
Below is an example standard library, providing easy looping and if statements.
# Inline if statements
define when $x do $prog...
if x = 0 skip 1
do prog
done
define when not $x do $prog...
if x != 0 skip 1
do prog
done
# Easier looping without goto:
define loop $^i from $x to $y and do $prog...
^i is x
label there
if ^i > y skip 3
add 1 into ^i
do prog
if ^i < y goto there
done
# Some examples of different new syntax with references:
define $^xs are $y
^xs is y
done
define add $x into $^y
add ^y and x into ^y
done
define dec $^y by $x
subtract x from ^y into ^y
done