BCPL

절차적 명령형, 구조적 컴퓨터 프로그래밍 언어

BCPL(Basic Combined Programming Language)은 1966년 케임브리지 대학교에서 마틴 리처드가 설계한 절차적 명령형, 구조적 컴퓨터 프로그래밍 언어이다.

원래 다른 언어들을 위한 컴파일러를 작성하기 위해 고안하였다가, BCPL은 더 이상 일반적으로 쓰이지 않게 되었다. 그러나 이 언어의 영향력은 여전한데 BCPL을 문법적으로 변경한 것이 이른바 B이고, C 프로그래밍 언어가 이것 위에 기반을 두었기 때문이다. 이로 말미암아 수많은 C 프로그래머들에게 Before C Programming Language라는 유머러스한 배크로님을 선사해 주었다.[1]

BCPL은 활 괄호({ })를 사용한 최초의 프로그래밍 언어이다. 괄호는 거듭되는 문법의 변화를 생존시켰고, 프로그램 소스 코드의 문들을 표기하는 일반적인 수단이 되었다. 현실적으로 당시 키보드의 제한으로 소스 프로그램들은 종종 { } 기호 대신 $( 와 $) 기호를 종종 사용하였다. BCPL에서 쓰이는 '//'라는 한 줄 주석C에 도입되지 않았지만 C++과 나중에 C99에 다시 등장하였다.

편집

아래의 완전하고 호환성 있는 예제는 마틴 리처드의 BCPL 배포판에서 가져온 것이다.

팩토리얼 인쇄:

GET "LIBHDR"

LET START() = VALOF $(
	FOR I = 1 TO 5 DO
		WRITEF("%N! = %I4*N", I, FACT(I))
	RESULTIS 0
$)

AND FACT(N) = N = 0 -> 1, N * FACT(N - 1)

N퀸 문제의 카운트 해결책:

GET "LIBHDR"

GLOBAL $(
	COUNT: 200
	ALL: 201
$)

LET TRY(LD, ROW, RD) BE
	TEST ROW = ALL THEN
		COUNT := COUNT + 1
	ELSE $(
		LET POSS = ALL & ~(LD | ROW | RD)
		UNTIL POSS = 0 DO $(
			LET P = POSS & -POSS
			POSS := POSS - P
			TRY(LD + P << 1, ROW + P, RD + P >> 1)
		$)
	$)

LET START() = VALOF $(
	ALL := 1
	FOR I = 1 TO 12 DO $(
		COUNT := 0
		TRY(0, 0, 0)
		WRITEF("%I2-QUEENS PROBLEM HAS %I5 SOLUTIONS*N", I, COUNT)
		ALL := 2 * ALL + 1
	$)
	RESULTIS 0
$)

각주 편집

  1. Expert C Programming: Deep C Secrets by Peter Van Der Linden (Prentice Hall, 1994)