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 철학에서 작은 독립 도구가 복잡한 계산을 수행하는 사례이기도 하다.