bs (언어)

bs (programming language)
bs
설계자리처드 C.하이라이트
첫 등장1980; 42년 전 (1998년)
OS유닉스
영향을 받은
기본, 속물4, C

bs 프로그래밍 언어 및 UNIX 시스템에서 중간 크기의 프로그램을 위한 컴파일러/인터프리터.[1]이 명령은 인터렉티브 프로그래밍을 위해 또는 유닉스 셸(예: Shebang(유닉스) 사용)을 통해 프로그램을 포함하는 파일로 호출할 수 있다.

초기 남성 페이지는 "[]bs베이직[sic]과 로제톨4의 외딴 후손이며, 작은 C가 투입되어 있다."[1]라고 말한다.

역사

이 명령은 1982년 Bell Labs 외부에서 처음 출시된 UNIX System III Release 3.0(1980년)에 나타난다.[1]그것은 딕 하이트가 썼다.Haight) 1978년 경에 다음과 같이 재조명한다.[2]

나는 Unix (V 3?) 당시에 썼고 모든 명령어가 조립자에서 C로 변환되고 있었다.그래서 [켄 톰슨의 ]이 나의 —가 되었다.

릴리스 3.0 설명서는 9페이지(강조 추가):[3]

프로그램 작성 중.UNIX 파일에 원본 프로그램의 텍스트를 입력하려면 를 사용하십시오.UNIX에서 사용할 수 있는 4가지 주요 언어는 C( 참조), Fortran( 참조), BS(Basic의 정신으로 컴파일러/인터프리터, 참조), 조립 언어( 참조)이다.

시스템 III 이전에는 외부에 공개되지 않았지만, 그 명령은 내부적으로 UNIX/TS 1.0 (1978년 11월),[4] PWB/UNIX 2.0 (79년 6월),[4] CB UNIX 버전 2.1 (79년 11월),[5][6] 2.3 (1981)에 존재했다.[7]이 명령은 UNIX 지원 그룹의 1977년 3월 [4]릴리스나 1977년 5월의 PWB/UNIX 설명서와 같은 일부 초기 내부 릴리스에는 나타나지 않으며 1978년 경에 창설되었음을 시사한다.[8]그것은 리서치 유닉스버클리 소프트웨어 배포의 어떤 버전에도 나타나지 않는다.

이어서와 1990년대에, 수첩 B칸 시스템 III-derived나 시스템V-derived 상업 운영 체제의 다양한에 있지만, PC/IX:에 국한되지 않으며[9]유닉스 시스템 V 새로운 2및 3:SVR2,[10]SVR3, SVR3.2(1986년);[11]HP-UX,[12] AIX,[13]과 A/UX 포함되어 있었다.[14](사용자의 매뉴얼은 AT&amp에&T유닉스 PC(3B1)특별히 저는bs 명령을 사용할 수 없다고 언급한다.그러나 SVR3.2에서 이용할 수 있다.)[10]

때때로, UNIX에서 개발을 위한 기본 프로그래밍 언어 중 하나로 홍보되었다.[3][9][15]그러나, 는 POSIX.1 명령과 유틸리티(표준 유닉스 명령 목록)나 단일 유닉스 사양에는 포함되지 않으며 대부분의 현대 운영 체제와 함께 제공되지 않는다.예를 들어 Linux에서는 bc, Perl, POSIX 셸에 의해 유사한 구문과 기능이 제공된다.

21세기에는 적어도 HP-UX 릴리즈 11i(2000년)[12]AIX 버전 6.1(2007년)[13]과 7.2(2018년)에 유닉스 시스템 V의 유산으로 인해 존재하게 된다.[16]

설계 및 피쳐

맨 페이지는 표면적으로는 프로그래밍 언어의 유일한 사양으로 다음과 같은 특징을 가지고 있다.

BS는 프로그램 개발 시간이 결과 실행 속도만큼 중요한 프로그래밍 작업을 위해 설계되었다.데이터 신고 및 파일/프로세스 조작의 수속을 최소화한다.시간별 디버깅, 및 문, 유용한 런타임 오류 메시지는 모두 프로그램 테스트를 단순화한다.게다가 불완전한 프로그램은 디버깅될 수 있다; 내부 기능외부 기능이 작성되기 전에 테스트될 수 있고, 그 반대의 경우도 마찬가지다.

프로그램은 C, FORTRAN조립 언어의 다른 주요 Unix 프로그래밍 언어로 작성된 프로그램과 다르게 컴파일되고 실행 가능한 조립자 출력(a.out)에 프로그램 소스 코드를 컴파일한다.대신 프로그램은 명령어에 의해 내부 역방향 폴란드어(RPN) 중간표시로 변환된 다음 명령어의 내부 가상 스택 시스템에 의해 실행된다.[17]그러므로 이 언어는 하이브리드 통역사컴파일러고대 유닉스로부터의 유닉스 프로그래밍의 차이점이다.

이 언어는 BASIC, OPESTOL, C와 일부 특징과 구문을 공유하는데, 이 두 언어는 아마도 이전의 이름을 고무시켰을 것이다.BASIC과 마찬가지로, 문장은 즉시 실행하거나 또는 이후에 실행될 프로그램으로 수집하여 대화형으로 사용할 수 있다.GROPTOL4에서와 마찬가지로 할당 연산자()=I/O에 사용되며, 그 평가 함수를 이용하여 문자열에서 코드를 실행할 수 있다.또한 표현 평가의 성공 여부를 시험할 때 사용하는 EXPESTOL의 심문 운영자()?도 포함한다.내장된 함수는 하나의 인수로 제한되며, C의 포맷 변환 지정자(예: "%f")의 서브셋을 지원한다.

그 언어는 몇 가지 눈에 띄는 요소를 가지고 있다.예를 들어, 그것의 프로그램 기능은 구문을 사용하여 정의되고 그것의 기능은 국지적 변수를 가질 수 있다.또한, 문과 프로그램을 해석(및 실행)하거나 컴파일(composing)하는 두 가지 모드로 동작할 수 있으며, 그리고 를 사용하는 두 가지 모드 간 전환이 가능하다.그렇지 않으면, 개별 기능이 Unix Shell, 예를 들어 파일 I/O 및 루프, AWK, 예를 들어 연관 배열 및 정규 표현식 일치와 같은 공존 도구의 기능들과 중복되기 때문에 (단일 언어로) 집합적으로만 고유하다.

그 언어는 작은 모듈형 프로그램의 편리한 개발과 디버깅을 위한 것이었다.이전 인기 언어의 구문 및 특징 모음이지만 셸 스크립트와 달리 내부적으로 컴파일되어 있다.이와 같이, 목적, 디자인, 기능 등은 대체로 알려지지 않은, Perl, Python과 같은 복합/컴파일 언어의 겸손한 전신이다.

구문 예제

다음의 예는 A/UX man 페이지에서 도출한 것이다.[18]

이 예에서는 계산기로 다음을 사용한다.

$ b bs # 빛은 1 나노초 안에 이동한다.  186000 * 5280 * 12 / 1e9 11.78496 ...# 복리후생 #(5년간 6%, 1000달러)  int = 0.06 / 4 bal = i = 1 5*4 bal = val + bal*int bal - 1000 346.855007 ...퇴장하다

이 예는 일반적인 프로그램의 개요다.

# 초기화 사물: var1 = 1 open("read", "infile", "r") ...# compute: while ?(str = read) ... next # clean up: close scread") ...# 마지막실행(정지 또는 정지): 종료 # 마지막 입력 라인: 실행

이 예는 I/O:

# "oldfile"을 "newfile"에 복사한다.  opencriptread", "oldfile", "r") opencriptwrite", "newfile", "w" ... 동안 ?(write = read) ...# "읽기"와 "쓰기" 닫기: 닫기("읽기") 닫기("쓰기") # 명령어 사이 파이프.  open("ls", "!ls *", "r") open("pr", "!pr -2 -h "List"", "w") open("ls") 동안 ?(pr = ls) ...# close("ls") close("pr")

샘플 프로그램

다음은 을 사용하여 99 Bottles of Beer라는 노래에 단어를 내보내는 샘플 프로그램이다.[19]

재미있다 노래를 부르다(n, 종지부를 찍다) s    s = ("s", "")[ 짝을 맞추다(n, "^1$") ]    놓다 = 형식을 갖추다(형식을 갖추다(형식을 갖추다("%s 병%s 맥주%%%s", n), s), 종지부를 찍다) 뉴프  을 위해 n = 99, n, 놓다 = ""    노래를 부르다(형식을 갖추다("%-0.0f", n), "벽에")    노래를 부르다(형식을 갖추다("%-0.0f", n), ",")    놓다 = "하나를 내리고, 돌려라"    --n    노래를 부르다((형식을 갖추다("%-0.0f", n), "아니오")[ 0 == n ], " 벽에.") 다음에 

참고 항목

참조

  1. ^ a b c d UNIX User's Manual (Release 3.0 ed.). Bell Telephone Laboratories, Incorporated. 1980. p. 95.
  2. ^ 딕 하이트의 개인 통신, 2019년 9월 10일.
  3. ^ a b UNIX User's Manual (PDF) (Release 3.0 ed.). Bell Telephone Laboratories, Incorporated. 1980. p. 9.
  4. ^ a b c 존 R과의 개인적인 대화. 매시, 2019년 9월 9일.
  5. ^ 1979년 11월 유닉스 헤리티지 소사이어티 "CB/UNIX man 7"2019년 9월 9일 회수
  6. ^ 1979년 11월 유닉스 헤리티지 소사이어티 "CB/UNIX man 1"2019년 9월 9일 회수
  7. ^ J. D. Doan, ed. (May 1981). CB-UNIX Programmer's Manual, Edition 2.3 (PDF). Columbus, OH: Bell Telephone Laboratories. p. iii.
  8. ^ T. A. Dolotta; R. C. Haight; E. M. Piskorik, eds. (May 1977). "Section 1". PWB UNIX Programmer's Manual, Edition 1. Piscataway, New Jersey: Bell Telephone Laboratories.
  9. ^ a b "IBM Goes UNIX". PC Magazine. June 12, 1984. p. 218.
  10. ^ a b "Volume 1". AT&T UNIX PC UNIX System V User's Manual (PDF). AT&T. 1986. p. 8.
  11. ^ "Volume 1 Commands and Utilities". UNIX Programmer's Manual (PDF). AT&T. 1986. p. 41.
  12. ^ a b "Section 1 (A-M)". HP-UX Reference Release 11i User Commands (PDF) (1 ed.). Hewlett-Packard Company. 2000. p. 93.
  13. ^ a b "Section 1 (a-c)". AIX Version 6.1 Commands Reference (PDF) (First ed.). International Business Machines Corporation. 2007. p. 251.
  14. ^ "Section 1 (A-L)". A/UX Command Reference (PDF) (2.0 ed.). Apple Computer, Inc. 1990. p. 93.
  15. ^ 2012년 2월 18일 Apple, Inc.의 "A/UX: Development Tools"2019년 9월 9일 회수
  16. ^ "Section 1 (a-c)". AIX Version 7.2 Commands Reference. IBM Corporation. 2018. p. 282.
  17. ^ 딕 하이트와 개인적인 대화, 2019년 9월 12일.
  18. ^ 파일, A/UX 3.0.1 설치 미디어, Apple Inc.(1993)
  19. ^ "Language BS", 99병의 맥주, 1996년 8월 8일.2019년 9월 9일 회수