미니멀 BASIC

Minimal BAS

미니멀 베이직국제 표준으로 개발된 베이직 프로그래밍 언어의 방언이다.이 노력은 1974년 1월 ANSI에서 시작되었고, 9월에는 ECMA의 평행 그룹이 참여하였다.1976년 1월 논평을 위해 초안이 발표되었고, 1977년 12월 ANSI X3.60-1978 또는 ECMA-55로 교대로 알려진 최종 기준이 발표되었다.미국 표준국은 구현이 정의를 충족하는지 확인하기 위해 NBSIR 77-1420 테스트 제품군을 도입했다.

이 무렵 마이크로소프트 BASIC은 1975년 초기 마이크로컴퓨터에 대한 소개 이후, 특히 1977년 애플 II, 코모도어 PET, TRS-80 등 MS 스타일의 BASIC을 사실상의 표준으로 굳히는 '트리니티'를 도입한 후 시장을 장악하기 시작하고 있었다.Minimal BASIC의 ISO 표준화는 ISO 6373:1984로 시작되었으나 1998년에 폐기되었다.보다 강력한 사투리인 풀 베이직(일명 스탠다드 베이직)을 제작하려는 노력이 1987년 1월에야 공개되어 시장에 거의 영향을 미치지 않았다.

역사

이전 개발

다트머스 BASIC은 1964년 5월 다트머스 칼리지에서 포트란에서 영감을 받아 깔끔하고 상호 작용적인 언어로 소개되었다.[1]이 시스템은 그 당시 컴퓨터 산업에서 뜨거운 주제였던 몇 가지 개념들을 한데 모았는데, 특히 여러 사용자가 하나의 기계에 접속할 수 있도록 시간절약하고 컴퓨터 단말기를 사용하여 기계와 직접 상호작용하는 것이다.실행된 GE-225 컴퓨터를 공급한 제너럴 일렉트릭은 상업용 사용자들에게 약간의 변화를 주었고 즉각적인 반사이익을 보았다.[2]많은 다른 회사들도 곧 비슷한 시스템을 도입하여 시시각각 온라인 시간을 판매했다.1960년대 말까지 거의 모든 메인프레임 플랫폼과 온라인 서비스를 위한 BASIC의 버전이 있었다.[3][4]

1966년 휴렛패커드(HP)는 새로운 미니컴퍼터HP 2100을 선보였다.실험실과 공장 환경에서 사용할 목적으로, 그 회사는 대부분 업무 처리를 위해 판매되고 있다는 것을 발견하고 놀랐다.[5]이를 활용하기 위해 1968년 11월 그들은 최대 32명의 사용자를 지원하기 위해 타임헤어링을 구현한 두 대의 HP 2100 CPU를 사용하는 시스템인 HP 2000을 도입했다.이 시스템은 Dartmouth 모델과 유사한 방식으로 작동했으며, 입출력 제어에는 기계 한 대를 사용하고 프로그램을 실행하기 위해 다른 기계를 사용했다.컴파일러였던 다트머스 버전과 대조적으로 HP Time-Shared BASIC통역사였다.[6]

통역사들은 더 작은 기계와 미니컴퓨터에서 빠르게 일반화되었다.다른 벤더들은 HP 사투리를 재빨리 따라했고, 특히 Data General은 1970년대 초에 매우 성공적이었던 그들의 Nova 시리즈를 위해 만들어졌다.왕 연구소는 또한 그들의 전용 BASIC 기계인 왕 2000 시리즈로 약간의 성공을 거두었다.각 버전은 서로 다른 점이 있었다.스탠포드 연구소JOSS 프로그램에 관여하고 이를 바탕으로 포커스 언어를 도입한 디지털 장비 주식회사(DEC)가 한 가지 버팀목이었다.1970년대 초까지 BASIC의 성공은 DEC가 그들 자신의 BASIC을 그 자체의 변형과 함께 도입하도록 강요했다.[7]

베이직(BASIC)이 갈라지기 시작한 것은 이때였다.컴파일러인 만큼 다트머스 BASIC 프로그램은 실행할 때 프로그램 구조에 대한 완전한 정보를 갖고 있었다.대조적으로, 통역사는 일반적으로 한 번에 하나의 객체 코드 줄만 메모리에 저장하고 나머지 프로그램은 다른 형식으로 저장된다.이것은 프로그램 실행 방식에 미묘한 차이를 초래한다.예를 들어 다음과 같은 짧은 프로그램을 고려해 보십시오.[8]

10 프린트 "얼마나 많은 스타를 원하십니까"; 20 입력 N 30 for J = 1  N 40 프린트 "* "; 50 다음 J 60  

컴파일된 방언에서 사용자가 별 수에 대해 0을 입력하면 아무 것도 출력되지 않는다.그것은 유무의 시험 때문이다.J보다 크다N가장 높은 곳에서 벌어지다FOR, 그리고 만약 그것이 실패한다면, 프로그램은 다음에 진술에 분기한다.NEXT J이 경우 프로그램을 종료하십시오.통역사는 일반적으로 이런 식으로 일하지 않는다.대신 그들이 그 문제를 만났을 때FOR그들은 콜 스택에 있는 자신의 라인에 포인터를 설정한 다음, 다음 코드가 마주칠 때까지 계속 해석한다.NEXT J. TheNEXT그런 다음, 코드는 테스트를 수행하고 로 되돌아간다.FOR계속해야 한다면 [9]말이야해석된 버전은 사용자가 0을 입력해도 보통 별표 1개가 인쇄된다는 뜻이다.[8]

표준 노력

베이직의 다양성은 이들을 다시 하나로 모으기 위한 표준을 제작하는 데 관심을 가져왔다.그러한 가능성에 대한 첫 회의는 1974년 1월에 새로 구성된 ANSI 워킹 그룹 X3J2에서 열렸다.이에 따라 1974년 9월 유럽에 ECMA, TC 21에 따라 해당 그룹이 설립되었다.두 그룹은 노력 내내 긴밀한 접촉을 유지하며 각자의 기준을 동시에 발표했다.초안은 1976년 1월에 ANSI에 의해 발표되었다.최종본은 1977년 6월에 준비되었고, 1977년 12월 14일에 ECMA에 의해 공식적으로 채택되었다.[10]

X3J2의 처음 몇 년은 1964년 다트머스 베이직의 표준화에 쓰였다(후후기적으로 보면, 일부는 '미워졌다'고 말할 수 있다).미니멀 베이직은 실제 언어보다는 장난감에 가까웠다.

Arthur Luehrmann[8]

Minimal BASIC은 기본적으로 구현이 정의에 부합하도록 보장하기 위해 Extended Backus-Naurs 양식과 연관된 테스트 세트를 사용하여 정식 표준으로 작성된 최초의 1964 Dartmouth BASIC이었다.그것은 이전에 정의되지 않았던 개념들을 명확히 했다.GO TO그리고GOTO이 사건에서 이렇게 말하는 것도 같은 것이었다.goto statement = GO space* TO line number의미GOTO,GO TO심지어GO TO똑같았다.[11]구현 간의 차이가 존재하는 경우(예: 의 처리에서)FOR문 또는 키워드와 값 사이에 공백이 필요한지 여부, 표준은 항상 Dartmouth 패턴을 선택했다.[8]

미니멀 베이직은 끈 조작과 같은 공통적인 특징이 많이 없어 그 자체로는 정말 유용하지 않다는 것이 항상 이해되었다.이러한 보다 발전된 특징들은 미니멀의 출판 이후 진지한 작업을 시작한 후속 노력인 풀 베이직의 초점이 될 것이다.풀 베이직은 단순히 기능이 더 많은 미니멀의 버전이 아니라 다트머스의 구조화된 베이직(Structured BASIC) 노력을 바탕으로 대형 프로그램 구축을 지원하는 구조화된 프로그래밍을 제공하도록 설계됐다.Minimum과 대조적으로 Standard BASIC은 BASIC을 크게 업데이트하도록 설계되었다.[12]

무관성

미니멀 베이직(Minimal BASIC)이 이루어지고 있는 동안, 널리 이용 가능한 최초의 마이크로 컴퓨터가 출시되었는데, Altair 8800이다.그 직후 알테어 베이직마이크로소프트에 의해 출시되었다.올해 안에, 수십 개의 새로운 마이크로폰이 출시되었고, BASIC의 새로운 버전도 많이 출시되었다.미니멀 표준이 비준되었을 때, 이미 수만 대의 기계가 언어의 일부 변형을 실행하고 있었다.어떤 특정한 통역자가 따르는 사투리는 일반적으로 그것을 개발하는 데 사용된 기계에 기초했다; MS BASIC은 PDP-10에서[13] 개발되었고 DEC의 BASIC-PLUS에서 많은 특징을 가지고 있는 반면, Apple BASIC은 HP 매뉴얼을 기반으로 Steve Wozniak에 의해 쓰여졌고 HP의 문자열 처리 시스템을 사용한다.[14][a]

1976년 1월에 코멘트를 위해 미니멀 표준의 초안이 발표되었다.초안을 업데이트하기 위해 수많은 의견이 사용되었고, 1977년 6월에 최종 공개가 준비되었고 1977년 12월 14일에 ECMA에 의해 공식적으로 비준되었다.[15]미국 표준국은 NBSIR 77-1420 테스트 세트를 출시하여 공급업체가 표준 준수를 테스트할 수 있도록 했다.[16]표준 그룹에 마이크로컴퓨터 벤더가 없었기 때문에, 시스템은 대부분 메인프레임 버전에서 사용된다는 것을 발견했는데, 이 버전에는 항상 많은 확장자가 있었다.이 표준을 구현한 몇 안 되는 마이크로 컴퓨터 버전 중 하나는 MBASIC로 더 잘 알려진 Zilog Z80을 위한 마이크로소프트의 BASIC-80으로 5.0 버전에서 표준을 준수했다.[17]

미니멀이 출시된 후, 표준 그룹들은 Full BASIC에 관심을 돌렸지만, 이것은 몇 년 동안 질질 끌었다.그 노력은 너무 느리게 진행되어 다트머스 참가자들은 떠났고 1984년에 여전히 떠오르는 표준의 그들만의 버전을 True Basic으로 발매했다.이것은 벌레에 찌들어 혼란스러웠기 때문에 제리 푸넬은 그것을 "미친 짓"[18]이라고 조롱했고 존 드보락은 "슬픔"과 "실패할 뻔 했다"고 일축했다.[19] 미니멀 베이직스를 국제표준화기구(ISO)로 옮기려는 계획은 포기되었고,[20] ANSI 그룹은 원래의 표준을 비활동적인 상태로 남겨두고 헤어졌다.[21]

설명

미니멀 베이직은 다트머스 BASIC의 초기 버전에 밀접하게 기반을 두고 있으며, 그 규약을 따르고 있다.이 표준은 거의 모든 기계에서 실행할 수 있는 표준을 만들기 위한 노력의 일환으로 특정 한계를 명확히 한다.다음 설명은 공통 BASIC에 대한 기본적인 친숙함을 가정하며, Minimal의 차이를 강조한다.

프로그램코드

대부분의 BASIC 구현과 마찬가지로 Minimal은 라인 편집기를 사용하여 편집되는 기본 소스 코드를 기반으로 하므로 Minimal의 모든 코드 라인은 라인 번호를 가져야 한다.이 표준은 0에서 9999 사이의 라인 번호를 허용한다.대부분의 통역사와는 대조적으로 미니멀은 모든 키워드 앞에 공백이 필요하고, 그 뒤에 공백이나 종단선이 필요하다.[22]

키워드 포함REM,DIM,OPTION,DEF,LET,PRINT,INPUT,READ,DATA,RESTORE,IF...THEN,FOR...TO...STEP...NEXT,GO TO,GO SUB...RETURN,ON...GO TO그리고ON...GO SUB...,RANDOMIZE,STOP그리고END.[23]

프로그램에는 다음이 있어야 한다.END그들의 마지막 [24]행으로 INPUT선택적인 프롬프트 문자열을 가질 수 있지만, 그것은 표준의 일부가 아니라 구현에 달려 있다.[25] RESTORE그 시대의 대부분의 통역사에서 볼 수 있는 선택사항인 행번호는 허용하지 않았다. FOR...NEXT루프는 위에서 시험되며, 첫 번째 반복에서 시험에 실패하면 몸을 실행하지 않는다.[26]

변수 이름은 한 글자 또는 한 자와 한 자리의 숫자로 구성될 수 있다.두 글자 변수 이름은 허용되지 않는다.[27]숫자는 1E-38에서 1E38로 제한된다.[22]문자열 변수는 최대 18자를 가질 수 있다.[28]어레이는 다음을 사용하여 1 또는 2차원일 수 있음DIM, 그러나 숫자 배열만 지원된다.일반적으로 모든 변수는 사용하지 않고 연결된 1차원 배열에서 공간이 할당됨DIM그들에게는 11개의 항목에 대한 공간이 주어지고, 색인 0부터 10까지가 주어진다.어레이의 하한은 일반적으로 0이지만OPTION BASE 1지수를 0으로 바꿀 수 있다.[29]

정의된 함수는 11개임.ABS,ATN,COS,EXP,INT,LOG,RND,SGN,SIN,SQR그리고ATN연산자에는 다음이 포함된다.[30]=,<=,>=,<>문자열은 동일하거나 같지 않은 경우에만 비교할 수 있으며, 크고 작은 비교는 지원되지 않았다.논리 연산자는AND,OR그리고NOT는 공급되지 않는다.[11]

사용자 정의 함수:DEF FN지원되었지만, 숫자에 대해서만 지원되었다.문자열에 사용할 수 있는 내장 기능이나 사용자 기능이 없었다.[31]

이 코드는 Eratosthenes의 체를 구현한다.[32]

1000 에라토스테네스 렘 체 1010 빠른 기본 산술 프로젝트 데모에서 수정된 리메모 1020  2010 렘 L은 체의 한계임 2020 렘 우리는 L까지의 모든 프라임 숫자를 찾을 것이다. 2030 LET L = 1000 2040 렘 N은 체 자체임 2050  N(1000) 2060 체에 최대 L까지 모든 숫자를 채워 넣으십시오. 2070 for I = 1  L  2080 LET N(I) = I 2090 다음 I 2100 첫 번째 프라임 번호로 렘 스타트: 2 2110 LET P = 2 2120 프린트 P, 2130 렘 "크로스아웃" P의 배수 2140 for I = P  L 스텝 P 2150 LET N(I) = 0 2160 다음 I 2170 렘 교차되지 않은 다음 번호 찾기 2180 LET P = P + 1 2190 IF P = L 그럼 2220 2200 IF N(P) <> 0 그럼 2120 2210 에 가다 2180 2220 프린트 2230  

메모들

  1. ^ 우즈는 이후 시장이 HP의 스트링 핸들링을 포기하고 자신이 '악성'이라고 비웃었던 DEC/MS 스타일을 사용했다고 한탄했다.[14]

참조

인용구

  1. ^ 커츠 1981, 페이지 532.
  2. ^ 커츠 1981년 532쪽 534쪽
  3. ^ 맥크라켄 2014.
  4. ^ "IBM VS the World: That's How It Is". Computerworld. 5 December 1973.
  5. ^ Leibson, Steve (2017). "HP: The Accidentally, On-Purpose Computer Company". HP9825.COM.
  6. ^ "Hewlett-Packard 2100 Processor Description, 1972" (PDF). Retrieved 2020-08-18.
  7. ^ Savetz, Kevin (April 2013). "Dave Ahl and Betsy Ah" (Interview).
  8. ^ a b c d 루어만 1984, 페이지 173.
  9. ^ "Microsoft BASIC for 6502". GitHub. 14 May 2022. See NEXT handler in flow1.s
  10. ^ ECMA 1978, 페이지 3
  11. ^ a b ECMA 1978, 페이지 15.
  12. ^ 루어만 1984, 페이지 171.
  13. ^ 프리드슨 1999, 페이지 116.
  14. ^ a b 워즈니악 2014.
  15. ^ ECMA 1978, 페이지 i.
  16. ^ Gilsinn & Sheppard 1978.
  17. ^ BASIC-80 Reference Manual. Microsoft. 1981.
  18. ^ 1985년, 366페이지
  19. ^ 드보락 1984, 페이지 88.
  20. ^ "ISO 6373:1984".
  21. ^ "ECMA-55 Minimal BASIC".
  22. ^ a b ECMA 1978, 페이지 6
  23. ^ ECMA 1978.
  24. ^ ECMA 1978, 페이지 5
  25. ^ ECMA 1978, 페이지 22.
  26. ^ ECMA 1978, 페이지 17.
  27. ^ ECMA 1978, 페이지 8.
  28. ^ ECMA 1978, 페이지 9.
  29. ^ ECMA 1978, 페이지 25.
  30. ^ ECMA 1978, 페이지 11.
  31. ^ ECMA 1978, 페이지 13.
  32. ^ "ERATOSTHENESE.BAS".

참고 문헌 목록

추가 읽기

현재 유지 관리되고 있는 오픈 소스