Preface computer programming using gnu smalltalk

From 흡혈양파의 번역工房
Jump to: navigation, search

어제 밟아버린 개미에게
Canol Gökel

서문

컴퓨터는 하드웨어와 소프트웨어로 구성된 기계입니다. 소프트웨어는 하드웨어를 위해 작성된 것이고요. 여러분이 단순히 인터넷만 사용하는 컴퓨터 사용자이거나, 매일하는 작업을 위해 컴퓨터를 사용하는 사람이거나에 관계없이 특정 목적을 위해 프로그래밍 해야 할 때가 있을 것입니다. 여러분은 아마, 컴퓨터가 여러분을 지배하기 전에, 여러분의 컴퓨터를 지배하길 원하는, 호기심 많은 사용자일 것입니다. 프로그래밍은 컴퓨터를 지배하기에서 중요한 부분입니다. 프로그래밍은 몸에 영혼을 불어넣는 것과 같은 작업이니까요. 이 책은 GNU Smalltalk(이하 스몰토크) 프로그래밍 언어를 사용하여 프로그래밍의 기본을 가르쳐주는 책입니다. GNU 스몰토크는 Smalltalk-80 프로그래밍 언어의 구현이며, 일반적으로 사용하는 C나 Java 프로그래밍 언어와는 약간 다른, 스몰토크 언어군의 언어입니다. 그래서 이 책에선 다른 책들과 다른 방법으로 프로그래밍에 접근하도록 하겠습니다.

여러분은 짧게 다른 프로그래밍 책과 비교하는 장들을 볼 수 있을 겁니다. 이유는 두 가지인데, 하나는 저의 게으름 때문이고, 하나는 스몰토크가 작고 모순점이 없는 언어이기 때문입니다. 작기 때문에, 다른 언어에 비해 여러분이 배워야 하는 프로그래밍 개념이 적습니다. 스몰토크는 설계와 개념 수립에 아주 세심하게 신경을 써서 만들었습니다. 모순점이 없기 때문에, 다른 언어에 비해 예외가 적은 편입니다. 이 두 가지 큰 이유 덕분에, 여러분이 100페이지 내의 내용만으로도 이 언어 전체를 익힐 수 있습니다. 위의 내용은 스몰토크로 여러분이 할 수 있는 것을 제한한다는 이야기가 아닙니다. 대조적으로 작은 언어요소 집합과 모순점이 없다는 것이 여러분에게 무한한 유연성을 제공합니다. 오로지 여러분의 상상력만이 한계가 될 뿐이지요. 또한 스몰토크의 가장 강력한 점 중 하나는 대부분의 컴퓨터 외부장치를 사용할 수 있는 강력하고 풍부한 라이브러리입니다. GNU 스몰토크는 여러분의 컴퓨터에 더 많은 도구를 추가하여 줍니다. 하지만, 이 책이 첫 번째 판이고, 스몰토크의 팁을 알려주기 위한 책이기 때문에, 가장 중요하고, 자주 쓰이는 라이브러리의 기능만 기술하고, 스몰토크의 핵심 언어에 대해서만 집중하여 다룰 것입니다.

만약 여러분이 스몰토크를 배우고자 하는, 경험이 풍부한 프로그래머라면, 이렇게 섬세하고 꼼꼼하게 신경써서 만든 언어의 정밀함에 깜짝 놀라게 될 것입니다. Andrew S. Tanenbaum은 “다양한 기능들과 싸우지 마라. 소프트웨어를 안전하고, 신뢰성 있고, 빠르게 만드는 방법은 작게 만드는 것 뿐이다.”라고 말했습니다. 과학자들은 이 격언을 마음에 새겨서 스몰토크를 설계하였습니다.

이 책은 누구를 위한 것입니까?

이 책은 컴퓨터를 사용할 줄은 알지만, 컴퓨터 프로그래밍에 대한 경험이 없는 독자들을 대상으로 설명하고 있습니다. 컴퓨터를 사용할 줄 안다는 의미는 어떻게 파일을 열고, 닫고, 프로그램을 실행하고, 저장할 수 있는지 등의 경험을 가지고 있는 것을 말합니다.

프로그래밍 유경험자들에게 : 우리는 이 상자글을 통해, 다른 프로그래밍 언어 지식이 있는 독자들에게 무언가를 말할 것입니다. 처음 프로그래밍을 접한 독자들은 읽을 필요는 없습니다.

프로그래밍 유경험자들에게 : 이 책은 프로그래밍을 경험한 독자들을 위해서도 사용할 수 있습니다. 실제로 이 책은 여러분이 경험했던 프로그래밍 언어와 상당히 다르기 때문에, 처음 스몰토크를 접한 분들께서는 꼭 읽어야 할 책입니다.

이 책은 어떻게 사용할까요?

만약 여러분이 정말 아무것도 모르는 초보라면, 처음부터 차근차근히 순서대로 읽으시길 권합니다. 그리고 다른 곳에서 참조한 내용의 경우, 뒷 편의 색인을 보고 찾아보시길 바랍니다. 편찬을 할 때, 순서대로 글을 읽을 수 있도록 쓰려고 노력했습니다. 모르는 개념이 나오는 부분을 일부러 미리 볼 필요가 없도록 하기 위해서 입니다. 색인부분을 보기 위해 엄청 많은 페이지를 앞질러 봐야 할 때도 있겠지만, 본문과 관련하여서는 말한대로 순서대로 읽으시면 됩니다. 그리고 예제는 가능한 단순하게 만들었습니다. 불필요한 세부사항 때문에 혼동을 가져오지 않도록 하기 위한 것이며, 동시에 다루고 있는 개념에 대해서만 설명하기 위한 조치입니다.

프로그래밍 언어를 배우는 동안에, 이론으로 배운 내용을 연습하는 것은 상당히 중요합니다. 그래서 새로운 개념을 소개한 후에는 많은 예제를 제공하려고 노력했습니다. 여러분 스스로 코드를 짜고, 프로그램을 실행하는 것이 개념을 이해하는 것이라고 확신할 수 없지만, 계속 학습하기 위한 자신감과 동기부여를 모두 전달 할 것이라고 확신합니다. 또한 각 장에서 프로그래밍 해결 방법을 생각하고 (아마도 적용할 수도 있는) 작은 질문도 넣어 두었습니다. 마지막으로 각 장을 읽고 난 후, 새로운 개념에 대한 여러분의 지식을 더욱 강화할 수 있는 연습문제도 준비해두었습니다. 이 문제들을 꼭 풀어보시길 권장합니다. 답안은 이 책의 색인 B 에서 확인할 수 있습니다.

또한 대부분의 프로그램들은 다음 온라인 주소에서 다운로드 받아 사용할 수 있습니다.

http://www.canol.info/books/computer_programming_using_gnu_smalltalk/source_code.zip

글꼴별 전달 정보

본문 내용 전체에서, 글꼴의 모양을 다르게 하여 설명하는 내용 중 구별해야 하는 부분을 알 수 있도록 글꼴을 사용하였습니다.

일반 본문에는 나눔 명조체를 사용하였습니다. 글꼴 모양이 기울어진 부분은 책에 처음 나왔거나, 정의할 단어를 강조하기 위한 표시입니다. 코드 부분을 다룰 때에는 고정폭 나눔고딕코딩 글꼴을 사용하였습니다. 다루는 부분 중에서 여러분의 입맛대로 다른 코드를 넣어야 하거나, 프로그램의 내용이나, 여러분의 컴퓨터 환경 변수에 맞는 값을 입력할 때에는 기울어진 고정폭 글꼴을 사용합니다. 다루고 있는 소스코드 중에서 의미있는 부분은, 아래와 같이 고구마빛 사각형을 표시해두었습니다. a stand-alone meaningful code 프로그램의 실행 결과를 표시할 때에는 다음과 같이 보랏빛 배경에 표시합니다. Output of a program 프로그램을 실행하는 동안 입력부분은 출력 부분에서 두꺼운 글꼴로 표시합니다. Please enter your name: Canol 키보드 상의 키를 언급할 때에는, <Ctrl>, <Enter>, <Backspace>와 같이 꺾인 괄호 부호 사이에 키 이름을 씁니다. 또한 몇몇 특별한 상자도 있습니다.

주의 : 이 상자는 중요한 세부사항, 추가적인 정보와 제안들을 담고 있습니다.

프로그래밍 유경험자들에게 : 이 상자는 다른 프로그래밍 언어를 알고 있지만 스몰토크를 배우기 위해 이 책을 읽는 사람들에게 주는 힌트를 포함하고 있습니다. 초심자나 경험있는 프로그래머들도 이 상자의 내용을 꼭 이해하거나 읽을 필요는 없습니다.

질문 : 이 상자는 몇몇 특별한 질문을 담고 있습니다. 각 장의 끝 부분에 답이 있습니다.