ComputerProgrammingwithGNUSmalltalk:Preface.0
서문
컴퓨터는 하드웨어와 소프트웨어로 구성된 기계입니다. 소프트웨어는 하드웨어를 위해 작성된 것이고요. 여러분이 단순히 인터넷만 사용하는 컴퓨터 사용자이거나, 매일하는 작업을 위해 컴퓨터를 사용하는 사람이거나에 관계없이 특정 목적을 위해 프로그래밍 해야 할 때가 있을 것입니다. 여러분은 아마, 컴퓨터가 여러분을 지배하기 전에, 여러분의 컴퓨터를 지배하길 원하는, 호기심 많은 사용자일 것입니다. 프로그래밍은 컴퓨터를 지배하기에서 중요한 부분입니다. 프로그래밍은 몸에 영혼을 불어넣는 것과 같은 작업이니까요.
이 책은 GNU 스몰토크(Smalltalk) 프로그래밍 언어를 사용하여 프로그래밍의 기본을 가르쳐주는 책입니다. GNU 스몰토크는 Smalltalk-80 프로그래밍 언어의 구현이며, 일반적으로 사용하는 C나 Java 프로그래밍 언어와는 약간 다른, 스몰토크 언어군의 언어입니다. 그래서 이 책에선 다른 책들과 다른 방법으로 프로그래밍에 접근하도록 하겠습니다.
이 책의 챕터들이 대부분 다른 프로그래밍 책들에 비해서 짧다는 것을 알게 될 것입니다. 이유는 두 가지인데, 하나는 저의 게으름 때문이고, 하나는 스몰토크가 작고 군더더기가 없는 언어이기 때문입니다. 작기 때문에, 다른 언어에 비해 여러분이 배워야 하는 프로그래밍 개념이 적습니다. 스몰토크는 설계와 개념 수립에 아주 세심하게 신경을 써서 만들었습니다. 군더더기가 없기 때문에, 다른 언어에 비해 예외가 적은 편입니다. 이 두 가지 큰 이유 덕분에, 여러분이 100페이지 내의 내용만으로도 이 언어 전체를 익힐 수 있습니다.
위의 내용은 스몰토크로 여러분이 할 수 있는 것을 제한한다는 이야기가 아닙니다. 대조적으로 작은 언어요소 집합과 모순점이 없다는 것이 여러분에게 무한한 유연성을 제공합니다. 오로지 여러분의 상상력만이 한계가 될 뿐이지요. 또한, 스몰토크 최고의 장점 중 하나인 기본 탑재 라이브러리는 당신이 필요한 대부분의 도구를 제공해 줄 것입니다. GNU스몰토크는 (표준 스몰토크가 제공하는) 도구에 더 많은 도구를 제공합니다. 하지만, 이 책이 첫 번째 판이고, 스몰토크의 팁을 알려주기 위한 책이기 때문에, 가장 중요하고, 자주 쓰이는 라이브러리의 기능만 기술하고, 스몰토크의 핵심 언어에 대해서만 집중하여 다룰 것입니다.
만약 여러분이 스몰토크를 배우고자 하는, 경험이 풍부한 프로그래머라면, 이렇게 섬세하고 꼼꼼하게 신경써서 만든 언어의 정밀함에 깜짝 놀라게 될 것입니다. Andrew S. Tanenbaum은 "다양한 기능을 넣으려 하지 마라. 소프트웨어를 안전하고, 신뢰성 있고, 빠르게 만드는 방법은 작게 만드는 것 뿐이다." 라고 말했습니다. 과학자들은 이 격언을 마음에 새겨서 스몰토크를 설계하였습니다.