JOSS II(ID:1688/jos003)Version 2 of JOSSSecond generation of JOSS, including improved maths and interaction, porting to DEC PDP machines. Still actually called JOSS (and so the first ever recursive acronym - since it no longer ran on the JOHNNIAC, it was the JOSS Open Shop System!) it was only called JOSS II outside RAND. The name was preserved internally to ensure continuity of funding. Had expanded syntax, added functionality, and incorporated some of the syntax from LISP 1.5 to facilitate one-line logical expressions. Related languages
References: The PDP-6 hardware used to implement JOSS consists of 32,000 words of 1.75|j.sec core memory, a 1-million-word 4|asec drum, a 6-million-word discfile, and various peripheral devices. A special data relocation mode for memory references has been added to facilitate interpretation of JOSS programs. The JOSS consoles, built around a Selectric I/O typewriter, were specially manufactured to RAND specifications. Features include full duplex signaling, line parity checking, a page eject mechanism, and several buttons and lights to control and report console status. The stand-alone JOSS software consists of the JOSS language interpreter and its arithmetic subroutines, a monitor for user'scheduling and resource allocation, and I/O routines for the disc, drum, consoles, and other peripheral devices. JOSS service is currently available to nearly 500 users through 34 consoles, six of which are remote to RAND operating over both private and dataphone lines. Extract: The JOSS System The JOSS System JOSS is a computer system that allows a user direct interaction with a powerful computer through a familiar device (typewriter) and in a familiar language (arithmetic or algebra). The machine that houses JOSS is dedicated exclusively to that task 24 hours a day, 7 days a week. No background tasks are performed. In contrast with project MAC, SDC, and other "general purpose" time-sharing systems, JOSS has been designed for the casual user and applications programmer rather than for the systems programmer. In order to make such a service available to many people at an economic price, the system is time shared; that is, simultaneous and noninterfering service is supplied to a number of users at their individual typewriter consoles. The primary advantage of JOSS is its ability to provide fast solutions to reasonably complex problems with a minimum of administrative delay. The user must specify all data relevant to describing his problem and the algorithm for its solution, but need only provide a minimum of detail regarding how his problem is to be solved on the available hardware. The JOSS user has at his command a machine of about the power of a 4K 704, with the additional bonus of a language interpreter. JOSS is a problem-solving tool that the user can apply to small- and medium-size problems with a minimum investment on his part in learning its use. Extract: History History Work was first started on JOSS in 1960. The system was implemented on the, JOHNNIAC computer (now retired) by J. C. Shaw, to whom goes the bulk of the credit for both design and construction. The system was partially operational in early 1963 and fully operational with eight consoles in January 1964 - no small accomplishment considering the 4000 word memory and doddering years of JOHNNIAC. However, JOSS was impressive enough on the few days JOHNNIAC felt well to substantiate the acquisition of a new computer and the creation of a well-supported project to build a second JOSS. As one user quipped, "It's better than beer - we're hooked." (The name JOSS still stands for JOHNNIAC Open Shop System in spite of the fact that JOHNNIAC now resides in the Los Angeles County Museum. It has been suggested that JOSS should now be interpreted as JOSS Open Shop System.) Introduction of the new JOSS in formal operation took place in mid-February 1966, although selected users had been contributing to system debugging since its first coherent words in early November 1965. Implementation on a large modern computer gave the new JOSS about an order-of-magnitude more capability than its predecessor - 30 times as fast, 5 times the storage per user, 4 times as many consoles, 50 percent faster consoles, room for several powerful new language features, and, in addition, spare capacity. We believe that well over 100 consoles can be handled within the present configuration without service degradation. Extract: Scope and Intent Scope and Intent JOSS is commonly characterized as a tool for the solution of small numerical problems--and so it is. But the word "small" would be better rendered as "not large." To say that JOSS is a good desk calculator is a substantial understatement, although it is often used effectively for that purpose. A list of the limitations of JOSS is perhaps more instructive than one of its capabilities. As a data retrieval system, it is poor; no provision exists for handling large files of information; it can't tackle very large problems (by today's standards); the 40-page FORTRAN code is unfeasible; and the compact but long-running program, say, 2 hours on a 7094, although possible, would be extremely tedious ? perhaps as much as 60 hours. Together with other so-called time-sharing systems, JOSS enjoys the substantial advantages of the interactive environment. The user is able to approach his console with perhaps only a partially formed idea of his problem and to come away in a few minutes or hours with the answer. This method is estimated to be about ten times faster than the usual problem-inception-to-problem-solution approach to a computer. It is successful enough that many problems that weren't worth the effort before are now being solved. JOSS differs from the general-purpose interactive time-shared systems in that its operation is simple and its goals are limited. What little information the casual user does have to remember about the system's operation can usually be brought back to mind by experimenting at the console without recourse to a manual of operation or to the help of a system "expert." For this ease of use, JOSS gives up many general-purpose features, but retains a large complement of casual users. As Willis Ware has said, "For a certain class of problems, at least, the programmer as the middleman between the problem and the machine is no longer needed." Extract: The JOSS Language The JOSS Language The language provided for JOSS users is simple and easy to learn with relatively few rules governing correct use. In many ways it is similar to other algebraic languages in wide use on every variety of computing machine. The language has been specially adapted to convenient, direct use by an active user at a typewriter console. Most familiar statement types exist: Replacement (assignment), transfer of control, input, output, and formatting are executed by the verbs: Set, To, Demand, Type, and Form. The conditional if clause may be appended to any JOSS statement. The JOSS D£ statement acts more like a subroutine call than the similarly named FORTRAN statement. Significantly, some statement types do not appear. Declarations such as DIMENSION are unnecessary, because of the linked-list memory assignment in the user's block, and modes (e.g., REAL, INTEGER) are handled implicitly. Whether a statement is to be interpreted immediately or stored for future execution is indicated implicitly by prefixing statements to be stored with a "step label," which gives the proper location of the new statement relative to others already stored. Thus, a step labeled 1.25 will be inserted after step 1.2 and before 1.28; it will replace any previous step labeled 1.25. Statements without step labels are interpreted immediately. A collection of steps with step numbers having the same integer part is called a "part." Thus, all steps labeled one-point-something constitute part 1. A Do statement causes interpretation of a part as if it were a subroutine. Example 1 illustrates the use of six common JOSS verbs, the conditional if clause, direct and indirect program statements, and the ordering of statements by step number. Certain of the JOSS language facilities deserve special mention because they are less frequently found in the common algebraic languages. The verb Let defines a formula or rule for computation. It may have up to ten parameters. The functions sum and prod allow direct expression of the mathematical operations for summation and product over a specified range of values. Use of these and similar functions (max and min) eliminates many program loops and aids in the compact expression of the desired computation. Conditional expressions, which may be used wherever expressions are valid and which use colons and semi- colons to denote the if...then... if...then...if...then...otherwise... notation, again contribute to compact notation of complex choices and discontinuous functions. [...] JOSS arithmetic is carried out by an interpretive package of routines that operates on numbers carried in scientific notation--an integer magnitude and a decimal exponent. Primary advantages of this notation are exact I/O number conversion and the restriction of repeating fractions to those familiar in the decimal system. Users may save programs, data, forms, and formulas on the discfile and retrieve them from the file using the verbs File, Discard, and Recall. Items stored on the disc are in symbolic form. The file operation behaves as if the user were typing on the disc and the recall operation acts as if the disc were typing on the user's program space. This means that the user's current core contents are only changed as implied by the contents of the disc. Statements replace current statements of the same number, and new values are assigned if variables defined on the disc were previously defined in core. The user may reference the files with his program to accomplish a limited form of chaining. There are a number of features normally included in computing systems that JOSS does not have: (1) There is no way for a user to handle high-volume I/O, which precludes the use of large tape files. (2) The interpretive mode of JOSS operation (even down to the arithmetic) limits the speed of operation. Thus, very long, detailed calculations are impractical. (3) The maximum amount of core available to individual use is limited to 4K, making very large programs or programs with large data bases infeasible, Finally, (4) JOSS operates only on numbers, which rules out generalized symbol manipulation programs. All of these limitations were imposed because their inclusion was considered incompatible with a high-speed, highly interactive computing service for a large number of casual users. in Decus Conference Fall 1966 view details in Decus Conference Fall 1966 view details in Decus Conference Fall 1966 view details in Decus Conference Fall 1966 view details External link: Online copy in Decus Conference Fall 1966 view details External link: Online copy in Decus Conference Fall 1966 view details in The JOSS Newsletter view details in The JOSS Newsletter view details External link: Online copy in The JOSS Newsletter view details in Computers & Automation 16(6) June 1967 view details in Computers & Automation 16(6) June 1967 view details in Computers & Automation 16(6) June 1967 view details in The JOSS Newsletter view details in The JOSS Newsletter view details in The JOSS Newsletter view details There are three sets of routines: (1) input/output routines for communicating with the users' consoles and their long-term (magnetic-disc) files; (2) central-processing routines for interpreting and responding to requests typed by the users and for interpreting the users' stored programs; and (3) supervisory routines for general management and accounting, and for giving each user a fair and proportionate share of processing. The center may be considered a single, active agent that serves the consoles and the users by time-sharing its activities; that is, it turns its attention from user to user'so rapidly and smoothly as to give individual users the illusion of a single-user, single-server'system. The three collections of routines may be viewed as active subagents, operating concurrently and synchronized by a common purpose. With this viewpoint as an introduction to the system, the single, active agent, JOSS, is described in terms of (1) the actions that can be requested of JOSS; (2) the language for requesting the actions; and (3) the parts played by the three sets of routines in servicing the users and carrying out the requests. Associated with each user is a collection of dynamically changing information: programs, data, information about actions initiated by the user, and other pertinent data. The central-processing routines service a user by processing his block of information. Although list structures are used extensively for storing information in the user's block, neither a general structure nor a general processor for lists is used. Instead, information is maintained in several distinct and simple list structures, whose representations are attuned both to the organization of the system's central computer and to the special nature of JOSS. These and other considerations concerning the storage and handling of information are discussed in detail. The organization of the central-processing routines mirrors the responsibilities of a central processing unit serving more than one user: communication with the users and with the supervisory routines; command interpretation and execution; intercommand sequencing and control; error diagnosis, control, and commentary. For purposes of storage and execution, commands typed by the users are represented as almost direct copies of the line typed by the user. The operation is interpretive: Although the execution of commands often requires that information be compiled and retained, no compilation in the usual programmatic sense is done. An extra level of interpretation controlled by a tabular representation of the rules for forming commands is not used. Instead, each type of command is handled by a distinct routine that "reads" like the rules for forming instances of the command type. These routines are composed, in the main, of direct examinations of the primitive tokens entering into the command, mixed with uses of reentrant subroutines for interpreting more complex expressions. The major routines are described in terms of requests that can be made of JOSS, and in terms of JOSS's interpretation of the requests and responses to valid and invalid ones. Many design points of both the language and the responses to requests in the language are discussed in detail, as are major points of implementation of the routines. Extract: Introduction Introduction JOSS is an on-line, remote-console, time-shared computing service of the RAND Corporation designed to give the individual scientist or engineer an easy, direct way of solving numerical problems without recourse to professional computer programmers or to extensive, ad hoc programming education. The entire system is dedicated to a single task: providing a uniform, round-the-clock computing service to users, so that JOSS appears to be a personal "computing aide", privately interacting with the user and responding promptly and precisely to instructions couched in a simple language and transmitted from his electric-typewriter console. Extract: APERCU APERCU JOSS is an on-line, time-shared computing service of the RAND Corporation designed to appear to each user as a personal computing aide and file clerk, interacting privately with the users by means of their remote electric-typewriter consoles. Control of each typewriter is proprietary: Either the user has control for input purposes, or JOSS has control for output purposes. Users request actions of JOSS by typing single-line commands, t A numeric label prefixed to the command is an implied directive to JOSS to retain the command as a step of a stored program, rather than to carry it out directly. JOSS retains steps in sequence, according to the numeric value of the label or step number. Thus the step number determines if an addition, insertion, or replacement is required. Steps are organized into parts according to the integer parts of the step numbers. Steps and parts are units that may be edited, deleted, typed out, or filed in long-term storage. In addition, they are natural stored-program units for specifying, in a hierarchical manner, procedures to be carried out by JOSS. Decimal and logical values may be assigned to any of the 52 upper- and lower-case letters admitted as identifiers. Values may be organized into vectors and arrays by using indexed letters, and the letters may be used to refer to entire arrays for deleting, typing, filing in long-term storage, and as actual parameters of formulas. In addition to values, arbitrarily complex expressions for values and letters may be assigned to a letter, which may then be used as an abbreviation for the expression; expressions so assigned are called formulas. Formulas involving formal parameters may also be assigned to a letter. The letter, accompanied by expressions for actual parameters, may then be used as an abbreviation for the formula with the actual parameters substituted for the formal ones. The letter itself may be used to refer to the formula for purposes of deleting, typing, filing, and as an actual parameter of formulas. Expressions for the sum, product, largest and smallest of a set of decimal values, and for the first in a range of decimal values for which a condition holds, can be written succinctly and used as expressions for values. Expressions for the sum, product, largest and smallest of a set of decimal values, and for the first in a range of decimal values for which a condition holds, can be written succinctly and used as expressions for values. For example: sum [i = l(l)n: A(i) ] max(x, y, z/3) min [i = l(l)n: A(i) ] prod(x, y, z/3) first [i = l(l)n:A(i) /= B(i)J Except for the function first, either of the two notational styles may be used.f The conjunction or disjunction of a set of logical values can also be expressed in either of the two styles and used as expressions for logical values. Short "programs" for choosing expressions for values differentially on the basis of a set of conditions can be expressed succinctly and used as expressions for values. For example, phrases such as if a = b, usex + y; if a > b, use x; otherwise, use y are expressed as (a = b: x + y; a > b: x; y). Such iterative functions and conditional expressions, together with formulas, lead to powerful, direct expressions for complex procedures, even recursive ones. JOSS represents decimal numbers in scientific notation: nine digits of significance and a base-ten scale factor with exponent in the range — 99 through +99. Addition, subtraction, multiplication, division, and square root are carried out to give true results rounded to nine significant digits; zero is substituted on underflow, while overflow yields an error message. In other elementary functions, care is taken to provide acceptable significance, to minimize discontinuities, to factor out error conditions, and to hit certain "magic" values on the nose. The six numerical relations together with and, or, not, and a set of ad hoc logical functions may be used to express conditions, which may be attached to any step, and to express logical values. A general rule governs the formation and use of expressions for values: With the exception of step labels, which must be decimal numerals, wherever a decimal (logical) numeral is allowed in a command, an arbitrarily complex expression for a decimal (logical) value may be substituted. JOSS types answers one-per-line. identifying answers by the expression used in the step calling tor the output; in the event of conditional expressions, JOSS uses only the chosen subexpression for identification. Decimal points and equal signs are lined up, and fixed-point notation is used when reasonable. For more formal output, the user can define full-line forms to specify literal information and blank fields to be filled in with answers. A string of underscores with an optional decimal point is used to specify fixed-point fields; a string of periods specifies a tabular form of scientific notation. Users can request JOSS to file, in long-term storage, identifiable units and collections of units—steps, parts, forms, formulas, and values. Users may then request JOSS to recall such filed items, discard them from the files, or type out a list of items in a file. Users start JOSS off on the task of carrying out a stored program by directing JOSS to Do a step or part—repeatedly (for a range of values or a specified number of times), if desired. JOSS cancels all outstanding tasks before starting out on a direct (initiated from the console) task, begins the interpretation of a part at the first step of the part, and then interprets each step in sequence. Each subsequent indirect (initiated by a step of a stored program) Do causes JOSS to retain the status of the current task, drop a level to carry out the new task, and then return to pick up the suspended one. If the user wishes JOSS to act in the same manner for a directly initiated task, the command must be enclosed in parentheses. JOSS modifies this general behavior whenever encountering 1. An error. 2. A branching command. 3. A stopping command. 4. A command for terminating a task or a portion of a task. 5. An interrupt signal from the user. The deep and involved hierarchy of tasks and formulas that can occur (recursion is allowed) make it mandatory that JOSS's status be perfectly clear each time control is returned to the user, for any reason. In addition to error messages, interrupt messages, and stopping messages, JOSS types status messages on completion of parenthetical tasks to distinguish this state from the state of having finished a direct, nonparenthetical task. JOSS is able to proceed in every situation; in the event of errors, the user can take corrective action and then direct JOSS to continue with a Go command. Extract: LISP influence Both the facility and the LISP-like format for conditional expressions were dictated by a desire to get as much mileage as possible out of JOSS's line-at-a-time style. A more general facility is provided by many programming languages through constructions exemplified by if x < 1 then 5 else if x > 1 then 10 else 20 This mode of expression seems appropriate if the conditions can be used to control the execution of statements or groups of statements. However, the style seems unnecessarily wordy, and even confusing, when used solely for choosing expressions?a comment that is completely independent of the fact that little could be said in a single JOSS line. It is this author's opinion that such conditional choices for values are viewed, in the mind's eye, as spatial entities that can be grasped in toto, rather than as overly qualified, strung-out sentences in which the parts obscure the whole. In any event, the facility is useful enough to warrant incorporation. The colon separating the condition from its associated expression seemed appropriate, connoting (as it usually does) a strong connection or association between what precedes and what follows. The semicolon was adopted in favor of the more immediately appealing comma because it seemed to stand out better, particularly when comma-separated lists of arguments and index values were used. in Halpern, Mark I and Shaw Christopher J (eds) "Annual Review in Automatic Programming" (6) 1969 Pergamon Press, Oxford view details External link: Online copy in The JOSS Newsletter view details in The JOSS Newsletter view details in [ACM] ACM Computing Surveys 2(4) Dec1970 view details Introduction Conversational programming systems are enjoying a great vogue at present. Commercial time-sharing services are doing good business, and following the success of systems such as BASIC and of JOSS (alias TELCOMP alias JEAN) 'conversational FORTRAN' and 'conversational ALGOL' are being offered. However, these terms are not particularly well defined. Very often, all that is provided is a simple editing facility for source programs and an ability to communicate with the teleprinter at run-time, coupled to a more-or-less standard 'batch' compiler. (In one system of the author's acquaintance, the user of the conversational FORTRAN system is required to type his program as formatted card images, without the benefit of a TAB mechanism.) Another term that is used in this connection is 'incremental compiling', again, often without a clear definition. In this paper we aim to define the term 'conversational programming system' in a pragmatic way by considering the facilities that the user might expect to see. We then discuss various ways of achieving this for a FORTRAN-like language, including incremental compilation, and suggest a system that combines the external features that the programmer wants with reasonable internal efficiency. (As will be seen, this does not necessarily imply a fully interactive compiler.) Extract: City Conversational FORTRAN A few years ago a FORTRAN system was developed for student work at The City University: in order to achieve good diagnostics this system employed many of the techniques outlined in this paper, although it was intended for batch use. Unfortunately, no description of this significant piece of work was published at the time. in The Computer Journal 14(1) 1971 view details External link: Online copy in The JOSS Newsletter view details review, explain and, where necessary, criticise, the decisions that they made in designing a software system are all too rare (though similar papers about hardware systems are virtually nonexistent). This paper on the design philosophy of JOSS-II - and in particular the sections on list structures and list processing, conditional expressions and storage management, and the 'reprise' - is very worthwhile on this account. However, other sections of the paper describing the details of the JOSS-II language are less successful. Much space is taken up by a rather discursive account of the rules of the language. A briefer, more formal description of the language, with more discussion of the alternatives which had been considered and discarded would have been preferable. Even more regrettable is the lack of any attempt to assess the merits and demerits of the language, relative to other general purpose languages both conversational and conventional. A paper such as this should not have had a 22-item bibliography in which nothing other than papers and reports relating to JOSS appears. in The Computer Journal 14(1) 1971 view details in Computers & Automation 21(6B), 30 Aug 1972 view details in Computers & Automation 21(6B), 30 Aug 1972 view details in SIGPLAN Notices 13(11) Nov 1978 view details in SIGPLAN Notices 13(11) Nov 1978 view details in [ACM] CACM 26(09) September 1983 view details |