B(프로그래밍 언어)

B (programming language)
B
설계자켄 톰프슨
개발자켄 톰슨, 데니스 리치
첫 등장1969년; 53년 전 (1998년)[1]
타이핑 규율유형이 없는(모든 것은 단어임)
파일 이름 확장명.b
영향을 받은
BCPL, PL/I, TMG
영향받은
C

B는 1969년경 벨랩스에서 개발된 프로그래밍 언어다.그것은 켄 톰슨데니스 리치에 의해 개발되었다.

B는 BCPL에서 파생되었으며, 그 이름은 BCPL의 수축일 가능성이 있다.톰슨의 동료인 데니스 리치는 이 이름이 톰슨이 멀티크스에서 사용하기 위해 고안한 초기 프로그램 언어인 본을 기반으로 한 것일 수도 있다고 추측했다.[note 1]

B는 시스템 및 언어 소프트웨어와 같은 반복적이고 숫자가 아닌 기계에 독립적인 애플리케이션을 위해 설계되었다.[3]그것은 유형이 없는 언어였고, 그 어떤 것이든 기초적인 기계의 자연 메모리 워드 포맷이 유일한 데이터 유형이었다.문맥에 따라 그 단어는 정수기억 주소로 취급되었다.

벨에 도착한 DEC PDP-11ASCII 프로세싱이 가능한 기계가 보편화되면서 메모리 워드로 채워진 문자 데이터에 대한 지원이 중요해졌다.그 언어의 유형이 없는 성질은 단점으로 여겨졌고, 이로 인해 톰슨과 리치는 새로운 내부 및 사용자 정의 유형을 지원하는 언어의 확장 버전을 개발하게 되었고, 이는 C 프로그래밍 언어가 되었다.

역사

1969년경, 켄[2] 톰슨과 후에 데니스 리치는[3] 그것을 주로 톰슨이 멀티크스 프로젝트에 사용한 BCPL 언어를 기반으로 하여 B를 개발했다.B는 본질적으로 톰슨이 그 당시의 미니컴퓨터의 메모리 용량에 맞도록 하기 위해 그가 할 수 있다고 느끼는 어떤 구성요소도 제거된 BCPL 시스템이었다.BCPL에서 B로의 전환은 톰슨의 선호에 맞게 이루어진 변경(대부분 일반적인 프로그램에서 공백이 아닌 캐릭터의 수를 줄이는 선에 따라)도 포함했다.[2]BCPL의 전형적인 ALGOL 유사 구문의 대부분은 이 과정에서 다소 심하게 변경되었다.할당 연산자:=로 되돌아가다.=루티샤유저의 슈퍼플랜과 평등한 운영자로부터=로 대체되었다.==.

Thompson은 다음과 같이 "두 주소 할당 연산자"를 추가했다.x =+ yx에 y를 추가하는 구문(C에서 연산자가 기록됨)+=) 이 구문은 더글러스 매킬로이TMG를 구현한 데서 유래한 것으로, B의 컴파일러가 처음 구현되었다(그리고 ALGOL 68에서 TMG로 나왔다).x +:= y구문).[2][4]톰슨은 증감 연산자를 발명함으로써 더 나아갔다.++그리고--이들의 접두사 또는 사후 픽스 위치는 피연산자의 변경 전 또는 후에 값을 취하는지 여부를 결정한다.이 혁신은 B의 초기 버전에 있지 않았다.Dennis Ritchie에 따르면, 사람들은 종종 DEC PDP-11의 자동 증가와 자동 감소 주소 모드를 위해 그들이 만들어졌다고 추측했지만, B가 처음 개발되었을 때 기계가 존재하지 않았기 때문에 이것은 역사적으로 불가능하다.[2]

포루프의 세미콜론 버전은 켄 톰슨이 스티븐 존슨의 작품에서 차용한 것이다.[5]

B는 유형이 없거나, 더 정확히 말하자면 컴퓨터 단어라는 하나의 데이터 유형을 가지고 있다.대부분의 연산자(예:+,-,*,/)은 이것을 정수로 취급했지만, 다른 사람들은 이를 참조할 기억 주소로 취급했다.다른 많은 면에서 그것은 C의 초기 버전과 많이 닮았다.C의 표준 I/O 라이브러리의 기능과 모호하게 유사한 기능을 포함한 몇 가지 라이브러리 기능이 있다.[3]톰슨의 말에서: "B와 옛 C는 [C]의 모든 종류를 제외하고 매우 유사한 언어였다."[5]

초기 구현은 초기 유닉스를 사용하는 DEC PDP-7PDP-11 미니컴퓨터와 운영 체제 GCOS를 실행하는 Honeywell GE 645[6] 36비트 메인프레임을 위한 것이었다.초기 PDP-7 구현은 스레드 코드로 컴파일되었으며, 리치는 기계 코드를 생성하는 TMG를 사용하여 컴파일러를 작성했다.[7][8][9]1970년에 PDP-11을 획득하여 포트에 나사산 코드를 사용하였고, 조립자와 B언어 자체는 B로 쓰여 컴퓨터를 부팅하였다. PDP-11 구성으로 yacc의 초기 버전이 제작되었다.리치는 이 기간 동안 유지보수를 맡았다.[2][9]

B의 유형이 없는 특성은 허니웰, PDP-7, 그리고 많은 구형 컴퓨터에서는 말이 되었지만, PDP-11과 대부분의 현대 컴퓨터들이 완벽하게 지원하는 문자 데이터 유형에 우아하게 접근하기 어려웠기 때문에 PDP-11에서는 문제가 되었다.1971년에 시작된 Ritchie는 컴파일러를 기계코드로 변환하면서 언어를 변경했는데, 특히 변수에 대한 데이터 타이핑을 추가했다.1971년과 1972년 사이에 B는 "New B"(NB)와 C로 진화했다.[2]

B는 C언어로 대체되어 거의 멸종되었다.[10]그러나, 소규모 시스템의 하드웨어 제한, 광범위한 라이브러리, 툴링, 라이센스 비용 문제, 그리고 단순히 업무용으로 충분하다는 다양한 이유로 GCOS 메인프레임(2014년 기준)[11]과 특정 임베디드 시스템(2000년 기준)에서 계속 사용되고 있다.[10]영향력이 큰 애버MUD는 원래 B로 쓰여졌다.

Ken Thompson의 Users' Reference에서 B에 이르는 예는 다음과 같다.[3]

/* 다음 함수는 n-음수가 아닌 n-을 출력한다. 베이스 b, 여기서 2[=10]이 루틴은 다음과 같은 사실을 이용한다. ASCII 문자 집합에서 0에서 9까지의 자릿수는 순차적이다. 암호 값*/  인쇄하다(n, b) {         돌출시키다 설탕을 넣다;         자동차로 a;         /* Wikipedia 노트: 자동 키워드는 다음과 같은 변수를 선언함 자동 저장(필수란 기능 범위)이 아님 C++11과 같은 "자동 입력".*/          만일 (a = n / b)        /* 할당, 동일성 테스트가 아님 */                 인쇄하다(a, b); /* 재귀 */         설탕을 넣다(n % b + '0'); } 
/* 다음 프로그램은 상수 e-2 ~ 약 4,000자리의 소수점, 그리고 50자를 다음 줄에 인쇄한다. 5자로 된 그룹방법은 단순 출력 변환이다. 확장된 1/2! + 1/3! + ...= .111.... 여기서 숫자의 기본값은 2, 3, 4, . . */ 입니다.  본래의() {  돌출시키다 설탕을 넣다, n, v;  자동차로 i, c, 망토를 입히다, a;   i = 망토를 입히다 = 0;  하는 동안에(i<n)   v[i++] = 1;  하는 동안에(망토를 입히다<2*n) {   a = n+1;   c = i = 0;   하는 동안에 (i<n) {    c =+ v[i] *10;    v[i++]  = c%a;    c =/ a--;   }    설탕을 넣다(c+'0');   만일(!(++망토를 입히다%5))    설탕을 넣다(망토를 입히다%50?' ': '*n');  }  설탕을 넣다('*n*n'); } v[2000]; n 2000; 

참고 항목

Octicons-terminal.svg 컴퓨터 프로그래밍 포털

메모들

  1. ^ "그들의 이름은 아마도 BCPL의 위축을 나타내지만, 다른 이론은 그것이 멀티크스 시대에 톰슨이 만든 관계없는 언어인 Bon[Thompson 69]에서 유래되었다고 주장하지만, 아마도 BCPL의 위축을 나타낸다.본은 그의 아내 보니의 이름을 따서 이름이 지어졌거나 혹은 (설명서에 있는 백과사전 인용에 따르면) 마법의 공식의 중얼거림을 포함하는 종교의 이름을 따서 이름이 붙여졌다."[2]

참조

  1. ^ "B - computer programming language".
  2. ^ a b c d e f g Ritchie, Dennis M. (March 1993). "The Development of the C Language". ACM SIGPLAN Notices. 28 (3): 201–208. doi:10.1145/155360.155580.
  3. ^ a b c d Thompson, Ken (7 January 1972). "Users' Reference to B" (PDF). Bell Laboratories. Archived from the original (PDF) on 17 March 2015. Retrieved 21 March 2014.
  4. ^ Michael S. Mahoney (18 August 1989). "Interview with M.D. McIlroy". Princeton.edu. Murray Hill.
  5. ^ a b Ken Thompson. "VCF East 2019 -- Brian Kernighan interviews Ken Thompson". YouTube. Archived from the original on 2021-11-23. Retrieved 2020-11-16. I saw Johnson's semicolon version of the for loop and I put that in [B], I stole it.
  6. ^ Ritchie, Dennis M. (1984). "The Evolution of the Unix Time-sharing System". AT&T Bell Laboratories Technical Journal. 63 (6 Part 2): 1577–1593. doi:10.1002/j.1538-7305.1984.tb00054.x. Archived from the original on 11 June 2015.
  7. ^ "TMG". multicians.org.
  8. ^ Ritchie, Dennis M. "The Development of the C Language". Bell Labs/Lucent Technologies. Archived from the original on 11 June 2015.
  9. ^ a b McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Technical report). CSTR. Bell Labs. 139.
  10. ^ a b Johnson and Kernighan. "THE PROGRAMMING LANGUAGE B". Bell Laboratories. Archived from the original on 11 June 2015. Retrieved 21 March 2014.
  11. ^ "Thinkage UW Tools Package". Thinkage, Ltd. Retrieved 26 March 2014.

외부 링크