JOSS
Encyclopedia
JOSS was one of the very first interactive, time sharing programming languages.
JOSS I, developed by J. Clifford Shaw
at RAND
was first implemented, in beta form, on the JOHNNIAC
computer in May 1963. The full implementation was deployed in January 1964, supporting 5 terminals and the final version, JOSS In, supporting 10 terminals, was deployed in January 1965.
JOSS was written in a symbolic assembly language called EasyFox (E and F in the US military's phonetic alphabet of that time). EasyFox was also developed by Cliff Shaw.
JOSS was dubbed "The Helpful Assistant" and is renowned for its conversational user interface. Originally green/black typewriter ribbons were used in its terminals with green being used for user input and black for the computer's response. Any command that was not understood elicited the response "Eh?".
JOSS II, was developed by Charles L. Baker, Joseph W. Smith, Irwin D. Greenwald, and G. Edward Bryan for the PDP-6
computer between 1964 and February 1966.
Many variants of JOSS were developed and implemented on a variety of platforms.
Some of these variants remained very similar to the original: TELCOMP
, FOCAL
, CAL
, CITRAN, ISIS, PIL/I, JEAN
(ICT 1900 series
); while others, such as MUMPS
, developed in distinctive directions.
1.2 Stop if q<0 or r(q,2)=0.
1.3 Set a=1.
1.4 Do part 2 while q>1 and a~=0.
1.5 Type a in form 3.
1.6 Stop.
2.1 Do part 20.
2.1 Do part 11 if p<0.
2.2 Do part 12 if p>=q.
2.3 Do part 13 if p=0.
2.4 Done if a=0.
2.5 Set p=p/4 while r(p,4)=0.
2.6 Do part 14 if r(p,2)=0.
2.7 Do part 20.
2.8 Set a=-a if r(p,4)=r(q,4)=3.
2.9 Set s=p, p=q, q=s.
2.95 Do part 20.
11.1 Set a=-a if r(q,4)=3.
11.2 Set p=|p|.
11.3 Do part 20.
12.1 Set p=r(p,q).
12.2 Do part 20.
13.1 Set a=0, p=1, q=1.
14.1 Set a=-a if r(q,8)=3 or r(q,8)=5.
14.2 Set p=p/2.
20.1 Type p, q in form 1 if a=1.
20.2 Type p, q in form 2 if a=-1.
Form 1: " L(%.0f,%.0f) ="
Form 2: " -L(%.0f,%.0f) ="
Form 3: " %.0f\n"
Note that this is not an original sample, but rather one from a modern simulator. There are some syntactic differences from the original JOSS language.
JOSS I, developed by J. Clifford Shaw
Cliff Shaw
J.C. Shaw was a systems programmer at the RAND Corporation. He is a coauthor of the first artificial intelligence program, the Logic Theorist, and was one of the developers of Information Processing Language, a programming language of the 1950s. It is considered the true "father" of the JOSS...
at RAND
RAND
RAND Corporation is a nonprofit global policy think tank first formed to offer research and analysis to the United States armed forces by Douglas Aircraft Company. It is currently financed by the U.S. government and private endowment, corporations including the healthcare industry, universities...
was first implemented, in beta form, on the JOHNNIAC
JOHNNIAC
The JOHNNIAC was an early computer built by RAND that was based on the von Neumann architecture that had been pioneered on the IAS machine. It was named in honor of von Neumann, short for John v. Neumann Numerical Integrator and Automatic Computer...
computer in May 1963. The full implementation was deployed in January 1964, supporting 5 terminals and the final version, JOSS In, supporting 10 terminals, was deployed in January 1965.
JOSS was written in a symbolic assembly language called EasyFox (E and F in the US military's phonetic alphabet of that time). EasyFox was also developed by Cliff Shaw.
JOSS was dubbed "The Helpful Assistant" and is renowned for its conversational user interface. Originally green/black typewriter ribbons were used in its terminals with green being used for user input and black for the computer's response. Any command that was not understood elicited the response "Eh?".
JOSS II, was developed by Charles L. Baker, Joseph W. Smith, Irwin D. Greenwald, and G. Edward Bryan for the PDP-6
PDP-6
The PDP-6 was a computer model developed by Digital Equipment Corporation in 1963. It was influential primarily as the prototype for the later PDP-10; the instruction sets of the two machines are almost identical.The PDP-6 was DEC's first "big" machine...
computer between 1964 and February 1966.
Many variants of JOSS were developed and implemented on a variety of platforms.
Some of these variants remained very similar to the original: TELCOMP
TELCOMP
TELCOMP was a programming language developed at Bolt, Beranek and Newman in about 1965 and in use until at least 1974.It was an interactive, conversational language based on JOSS, developed by BBN after Cliff Shaw from RAND visited the labs in 1964 as part of the NIH survey...
, FOCAL
Focal
Focal may refer to:*Focal , an Irish lexicographical website*FOCAL **FOCAL-69**Focal *Focal Radio, a radio station based in Stoke-on-Trent, England-See also:*Focus...
, CAL
CAL programming language
CAL was a programming language and system designed and developed by Butler Lampson at Berkeley in 1967.The design of CAL was based on JOSS but had new features and was implemented on the SDS 940. Lampson states that "many of its techniques were adopted by Tymshare for their interactive SuperBasic...
, CITRAN, ISIS, PIL/I, JEAN
JEAN
JEAN was a dialect of the JOSS programming language developed for and used on ICT 1900 series computers in the late 1960s and early 1970s; it was implemented under the MINIMOP operating system. It was used at the University of Southampton....
(ICT 1900 series
ICT 1900 series
ICT 1900 was the name given to a series of mainframe computers released by International Computers and Tabulators and later International Computers Limited during the 1960s and '70s...
); while others, such as MUMPS
MUMPS
MUMPS , or alternatively M, is a programming language created in the late 1960s, originally for use in the healthcare industry. It was designed for the production of multi-user database-driven applications...
, developed in distinctive directions.
Sample program
1.1 Demand p,q.1.2 Stop if q<0 or r(q,2)=0.
1.3 Set a=1.
1.4 Do part 2 while q>1 and a~=0.
1.5 Type a in form 3.
1.6 Stop.
2.1 Do part 20.
2.1 Do part 11 if p<0.
2.2 Do part 12 if p>=q.
2.3 Do part 13 if p=0.
2.4 Done if a=0.
2.5 Set p=p/4 while r(p,4)=0.
2.6 Do part 14 if r(p,2)=0.
2.7 Do part 20.
2.8 Set a=-a if r(p,4)=r(q,4)=3.
2.9 Set s=p, p=q, q=s.
2.95 Do part 20.
11.1 Set a=-a if r(q,4)=3.
11.2 Set p=|p|.
11.3 Do part 20.
12.1 Set p=r(p,q).
12.2 Do part 20.
13.1 Set a=0, p=1, q=1.
14.1 Set a=-a if r(q,8)=3 or r(q,8)=5.
14.2 Set p=p/2.
20.1 Type p, q in form 1 if a=1.
20.2 Type p, q in form 2 if a=-1.
Form 1: " L(%.0f,%.0f) ="
Form 2: " -L(%.0f,%.0f) ="
Form 3: " %.0f\n"
Note that this is not an original sample, but rather one from a modern simulator. There are some syntactic differences from the original JOSS language.