bc

bc는 UNIX 계열에서 사용되는 임의 정밀도 수치 계산 언어이자 이를 실행하는 명령줄 계산기다. 언어 이름은 일반적으로 *basic calculator*에서 유래했으며, 사람이 입력한 산술식이나 파일에 작성된 프로그램을 순서대로 계산한다. 일반적인 CPU의 고정된 정수·부동소수점 자료...

정식 표기bc
명칭basic calculator
분류임의 정밀도 수치 계산 언어·계산기
역사적 환경UNIX
표준화POSIX bc
패러다임명령형, 수식 중심
수치 모델임의 정밀도 십진 산술
정밀도 조절scale, ibase, obase
자료 표현수치 변수와 배열
제어 구조조건문, 반복문, 함수
실행 방식대화형 인터프리터 또는 파일 실행
관련 프로그램dc
대표 구현GNU bc, 현대 bc 구현
문서GNU bc Manual

bc는 UNIX 계열에서 사용되는 임의 정밀도 수치 계산 언어이자 이를 실행하는 명령줄 계산기다. 언어 이름은 일반적으로 *basic calculator*에서 유래했으며, 사람이 입력한 산술식이나 파일에 작성된 프로그램을 순서대로 계산한다. 일반적인 CPU의 고정된 정수·부동소수점 자료형에 한정되지 않고 임의의 자릿수를 가진 십진 수를 계산할 수 있어 큰 정수·정밀한 소수 계산을 명령줄과 셸 스크립트에서 다룰 때 유용하다.[1]

bc는 C와 일부 비슷한 연산자와 제어 흐름을 제공하지만 C의 일반적인 타입·메모리 모델을 구현하는 언어는 아니다. 수치는 원하는 자릿수의 정밀도로 처리되며 scale 값으로 소수점 아래 계산 자릿수를 설정할 수 있다. ibase와 obase는 입력·출력의 진법을 제어하고, 변수·배열·함수·반복 및 조건문으로 여러 단계의 계산 절차를 표현할 수 있다. 따라서 bc는 단순히 사칙연산을 하는 계산기보다 작은 수치 프로그래밍 언어로 이해할 수 있다.

초기 UNIX 구현에서는 bc 소스 코드를 후위 표기식 기반의 계산기인 dc 언어로 변환해 실행하는 구조가 사용되었다. 현대의 GNU bc 구현은 자체 바이트코드를 실행하는 방식을 사용할 수 있으며, bc의 언어 사양과 구현 내부의 실행 구조는 구별된다. POSIX 표준은 bc 프로그램의 문법과 사용자에게 보이는 동작을 정의하지만 컴파일러나 인터프리터의 내부 구조를 하나로 고정하지 않는다.[2]

bc는 계산에 쓰이는 임의 정밀도 산술과 프로그램의 제어 구조를 간단한 CLI 인터페이스로 제공해 셸 자동화, 시스템 스크립트와 수학 실험에 활용되어 왔다. 정밀도와 반올림 또는 절삭의 동작은 구현과 연산 규칙에 영향을 받기 때문에 부동소수점 라이브러리와 같은 결과를 가정하지 않는 것이 중요하다. 역사적으로는 UNIX 철학에서 작은 독립 도구가 복잡한 계산을 수행하는 사례이기도 하다.

역사

초기 UNIX 구현

dc와의 관계

POSIX 표준

GNU bc

언어 구조

산술식과 연산자

변수와 배열

함수

반복과 조건

수치 모델

임의 정밀도

scale

진법 변환

실행 방식

대화형 실행

프로그램 파일

바이트코드 구현

표준과 구현별 확장

셸 스크립트와의 연동

활용과 영향

관련 문서

  1. GNU bc Command Manual ↩
  2. GNU bc 소개 ↩