다트머스 바스IC

Dartmouth BAS
다트머스 바스
패러다임필수적
설계자 G. 케메니, 토마스 E. 커츠
처음 등장한1964년; 58년 전 (연방)
OS다트머스 시분할 시스템
영향을 받다
포트란, 알골
영향받은
기본 사투리 목록 참조

Dartmouth BASIC은 BASIC 프로그래밍 언어의 기본 버전입니다.이것은 다트머스 대학의 두 교수인 존 G. 케메니와 토마스 E. 커츠가 디자인했다.기초가 되는 Dartmouth Time Sharing System(DTS; 다트머스 타임 셰어링 시스템)을 통해 모든 학부생과 더 큰 대학 커뮤니티에 인터랙티브한 프로그래밍 환경을 제공했습니다.

Dartmouth에서는 몇 가지 버전이 제작되어 학부생에 의해 구현되어 컴파일 앤 고 시스템으로 운영되었습니다.첫 번째 버전은 1964년 5월 1일에 실행되었고, 6월에 일반 사용자에게 공개되었다.업그레이드 후 1979년 7번째이자 최종 출시로 정점을 찍었다.Dartmouth는 또한 다양한 구조화된 프로그래밍 개념을 추가한 Structured BASIC(또는 SBASIC)로 알려진 극적으로 업데이트된 버전을 1975년에 발표했습니다.SBASIC은 1980년대 초에 ANSI 표준 표준 BASIC 노력의 기초를 형성했다.

BASIC의 대부분의 방언은 제4판까지 역사를 추적하지만, 일반적으로 행렬 수학과 같은 난해한 특징들을 생략한다.Dartmouth 컴파일러와 달리 다른 대부분의 BASIC은 인터프리터로 작성되었습니다.이 결정을 통해 초기 마이크로컴퓨터제한된 메인 메모리에서 실행할 수 있게 되었습니다.Microsoft BASIC은 4KB의 메모리만으로 동작하도록 설계된 예입니다.1980년대 초까지 수천만 대의 가정용 컴퓨터가 MS 인터프리터를 실행하고 있었습니다.이는 BASIC의 사실상의 표준이 되었고, 이로 인해 ANSI SBASIC의 노력이 포기되었습니다.Kemeny와 Kurtz는 나중에 회사를 설립하여 True BASIC으로 알려진 SBASIC 버전을 개발하고 홍보했습니다.

많은 초기 메인프레임 게임들은 그 역사를 Dartmouth BASIC과 DTSS 시스템으로 추적합니다.이들 중 일부는 HP Time-Shared BASIC 버전의 "People's Company" 책 "Return"[1]을 누른 후 수행할 작업"에 수록되어 있습니다.베이직 컴퓨터 게임이나 관련 저작물의 오리지널 소스 리스트의 상당수도 다트머스 베이직의 역사를 추적하고 있다.

개발 이력

이전 작업

G. 케메니는 1953년에 다트머스 대학의 수학부에 들어갔고 나중에 학과장이 되었다.1956년에는 MIT의 New England Regional Computer Center를 통해 IBM 704에 액세스했습니다.그 해에 그는 수학 연산의 프로그래밍을 단순화한 어셈블러의 버전인 DARSIMCO 언어를 썼다.그는 그 [2]해에 그 부서에 입사한 토마스 E. 커츠의 도움을 받았다.

1957년 FORTRAN 컴파일러가 처음 컴퓨터에 설치되었을 때 DARSIMCO는 잊혀졌습니다.FORTRAN의 등장은 중요한 교훈을 심어주었다.Kurtz는 FORTRAN이 느리다는 것을 알게 된 후 704 어셈블러에서 프로그램을 작성하는데 몇 개월을 소비했는데, 이 프로그램은 디버깅하는 데 약 1시간의 CPU 시간이 걸렸지만 여전히 실행되지 않았습니다.포기하고, 그는 그것을 FORTRAN으로 다시 써서 5분 만에 실행시켰다.그 교훈은 높은 수준의 언어는 측정된 [2]성능에 관계없이 시간을 절약할 수 있다는 것이었습니다.

1959년, 이 학교는 첫 번째 컴퓨터인 드럼 기반의 LGP-30을 받았다. 한 학생은 이 기계를 위해 포트란에서 영감을 받은 언어인 DART를 썼다.그 결과 ALGOL 58 컴파일러를 제작하기 위한 노력이 이루어졌고, 그 정의가 확정되었을 때 ALGOL 60으로 을 돌렸습니다.컴파일러의 쓰기는 매우 작은 메모리 크기(현대식으로는 32KB)로 인해 어려웠고, 드럼 속도 30rpm을 기준으로 했을 때 매우 느렸습니다.그럼에도 불구하고, 그들은 ALGOL [3]30으로 알려진 기능적 축소 버전을 생산할 수 있었다.추가 개발로 펀치된 테이프가 소스에서 읽기를 마치자마자 컴파일된 프로그램을 실행할 수 있는 원패스 컴파일러인 "Self-Contained Algol Processor"인 두피(Seff)가 생산되었습니다.프로그램 결과를 포함한 출력 또는 오류 메시지가 즉시 표시됩니다.컴파일 앤 고 방식의 조작은 나중에 [3][4]BASIC에 의해 사용됩니다.

1962년, Kemeny와 고등학생 Sidney[5] Marshall은 새로운 언어인 DOP(Dartmouth Oversimplified Programming Experiment)로 실험을 시작했습니다.예를 들어 DOP라는 두 개의 숫자를 추가하는 등 명령어를 나타내는 번호부 행을 사용했습니다.

5 + A B C

즉, "5행에서 변수 A와 B의 값을 더하고 결과를 C에 넣으십시오."를 의미합니다.레이아웃에서는 다소 이해하기 어렵지만, 미래의 BASIC 언어의 기초를 [6]알 수 있습니다.언어에는 기본적인 수학적 연산 외에도 SQR, EXP, LOG, SIN 및 간단한 분기 [7]구조가 포함되어 있습니다.

교양과목 컴퓨터

Kemeny와 Kurtz는 기존의 STEM 분야 이외의 학생들 사이에서 프로그래밍 리터러시의 필요성에 동의했습니다.다트머스 대학의 학생의 25%만이 STEM 관련 코스를 수강하고 있었지만, 거의 모든 분야에서 어느 정도의 수학이 사용되고 있었습니다.게다가, 컴퓨터가 사회에서 더욱 중요해질수록, 그들은 "컴퓨팅과 그 사용에 대한 합리적인 결정이 근본적으로 그것에 대해 모르는 사람들에 의해 어떻게 이루어질 수 있는가?"라고 궁금해했다.[7]

Kemeny는 나중에 다음과 같이 말했습니다.우리의 비전은 캠퍼스 내의 모든 학생이 컴퓨터에 접근할 수 있어야 하며, 교직원은 언제든지 교실에서 컴퓨터를 사용할 수 있어야 한다는 것이었습니다.그렇게 [8]간단했다.그러나 이 작업을 수행하는 것은 거의 불가능합니다.일반적인 두피 실행 시 약 15분 정도 소요되며 STEM 이외의 사용자가 기본 [7]작업에 사용하기에는 언어가 너무 어려웠습니다.

단순히 문제가 되는 것은 복잡성이 아니라 일괄 처리의 전체 개념이었습니다.학생들은 펀치 카드나 종이 테이프로 프로그램을 준비하여 컴퓨터 운영자에게 제출하고, 그 후 어느 시점에 그들의 결과를 받게 된다.이로 인해 전체 공정을 반복해야 하는 오류가 종종 발생합니다.나중에 그들이 말했듯이, "한 번 시도하는데 하루 정도 걸리면, 학생은 흥미를 잃거나 문제가 무엇인지 잊어버릴 것이다.기껏해야 그날의 결과가 [9][a]나오기를 기다리며 시간을 낭비할 것이라고 말했다.

1959년에 수학 교육의 혁신가로서의 Kemeny의 명성 덕분에, 그 학과는 Alfred P를 수상했습니다. Sloan Foundation은 새 부서 [10]건물을 짓는데 50만 달러를 주었어요.

개념 개발

1961년 MIT를 방문했을 때 PDP-1과 최근에 완성된 실험적인 시분할 운영체제를 소개받았다.John McCarthy는 Kurtz에게 왜 컴퓨팅을 대중에게 제공하기 위한 노력에 시간 공유를 사용하지 않았는지를 물었습니다.커츠는 다트머스로 돌아와 케메니에게 "우리는 시간 공유를 해야 한다"고 말했고 케메니는 즉시 "OK"[11]라고 대답했다.

이 개념이 실행 가능한지를 테스트하기 위한 실험에서 학생들은 5인 1조로 나누어 [4]스칼프를 사용하여 LGP-30을 교대로 작동시켰다. 컴퓨터 시간은 15분 세션으로 나누어 각 5인 1회의 세션이 주어진 후 다음 그룹으로 넘겨졌다.학생들은 보통 한 번의 세션 동안 두세 번의 턴어라운드로 프로그램을 완료할 수 있었다.이는 인터랙티브 시스템이 수백 명의 사용자가 하나의 [12]기계를 성공적으로 사용할 수 있게 한다는 것을 분명히 시사했다.

전화 회선을 통해 새롭게 도입된 ASCII를 사용한 Teletype Model 33 텔레프린터가 등장함에 따라 액세스 문제가 해결되었습니다.프로그래머는 더 이상 카드나 종이 테이프로 프로그램을 제출할 필요가 없어지고 모델 33을 사용하여 컴퓨터에 직접 입력할 수 있게 되었습니다.필요한 것은 시분할 시스템을 호스트하기에 충분히 빠른 새로운 기계와 프로그래머가 사용할 [13]수 있는 간단한 언어뿐이었다.

간단한 언어에 대한 주제가 진지하게 고려되기 시작하자, 케메니는 즉시 새로운 언어를 쓰자고 제안했다.Kurtz는 FORTRAN 또는 [14]ALGOL의 축소 버전에 더 관심이 있었습니다.그러나 이들 언어에는 많은 특이점이 있어 Kurtz는 Kemeny에 동의하게 되었습니다.

FORTRAN의 추악한 특징을 수정했다면 FORTRAN은 더 이상 존재하지 않았을 것입니다.나는 마지못해 [15]존에게 새로운 언어가 필요하다는 것에 동의해야만 했다.

시간이 지남에 따라 4가지 핵심 요소가 등장했습니다. 시스템은 시분할을 사용할 것이며, 새로운 언어가 필요할 것입니다. 새로운 코스는 다른 과목의 보조 코스로서 프로그래밍을 도입할 것이며, 마지막으로 [16]단말기는 모든 사용자에게 개방될 것입니다.

초기 버전

이 프로젝트는 공식적으로 1963년 9월에 시작되었다.그 목적은 언어와 운영체제를 기성 [17]컴퓨터로 개발하는 것이었다.1964년 초, 그들은 자금 지원을 위해 국립과학재단에 접근했다.NSF는 시분할 시스템을 위한 제안서와 언어를 위한 제안서를 동료 검토를 위해 보냈습니다.리뷰는 변함없이 그들이 시도하고 있는 것의 어려움을 이해하지 못했음을 시사했다.이러한 부정적인 의견에도 불구하고 NSF는 두 가지 보조금을 모두 추진했다.General Electric이 제공하는 교육 할인 혜택은 "IBM을 가지 않는" 것이 여전히 [18]위험으로 가득했던 시대에 GE-225 컴퓨터를 구입하게 했습니다.

GE-225는 프로그램을 [19]공유하기 위해 훨씬 단순한 DATANET-30(DN-30) 머신 및 두 머신에 연결된 하드 드라이브와 쌍을 이룹니다.DN-30에는 [18]당시 프로그램 설치 없이 공장에서 출하되는 것은 전혀 의도되지 않았기 때문에 프로그래밍 문서가 없었습니다.여기에는 대규모 GE 머신에 대한 다이렉트 메모리 액세스(DMA) 액세스라는 주요 기능이 포함되어 있습니다.즉, 작은 메시지를 머신 간에 빠르게 주고받을 수 있기 때문에 사용자가 입력한 명령을 [20]225에서 즉시 실행할 수 있습니다.

시스템은 DN-30이 터미널을 실행하고 사용자의 작업을 디스크에 저장함으로써 작동합니다.사용자가 입력했을 때RUNDN-30은 DMA를 사용하여 이 명령을 GE-225로 전송합니다.225 는, 그 파일을 읽어 컴파일 해, 실행해,[21] 그 결과를 DN-30 에 되돌립니다.DN-30 은 단말기로 출력을 출력합니다.

1963년 여름, 컴퓨터를 구입하기 전에 GE는 GE-225 중 하나에 대한 접근을 제공했습니다.Kemeny는 시제품 컴파일러 작업을 시작했습니다.마이클 부쉬와 존 맥기치는 그 해 가을부터 운영체제 설계에 착수했습니다.언어와 OS는 모두 이 기간 동안 광범위하게 수정되었지만 기본 목표는 그대로였고 11월에 [19]초안 형태로 발표되었습니다.

[22]학교의 기계는 1964년 2월 마지막 주에 도착하여 [23]3월 중순에 가동되어 4월 1일에 정식으로 인도되었다.그 시점에서는, operating system의 설계는 이미 잘 되어 있었습니다.운영체제에서 일하는 대부분의 학생 프로그래머들은 일주일에 50시간씩 수업을 [22]듣습니다.그 언어는 다른 225 [24]기계에서 차용된 시간에 병렬로 개발되었습니다.OS는 4월에 완료되었으며, 3대의 모델 33 단말기에서 실행되는 전체 시스템은 이달 말까지 준비되었습니다.John Kemeny와 John McGeachie는 1964년 5월 1일 [23]새벽 4시에 첫 번째 BASIC 프로그램을 실행했다.

최초의 프로그램이 무엇이었는지는 완전히 명확하지 않다.Dartmouth를 포함한 많은 소식통들은 이것이 다음과 같은 간단한 [25]프로그램이라고 주장한다.

프린트 2 + 2

이 언어의 후기 역사에는 케메니와 익명의 프로그래머가 동시에 두 개의 프로그램을 입력했다고 기록되어 있다.그들은 프로그램을 입력하고RUN동시에 올바른 [26]결과를 얻을 수 있습니다.커츠는 일찍 일어나는 사람이었고 이미 집에 가서 "모든 [27]재미를 놓쳤다"고 말했다.

다음 달에 걸쳐 시스템에 수치 분석 클래스 테스트 프로그램을 설치하여 시스템을 테스트했습니다.이 기간 동안 기계는 평균 5분 [28]동안 정상적으로 작동했습니다.이 문제는 신속히 해결되었고, 6월에는 터미널 수를 11개로 늘리기로 결정되었다.더 빠른 GE-235가 225를 대체한 것은 이 무렵이었다.가을까지 20개의 단말기가 [19]사용되었습니다.

GE는 GE-235와 DN-30의 조합을 GE-265라고 [29]부르기 시작했습니다.이것들의 모델 번호를 추가했습니다.GE는 GE-265의 [30]약 75개의 추가 사례를 제작했으며, 그 대부분은 서비스 사무국 업무용이었다.GE는 이러한 시스템을 Mark I 시분할 [31]시스템이라고 불렀습니다.

새로운 시스템

이 프로그램의 원래 목표 중 하나는 프로그래밍을 다른 과목에 적용하는 것이었다.이것은 성공이었지만, 시스템에 상당한 부담을 주고, 향후의 [32]성장의 여지가 없다는 것이 분명해졌습니다.

1965년 팀은 지속적인 개발을 위해 GE에 지원을 요청했습니다.9월에 Louis Rader 부사장은 새로운 GE-635를 발표했는데, GE-635는 약 10배의 속도로 작동하며 2개의 CPU를 탑재했습니다.또, 150명의 [32]유저가 동시에 처리할 수 있는 회선을 늘리기 위해서, 2번째의 DN-30이 추가됩니다.265호기가 운행되던 칼리지홀 지하보다 더 큰 시설이 필요할 것이다.22학번 피터 키윗은 NSF의 추가 [32]지원과 함께 1966년 12월에 문을 연 키윗 계산 센터를 건설하게 되었습니다.

이 기계가 도착하기를 기다리는 동안 1966년 여름과 가을에 로마 항공 개발 센터에서 GE-635를 사용하여 Molds인 "Multiple User On-Line Debugging System"을 개발했습니다.GE-635는 1967년 초에 가동되었으며, Molds를 사용하여 새로운 운영체제는 9월에 완전히 기능했으며, 그 시점에 GE-265는 [33]판매되었습니다.

GE는 Dartmouth가 BASIC의 새로운 버전을 개발하는 광범위한 계약의 일환으로 3년간 이 머신을 무료로 제공했으며, GE는 이 머신을 자사 버전의 [33]운영체제를 개발하는 데 사용했습니다.이 공동작업은 성공적이었습니다.GE는 [34]Mark II 시분할 시스템으로 이러한 머신을 도입하기 시작했고, 10년 말에는 세계에서 [32]가장 큰 시분할 벤더가 되었습니다.

이 "Phase I" 시스템이 작동하기 시작했을 때, 다트머스 팀은 이상적인 운영 체제인 "Phase II"의 개발을 시작했습니다.이것은 1969년 3월에 설치되었고, 얼마 지나지 않아 다트머스 타임 셰어링 시스템으로 이름을 바꿨다.3년의 기간이 끝나자 GE는 그 기계를 대학에 기증했다.비록 두 팀은 계속 연락을 취했고, 관계를 지속하기 위한 몇 번의 선의의 시도가 있었지만, 더 이상의 협력은 거의 이루어지지 않았고 1972년 [33]9월 20일 공식적으로 파트너십은 종료되었다.

사용자 기반 확대

1968년 리뷰에서는 학생의 80%, 교직원의 70%가 이 시스템을 어느 정도 사용하고 있다고 지적했습니다.수백 개의 터미널이 병원에서 경영대학원까지 캠퍼스 전체에 퍼져 있었습니다.CPU 시간의 57%는 수업, 16%는 연구, 나머지 27%는 레크리에이션 용도로 사용되었습니다.다트머스는 실제로 사용하고 컴퓨터에 [35]대한 두려움을 극복하기 위한 방법으로 사용자들에게 게임을 즐기도록 적극적으로 권장했습니다.

1967년 Dartmouth는 또 다른 NFS 보조금을 시작으로 이 지역의 고등학교를 포함한 캠퍼스 외 지역에 터미널을 설치하기 시작했습니다.사용자 수에서는 이들 단말기가 전체 사용자의 69%를 호스트하고 있지만 컴퓨터 [35]사용 시간은 적었습니다.1971년까지 멀리 뉴저지메인주 뱅고까지 79개의 원격 터미널이 있었다.이들은 단일 음성 등급 전화 회선을 통해 최대 12대의 단말기를 지원할 수 있는 멀티플렉서 시스템에 의해 지원되었습니다.게다가 이러한 회선의 상당수는, [36]모뎀과의 다이얼 업에 사용할 수 있었습니다.

영향을 주다

시분할은 1960년대 주요 연구 분야였으며, 컴퓨터 업계의 많은 사람들은 컴퓨팅 성능이 저렴하고 널리 보급될 것이라고 예측했습니다.이것은 "전화 시스템이 [37]공공사업인 것처럼 언젠가 컴퓨터가 공공사업으로 조직될 수 있을 것"이라고 말한 존 맥카시에 의해 가장 잘 알려져 있다.

BASIC을 통해 이러한 서비스를 컴퓨터 상에서 해결하기에 적합한 작업을 코드화하는 데 시간이 너무 오래 걸리는 최종 사용자가 훨씬 더 쉽게 이용할 수 있게 되었습니다.이로 인해 많은 제조업체가 소규모 또는 중간 규모의 작업을 해결하고 성능 향상을 우려하지 않는 사용자 시장을 위해 특별히 설계된 컴퓨터를 도입하게 되었습니다.특히, 이 시장을 직접 겨냥한 두 대의 기계는 "지금까지 개발된 [34]것 중 가장 널리 사용되는 작은 시분할 시스템"이 되었다.

HP 2000은 HP Time-Shared BASIC을 실행했습니다.BASIC과 타임쉐어 운영체제의 조합은 DTSS 설정과 거의 동일합니다.시스템은 최대 32명의 동시 사용자를 지원하며 로우엔드의 HP 2100 CPU를 사용하여 원래 GE-265 셋업의 Datanet-30과 동일한 방식으로 터미널을 실행했습니다.또한 프로그램들은 일반적으로 더 많은 코어 메모리를 가지고 있다는 점에서 다릅니다.HP의 BASIC은 프로그램을 저장하기 위해 세미 컴파일 토큰화 형식을 사용했는데, 이는 로딩 시간을 단축하고 "컴파일"이 제로 [38]타임임을 의미했다.

Digital Equipment Corporation은 새로운 RSTS/E 운영 체제 및 BASIC-PLUS를 탑재한 기존 PDP-11 제품군을 기반으로 한 단일 머신 제품을 사용하는 등 다른 접근방식을 취했습니다. BASIC-PLUS는 제5판을 보다 밀접하게 따랐습니다.MAT명령어는 Dartmouth 컴파일러나 HP의 토큰화된 형식과는 달리 순수 인터프리터로 구현되었습니다.또한 JOSS 모델을 따르는 다수의 제어 구조도 포함되었습니다.PRINT I IF I > 10 .[39]Tymshare SUPER BASIC은 JOSS 스타일의 구조와 매트릭스 연산도 지원하지만 원래의 컴파일 앤 고 연산은 유지했습니다.

실제로 이 시대의 모든 벤더가 이 같은 문제에 대한 해결책을 제시했지만, 원래 벤더와 매우 유사하지는 않았습니다.Kurtz는 1973년 BASIC에 대한 ANSI 표준 형성을 고려하기 시작했을 때 BASIC을 사용할 수 있는 시분할 서비스 뷰로의 수가 다른 어떤 언어보다 많다는 것을 알게 되었습니다.불행하게도, 이 성공도 문제였다; 그 시점까지, 너무 많은 변화가 있어서 하나의 기준이 [34]불가능해 보였다.

BAS에서의 게임IC

Kemeny는 DTSS 플랫폼에서의 게임을 적극적으로 장려했으며, 이것이 DTSS [40]시스템의 성공에 대한 주요 이유 중 하나라고 생각했습니다.는 초기 메인프레임 게임의 저자인 것 같다.케메니는 FTBALL에 대해 "1965년 다트머스-프린스턴 경기가 끝난 후 일요일에 쓴 글"이라고 말했다.일종의 기념 프로그램입니다.그 경기는 크게 유리한 [41][b]프린스턴에 역전되었다.

시스템이 확장되면서, 특히 BASIC에 문자열 핸들링이 추가된 후, DTS 시스템은 많은 텍스트 기반 게임 개발을 위한 주요 플랫폼이 되었습니다.1970년대 초, People's Computer Company는 일반적으로 보다 널리 이용 가능한 HP BASIC으로 변환된 이러한 내용을 자사 잡지에 게재하기 시작했습니다.이 목록들 중 많은 것들이 1975년 출간된 인 "당신이 수익률을 기록한 후에 무엇을 해야 하는가"에 모아졌다.HP BASIC 형식으로 출판되어 있지만, 대부분은 [43]DOCISION으로 알려진 유사한 기계가 설치된 캘리포니아의 DTS나 로렌스 과학 전당에 이력을 추적하고 있습니다.

더 유명한 컬렉션은 1978년의 BASIC 컴퓨터 게임으로, 책 속 프로그램의 절반 가량이 다트머스에서 작성되었으며, 케메니, 배트넘, 혹은 1968년 이후에 그것과 연결된 많은 고등학교 중 하나이기도 하다.특히 다작의 고등학교는 메사추세츠있는 렉싱턴 고등학교였지만 다른 학교들도 많이 나타난다.많은 프로그램들이 원래 위치를 나열하지 않고, 학교나 프로젝트 [44]SOLO와 같은 공공 프로젝트를 통해 시스템에 연결된 저자들이 만든 것입니다.

BASIC에서는 Stephen Garland와 John McGeachie가 DTSS를 위한 MOTIF Multiple Online Terminal Interface를 개발하면서 다중 사용자 게임이 가능해졌다.게임을 시작하려면 사용자가 RUN 대신 LINK에 세션 이름을 입력하면 다른 사용자가 JOIN에 세션 이름을 입력하여 게임에 연결할 수 있습니다.그런 다음 MOTIF는 BASIC 프로그램의 입력과 출력을 다중화하여 각 입력 및 출력 행의 선두에 문자열 식별자를 부가합니다.이 인터페이스로 개발된 최초의 프로그램은 2인용 FTBALL 버전과 5인용 포커 게임이었다.더 심각한 것은 Amos Tuck 경영대학원의 최대 10명의 학생이 단일 [45]제품의 생산과 마케팅에서 경쟁할 수 있는 매니지먼트 게임이었습니다.

버전

초판

버전 1로 소급하여 알려진 원래 버전은 다음 명령을 지원했습니다.LET,PRINT,END,FOR...NEXT,GOTO,GOSUB...RETURN,IF...THEN,DEF,READ,DATA,DIM,그리고.REM기본적인 수학 지시가 포함되어 있었습니다.+, , , 및 지수 업타임은...텔레타이프 타이프라이터에서는 슈퍼스크립트를 [46]인쇄할 수 없기 때문입니다.현대 품종에서 위쪽 화살표는 보통 "모자" 문자로 대체된다.지수는 계산하기 전에 숫자의 절대값을 취하기 때문에 계산한다.-X^3, 를 사용할 필요가 있다.X*X*X. 를 처리하는 지수함수에 더 큰 문제가 있었습니다.-X^2~하듯이(-X)^2올바른 조작 순서와는 반대로 -(X^2)3번째 [46]릴리즈까지 수정되지 않았습니다.INT()함수는 항상 [47]0을 향해 잘립니다.

그 언어에는 여러 가지 독특한 특징이 있었다.이후 버전과는 달리LET명령어는 다른 명령어가 없는 모든 스테이트먼트에 필요했기 때문에10 A=5*5[47]버전에서는 유효하지 않습니다.PRINT여러 변수를 인쇄할 때 쉼표를 사용하여 5개의 "변수" 중 다음 단계로 이동합니다.프롬프트와 단일 값을 인쇄하는 경우에는 쉼표가 필요하지 않습니다.PRINT "value of A is "A유효했습니다.다소 숨겨진 기능은 모든 변수가 최대 10개의 요소(제2판에서는 0~10으로 변경됨)의 배열(벡터)을 표시할 수 있다는 것입니다.DIM.DIM다른 벡터 크기가 [48][c]필요한 경우에만 필요했습니다.

변수 이름은 단일 문자 또는 문자 뒤에 숫자(286개의 가능한 변수 이름)로 제한되었습니다.사용자 기능에는 1글자만 사용할 수 있습니다.따라서FNA통해.FNZ모든 작업은 부동 소수점에서 수행되었습니다.GE-225 및 GE-235에서는 약 30비트(대략 10자리)의 정밀도가 생성되었으며, Base-2 지수 범위는 -256 ~+[49]255입니다.

또한 GE-235의 워드 크기는 20비트이고 6비트 문자 코드를 사용하므로 GE-235는 20비트 단어에 3개의 6비트 문자를 저장할 수 있기 때문에 3글자 함수 이름을 사용합니다.이것이 BASIC 함수가 3글자인 이유입니다.INT또는SQR, 그들이 GE-235를 [47]떠난 지 오래 후에 많은 다양한 언어들에 남아있던 어떤 것.

제2판, CARDBASIC

BASIC의 제2판(당시에는 그렇게 불리지 않았지만)은 최소한의 변경만 했습니다.1964년 10월에 출시된 이 제품은 1이 아닌 첨자0으로 배열을 시작할 수 있으며 (다항식을 나타낼 때 유용함) 세미콜론을 에 추가합니다.PRINT스테이트먼트.[50]항목 사이에 공백이 남아 있는 이후의 구현과 달리 세미콜론은 다음 3자 배수로 인쇄를 확장하여 기존 콤마 [51]구분자보다 더 많은 숫자를 출력 행에 "패킹"하는 데 도움이 되었습니다.3글자 크기는 GE-235의 20비트 워드 크기에 따른 부작용으로 6비트 3글자를 저장했다.메모리의 다음 [52]단어로 이동하기만 하면 다음 세 글자 열로 건너뜁니다.

10월 버전에는 카드 기반 워크플로우에서 사용하기 위한 BASIC 버전인 CARD BASIC에 대한 별도의 정의도 포함되어 있습니다.CARD BASIC은 인터랙티브버전과 거의 동일하지만 제로베이스 어레이는 포함되지 않았습니다.언어의 미래를 위해 더욱 중요한 CARDBASIC에 추가된 것은MAT숫자 행렬을 사용한 명령어입니다.CARDBASIC은 BASIC의 전체 아이디어가 상호작용을 [50]지향했기 때문에 더 이상 개발되지 않았습니다.

제3판

1966년에 발매되어 「에디션」의 명칭을 최초로 사용한 제3판은, 새로운 GE-635 컴퓨터상에서 동작하는 것을 목적으로 특별히 설계된 최초의 에디션입니다.이 컴퓨터에서는 곧 출시될 예정입니다.이 버전에는MATCARDBASIC에서 기능하며, 이제 0을 [53]첨자로 사용할 수 있습니다.

새로운SGN함수는 인수 기호(양수?0과 음수?1)를 제공하지만,RESTORE지위를 '확보'하기 위해 추가되었다READ/DATA. 지수 문제가 해결되었으므로, 그래서-X^2로 해석될 것이다-(X^2). 또한,[53]INTtrim-harget-zero가 아닌 실제 바닥으로 변경되어 라운딩이 가능해졌다.INT(X+0.5)를 클릭합니다.[47]

이 버전의 주요 변경은 새로운 버전입니다.INPUT숫자 값을 구문 분석하여 처음으로 실행 중에 언어를 진정으로 인터랙티브하게 만듭니다.이전에는 실행 중에 유일하게 제어할 수 있는 것은 입력뿐이었습니다.STOP모니터에 표시됩니다.또한 시스템에서는 다른 버전의 [54]BASIC에서는 볼 수 없었던 루프를 삽입할 수 있게 되었습니다.

제4판

제3판은 1967년 가을까지 GE-235의 생존 기간 동안 계속 사용되었다.그러나 GE-635를 도입할 계획이 세워짐에 따라 1967년 봄 635에 실험 버전이 만들어졌다.이 버전은 GE와 Dartmouth의 파트너십으로 GE는 새로운 운영체제 및 자체 Mark 1 BASIC의 [54]많은 기능을 제공했습니다.

당초 제3판의 보충판으로 발행된 이 버전은,RANDOMIZE명령어를 사용하여RND기능 및ON...GOTOFORTRAN의 유사한 기능과 거의 일치하는 "계산된 goto"입니다.이 버전도 허용됩니다.ON...THEN라고 주장하면서IF...THEN필요없었다GOTO여기에서는 필요없을 겁니다.새로운TAB함수가 0 ~ [54]74의 지정된 열로 인쇄를 이동했습니다.또 다른 내부 변경은 다시 한 번 내부 변경으로,MAT0번째 인덱스를 사용할 수 있지만 일반적으로 다양한 [55]명령어로 무시됩니다.

이 버전의 주요 추가는 문자열 변수와 더불어READ/DATA그 안에 문자열을 저장할 수 있는 스테이트먼트와INPUT대화식으로 읽을 수 있습니다.문자열 시스템의 특징 중 하나는 후행 공백이 의도적으로 무시되어 "YES"와 "YES"가 [56]동일한 것으로 간주된다는 것입니다.이것은 나중에 중대한 [55]오류로 판명되었다.문자열 변수는 달러 기호로 표시되었습니다.A$단순히 대부분의 키보드에서 볼 수 있는 문자가 부족했기 때문입니다.누군가가 그 달러가 "String"의 S와 비슷하다고 지적했고,[57] 그것이 전부였다.

스트링 조작은 new를 통해 처리되었습니다.CHANGE명령어를 입력합니다.이를 통해 변수의 문자열 값이 동등한 ASCII 값 세트로 변환되었습니다.그런 다음 숫자 배열을 조작하여 문자열로 변환할 수 있습니다.예를 들어, 이 코드는 콘솔에 "is"를 생성합니다.

100 허락하다 S$ ='지금이 절호의 기회다" 110 바꾸다 S$ 로. S 120 허락하다 T(1) = S(5) 130 허락하다 T(2) = S(6) 140 허락하다 T(0) = 2 150 바꾸다 T 로. T$ 160 인쇄하다 T$ 

행 140은 사용자가 관리해야 하는 문자열 길이를 2로 설정한다.첫 번째 문자는 T(1)에 있습니다.이 시스템은 유연하지만 결코 사용하기 편리하지 않았다.이후 버전에서는 새로운 기능으로 이 [58]문제를 해결할 수 있습니다.

이 버전의 사소한 변경으로 세미콜론이 변경되었습니다.PRINT공백 [52][59]없이 출력의 "밀착 패킹"을 수행하는 문과 짧은 형식의 아포스트로피를 사용하는 문REM를 클릭합니다.[60][d]

공식 제4판은 1968년까지 나오지 않았으며, 이전 추가 기능 외에 몇 가지 새로운 기능이 추가되었다.여기에는 멀티라인 함수를 정의하는 기능이 포함되어 있습니다.DEF명령어, 파워풀한 것CHANGE문자열을 ASCII와 같은 코드의 배열로 처리하여 [55]문자열 전체를 루프하지 않고 개별 문자를 조작할 수 있도록 하는 문.이것은 또한 유일한 문자열 조작 기능이었다. 단일 문자 또는 하위 문자열을 추출하려면CHANGE숫자 배열로 변환하고 해당 배열을 조작한 후 다시 변환합니다.이것이 MAT가 다시1 베이스가 된 이유입니다.문자열의 길이는 로케이션0 에 배치되어 있기 때문에,[61] 통상은 무시해 둘 필요가 있습니다.

제5판

1970년 후반부터 제5판은 1969년 [55]2월과 4월부터 제4판의 두 가지 부록으로 다시 시작되었다.

가장 큰 변화는 파일 처리의 도입이었습니다.이전에는 프로그램에서 사용해야 하는 모든 사전 정의된 데이터를DATA 행 및 READ 명령을 사용하여 한 번에 한 번에 읽을 수 있습니다.이 기능을 사용하여 유사한 방법으로 파일을 읽을 수 있습니다.INPUT 명령어는 파일에서 하나의 항목을 읽고 PRINT 명령어를 쓸 수 있게 되었습니다.[62]

파일이 새 파일을 통해 열림FILES키워드 뒤에 파일 이름을 나타내는 문자열 상수 목록이 표시됩니다.이들은 상수이기 때문에 파일 이름을 변경하려면 코드를 일치하도록 변경해야 합니다.이름에는 번호가 할당되어 있고, 이름은 파일 #1 이 되어 있습니다.랜덤 액세스와 리니어 두 가지 파일 형식이 지원되었습니다.선형 파일은 오늘날 텍스트 파일과 같이 처리되었습니다.LINPUT #1: A$텍스트 행을 문자열 변수로 읽은 다음PRINT A$단말기에 [62]출력합니다.이후 버전에서는FILE $1,name$파일을 문자열로 지정할 수 있도록 하기 위해 잠시 동안 이 작업이 필요했습니다.FILES *[63]형식을 사용 중임을 나타냅니다.

랜덤 액세스 파일의 경우, 이름은 데이터 유형을 지정해야 합니다.%는 바이너리 데이터가 포함되어 있는 것을 나타내고 있습니다.$num최대 길이의 문자열로 읽어야 합니다.numREADWRITE는 RESET 명령어를 사용하여 랜덤 액세스파일 내의 임의의 위치에 배치할 수 있으며, 현재 위치는 LOC 함수에 의해 반환되고 파일 길이는 LOF에 의해 반환됩니다.[62]시퀀셜 읽기 중에 다음 명령을 사용하여 파일 끝에 있는지 여부를 테스트할 수도 있습니다.IF END THEN...를 클릭합니다.[64]

또 하나의 큰 변경은 CHEIN 명령어를 사용하여 다른 BASIC 프로그램을 호출하고 COMMON 목록을 사용하여 변수를 전달할 수 있는 기능입니다.이 기본 개념은 많은 문제를 가지고 있다는 것을 나중에 깨달았지만, 그럼에도 불구하고 몇몇 [64]큰 프로그램을 만드는 데 사용되었다.

문자열 처리가 메이저업데이트를 받았습니다.새로운SEG$명령어가 다른 문자열에서 잘라낸 새 문자열을 반환했습니다.위의 예에서는 문자열 "is"가 더 큰 문자열에서 추출됩니다.새로운 명령어를 사용하면, 이것을 다음과 같이 줄일 수 있습니다.LET T$ = SEG$(S$,5,6)와 동일하게 동작합니다.MID$대부분의 방언에서 볼 수 있는 함수입니다. LEN는 문자열의 길이를 반환했습니다.그 이외의 경우는 내부에서 처리되어 대부분의 경우 계산이 필요하지 않습니다.POS대부분의 방언에서 처리되었던 다른 문자열의 위치를 반환했다SUBSTR앰퍼샌드,&는 문자열 [58]연결을 위해 도입되었습니다.

수많은 사소한 변화도 추가되었다.이 중에는 이전 버전에서 1차원이었던 것과 달리 2차원 문자열 배열과 DEF를 사용하여 문자열 기반 함수를 정의할 수 있는 기능 및 수학적 기능도 포함되어 있습니다.새로운 시스템 지향 기능에는 CLK$, DAT$에서 시간과 날짜, 경과시간을 반환하는 TIM 및 사용자 번호를 반환하는 USR$가 포함되었으며, 현재 사용자 이름은 무엇입니까?새로운 문자열 함수에는 STR$, VAL, ASC포함되었으며, 이는 현대의 BASIC 방언에서 공통적입니다.[64]버전에서는 REM의 줄임말로서도 등장했습니다.

제6판

제6판 작업은 제5판이 완성되기 전인 1969년 가을에 시작되었다.새 버전에 대한 완전한 사양이 미리 작성되었습니다.이는 컴파일러의 변경에 기초한 사양서 문서였던 이전 버전과 대조됩니다.이 버전은 Kemeny와 Kurtz뿐만 아니라 교직원으로 복귀한 몇몇 이전 학생들에 의해 작업되었습니다.스티븐 갈랜드, 존 맥기치, 로버트 하그레이브스입니다.1971년 여름 동안 베타 버전이 3개월 동안 실행되어 마침내 1971년 9월 21일에 출시될 때까지 숙성에 상당한 시간이 주어졌다.이러한 성숙도의 결과로 Kurtz는 "아마도 Dartmouth가 지금까지 [65]작성한 소프트웨어 시스템 중 가장 잘 설계되고 안정적인 시스템일 것"이라고 설명했습니다.

가장 큰 변화들 중 하나는 이전 모델의 대체입니다.CHAIN훨씬 더 명확한 개념CALL그것은 같은 방식으로 작동한다.GOSUB단, 회선번호가 아닌 함수명을 참조하고 있습니다.함수는 다음과 같이 정의되었습니다.SUB...SUBEND글로벌 변수를 사용하는 것이 아니라 콜 내의 임의의 파라미터를 취득했습니다.COMMON선언을 합니다.또 다른 주요 변경사항은 파일 핸들(숫자)을 사용하여FILE와 유사한 명령어OPEN대부분의 현대 BASIC에서 볼 수 있습니다.PRINT USINGFORTRAN과 [66]비슷한 형식으로 포맷된 출력을 제공하지만,LINPUT를 사용하여 콤마, 세미콜론,[67] BASIC 코드까지 입력할 수 있습니다.

Six Edition은 원래 BASIC 컨셉의 마지막 버전입니다.그것은 수년 동안 변하지 않았다.이후 버전은 상당히 다른 [65]언어였다.

스바시

1976년 Stephen Garland는 Dartmouth Structured BASIC(SBASIC)[68]을 만들기 위해 많은 구조화된 프로그래밍을 추가했습니다.주요 목표는 다음을 기반으로 제어 구조를 교체하는 것이었다.IF...THEN그리고.GOTO다양한 블록 지향 구조를 갖추고 있습니다.SBASIC 소스 코드를 가져와서 6th Edition BASIC으로 변환한 후 정상적으로 컴파일하여 실행하는 프리 컴파일러를 사용합니다.또한 SBASIC은 다음과 같은 다양한 그래픽 기능을 추가하였습니다.PLOT다른 프로그래머에 [69]의해 추가된 명령어입니다.

블록 구조는 Pascal 또는 C와 같은 언어에서 발견되는 일반적인 블록 구조와 달리 ALGOL 68에서와 같이 일치하는 문장으로 종료되었습니다.예를 들어,DO WHILE...로 끝날 때까지 여러 줄에 걸쳐서LOOP.[70]DO또한 루프를 제거함으로써 바닥에서 나갈 수 있습니다.WHILE또는UNTIL조건어를 아래쪽에 배치하고LOOP. 무한 루프가 지원되었습니다.DO FOREVER또는LOOP FOREVER를 클릭합니다.[71]

"Original" Dartmouth BASIC은 다음 명령어를 허용하지 않았습니다.THEN, 브랜치처의 회선 번호 뿐입니다.예를 들어 SBASIC은 모든 스테이트먼트를 허용했습니다.IF X < 5 THEN X=X+1이 기본적인 [72]확장기능은IF...THEN1972년 BASIC-PLUS[73]개척된 BASIC은 이 시점에서 이미 발매되고 있던 마이크로컴퓨터 버전을 포함한 대부분의 BASIC에 의해 폭넓게 지원되고 있습니다.여기에 SBASIC은 블록 지향성을 추가했다.IF를 배치함으로써THEN다른 선상에서, 그리고 나서 블록으로 끝납니다.CONTINUE여기에 SBASIC이 추가했습니다.[74]SELECT CASE오늘날까지 유지되고 있는 메커니즘입니다.네트워크[75]

또한 SBASIC은 플로터와 함께 사용하기 위한 그래픽 명령어를 다수 추가했습니다.이를 위해서는PLOTTER "plottername"선택한 디바이스에 후속 명령어를 전송하기 위해WINDOW...파라미터를 설정합니다.그때부터PLOT X,Y는 선택한 플로터에 점을 생성하는 동시에 스테이트먼트 끝에 세미콜론을 추가합니다.PRINT예를 들어, 펜은 종이에 남겨두고 선이 생성됩니다.PLOT 10,10;20,20를 클릭합니다.[76][77]

SBASIC은 결국 1987년 ANSI X3.113-1987 Full Basic 표준의 기초를 형성하였으며, 이 표준은 1978년 ANSI X3.60-1978 Minimal Basic 표준을 확장하였다.컴퓨터 사이언티스트들 사이에 구조화되지 않은 베이직의 인식이 부족한 것과 더불어 대학 이사회는 컴퓨터 사이언스의 고급 배치 코스를 개발했습니다. 과정을 위한 [78][79]언어로서 파스칼을 요구하고 베이직은 허용하지 않는 것을 선택했습니다.

갈런드는 SBASIC를 이용해 다트머스 [80][81]대학에서 컴퓨터 과학 입문 강좌를 가르쳤지만 AP 강좌를 가르치기 위해 그의 교과서를[82] 파스칼로 다시 썼다.

제7판

Garland의 SBASIC은 SBASIC 소스 코드로 작성된 프리 컴파일러입니다.시스템은 SBASIC 소스를 읽고 대응하는 6번째 에디션 코드를 쓴 후 출력을 컴파일합니다.1980년에 발매된 7번째 에디션은 자체 독립형 컴파일러였던 SBASIC 버전입니다.자체 추가 사항도 다수 추가되었다.변경사항의 대부분은 외부 프로그램을 호출하기 위한 시스템 및 프로그램을 여러 부분으로 분할하는 데 사용할 수 있는 "오버레이"에 대한 추가 설명이었다.이 버전에서는SUB1개의 파일을 공유함으로써 데이터를 효과적으로 공유할 수 있습니다.이를 통해 루틴 그룹 내에 숨겨진 데이터의 소량이 제공되었습니다.이 분리는 오늘날 [83]모듈이라고 불립니다.

또한 이 에디션에서는 구조화된 오류 처리와 임의 매트릭스 산술이 추가되었습니다.LET진술할 수 있도록LET A = M*4여기서 M은 행렬 변수이며, 문은 M의 모든 원소를 4로 축척한 다른 행렬을 A로 출력합니다.마지막으로 재귀가 가능해진 [83]서브루틴의 액티베이션레코드를 사용한 것도 메이저업데이트입니다.

ANSI BASIC, 제8판

1970년대 초까지 BASIC 구현의 수는 수십 개로 증가하였으며, 모두 오리지널 버전에서 도입된 기본 개념에 대한 자체적인 변경이 있었습니다.대부분은 제5판을 기반으로 했지만 MAT 명령과 코드 들여쓰기 기능이 없는 경우가 많았습니다.GE는 이러한 기업 중 하나였습니다.이 회사는 [84]몇 달 후 6번째 판이 도착하기를 기다리지 않고 5번째 판과 함께 Mark II 시스템을 출시했습니다.DEC 플랫폼의 BASIC-PLUS는 MAT 명령어 등 가장 가까운 구현이었지만 그 후 [39]하위 호환성이 없는 많은 변경을 추가했습니다.

제6판 발매 후, Kurtz는 표준 BASIC을 정의하는 작업에 관여하게 되었습니다.American National Standards Institute(ANSI) 작업 그룹 X3J2는 1974년 1월에 결성되었으며, 대응하는 유럽 컴퓨터 제조자 협회(EMA) 그룹 TC21은 같은 해 9월에 결성되었습니다.당시 목표는 두 가지 관련 표준을 만드는 것이었다.Minimal BASIC은 Second Edition과 비슷하지만 실질적으로 모든 BASIC이 이미 준수할 수 있는 표준인 문자열을 추가합니다.Standard BASIC은 시장에서 [84]볼 수 있는 진짜 BASIC 품종에 맞는 것을 생산하기 위해 더 많은 기능을 추가할 것이다.

과정은 느렸고 Minimal BASIC의 초안은 1976년 1월까지 출판되지 않아 1977년 12월 ECMA에 의해 공식적으로 채택되었고 1979년 ANSI에 의해 X3.60-1978로 채택되었다.Minimal BASIC은 문자열 변수를 포함하여 3판과 비슷하지만 MAT 및 기타 고급 [85]기능은 없습니다.이와는 대조적으로 Standard BASIC에는 다른 BASIC에는 없는 많은 새로운 기능이 있으며, 이들 중 많은 기능이 고려되지 않아 일부 비판의 대상이 되었다.예를 들어, 표준에는 줄 바꿈 문자가 포함되었지만 문자열 연결에도 사용되는 앰퍼샌드를 선택했습니다.이것들을 한 줄로 사용하면,[86] 매우 혼란스러운 코드로 이어질 가능성이 있습니다.

이 무렵, 1975년 최초의 마이크로 컴퓨터 시스템의 출시로 곧 마이크로소프트 베이직으로 알려지게 될 알테어 베이직의 첫 번째 버전인 알테어 베이직이 출시되었습니다.MS BASIC은 BASIC-PLUS에서 패턴화되어 최종적으로 제5판이지만 들여쓰기, MAT 등의 기능은 없었습니다.또,LEFT$그리고.RIGHT$함수, 세 글자의 관례를 깨다.마이크로컴퓨터의 수가 증가하고 1970년대 후반 가정용 컴퓨터 시장으로 전환되면서 MS BASIC은 사실상의 [84]표준이 되었다.

시장의 급격한 변화로 Standard BASIC의 노력은 더욱 둔화되었고 1987년까지 X3.113-1987로 정식 비준되지 않았다.이 시기에는 표준에 대한 실질적인 목적이 없었습니다. MS BASIC은 어디에나 존재했을 뿐만 아니라 1980년대 중반에는 수축 포장 소프트웨어가 타이프인 프로그램에서 대체되면서 BASIC의 사용이 감소했습니다.두 기준 모두 결국 [84]철회되었다.

ANSI 노력의 궁극적인 실패에도 불구하고, 스탠다드 베이직의 [83]초안은 1982년 제8판으로서 다트머스에서 시행되었다.

DTSS 인터페이스

DTSS는 대화형 명령줄 인터페이스인 초기 통합 개발 환경(IDE)을 구현했습니다.이를 통해 다수의 사용자 및 작업 제어 명령이 제공되었습니다.예를 들어 유휴 단말기는 다음과 같이 입력하여 사용자 계정에 연결할 수 있습니다.HELLO를 사용하여 다시 로그아웃했습니다.BYE를 클릭합니다.[e]

사용자가 입력한 행 번호로 시작하는 행이 프로그램에 추가되어 이전에 저장된 행이 동일한 번호로 대체되었습니다. 다른 모든 행은 DTS 명령으로 간주되고 즉시 실행됩니다.회선번호로만 구성된 회선은 저장되지 않았지만 동일한 번호로 이전에 저장된 회선은 모두 삭제되었습니다.이 편집 방법은 단말 장치로 텔레프린터를 사용하기 때문에 필요했습니다.

각 사용자 계정에는 오프라인에 저장된 BASIC 프로그램이 얼마든지 있을 수 있으며 관리자 계정에는 프로그램을 영구 저장소로 유지할 수도 있습니다.이들 중 하나가 특정 사용자 계정에 대해 특정 시간에 활성화되었으며, 프로그램이 로드되지 않은 경우 새 프로그램을 가정했습니다.저장된 프로그램은 오늘날 BASIC 언어 자체의 일부로 더 잘 알려진 명령을 사용하여 액세스되었습니다. 예를 들어,LIST명령은 현재 활성 프로그램을 인쇄하도록 DTS에 지시했습니다.

명령어 목록

HELLO
DTS에 로그인
BYE
DTS에서 로그아웃하다
BASIC
BASIC 모드
NEW
프로그램 이름을 붙이고 작성하기 시작하다
OLD
영구 저장소에서 이전에 명명된 프로그램을 검색하다
LIST
현재의 프로그램을 표시하다
RUN
현재의 프로그램을 실행하다
STOP
현재 실행 중인 프로그램을 중단하다
TEST
강사가 제공하는 프로그램을 사용하여 현재 프로그램을 테스트하다
LINK
현재의 프로그램을 멀티 터미널 모드로 실행하다
JOIN
멀티 터미널 모드로 실행되고 있는 프로그램에 참가하다
SAVE
현재 프로그램을 영구 저장소로 저장하다
UNSAVE
현재 프로그램을 영구 저장소에서 삭제하다
REPLACE
다른 파일에 이미 사용 중인 이름을 사용하여 현재 프로그램을 저장합니다.
CATALOG
영구 저장소의 프로그램 이름을 표시하다
SCRATCH
이름을 지우지 않고 현재 프로그램을 지우다
RENAME
현재 프로그램의 이름을 지우지 않고 변경하다
FRI
기계 회선 피드가 있는 텔레타입에 대해 프리덴 모드를 유효하게 하다
NFR
프리덴 모드를 무효화하다
EXP
시스템에서 설명할 수 있는 명령어 목록에 대한 EXP EXP 설명(도움말)

명령어는 사용자에 의해 종종 BASIC 언어의 일부라고 믿었지만, 실제로는 시분할 시스템의 일부였으며 DTS 터미널을 통해 ALGOL 또는 FORTRAN 프로그램을 준비할 때도 사용되었습니다.

TEACH/테스트 시스템

1960년대 후반, 모든 다트머스 학생의 80%가 미적분학 또는 유한 수학에서 두 개의 수학 과정을 듣고 베이직(Basic)을 2차 과정으로 배웠다.이들은 기초에 대해 두 차례 1시간 동안 강의를 듣고 기초에서 4개의 프로그램을 작성해야 했다.기본에서는 5차 다항식의 근을 구하는 프로그램부터 마르코프 연쇄에서 미분 방정식을 푸는 프로그램(시뮬레이션을 통해)까지 다양하다.TEACH/TEST 시스템은 학생들이 이러한 과제를 완료하도록 도왔다.작업 중인 프로그램이 있다고 생각했을 때 TEST 명령을 입력하면 강사가 작성한 프로그램이 내용을 승인하거나 잘못된 부분에 대한 힌트를 제공합니다.학생들은 각 프로그램 목록, 샘플 RUN 및 TEACH/Test 시스템의 승인을 제출해야 했습니다.이 시스템은 과제를 채점하거나 학생이 TEST를 얼마나 많이 입력했는지 기록하지 않았다.그것은 단지 학생들과 그들의 [87][88]강사를 도왔다.

기본 언어

첫 번째 릴리스는 FORTRAN IIALGOL 60에서 연산자와 키워드의 일부를 가져와서 다음과 같은 문 유형을 구현하였습니다.전반적으로, 이 언어는 일반적으로 코드 한 줄에 하나의 문을 가지고 있고, 그룹 코드에 대한 ALGOL의 "블록"이 부족하다는 점에서 FORTRAN [46]모델을 보다 가깝게 따르고 있다(이러한 구조화된 프로그래밍 구조가 ALGOLs 개발의 주된 이유였다). 그리고 프로그램 흐름을 제어하기 위해 GOTO를 사용한다.

ALGOL에서는,FOR...TO...STEPFORTRAN의 다루기 어려운 루프를 대체한 스타일 루프DO...CONTINUE스테이트먼트를 [47]참조해 주세요.또, BASIC에서는,IF...THEN같은 단순한 비교를 가능하게 하는 구성IF X>5 THEN GOTO 20FORTRAN과 달리IF (X-5) 20,20,30FORTRAN의 스타일 "computed IF"는 다음과 같이 재도입되었습니다.[47]ON...GOTO명령어를 사용합니다.

변수 이름은 A ~ Z, A0 ~ A9, B0 ~ B9, ..., Z0 ~ Z9로 제한되었으며, 가능한 고유 변수는 최대 286개입니다.변수 I~N을 정수로 설정하고 나머지를 부동소수로 설정하는 FORTRAN의 홀수 시스템은 제거되었으며, 모든 변수는 부동소수로 가정하고 최대 10개의 요소로 치수를 정했습니다.DIM명령어는 배열에 10개 이상의 요소가 포함되어 [47]있는 경우에만 필요합니다.어레이 이름이 A에서 Z까지만 제한되었습니다.

BASIC 스테이트먼트

DEF
단일선 함수를 정의하다
DIM
(치수의 줄임말) 어레이 크기 정의
END
프로그램의 끝을 정의하다
STOP
텍스트가 끝나기 전에 프로그램을 정지하다
FOR / TO / STEP
루프를 정의하다
NEXT
루프의 끝을 나타내다
GOSUB
단순 서브루틴으로의 제어 전송
RETURN
단순 서브루틴에서 제어 되돌리기
GOTO
제어를 다른 스테이트먼트로 이전하다
IF / THEN
의사결정
LET / =
변수에 공식 결과를 할당하다
PRINT
출력 결과
DATA
프로그램 내에 정적 데이터를 저장하다
READ
DATA 문에 저장된 입력 데이터
REM
코멘트("리마크")

부동소수점 숫자 변수와 산술도 구현했다.

오퍼레이터 리스트

산술 연산자 관계 연산자/논리 연산자
- 부정(단일 연산) = 같음
+ 추가 <> 동일하지 않다
- 감산(이진 연산) < 보다 적은
* 곱셈 <= 이하
/ 나누기 > 다음보다 크다
? 지수화 => 초과 또는 같음
그룹화 연산자
( ) 그룹화

기능 목록

ABS
절대값
ATN
아크탄젠트 값(라디안의 결과)
COS
코사인 값(라디안의 인수)
EXP
지수값
INT
정수값
LOG
자연 로그 값
RND
랜덤값
SIN
사인 값(라디안의 인수)
SQR
제곱근 값
TAN
탄젠트 값(라디안의 인수)

BASIC의 이전 버전에서는 외부 파일을 읽고 쓸 수 없었습니다.일반적으로 파일에서 읽을 수 있는 데이터 목록을 나타내기 위해 BASIC에는DATA키워드 뒤에 임의로 긴 요소 목록이 이어지며 행 길이 제한으로만 끝납니다.DATA는 검출할 수 없으며, 검출되었을 경우 생략됩니다. READ명령어는 데이터를 하나씩 소비하고 전체 수집 내에서 그 위치를 추적합니다.DATA내부 포인터의 요소.버전 3에서는RESTORE첫 번째 포인터로 리셋하기 위해 명령어가 추가되었습니다.DATA명령어를 사용합니다.

이 예에서는 "처음 세 데이터 값이 각각 X, Y 및 Z로 읽힙니다.값 -1은 N으로 읽힙니다.다음 11개의 값인 .1 ~ .3은 어레이 [89]B의 11개의 요소에 읽혀집니다."

15 읽어주세요 X, Y, Z 20 읽어주세요 N 24 위해서 I=0 로. 10 25 읽어주세요 B(I) 26 다음 분. I 40 데이터. 4.2, 7.5, 25.1, -1, .1, .01, .001, .0001 45 데이터. .2, .02, .002, .0002, .015, .025, .3, .03, .003 

대부분의 후속 BASIC과 달리, 제3판 이후의 Dartmouth BASIC은 매트릭스 키워드를 가지고 있었다.MAT하나의 명령어로 데이터 배열 전체를 조작하기 위한 여러 명령어 앞에 프레픽스를 붙일 수 있습니다.이 예에서는 1968년 [90]매뉴얼에서 MAT INPUT V일련의 변수를 입력하는 데 사용됩니다.사용자가 행에 아무것도 입력하지 않으면 이 프로세스가 종료되고 요소의 총수가NUM유사 변수 [f]가능그런 다음 코드는 매트릭스 내의 모든 개별 요소를 합산하여 평균을 계산합니다.제3판에서는 루프 구조를 명확하게 하기 위해 사용되는 들여쓰기도 추가되었습니다.

5 허락하다 S = 0  10 매트. 입력 V  20 허락하다 N = 숫자  30 한다면 N = 0 그리고나서 99  40 위해서 I = 1 로. N  45   허락하다 S = S + V(I)  50 다음 분. I  60 인쇄하다 S/N  70 가세요 로. 5  99 끝. 

메모들

  1. ^ 이 경우 다트머스는 얼마 후까지 여성을 받아들이지 않았기 때문에 "그"라는 용어를 사용할 수 있다는 점에 주목해야 한다.
  2. ^ David Ahl은 Kemeny가 Basic Computer [42]Games에서 게임을 설명할 때 그것을 썼다고 말했다.
  3. ^ 이 기능은 Dartmouth 기반의 대부분의 BASIC에서 볼 수 있었지만 독립적으로 작성된 BASIC에서는 거의 볼 수 없었습니다.
  4. ^ 이전 버전에서 아포스트로피가 사용되었는지 여부는 명확하지 않습니다.리비전 4 매뉴얼이 최초로 명시적으로 언급하고 있습니다.
  5. ^ 로그아웃할 필요가 없습니다.사용자가 응답하지 않으면 잠시 후 로그아웃 됩니다.
  6. ^ 왜죠NUM기능으로서 구현되지 않았습니다.LEN()은 미스터리입니다.

레퍼런스

인용문

  1. ^ What to do after you hit Return. People's Computer Company. 1975.
  2. ^ a b 커츠 1981 페이지 516
  3. ^ a b Kurtz 1981, 페이지 516-516.
  4. ^ a b 케메니 & 커츠 1985, 7페이지
  5. ^ 케메니 & 커츠 1985, 8페이지
  6. ^ 커츠 1981 페이지 517
  7. ^ a b c 커츠 1981 페이지 518
  8. ^ 타임 2014
  9. ^ 케메니 & 커츠 1968, 페이지 3
  10. ^ "High Math at Hanover". Time. 23 February 1959.
  11. ^ 케메니 & 커츠 1985, 3페이지
  12. ^ 케메니 & 커츠 1985, 페이지 4
  13. ^ 커츠 1981 페이지 519
  14. ^ 케메니 & 커츠 1985, 6페이지
  15. ^ 케메니 & 커츠 1985, 9페이지
  16. ^ Kurtz 1981, 페이지 519-520.
  17. ^ Kiewit 1971, 9페이지
  18. ^ a b 케메니 & 커츠 1985, 5페이지
  19. ^ a b c 커츠 1981 페이지 520
  20. ^ General Electric Computers (1965). DATANET-30 Programming Reference Manual (PDF).
  21. ^ Dartmouth Time Sharing System(DTS; 다트머스 타임셰어링 시스템) 1995년 3월2016년 5월 27일 취득
  22. ^ a b 케메니 & 커츠 1968, 224페이지
  23. ^ a b Kiewit 1971, 10페이지
  24. ^ 케메니 & 커츠 1968, 225페이지
  25. ^ "The 1960s". Dartmouth ITS.
  26. ^ 케메니 & 커츠 1985, 페이지 16, 22
  27. ^ 케메니 & 커츠 1985, 16페이지
  28. ^ 케메니 & 커츠 1968, 페이지 226
  29. ^ 케메니 & 커츠 1985, 페이지 21
  30. ^ 케메니 & 커츠 1985, 22페이지
  31. ^ 커츠 1981, 페이지 532, 534
  32. ^ a b c d Kiewit 1971, 11페이지
  33. ^ a b c 커츠 1981 페이지 533
  34. ^ a b c 커츠 1981 페이지 534
  35. ^ a b Kiewit 1971, 17페이지
  36. ^ Kiewit 1971, 18페이지
  37. ^ Garfinkel, Simson (1999). Abelson, Hal (ed.). Architects of the Information Society, Thirty-Five Years of the Laboratory for Computer Science at MIT. Cambridge: MIT Press. p. 1. ISBN 978-0-262-07196-3.
  38. ^ A Guide to Time Shared BASIC (PDF). Hewlett Packard. August 1969.
  39. ^ a b BASIC-PLUS Manual (PDF). DEC. 1972.
  40. ^ Kemeny, John (1972). Man and the computer. Scribner. p. 35.
  41. ^ "John Kemeny and Tecmo's BASIC FTBALL Granddaddy". 17 October 2017.
  42. ^ 1978년, 64페이지
  43. ^ What to do after you hit return. People's Computer Company. 1975.
  44. ^ 1978년.
  45. ^ John S. McGeachie, "시간 공유 환경에서 사용자 프로그램 제어 하에 있는 여러 터미널", ACM 16:10 통신, 1973년 10월, 587 & – 590 페이지.
  46. ^ a b c 커츠 1981 페이지 523
  47. ^ a b c d e f g 커츠 1981 페이지 524
  48. ^ 커츠 1981 페이지 525
  49. ^ Kurtz, Thomas. "BASIC Commands: The Original-Original Version".
  50. ^ a b 커츠 1981 페이지 526
  51. ^ 남자4
  52. ^ a b 케메니 & 커츠 1985, 24페이지
  53. ^ a b 커츠 1981 페이지 527
  54. ^ a b c 커츠 1981 페이지 528
  55. ^ a b c d 커츠 1981 페이지 529
  56. ^ 맨4, 페이지 66
  57. ^ 케메니 & 커츠 1985, 페이지 28
  58. ^ a b 케메니 & 커츠 1985, 29페이지
  59. ^ 남자 4, 64페이지
  60. ^ 맨4, 페이지 52
  61. ^ 맨4, 67페이지
  62. ^ a b c 케메니 & 커츠 1985, 31페이지
  63. ^ 케메니 & 커츠 1985, 32페이지
  64. ^ a b c 커츠 1981 페이지 530
  65. ^ a b 커츠 1981 페이지 531
  66. ^ 엘리엇 1988, 페이지 134
  67. ^ 케메니 & 커츠 1985, 페이지 26
  68. ^ 갈랜드 1976년
  69. ^ 갈랜드 1976, 페이지 1
  70. ^ 갈랜드 1976, 페이지 4
  71. ^ 갈랜드 1976, 5페이지
  72. ^ 갈랜드 1976, 6페이지
  73. ^ BASIC-PLUS Language Manual (PDF). Maynard, Massachusetts: Digital Equipment Corporation. 1972. pp. 3–13.
  74. ^ 갈랜드 1976, 7페이지
  75. ^ 갈랜드 1976, 페이지 10
  76. ^ 갈랜드 1976, 페이지 21
  77. ^ Stephen J. Garland와 Arthur W. Luehrmann, "Graphics in the BASIC 언어", 컴퓨터 그래픽스(SIGGRAPH-ACM 분기 보고서), 8:3, 1~8 페이지, 1974.
  78. ^ Mace, Scott (6 September 1982). "College Board developing Pascal-based AP course". InfoWorld. p. 29.
  79. ^ 스테판 갈랜드, "고급 배치 컴퓨터 과학", 수학 교육 컴퓨터, Viggo P.Hansen과 Marilyn J. Zweng(편집자), 194-201쪽.전미 수학 교사 협의회 연감, 1984.
  80. ^ Stephen J. Garland, Dartmouth College, 컴퓨터정보과학 프로그램, 1982년.
  81. ^ Stephen J. Garland, "컴퓨터 공학의 첫 번째 코스 언어: 기초", Abacus 1:4, 39-49페이지, 1984년 여름.
  82. ^ Stephen J. Garland, Applications with Pascal, Addison-Wesley, Reading, MA, 1986.
  83. ^ a b c 엘리엇 1988, 135페이지
  84. ^ a b c d 마르코니.
  85. ^ Minimal BASIC (PDF). ECMA. January 1978.
  86. ^ Guntheroth, Kurt (July 1983). "The New ANSI BASIC Standard". ACM SIGPLAN Notices. 18 (7): 50–59. doi:10.1145/988216.988221. S2CID 31236801.
  87. ^ John G. Kemeny와 Thomas E. Kurtz, "Dartmouth Time-Sharing", 사이언스 162, 1968년 10월 11일, 223-228페이지.
  88. ^ John G. Kemeny 및 Thomas E. Kurtz, The Dartmouth Time-Sharing Computing System, NSF-GE-3864 최종 보고서, 1967년 6월, 9-10페이지 및 부록 III.
  89. ^ BASIC Language Reference Mandual. Interdata. January 1975. pp. 3–24.
  90. ^ 베이직, 제4판, 1968년, 53페이지

참고 문헌

외부 링크