프로그래밍 언어 B: AT&T 벨 연구소의 켄 톰슨이 개발한 프로그래밍 언어

BAT&T 벨 연구소켄 톰슨이 개발한 프로그래밍 언어이다. C 언어로 흡수되는 형태로 거의 사장되었다. 켄 톰슨이 데니스 리치의 감수를 받는 형태로 설계하였으며 1969년에 최초로 등장했다.

B
패러다임절차적
설계자켄 톰슨
개발자켄 톰슨, 데니스 리치
자료형 체계없음
영향을 받은 언어
BCPL, Bon
영향을 준 언어
C, C++

소개

B는 실질적인 C의 조상 언어로 볼 수 있다. B 언어로 만든 프로그램은 컴파일러에 의해 중간 코드로 변환되어 실행하는 인터프리터를 필요로 한다. 실행시에는 인터프리터 번역 순서대로 처리되기 때문에 실행 속도가 극도로 느렸다. 단 PDP-7 버전은 기계어로 처리할 수 있도록 개량되었다.

역사

켄 톰슨은 DEC의 컴퓨터 PDP-7로 유닉스를 개발하고 있었지만 당시 유닉스는 프로그램 개발을 어셈블리 언어로 밖에 할 수 없었다. 그래서 켄 톰슨은 유닉스에서 동작하는 고급언어 개발을 시작했다. 그는 유닉스 개발 이전 멀틱스 개발에 종사하고 있었는데 멀틱스의 BCPL을 바탕으로 B 언어를 개발했다.

이후 B 언어는 켄 톰슨 자신과 데니스 리치, 브라이언 커니핸에 의해 개량되어 NewB(NB)를 거쳐 이윽고 C 언어로 발전하게 된다.

B언어는 켄 톰슨이 당시의 미니 컴퓨터의 메모리 용량에서 작동할 수 있게 하려고 불필요한 구성 요소(컴포넌트)를 제거한 일종의 BCPL 시스템이다.

BCPL이나 Forth와 같이 B 언어는 워드 형태의 1개의 데이터형만 가지고 있었다. 많은 연산자(사칙 연산 등)는 이 데이터를 정수로 취급하였고, 그 이외에는 모두 포인터로 다루었다. 그 이외의 부분은 C 언어의 초기 버전과 비슷하다. C 언어의 표준 입출력 라이브러리에 비견되는 라이브러리를 가지고 있었다.

초기에는 유닉스를 사용한 DEC의 PDP-7용과 PDP-11에서 사용되었고 한편 GCOS라고 하는 OS가 동작하는 허니웰의 36비트 메인프레임에도 사용하였다. 최초의 PDP-7용에서는 스레드 코드로 컴파일 하여 데니스 리치가 기계어로 출력하는 컴파일러를 만들었다. 1970년에 PDP-11에 도입되었지만 역시 이식에는 스레드 코드가 사용되었다. 이때 최초의 yacc가 PDP-11용으로 개발되었다. 데니스 리치는 이 시기에 유지보수를 담당했다.

B 언어는 자료형이 없는 설계로 허니웰이나 PDP-7과 같은 낡은 컴퓨터에서는 쓸모있었지만, PDP-11이나 현대적인 컴퓨터가 지원하는 문자 자료형을 적절히 처리할 수 없었기 때문에 문제가 되었다. 1971년 데니스 리치는 전면적인 변경을 시도해 컴파일러가 기계어 코드를 생성할 수 있도록 하는 한편 자료형을 변수를 추가했다. 1971년부터 1972년까지 B 언어는 NewB 언어로 진화했고 앨런 슈나이더(Alan Snyder)의 강한 요구로 전처리기가 더해져서 1972년, 1973년 두해 동안 초기의 C 언어로 진화했다. 1973년 여름에 드디어 PDP-11용 유닉스가 C 언어로 다시 씌여져서 이러한 노력은 완전한 결실을 맺게 되었다. 1973년에는 허니월 635 시스템에서 IBM 360/370 시스템으로 이식할 필요성이 제기되었는데 이 와중에 마이크 레스크(Mike Lesk)는 나중에 C 언어 표준 입출력 라이브러리(stdio)가 되는 《범용 I/O 패키지》를 작성했다.

B 언어는 허니웰의 메인프레임에서 1990년대까지 계속 이용되었다. 또한 단순 업무 활용에 필요하다든가 툴 및 라이선스 문제 등의 이유로 인해 일부 임베디드 시스템에서도 사용되고 있었다. 한편 유명한 오픈소스 다중 사용자 온라인 게임 AberMUD도 B 언어로 제작되었다.

B 언어는 BCPL의 영향을 그대로 받았기 때문에 명칭인 B 마저 BCPL의 머리글자를 따왔을 가능성이 높다. 하지만 켄 톰슨은 멀틱스에서 사용하기 위해 전혀 다른 방식의 언어인 Bon를 고안했는데 이것이 이름의 유래일 가능성이 있다.

코드 예제

켄 톰슨이 쓴 《Users' Reference to B》에서 발췌됨

/* 다음 함수는 비음(非陰)의 숫자 n을 b진수 형태로 출력한다 (단, 2<=b<=10)   이 루틴은 ASCII 문자 코드 값이 0에서 9까지 연속하고 있음을 이용하고 있다. */  printn(n,b) {         extrn putchar;         auto a;          if(a=n/b) /* 대입문. 등차 비교가 아님 */                 printn(a, b); /* 재귀 호출 */         putchar(n%b + '0'); } 

같이 보기

외부 링크

Tags:

프로그래밍 언어 B 소개프로그래밍 언어 B 역사프로그래밍 언어 B 코드 예제프로그래밍 언어 B 같이 보기프로그래밍 언어 B 외부 링크프로그래밍 언어 B

🔥 Trending searches on Wiki 한국어:

용감무쌍 용수정한국민족문화대백과사전표준 편차수원시저스틴 하비동유럽아돌프 히틀러빅 데이터이승만스마타토성유관순서울대학교대한민국의 대통령제곱미터음양오행설포스파티딜세린호랑이삼체기승위다리미 패밀리국가별 국가 코드 목록바다 (가수)레인메이커 (1997년 영화)페르소나네온이승엽유시민강수연최성훈 (야구 선수)올림픽 축구다음DNA현미 (가수)이종범불가촉천민경주 김씨원내대표KBO 리그명성황후방탄소년단유효숫자김지원 (배우)아일릿앙투안 라부아지에김호정 (1939년)법정상속분오르가슴G7이온대한민국의 인구순 성씨 목록범죄도시 (2017년 영화)위도모세여성의 생식 기관종교 개혁김남국에탄올뉴턴 운동 법칙4월 25일이다해경기도조선민주주의인민공화국소나무현대 유니콘스아웃포스트 (2020년 영화)헌법불합치목성의 고리두산 베어스이철규 (1957년)장가현하판락VVN노태우한글 낱자국민의힘최규식 (정치인)배우🡆 More