4장. 메타프로그래밍

차례
4.1. 외부 필터들
4.1.1. CPP
4.1.2. M4
4.1.3. 여러분이 만든 필터를 이용한 매크로 프로세싱
4.2. 메타프로그래밍
4.2.1. 컴파일러의 백엔드로 제공되는 어셈블러의 이용
4.2.2. 뉴저지 머신-코드 툴킷
4.2.3. TUNES 프로젝트

어셈블리 프로그래밍은 지루한 작업이다. 그러나, 그렇다고 결정적인 부분에서 어셈블리를 사용하지 않을수는 없다.

여러분은 제대로 작업을 수행하기 위해서 적절한 툴을 사용해야 할 것이다.... 다시 말하자면, 어셈블리 언어가 반드시 필요하지 않다면 어셈블리를 사용해서는 안된다. 대신, C, OCaml, perl, Scheme, 등의 고급언어를 사용하는 것이 대개의 경우 더 나은 선택이 될 것이다.

그러나, 앞서 언급한 고급 프로그래밍 언어가 기계 자체를 만족할 만한 수준으로 컨트롤 할 수 있는 기능을 제공하지 못하는 경우가 있다. 다시 말해서, 그러한 언어가 제공하는 머신에 대한 제어기능 보다 더 세밀하게 하드웨어를 컨트롤 해야 하는 경우에 어셈블리가 유용하거나, 필요할 것이다. 그러한 경우, 여러분은 매크로 프로세싱이나 메타 프로그래밍 툴을 유용하게 쓸 수 있다. 그러한 툴을 사용하면, 여러분은 패턴을 이용한 프로그래밍을 할 수 있게 된다. 다시 말해서, 한 패턴에 대한 정의를 내려 두면, 그것을 이용하여 안전하게, 또 재사용 가능하게 매크로 처럼 사용하여 프로그래밍을 할 수 있게 되는 것이다. 그러한 방식으로 프로그래밍을 한다면, 여러분이 만든 코드는 보다 안전하며, 수정할 때에도 패턴의 정의만 바꿔주면 자동으로 수정된 버젼의 소스가 다시 생성되게 하는 등의 여러가지 잇점이 있다. 일반적으로 사용하는 어셈블러만 가지고는 심지어 작은 루틴을 C 와 연결하려고 할 때에도 이와같이 복잡한 기능을 수행할 수 없다.