JOSS
JOSS패러다임 | 비구조적, 절차적, 필수적 |
---|---|
가족 | JOSS |
설계자 | 클리프 쇼 |
개발자 | 랜드 코퍼레이션 |
처음 등장한 | 전 ( |
범위 | 어휘 |
구현 언어 | 어셈블리 언어 |
플랫폼 | JONNIAC, PDP-6 |
영향받은 | |
TELCOMP, CAL, 초점, 이하선염 |

direct mode
문장의 말미에 있는 마침표와 곱셈의 중간점과의 차이를 주의해 주세요.JOSS(JONNIAC Open Shop System의 [a]acronym)는 최초의 인터랙티브 시분할 프로그래밍 언어 중 하나입니다.그것은 1960년대부터 1980년대까지 언어에서 보편화된 많은 기능을 개척했다.브런치 편집 명령어 및 타깃으로 행 번호를 사용하는 것, 부울 결정에 의해 단언된 문, 직접 모드 또는 즉시 모드로 명령을 실행할 수 있는 내장 소스 코드 에디터 등, 그들이 컨버세이션이라고 부르는 것을 포함한다.사용자 인터페이스
JOSS는 RAND Corporation의 JONNIAC 머신에 최초로 구현되어 1963년에 온라인에 도입되었습니다.그것은 매우 인기가 있었고, 사용자들은 그 기계를 빠르게 정지시켰다.1964년까지, 더 높은 성능을 가진 대체 제품이 모색되었습니다.JONNIAC는 1966년에 퇴역하고 PDP-6으로 대체되었으며, PDP-6은 IBM Selectric을 기반으로 수백 대의 컴퓨터 단말기를 지원하도록 확장되었습니다.단말기는 사용자 입력에는 녹색 잉크를, 컴퓨터 응답에는 검은색 잉크를 사용했습니다.이해되지 않은 명령은 응답을 유도했습니다.Eh?
또는SORRY
.
이 시스템은 다양한 포트와 오프스팟을 산란하는 등 영향력이 컸다.TELCOMP 및 STRINGCOMP, CAL, CITRAN, ISIS, PIL/I, JEAN(ICT 1900 시리즈), 대수적 해석 대화(AID, PDP-10의 경우)와 같은 일부는 원본과 유사했고, FOCAL 및 MUMP와 같은 다른 것들은 구별되는 방향으로 개발되었다.또한 1980년대 마이크로컴퓨터에서 볼 수 있었던 BASIC 인터프리터와 매우 유사하며 구문의 세부 사항도 다릅니다.
역사
초기 아이디어
1959년 윌리스 웨어는 컴퓨팅에 관한 랜드 메모에 미래의 컴퓨터에는 "많은 사람들이 [2]동시에 기계와 상호작용할 수 있도록 다양한 개인 입출력 스테이션이 있을 것"이라고 기술했습니다.이 메모는 랜드의 주요 후원자인 미 공군의 관심을 얻어 1960년 정보처리프로젝트를 결성해 시분할이라는 개념을 탐구했다.이 프로젝트는 특별히 시간 공유에 관한 것이 아니라 전반적으로 인간과 컴퓨터의 상호작용을 개선하는 것을 목표로 했습니다.그 당시 생각은 사용자와 컴퓨터 사이의 지속적인 상호 작용이 이러한 상호 작용을 [2]더 자연스럽게 만든다는 것이었다.JOSS 디렉터 Keith Uncapher는 나중에 이렇게 말했습니다.
실험을 주도했다고 생각되는 두 가지 인식이 있었다.하나는 적어도 1950년부터 제가 랜드에 입사했을 때, 랜드의 컴퓨터 과학 부분은 항상 원활한 사용자 상호작용에 중점을 두고 있었습니다.그냥 우리 안에 들어있었어거닝한테 배웠어요 생각만 했어요다른 하나는 수학자들이 Marchant 계산기로 고생하는 것을 보고 JOHNIAC를 원시 형태로 사용할 수 없다는 것입니다.너무 힘들었어요.그들은 프로그래머가 되는 법을 배워야 했다.그것은 그들에게 좌절감을 주는 경험이었다.우리는 그들이 많은 훈련을 받지 않고 프로그래머가 되는 것에 대한 인식 없이 문제 해결에 도움을 줄 수 있는 자연스러운 사고방식을 원했습니다. 왜냐하면 그렇게 하면 그들을 [3]멀리하게 될 것이기 때문입니다.
JOHNIAC 컴퓨터에서 JOSS가 된 것을 개발하는 공식적인 제안은 1961년 [2]3월에 받아들여졌다.
JOSS-1
JOSS는 거의 전적으로 Rand의 성장하는 컴퓨팅 부문에서 일했던 수학자 J. Clifford Shaw에 의해 구현되었습니다.그것은 [4]쇼에 의해 개발된 EasyFox라는 상징적인 어셈블리 언어로 쓰여졌다.
JOSS 시스템은 1963년 5월에 정식으로 도입되어 기계실에 1대, [5]건물 주변의 사무실에 4대 등 5대의 콘솔을 지원하게 되었습니다.초기 콘솔은 IBM Model 868 Transmiting Typewriter에 기반을 두었습니다. Selectric은 개발이 [6]시작되었을 때 아직 시장에 선보이지 않았기 때문입니다.첫 번째 일정은 6월 17일에 발표되었으며 JOSS는 매일 [7]오전 9시부터 12시까지 3시간 동안 운영되었다.1964년 [1]1월에 8개의 터미널에서 완전히 가동되고 있다고 선언되었다.최종 버전은 1965년 [8]1월에 배치되었다.
이때쯤 JONNIAC는 이미 10년이 넘었고, 튜브 기반의 논리는 처음부터 그다지 신뢰할 수 없었다.잘 작동하던 시절에도, 그 시스템은 너무 인기가 많아져서 순식간에 꼼짝할 수 없게 되었다.이용자의 반응은 뜨거웠다.
사람들은 JOSS에 맞춰 생활을 조정한다… JOSS가 도착하는 오전 10시 이전, 즉 정오 또는 오후 5시 이후에 RAND에 오는 것은 좋지 않다.JOSS는 그다지 바쁘지 않다.JOSS가 답을 타이핑하기 시작할 때, 짜릿한 기쁨은 JOSS가 지루해하거나 당신의 코드를 망각으로 칭찬하며 사라졌을 때 뒤따르는 고통과 동일하다.우리는 JOSS와 함께 살기는 어렵지만 [9]JOSS 없이는 살 수 없다.
또 다른 하나는 더 간결하게 말한다.
맥주보다 낫죠.[1] 우린 빠져 있어요.
JOSS-2 스위치 오버
1964년 5월, JONNIAC를 대체할 새로운 기계를 찾고, JOSS의 확장 버전을 실행하는 데 전적으로 전념하기로 결정했습니다.기계는 또한 랜드의 사양에 따라 만들어진 새로운 터미널을 지원해야 하며 1965년 [7]10월 31일까지 납품되어야 합니다.
총 9건의 새 기계 입찰이 접수되었다.DEC(Digital Equipment Corporation)는 새로운 PDP-6 시스템으로 대회에서 우승했고 공군의 자금 지원이 제공되었다.또한 DEC는 팬폴드 용지 공급에서 다음 페이지로 이동하기 위해 특수 메커니즘으로 수정된 IBM Selectric 타자기를 기반으로 30개의 터미널을 구축하는 데 동의했습니다.전체 시스템의 다른 몇 부분은 다른 [10]회사로부터 제공되었습니다.
PDP-6는 1965년 7월 말에 출시되었으며, 처음에는 Teletype Model 33을 단말기로 사용하여 테스트되었습니다.새로운 버전의 코드는 찰스 L. 베이커, 조셉 W. 스미스, 어윈 D에 의해 개발되었습니다.그린월드와 G.에드워드 브라이언이 시스템은 10월에 처음으로 가동되고 있다고 선언되었지만,[11] 여기에는 주당 6시간의 정기 유지보수가 포함되어 있습니다.최초의 시제품 단말기는 11월에 도착했다.12월에는 라스베이거스의 단말기가 처음으로 원격 [10]접속됐다.1966년 2월, 이것은 맥클렐런 공군 기지로 보내졌고, 이어 8월에 공군 사관학교로 보내졌고, 9월에 두 개는 ARPA와 펜타곤의 공군 사무소로 보내졌다.Teletype 모델 35의 첫 번째 영구 오프사이트 텔레타이프 접속은 1967년 [11]2월 랭글리 공군 기지에 설치되었다.
JONNIAC는 새로운 기계가 가동되면서 1966년 2월 11일 오프라인으로 전환되어 2월 18일 공식적으로 은퇴하였다.마지막 실행 프로그램은 JOSS로 작성되었으며 꺼질 때까지 초 단위로 카운트다운되었습니다.이 기계는 로스앤젤레스 카운티 [12]박물관으로 보내졌고, 결국 샌프란시스코 [13]외곽의 컴퓨터 역사 박물관으로 보내졌다.JOSS-2 시스템으로 대체되어 원래 이름은 JOSS-1로 [14]소급하여 알려졌습니다.
JOSS-2 사용
1966년 말에는 새로운 JOSS-2 시스템이 완전히 기능하여 JOSS의 24시간 365일 사용으로 전환되었습니다.이 새로운 기계는 약 30배의 연산 속도, 사용자당 저장 공간 5배, 언어 자체의 [15][1]많은 새로운 기능을 제공했습니다.새로운 플랫폼은 궁극적으로 동시에 사용할 [16]수 있는 단말기를 100대까지 지원할 수 있습니다.공군은 랜드와 다른 사람들이 컨설턴트로 운영되면서 이 시스템의 소유자로 남아있었다.CPU 시간은 분당 약 1달러의 비율로 외부 사용자에게 청구되었지만, 실제 실행 중에만 입력 및 인쇄에 소요되는 시간은 [17]무료였습니다.
1970년까지,[18] 랜드와 전국의 다양한 공군 사이트에 500에서 600명의 사용자가 있었다.이들 중 상당수는 시스템이 의도한 대로 사용자가 가끔 사용되었습니다.이들을 지원하기 위해 커스텀 터미널에는 특수 "JOSS 플러그"가 장착되어 있어 사무실에서 사무실로 이동하거나 커스텀 콘센트에 꽂을 수 있었습니다.200개의 플러그가 랜드 주변에 설치되었고 터미널 섀시는 문을 통과할 수 있을 정도로 충분히 좁게 설계되었으며 [19]한쪽에 커피를 담을 공간을 남겨두었습니다.단말기의 전원 스위치를 전환하면, 새로운 [16]장소에 접속할 수 있게 됩니다.
이 커스텀 단말기는 JOSS용으로 설계되어 있었습니다.엔지니어는 모델 33의 통신 기능은 훈련받지 않은 사람에게는 미스터리이며,[20] 때때로 사용자가 학습하는 것은 너무 혼란스러울 것이라고 느꼈기 때문입니다.실제로 Selectric 기반 메커니즘은 지속적으로 사용하기에는 너무 취약한 것으로 판명되었으며, IBM 서비스 담당자들에 의해 현장에서 자주 수리되었습니다.1970년에는 터미널의 3분의 1이 완전히 재구축되어 신뢰성이 향상되었습니다.공군은 이 시기에 모델 35를 대신 사용하기로 결정했는데, 이는 쉽게 구할 수 있고 [21][11]훨씬 더 저렴하기 때문이다.
용도는 열성적이었고, 그 서비스를 제공하기 위해 Land는 Shirley Marks가 편집한 The JOSS Newsletter를 발행하기 시작했습니다.결국 1967년 11월부터 [22]1971년 6월까지 44개의 호가 발행되었다.
JOSS-3
1970년대 초 IBM의 서해안 시설 중 한 곳의 프로그래머가 OS/360을 실행하는 IBM 370/158용 JOSS-3를 개발했습니다. JOSS가 [23]마침내 퇴역한 것을 제외하고, 이 시스템에 대한 정보는 거의 없습니다.역사 개요의 주석에 따르면, Rand는 IBM이 JOSS라는 이름을 사용하는 것을 주저했고, 그 결과 "IBM 버전은 널리 [24]사용되지 않았다"고 합니다.
실행

PDP-6의 JOSS-II는 기계의 내부 메모리 레이아웃과 일치하도록 두 부분으로 분할되었습니다.이 기계에는 코어 메모리 뱅크 2개가 장착되어 있으며 각 뱅크에는 16k 36비트 워드가 포함되어 있습니다.운영 체제, 사용자 및 파일 관리 코드, 터미널 핸들러 및 인터프리터를 포함한 JOSS 시스템 자체가 이러한 최초의 뱅크를 대부분 사용했습니다.두 번째 뱅크는 사용자 프로그램에 사용되었습니다.이는 당시로서는 비교적 대용량의 메모리였지만 16k워드 사용자 저장공간으로는 부족할 정도로 시스템이 많이 사용되었고 페이징 [16]지원을 위해 자기 드럼으로 백업되었습니다.드럼은 외장 하드웨어로 구동되어 메인 [25]프로세서의 주의가 필요하지 않았다.
복수의 유저 프로그램을 서포트하기 위해서, PDP-6 하드웨어는, 임의의 주소 참조의 비트 20 을 조사하도록 변경되었습니다.이 비트가 설정되어 있는 경우, 주소는 「사용자 공간」에 있어, 주소 0이 그 유저의 베이스 주소를 가리키도록 변경되었습니다.이렇게 하면 시스템에 문제를 일으키지 않고 메모리 내에서 사용자 프로그램을 이동할 수 있으며 운영체제는 내부 레지스터 [16]1개를 변경하는 것만으로 사용자 간에 전환할 수 있습니다.
영구 저장소는 570만 워드의 저장 공간을 갖춘 Storage Products 하드 드라이브에 의해 제공되었습니다.드럼과 마찬가지로 드럼과의 실제 입력/출력은 외부에서 처리되었지만, 이 경우 프로그램을 로드하고 저장하기 위한 사용자의 동작에 의해 이동이 트리거되었습니다.필요에 따라 IBM 호환 테이프 드라이브를 사용하여 데이터를 드라이브 간에 이동했으며, 이 작업은 CPU와 독립적이었습니다.두 개의 DECtape 장치도 사용 가능하며 IBM [26]드라이브와 동일한 방식으로 작동했습니다.
단자는 가능한 300~400개의 단자 플러그 중 하나를 40개의 출력에 연결할 수 있는 기계식 Strouger 스위치로 구성된 맞춤형 "콘센트레이터"를 통해 처리되었습니다.JOSS 스타일의 Selectrics가 아닌 Teletype Model 33 입력 전용으로 8개 라인을 추가했습니다.그런 다음 48개의 회선을 CPU에 연결된 전자 멀티플렉서에 연결합니다.멀티플렉서가 인터럽트 구동되었습니다.즉, 아이돌 단말기가 사이클을 [26]소비하지 않았습니다.
커스텀 JOSS 단말기는 DEC에 의해 구축되었습니다.이것들은 통신 시스템, 전원 장치 및 기타 컴포넌트를 포함하는 커스텀섀시에 내장된 셀렉트릭 메커니즘으로 구성되어 있습니다.커스텀 폰트볼은 ≠과 같은 기본적인 수학 기호를 제공하기 위해 사용되었기 때문에 <>와 같은 두 글자의 조합을 사용할 필요가 없었습니다.통신 시스템은 시작 비트와 중지 비트가 포함된 8비트 패킷의 6비트 문자 코드를 기반으로 했습니다.회선은 셀렉트릭 메커니즘의 초당 최대 15자 속도에 일치하도록 120비트/초로 구동되었습니다.시프트인 및 시프트아웃 코드를 사용하여 리본을 녹색에서 검은색으로, 그리고 뒤로 이동했습니다.이러한 코드는 통신 시스템에서도 인식되어 전면 패널의 표시등이 바뀌어 그 [27]시점에서 컴퓨터 또는 사용자가 단말기를 제어할 수 있는지 여부를 나타냅니다.
언어
직접 및 간접 모드
JOSS는 인터랙티브 언어 및 프로그램 편집기로 작동하는 단일 명령줄 편집기의 아이디어를 도입했습니다.회선번호 없이 입력된 명령어는 JOSS에서 "다이렉트 모드"라고 부르는 방법으로 즉시 실행되었습니다.같은 행에 행 번호가 붙는 경우는, 대신에 JOSS가 「간접 모드」라고 부르는 프로그램 코드 격납 영역에 카피됩니다.회선번호가 일의일 경우, 기존의 회선을 같은 번호로 치환하거나 코드 뒤에 없는 기존의 [28]회선번호를 입력했을 경우 프로그램에 새로운 회선이 추가되었습니다.
대부분의 BASIC과 달리 JOSS는 프로그램 코드뿐만 아니라 전체 사용자 입력을 파일에 저장합니다.로드되면 JOSS는 기본적으로 행을 다시 입력합니다.즉, 프로그램 파일에는 프로그램 문과 직접 모드 명령이 모두 포함될 수 있습니다.예를 들어, 스테이트먼트 행을 나열한 프로그램을 보고 파일의 끝을 다음과 같이 하는 것이 일반적이었습니다.Go.
프로그램 로드가 완료되는 즉시 실행할 수 있습니다.다이렉트 모드에서만 사용할 수 있는 기능이 있습니다.Let
그리고.Form
회선번호 없이 입력되었지만 프로그램이 [29]로드되었을 때 반환된 것입니다.
워크스페이스에서 직접 및 간접 명령을 자유롭게 혼합할 수 있습니다.이것에 의해, 다음과 같이 시작하는 다이렉트 모드 행을 추가하는 것으로써, 코멘트를 소스 코드에 삽입할 수 있습니다.*
또는 코드 행 끝에 코멘트를 붙이고 그 뒤에 코멘트를 추가합니다.[30]또한 공백 행은 무시되므로 프로그램을 명확하게 [31]구분할 수 있습니다.
프로그램 스테이트먼트
JOSS 프로그램의 모든 행은 행 번호로 시작해야 합니다.라인 번호는 마침표로 구분된 두 자리 정수 두 개로 구성된 고정 소수점 숫자입니다.BASIC에서와 같이 회선번호는 양쪽 모두 타겟으로 하는 라벨로 사용됩니다.To
그리고.Do
및 편집을 지원합니다.코드 행을 새 행 번호로 입력하면 프로그램에 삽입되고 기존 행 번호로 입력하면 이전 버전이 대체되거나 비어 있는 경우 삭제됩니다.
마침표 왼쪽에 있는 행 번호 부분을 페이지 또는 부품이라고 하고 오른쪽에 있는 부분을 선이라고 합니다.따라서 회선번호는10.12
페이지 10의 12행 참조.브랜치는 페이지 또는 페이지 내의 행을 대상으로 할 수 있습니다.이후 형식을 사용할 경우 페이지와 행을 합친 것을 단계라고 합니다.
페이지는 서브루틴을 정의하는 데 사용됩니다.서브루틴은 다음 행이 다른 페이지에 있을 때 반환됩니다.예를 들어, 숫자의 제곱근을 계산하는 서브루틴이 3페이지에 있는 경우 코드 3.1, 3.2 및 3.3의 세 줄을 가질 수 있으며, 이를 사용하여 호출할 수 있습니다.Do part 3.
코드가 다른 페이지의 다음 줄(예: 4.1)에 도달하면 실행 후 문장으로 돌아갑니다.RETURN
최종적으로는 조기 반환이 필요한 경우라도Done
이 작업을 수행합니다.
모든 행은 행 번호 뒤에 명령 키워드로 시작해야 합니다.옵션인 BASIC과 같이 기본 명령어의 개념은 존재하지 않습니다.LET
진술.콜론 또는 세미콜론으로 구분하여 한 줄에 여러 문을 배치할 수 있습니다.모든 행은 마침표로 끝나야 합니다.
루프 및 조건
JOSS에서는 조건 평가를 나타내는 접미사 표기법을 사용하고 있습니다.이것은, 조건을 프리픽스 표기법으로 앞에 배치하는 대부분의 언어와는 달리, 「이것이 참이면, 이것을 실행한다」입니다.BASIC과 같지만 FORTRAN이나 FOCAL과는 달리 어떤 문장이든 이러한 방식으로 조건부로 평가될 수 있습니다.예를 들어 조건이 충족된 경우에만 문자열을 인쇄하려면 if와Type
:
1.1 X=5인 경우 "Hello, World!"를 입력합니다.
JOSS는 6개의 infix 비교를 지원했습니다.=
,≠
,≥
,≤
,>
,<
, 및 부울 연산자or
,and
,그리고.not
를 클릭합니다.[32]
루프는 같은 방법으로 처리되며For
명령 및 루프 경계 및 스텝 값을 지정하기 위한 다소 불분명한 형식입니다.start(step)end
예를 들어, 1에서 10까지 2로 스텝을 진행하려면 포맷은 다음과 같습니다.1(2)10
.맘에 들다If
,For
기타 모든 스테이트먼트에 적용할 수 있습니다.
1.2 i=1(2)10에 "안녕하세요, 위키백과!"를 입력합니다.
for는 1개의 스테이트먼트에만 적용됩니다.루프 내에서 여러 스테이트먼트를 실행할 경우 다른 부분으로 분리되고 do를 사용하여 호출됩니다.
1.3 i=1(1)100.1에 대한 파트 5를 수행합니다. 5.1 "안녕하세요, 위키피디아!"를 입력합니다.5.2 "이것은 JOSS입니다"라고 입력합니다.
BASIC과 마찬가지로 for 루프에 대한 입력은 상수, 변수 또는 기타 식일 수 있습니다.
이러한 종류의 범위는 어떤 코드 행에도 적용될 수 있기 때문에 프로그램이 호출될 때 제한과 루프를 정의할 수 있었습니다.예를 들어 다음과 같은 프로그램을 생각해 보겠습니다.
1.1 타입 X
보통 BASIC과 비슷한 방법으로 호출하면RUN
:
파트 1을 하세요.
다음과 같은 결과를 얻을 수 있습니다.
0
단, 호출에 루프구조를 추가하여 이 동작을 변경할 수 있습니다.
X = 1 (1) 5에 대해 파트 1을 수행합니다.
그 결과, 다음과 같은 결과가 발생합니다.
1 2 3 4 5
이를 통해 루프 내에 배치하지 않고도 프로그램에서 수식을 구성할 수 있습니다.필요한 경우 사용자가 프로그램을 시작할 때 루프를 제공할 수 있습니다.
표현 및 제안
JOSS의 독특한 특징은 논리적인 표현을 다루는 것이었다.예를 들어, 대부분의 컴퓨터 언어는 여러 부분으로 이루어진 수학식을 형성하기 위한 방법을 제공합니다.Set x=(1+2)·3.
변수 x를 값 9로 설정합니다. JOSS는 숫자 값 대신 참 또는 거짓으로 논리 값을 반환하는 표현인 "제안"의 개념을 명확하게 정의함으로써 이 개념을 확장합니다.그것들은 주로 에서 볼 수 있었다.If
위의 예시와 같이 명령어를 사용하여 [33]부울 값을 변수에 직접 저장하거나 true를 1로, false를 0으로 변환할 수 있습니다.tv
(진실값) 함수.[34]
JOSS는 명제 외에 '조건부 표현'이라는 개념도 가지고 있었다.이것들은 일련의 명제와 그 명제가 사실일 경우 실행될 코드들로 구성되었다.이를 통해 다단계 의사결정 트리를 한 줄로 작성할 수 있었습니다.이들은 C나 Java와 같은 현대 언어에서 볼 수 있는 3진 연산자와 유사한 목적을 수행하며, 여기서 if-then-else를 구현하는 콤팩트 구조에서 값을 반환하는 데 사용됩니다.JOSS 버전에는 3개뿐만 아니라 임의의 수의 조건문이 있기 때문에 콤팩트한 [35]if-then이라기보다는 콤팩트한 스위치 문장이 됩니다.
다음 예에서는 의 기능을 다시 만듭니다.sgn
기능:[36]
s(x)=[x=0:0;x>0:1;x<0:-1]로 합니다.
이것은 단일 파라미터인 "x"를 취하고 이에 대해 3회 연속적으로 테스트를 수행하는 함수 "s"를 정의합니다.먼저 성공한 테스트는 [37]콜론 뒤에 해당하는 값을 반환합니다.
범위
JOSS의 또 다른 고급 특징은 저장 및 조작이 가능한 내장형이라는 범위 개념을 가지고 있다는 것이다.범위는 보통 루프 자체의 구문의 일부인 루프에 대한 입력으로 검색됩니다.예를 들어 BASIC에서는 다음 기본 구문을 사용하여 for 루프를 작성합니다.
위해서 I=1 로. 5 걸음 2
그러면 I에 값 1, 3, 5를 할당하고 종료하는 루프가 실행됩니다.
JOSS는 루프의 한계를 정의하기 위해 다소 불분명한 형식을 사용했습니다.JOSS의 동등한 코드는 다음과 같습니다.
I=1(2)5
이 코드에는 for는 포함되지 않습니다.이는 JOSS에서 범위는 BASIC과 같이 루프의 일부가 아닌 언어의 1등급 시민이기 때문입니다.범위는 루프 외부의 많은 컨텍스트에서 정의 및 사용할 수 있습니다.예를 들어, 다음은 모수 [35]x의 계수를 평가하는 조건식입니다.
f(x)=[x=0:1; fp(x)=0:disc(i=1(1)x:i)]로 합니다.
이 예에서는 세미콜론으로 구분된 두 가지 주요 명제가 있습니다.왼쪽의 첫 번째는 파라미터 x가 0일 경우 조건은 즉시1을 반환해야 함을 나타냅니다.이 제안이 실패하면 오른쪽의 두 번째 테스트로 이동합니다.이것은 x의 소수 부분이 0(즉, 정수)인지 여부를 체크하고, 만약 그렇다면, 를 호출합니다.prod
값의 범위를 곱하는 함수입니다.그prod
의 파라미터도 제안입니다만, 이 경우 테스트는 1에서x 스테핑 1까지 실행되는 루프 리터레이터로 대체됩니다.이 명제가 참일 경우, 즉 루프의 모든 값에 대해 인덱스 i를 반환합니다.이것에 의해, 일련의 값이 에 송신됩니다.prod
1 ~ [35]x 입니다.
이러한 기능의 조합에 의해, 몇개의 커맨드로 복잡한 함수를 쓸 수 있습니다.이러한 종류의 기능은 훨씬 더 현대적인 언어에서만 보편화되었으며, 일반적으로 동일한 결과를 제공하기 위해 반복기 또는 지도 함수를 사용합니다.의사결정과 루프를 콤팩트한 형태로 조합하는 JOSS의 기능은 FOCAL과 같은 시대의 다른 언어에서는 알려져 있지 않습니다.
명령어
세트
그Set
명령어는 식 결과를 지정된 변수에 할당합니다.BASIC과 동등LET
.
01.30 설정 p=3.14156.60 설정 i=l*(r/100)*t.
Set
다이렉트 모드로 사용하는 경우 옵션이며, 여기서 입력할 수 있습니다.x=5.
설정 명령어를 사용하지 않습니다.이것은 [38]BASIC과 대조적으로 간접 모드에서는 허용되지 않았습니다.
허락하다
Let
사용자 정의 [39]함수를 정의하기 위해 사용되었습니다.BASIC과 동등DEF FN
를 클릭합니다.[30]
t(x)=sin(x)/cos(x)로 하자.j=t(1.1)를 설정합니다.j 라고 입력합니다.
Let
는 상수로 구성된 공식을 사용하여 변수 값을 설정하는 데도 사용할 수 있습니다.
x=5로 하자.
그 시점부터, 이것은, 를 사용해 작성한 것과 같은 방법으로 사용할 수 있습니다.Set
다만, 이 X를 코드로 참조했을 경우는, 우측을 평가해 값을 산출합니다.aSet
한 번만 평가되기 때문에 훨씬 [40]빠릅니다.
시스템은 일반적으로 다음을 사용할 것을 제안했습니다.Let
파일 맨 위 또는 맨 아래에 삽입하여 프로그램에서 사용할 수 있도록 저장합니다.이로 인해Let
로드 프로세스 [41]중에 한 번만 호출되므로 실행 중에 여러 번 호출됩니다.
요청.
그Demand
는 변수 목록을 가져와 사용자 입력을 변수에 저장합니다.옵션as
한정자가 커스텀프롬프트를 추가했습니다.BASIC과 동등INPUT
.
01.01 "연령이 어떻게 되십니까?" 01.02 요구 A.03 유형 "You are", A.01.04 요구 H를 "신장이 어떻게 되십니까?" 01.05 유형 H로 요구하십시오.키가 그렇게 커?
유형
그Type
명령어는 쉼표로 구분된 하나 이상의 항목을 출력합니다.기본 형태로는 BASIC과 동등합니다.PRINT
.하지만,Type
에는 다수의 옵션폼이 포함되어 있어 부하가 매우 높아 관련성이 없는 일련의 출력 [42]작업을 수행합니다.
값을 인쇄하는 데 사용할 경우 매개 변수는 변수, 큰 따옴표로 둘러싸인 리터럴 문자열 및 특수 문자열일 수 있습니다._
라인 [43]피드를 생성하는 문자. Type
는 형식 문자열을 사용한 형식화된 출력도 지원합니다.의 항을 참조해 주세요.Form
아래를 참조해 주십시오.[42]
타입은 BASIC과 동등하게 사용됩니다.LIST
진술서, 프로그램 작성.예를 들어.Type step 1.1.
한 줄의 코드를 출력합니다.Type part 1.
전체 부품을 출력합니다.Type all.
전체 프로그램을 [42]출력합니다.
또, 내부값의 리스트를 인쇄하는데도 사용할 수 있다. Type all values.
는 모든 변수와 그 값의 목록을 생성합니다.Type size.
프로그램 크기를 출력합니다.키워드는 다음과 같습니다.size
,time
그리고.users
를 클릭합니다.[42]
페이지입니다.
Page
특수 JOSS [33]터미널에서 페이지 피드를 트리거합니다.JOSS는 보통 단말기가 용지의 54라인에 도달하면 페이지 피드를 전송하기 때문에 데이터 블록이 반으로 분할되지 않도록 하기 위해 다음과 같이 할 [44]수 있습니다.
1.10 페이지 ($$BODY$$gt;44)
$
는 현재 회선번호를 [44]반환하는 의사문자입니다.
선
Line
특수 JOSS [33]단자에서 라인 피드를 트리거합니다.
로.
그To
명령을 사용하여 지정된 부품 또는 스텝 번호로 프로그램 실행을 점프합니다.To part 1.
또는To step 1.1.
각각.[45]BASIC과 동등합니다.GOTO
. 와의 대조Go
, 프로그램을 시작하는 명령줄에서 사용되는 간접 명령어로, 이는 BASIC의 명령어와 동등합니다.RUN
.
01.01 "TYPE A NUMBER"로서 A를 요구합니다. 01.05 1.01.10 To part 1.
마라
Do
와 유사하다To
서브루틴으로 분기합니다.와 마찬가지로To
,넌 할 수 있다.Do part
또는Do step
스텝이 지정되어 있는 경우, 그 1 행이 실행되어 그 후에 스테이트먼트로 돌아갑니다.Do
. 부품이 제공된 경우 블록의 첫 번째 줄부터 실행이 시작되어 블록의 끝에 도달하거나 블록의 끝에 도달할 때까지 계속됩니다.Done
스테이트먼트가 검출되었습니다.
01.15 7.24.16 파트 8을 수행한다.
Do
대부분의 프로그램에서 흔히 볼 수 있는 한 가지 특별한 짧은 형식이 있습니다.이거는times
표준이 아닌 수식어for
(단순 루프의 경우).따라서 다음 행이 동일합니다.[42]
i=1(1)5에 대해 파트 1을 수행합니다.1부, 5부.
JOSS는 현재 실행 중인 행에 대한 포인터를 유지합니다.Do
바뀔 거야.단, 메인 포인터를 변경하지 않고 코드의 특정 부분을 테스트하기 위해 직접 모드에서 사용할 수 있는 특별한 "parentic do"가 포함되었습니다.예를 들어, 오류로 인해 프로그램이 중지되고 문제의 원인이 된 섹션이 명확하지 않은 경우 다음과 [46]같이 특정 서브루틴을 테스트할 수 있습니다.
(파트 2를 실행한다.)
다 했어요.
그Done
명령어는 서브루틴콜에서 반환됩니다.부품의 끝에 도달하면 서브루틴이 자동으로 반환되므로,Done
는 조기 복귀 시에만 필요하며 종종 조건부와 함께 사용됩니다.BASIC과 동등RETURN
.
* 사용자에게 양의 값을 입력하도록 루틴하고 01.10 요구 X가 "0보다 큰 양의 값을 입력"으로 표시될 때까지 반복합니다. 01.20 X > 0.301.30 스텝 1.1까지 완료
이제 그만
그Stop
명령어는 프로그램 실행을 종료하고 편집 환경으로 제어를 되돌립니다.BASIC과 동등END
또는STOP
단, BASIC의STOP
를 가능하게 하기 위한 것입니다.CONT
JOSS의 워크스페이스 지향 시스템에는 직접 해당되지 않는 기능인 동일한 위치에서 실행을 픽업할 수 있습니다.
01.10 타입 X. 01.20 정지.
가세요
다이렉트 모드에서만 사용할 수 있습니다.Go
BASIC과 동등합니다.RUN
그리고.CONT
에러 또는 에러로 인해 프로그램이 현재 정지되어 있는지 여부에 따라 달라집니다.Stop
명령어가 [47]검출되었습니다.
취소
또 다른 direct-mode-only 명령어입니다.Cancel
프로그램이 오류로 인해 중지되고 사용자가 프로그램을 재설정하려고 할 때 사용됩니다. 이 경우 프로그램 카운터를 지웁니다.aGo
마지막 장소에서 수신할 수 있지만,Cancel
만든다Go
처음부터 [48]다시 시작하다현재 중단점이 상위 가설에 의한 경우(Do.)
, 상위 가상 취소를 발행할 수 있습니다.(Cancel.)
그 서브태그만 정지하고,Go
부모 행이 아닌 마지막 [46]행에서 계속됩니다.
수학
JOSS는 모든 숫자를 기수-10 부동소수로 [49]저장했습니다.
JOSS에는 6개의 수학적 [49]연산자가 포함되어 있습니다.
+
추가용으로-
뺄셈을 위해서·
곱셈용( 마침표가 아닌 시간)/
분할을 위해*
지수용...
절대적인 가치를 위해, 가운데에 식을 넣고
수학식은 ()와 []을(를) 일치 쌍으로 사용하여 우선순위를 설정할 수 있습니다.예:
1.30 A= -10·[5+1]·(1+5)로 설정합니다.
360을 [32]생산할 수 있습니다.
기능들
언어에는 다음과 같은 기능이 내장되어 있습니다.
수학
sin()
- 라디안 단위로 주어진 각도의 사인cos()
- 코사인arg()
- 점의 X 및 Y 값을 취하여 해당 점과 X축 사이의 각도를 반환합니다.log()
- Naperian 로그exp()
- 논의의 힘에 대한 자연스러운 근거sqrt()
- 제곱근sgn()
- 인수 기호 0은 0을 반환하고 -ve 값은 -1, +ve +1을 반환합니다.ip()
- 인수의 정수 부분,ip(22026.4658)
22026을 반환한다.fp()
- 소수 부품, .4658을 반환합니다.dp()
- 숫자 부품, 2.20264658을 반환합니다.ep()
- 지수 부분, 소수점 위치인 4를 반환합니다.
부울
tv()
- True 값. 식이 참이면 1을 반환하고 그렇지 않으면 0을 반환합니다.
루프 기능
JOSS는 또한 내부적으로 루프를 실행한 많은 함수를 정의하여 프로그래머가 다음을 작성해야 하는 것을 방지합니다.For
일련의 숫자의 합계와 같은 간단한 작업을 수행하기 위한 루프입니다.파라미터는 콤마로 구분된 단순 표현 목록 또는 명령어가 임의의 스테이트먼트 또는 함수 호출인 범위 구성 중 하나입니다.
max()
- 제공된 표현의 최대값min()
- 최소값sum()
- 합계prod()
- 제품first()
- 목록에서 조건에 일치하는 첫 번째 항목이 해당 결과를 반환합니다.
파일 관리
JOSS 시스템은 할당된 공간에 사용자 프로그램을 저장하기 위해 하드 디스크를 사용했습니다.이 공간에는 예를 들어 괄호 안의 정수와 5글자 이름으로 구성된 다중 부분 파일 이름을 사용하여 참조된 많은 파일이 포함되어 있습니다.123 (hello)
integer 부분은 디렉토리와 동등하며, name은 디렉토리 내의 서브파일로 JOSS [50]자체에 의해 유지됩니다.
파일은 다음과 같이 씁니다.File all as item filename.
로 가득 차 있다Recall item filename.
워크스페이스의 특정 부분만 읽거나 저장할 수도 있습니다.File part 1 as item filename.
하나의 루틴을 [51]파일에 저장합니다.또한 모든 참조처가 되는 디폴트파일을 설정할 수도 있습니다.Use item filename.
파일을 삭제할 수 있습니다.Discard
를 클릭합니다.[51]
샘플 프로그램
1.1요청 p,q. 1.2중지 만약 q<0또는 r(q,2)=0. 1.3설정 a=1. 1.4니 2부는 동안 q>. 1과 a≠0~1.5형식 한 형태 3에. 1.6중지. 2.1니 일부 20. 2.1니 부분 11만약 p<0. 2.2니 부분 12p≥q. 2.3니 부분 13만약 p=0. 2.4완료 만약 a=0. 2.5설정 p=p/4는 동안 r(p,4)=0. 2.6니 일부 14만약 r(p,2)=0. 2.7니 일부 20.280세트 a=-a 만약 r(p,4)=r(q,4)=3.2.9설정s=p, p=q, q=s. 2.95 do part 20.1 do p=-a if r(q,4)=3.2 do p=11.3 do p=r(p,q), 12.2 do p=20.1 set a=0, p=14.1 set.양식 1: " L ( . 0f , % 0f ) =" 양식 2: " - L ( . 0f , % 0f ) =" 양식 3: " % . 0f \ n"
이 샘플은 원래 샘플이 아니라 최신 시뮬레이터에서 가져온 샘플입니다.원래의 JOSS 언어와는 구문적인 차이가 있습니다.
메모들
레퍼런스
인용문
- ^ a b c d 브라이언 1966, 페이지 2
- ^ a b c 1971년, 페이지 1
- ^ Norberg, Arthur (10 July 1989). "An Interview with Keith Uncapher" (PDF) (Interview). p. 7.
- ^ 웨어 2008, 페이지 62
- ^ 1971년 마크스, 페이지
- ^ 쇼 1965, 3페이지
- ^ a b 1971년, 페이지 2
- ^ Smith, JW (August 1967). JOSS: Central Processing Routines (reference user guide). RAND. RM 5270 PR. Retrieved 2012-04-16.
- ^ 쇼 1965, 14페이지
- ^ a b 1971년 3페이지
- ^ a b c 1971년 9페이지
- ^ 1971년, 페이지 4
- ^ "JOHNNIAC". Computer History Museum.
- ^ 웨어 2008, 페이지 15, 109
- ^ 1971년 5페이지
- ^ a b c d 브라이언 1966, 페이지 3
- ^ 1971년, 32페이지
- ^ 1971년 10페이지
- ^ 1971년, 페이지 15
- ^ 1971년, 페이지 14
- ^ 브라이언 1966, 페이지 12
- ^ 1971년, 페이지 47
- ^ 웨어 2008, 페이지 65
- ^ 웨어 2008, 페이지 16
- ^ 브라이언 1966, 페이지 4
- ^ a b 브라이언 1966, 5페이지
- ^ 브라이언 1966, 페이지 6
- ^ '짐블 1967', 페이지 v.
- ^ 짐블 1967, 페이지 6
- ^ a b 1967년 책, 65쪽
- ^ 1971년, 페이지 42
- ^ a b 1967년 책, 70쪽 70
- ^ a b c 짐블 1967, 페이지 77
- ^ 짐블 1967, 페이지 24, 69
- ^ a b c 짐블 1967, 75페이지
- ^ 1971년, 페이지 41
- ^ 짐블 1967, 페이지 25
- ^ 짐블 1967, 페이지 68
- ^ 짐블 1967, 74-75페이지
- ^ 짐블 1967, 페이지 45
- ^ 짐블 1967, 페이지 63
- ^ a b c d e 1967년 책 66쪽
- ^ 짐블 1967, 7페이지
- ^ a b 짐블 1967, 페이지 49
- ^ 짐블 1967, 67페이지
- ^ a b 짐블 1967, 58페이지
- ^ 짐블 1967, 57페이지
- ^ 짐블 1967, 53페이지
- ^ a b 짐블 1967, 페이지 69
- ^ 짐블 1967, 59페이지
- ^ a b 짐블 1967, 페이지 61
원천
- Gimble, E.P. (May 1967). JOSS: Problem Solving for Engineers (PDF) (Technical report). Rand.
- Bryan, G. E. (4 November 1966). JOSS: Introduction to the System Implementation. Lawrence Radiation Laboratory, Berkeley California: DECUS. p. 19. Retrieved 2019-06-19.
- Marks, Shirley (December 1971). The JOSS Years: Reflections on an experiment (PDF) (Technical report). Rand. Retrieved 2019-06-19.
- Sammet, Jean (1969). Programming languages : history and fundamentals. Prentice-Hall. pp. 217–226. ISBN 0-13-729988-5.
- Shaw, J.C. (May 1965). JOSS: Experience with an experimental computing service for users at remote typewriter consoles (PDF) (Technical report). Rand.
- Ware, Willis, ed. (2008). RAND and the Information Evolution (PDF). Rand. ISBN 9780833048165.
추가 정보
- "JOSS 사용자 참조 매뉴얼", R.L. Clark, Report R-1555/9, RAND Corp(1975년 1월)
- 미네소타 대학교 찰스 배비지 연구소의 키스 W. 언캐퍼와의 구두 역사 인터뷰.Keith Uncapher가 1950년부터 1970년대 초까지 고용되었을 때 RAND Corporation의 프로젝트 리뷰(JONNIAC, JOSS, 존속 가능한 전국 네트워크, ARPANET 관련 작업 등).
외부 링크
- JOSS: 온라인 컴퓨팅 시스템(VPRI-0270)은 1964년 3월 SRI가 JONNIAC에서 동작하고 있던 JOSS를 시연하는 영화입니다.