TheArtandScienceofSmalltalk:Preface

From 흡혈양파의 번역工房
Jump to navigation Jump to search
서문

서문

이 서적은 독자가 스스로 행하도록 돕기 위해 만든 책이다. 독자 중에는 다음 맡을 프로젝트에 스몰토크를 사용할까 고민하는 사람이 있을지도 모른다. 혹은 스몰토크에서 프로그래밍을 막 시작한 사람도 있을 것이다. 아니면 스몰토크에서 프로그래밍을 어느 정도 경험해 왔는지도 모른다. 경험의 수준과 상관없이 스몰토크는 다른 언어들과는 다르다는 사실을 알게 될 것이다. C와 다르고, 심지어 C++와도 다르며, 독자가 사용한 언어 대부분과 다를 것이다. 이러한 차이들이야말로 스몰토크에 생산성과 능력을 부여하여 스몰토크를 유명하게 만들어주지만 그 능력을 스스로를 위해 활용하기 위해서는 이러한 차이들을 어떻게 이용하는지를 알아야만 한다.


스몰토크는 다른 언어들과 비교 시 구문에서만 (언어의 부분들과 그 부분들이 어떻게 어울리는지) 차이가 나는 것이 아니라 프로그래밍 전체적인 철학에서도 차이가 있다. 스몰토크만큼 대화형 프로그래밍 언어는 드물다. 게다가 거의 모든 소스 코드가 프로그래머에게 직접 표시되는 언어는 그보다 더 드물다. 이러한 기능의 조합이 스몰토크를 매우 강력하게 만들지만, 이와 동시 학습하기가 겁이 나게끔 만들기도 한다. 이 책은 학습적 개요보다는 실용적 개요를 제공하여 그러한 과정을 이해하기 쉽게 설명하는 데에 목적을 두었다.


스몰토크에 따라오는 거대한 코드 라이브러리 또한 스몰토크 능력에 핵심 부분이다. 그렇다면 어떤 클래스가 어떤 일을 수행하고, 당신은 어떤 것을 재사용해야 하며, 어떤 것을 서브클래싱해야 할까? 이번 저서에서는 스몰토크에서 효과적으로 프로그래밍을 하기 위해 알아야 하는 사항들을 교육하는 데에 목적을 두었다. 안전하게 무시할 수 있는 시스템의 부분들도 학습할 것이다. 뿐만 아니라, 자신만의 클래스를 디자인하는 방법과 기존에 있는 클래스를 사용하는 방법도 학습할 것이다. 상속을 어떻게, 언제 실행해야 하는지 배울 것이다. 그리고 어떻게 하면 개발 툴을 최상으로 활용하는지, 팀 구성원들 간에 작업을 어떻게 분할하는지도 가르칠 것이다. 무엇보다 스몰토크 스타일을 어떻게 이용하는지 학습하게 될 것이다-매뉴얼을 살펴보지 않고도 자신이 무엇을 알아야 하는지 알아내는 방법을 말이다. 그렇다고 해서 스몰토크의 예술과 과학이 프로그래머들만을 대상으로 한 책은 아니다. 스몰토크를 사용하는 팀의 리더나 관리자들도 이 책에 흥미를 느낄 것인데, 특히 제 2부가 흥미로울 것이다.


이 책은 프로그래밍의 입문을 다룬 책은 아니다. 다른 언어에서 어느 정도 경험이 있다고 가정한다. C, BASIC, Pascal, COBOL, 또는 이와 비슷한 언어에서 경험이 있다면 양호하겠다. 그래픽 사용자 인터페이스(를 이용한 프로그래밍에 익숙할 필요는 굳이 없다)의 사용에도 익숙해야 한다. 마이크로소프트 윈도우, 매킨토시 UI, 또는 X 윈도우 시스템이 훌륭한 예제가 된다.


스몰토크의 예술과 과학은 방법론이 아니다. 문제를 한쪽으로 넣어 스몰토크 코드를 이용해 다른 끝으로 나오게끔 만드는 정의된 과정을 제공하려는 것이 목표가 아니다. 때로는 일을 처리하는 방식에 있어 상반된 견해들이 제시되기도 한다. 당신은 자신만의 특정 상황에서 어떤 철학을 채택할 것인지 결정해야 하지만, 정보가 제공된 결정을 내릴 것이다. 따라서 이 책은 지시적이라기보단 '보조적'이라고 보는 편이 옳다. 사용 지침에 관한 책도 아니다. 하지만 시스템을 시험적으로 이용하도록 초대되고 장려된다. 스몰토크 스타일은 이를 지원하며, 무언가 불분명할 때마다 혹은 자신의 이해를 확인하거나 향상시키고 싶을 때마다 실험을 행하면 된다.


이 책은 스몰토크에 따라오는 문서에 대한 보충서로 취급해야 한다. 매뉴얼은 스몰토크를 어떻게 설치하고 작동시키는지를 알려주고, 다수의 주요 시스템 클래스와 모든 툴에 대해 최신의 상세한 설명을 제공한다. 이 서적에는 객체 지향 프로그래밍(OOP), 스몰토크, 개발 환경의 소개가 포함되어 있긴 하지만, 주요 목적은 툴을 어떻게 활용하는지, 최대 효과를 창출하기 위해 시스템 클래스를 어떻게 사용 및 재사용하는지를 알려주는 데에 있다. 경험을 통해서만 알 수 있는 것들을 알려주는 셈이다.


본 서적에 포함된 지식은 저자와 여러 동료들이 다년간의 스몰토크 프로그래밍에서 얻은 실용적 경험을 바탕으로 한다. 그 중에서 ParcPlace Systems 에서 VisualWorks 라는 (그리고 기존에 있던 ObjectWorks \ Smalltalk) 이름으로 판매하는 스몰토크 버전에 적용된다. 하지만 논의 대부분은 가장 기본적인 원칙과 클래스와 관련되므로 이 부분은 다른 스몰토크에도 광범위하게 적용할 수 있다.


스몰토크에 관한 지식은 세 가지 유형으로 나뉜다. 첫째, 언어, 기본적 개념, 핵심 클래스에 관한 기본 지식이 있다. 둘째, 스몰토크 '스타일', 또는 프로그래밍의 철학에 관한 지식이 있다. 셋째, 나머지 클래스 계층구조의 세부 사항에 관한 상세한 지식이 있다. 이 책은 두 가지 부분으로 나뉜다. 첫 번째 부분은 스몰토크의 과학으로, OOP 의 입문뿐만 아니라 스몰토크 시스템에서 가장 중요한 툴과 클래스를 소개한다. 첫 번째 지식 유형을 도와줄 것이다. 두 번째 부분 스몰토크의 예술은 그러한 클래스와 툴을 어떻게 최선으로 사용할 수 있는지에 집중한다. 두 가지 유형의 지식을 합하면 세 번째 지식을 얻도록 도와줄 것이다-즉, 완전한 코드 라이브러리의 상세한 기능을 이해하는 것이다.


스몰토크 시스템은 거대하고 복잡하므로 학습하고 익숙해지는 데에 어느 정도 시간이 걸린다. 하지만 이 책에서 제공하는 단순한 충고만 따른다면 곧 스몰토크의 이익을 즐길 수 있을 것이다. 시스템 클래스를 적절하게 이해하면 코드의 재사용 기회도 증가할 것이다. 시스템의 흐름에 반하지 않고 그 흐름을 따르기 때문에 유지가 쉽고 이해가 쉬운 프로그래밍을 작성할 수 있을 것이다. 스몰토크로 작업하는 작은 팀 구성원들을 최선으로 구성하는 방법도 알게 될 것이다. 무엇보다 어떤 것을 이해할 수 없을 때 어떤 행동을 취해야 하는지를 알 것이다. 즉, 스스로를 도울 수 있을 것이다.


인쇄 규칙

대부분의 컴퓨터 서적과 마찬가지로 메인 텍스트에서 컴퓨터 문자식을 구분하기 위해 몇 가지 활자체 규칙을 사용한다. 스몰토크 클래스, 메서드 또는 표현식이 작성된 곳에선 다음과 같이 표기된다: MyObject display. 반대로 팝업 메뉴나 버튼으로부터 명령을 나타낼 때는 다음과 같이 표시된다: implementors.


감사의 말

이 책에 실린 많은 기본 개념들은 브리스톨의 HP Labs에 근무 중인 동료들 및 친구들과 함께 나눈 토론에서 가져온 것이다. 그 외 많은 사람들이 책의 원고가 준비되는 동안 원고를 읽고 다양한 부분에 평을 해주었고, 또 어떤 이들은 책을 쓰는 동안 필요로 했던 도움을 제공하고 격려를 해주기도 했다. Richard Brown, Janet Bruten, Dave Clarke, Enrico Coiera, Richard Dykema, Leo Grondin, Caroline Knight, Wendy Odium, Siani Pearson, Jo Reid, Brenda Romans, Steven Scott, David Stephenson, Kristen Stevenson, Viki Williams 외에도 언급하진 않지만 많은 분들이 도움을 주셨다. 이 모든 분들께 진심으로 감사의 말씀을 전하는 바이다.


Notes