<aside> 🖋 편집자 주 Forth에 대해 관심을 가지게 된 결정적인 계기의 글. 1987년에 쓰여진 글을 90년대에 번역했기 때문에 전반적으로 컴퓨터 환경이 지금과는 비교할 수 없이 열익했다. 1바이트, 1싸이클리 중요하던 시대였고, 여러 컴퓨터 언어가 혼재하다 보니 '나 이런 거 잘해. 너는 못하지?' 식의 도발이 여기저기서 이루어지던 시기였다. (살짝 중2병 스럽기도...) 최대한 고원용 님의 원문을 보존하려고 했으나 글의 맥락과 편집 등의 여건이 맞지 않아 수정된 부분이 있다. 특히 제목 체계가 정돈되지 않아 찾아보기에 어려움이 따른다. 그래서 원문에 없는 제목을 달 때에는 지금 문단처럼 본문과 다른 형식을 사용하였다.

</aside>

포스의 장점을 설명한 프로그래머의 글이다. 부디 이 글을 읽고 포스를 쓰지 않는 프로그래머들에게 (프로그래머에게 포스를 써 보도록 영향을 미칠 수 있는 사람에게는 누구나) 이 글을 권했으면 좋겠다. 그리고 이글을 읽고 난 당신의 생각과 당신이 이 글에서 찾은 잘못을 반드시 내게 알려 주기 바란다. Roy Brunjes 71310,1427

Why is FORTH so great?

(왜 포스가 그렇게 대단한가?)

내가 지금까지 접해 본, 흔히 쓰이는 프로그램 언어 중에 포스(Forth)만큼 강력하고 내맘대로 바꿀 수 있는 언어는 없다. 어떻게 내가 이렇게 건방지고 일방적인 선언을 할 수 있느냐고? 나는 내 경험이 그렇다고 이야기하는 것이다. 당신은 아마 내가 다른 언어로는 프로그램을 하나도 짜 본 적이 없고 따라서 위 말은 귀담아 들을 필요가 없다고 생각할지 모른다. 그렇지 않다.

나는 펜실베니아 주립대학 전산학과를 졸업했다. 그 후 6 년 동안 취직해 있는 동안 많고 많은 프로그램 언어를 보았고 여러 가지 컴퓨터 언어로 프로그램을 짰다. 그 언어들에 대한 내 생각은 아래와 같다. 흘낏 보고 당신은 이렇게 말할지 모른다: "이 사람은 프로그램 언어 X를 써 본 적이 없고 X는 이렇게 좋은 점들을 많이 가지고 있기 때문에 이 사람의 말은 귀담아 들을 가치가 없다." 거기에 대한 내 대답은 이렇다.

프로그래머가 문법, 번역기(compiler)를 비롯하여 연산자와 자료형을 포함한 모든 것을 바꾸고 늘릴 수 있는 언어는 포스밖에 없다. 다른 모든 언어는 작든 크든 간단하든 복잡하든 번역기가 고정되어 있다. 오직 번역기를 만든 사람만이 번역기의 내부 작용과 언어를 바꿀 수 있다. 처음 나온 번역기에 어떤 기능이 없어서 번역기 X의 다음 버전을 기다린 적이 있는 사람이 하나둘이 아닐 것이다. 포스에서는 그런 일이 없다. 필요할 때 필요한 기능을 언제든지 당신이 포스에 더할 수 있다.

언어 별 특징

포트란(FORTRAN)

수를 다루는데는 좋지만 그밖에는 없는 것이 너무 많다. 많은 사람들이 여러 번 개선을 했지만 사용자 정의 자료형도 없고 내가 쓰기에는 부족하다.

PL/I

한동안은 계산 기능과 사무용 자료 처리 기능이 비교적 균형있게 갖춰진 언어라고 생각했었다. 그래도 사용자 정의 자료형을 쓰기에는 불편하다. 나쁜 언어라고 할 수는 없지만 계속 읽다 보면 왜 포스가 훨씬 나은지 보게 될 것이다.

파스칼(Pascal)

자료형을 쉽게 만들 수 있고 만든 프로그램을 읽을 수 있어서 오랫 동안 가장 즐겨 쓰던 언어였다. 시간이 지나자 자료형을 까다롭게 따지는 것이 오히려 거치적거리기 시작했다. 파스칼에서는 자료형을 만들고 사용할 수 있지만 번역할 때 모든 이름과 연산의 자료형이 결정되어야 한다. 그래서 자료형이 까다롭다고 (strong typing) 하는 것이다.

까다로운 자료형의 장점은 자료형을 잘못 사용할 가능성이 작다는 것이다. (예를 들어 두 문자를 더하기는 매우 어렵다.) 대부분의 경우 그런 시도는 프로그래머의 실수이다. 하지만 프로그램을 짜다 보니 필요한 때도 있었는데 파스칼은 기를 쓰고 그걸 막았다. 가변 레코드(variant record)를 써서 돌아갈 수 있지만 매우 불편하고 비효율적 이다. 그나마 포인터(pointer)로 덧셈 뺄셈을 하려면 이 방법도 소용이 없다. 포인터를 쓰는 것도 완전하지 않다.

APL

APL은 매우 강력한 언어이다. 내가 본 언어 중 구문이 가장 간결하다. 문제는 원시 코드(source code)가 너무 간결하다는 것이다. 한두 줄 짜리 프로그램도 쓴지 한달이 지나면 이해하기가 쉽지 않다. APL에 나름대로의 장점이 있지만 범용 프로그램 언어로는 부적당하다.