~cpp Smalltalk 배우기 #3 1998. 11. 25. 김찬홍 mailto:andrea92@hitel.net ====================================== 1. Smalltalk의 소개 1.1. 프로그램과 프로그래밍 언어 1.2. Smalltalk의 설치 1.3. Smalltalk 맛보기 프로그램 →1.4. 몇 가지 준비해야 할 것들 1.4.1. Dolphin Smalltalk 등록하기 1.4.2. 바탕본 여벌 받기 1.4.3. 글꼴 설정하기 ........ ======================================= 1. Smalltalk의 소개 ------------------------------ 1.4. 몇 가지 준비해야 할 것들 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 지금까지 우리는 Smalltalk를 시작하고 끝내는 방법과 함께, Smalltalk 명령 을 실행하는 방법에 대해서 알아보았습니다. 이제 여기서는 여러분이 앞으로 Smalltalk 공부를 계속 진행하기 전에 준비해야 할 몇 가지 사항에 대해서 다루어보도록 하겠습니다. 1.4.1. Dolphin Smalltalk 등록하기 --------------------------------- 이제까지 우리는 Dolphin Smalltalk를 사용하면서 저장 기능을 사용할 수 없 었습니다. 이는 우리가 아직 등록 절차를 거치지 않았기 때문입니다. Object Arts사(社)는 공개용으로 사용할 수 있는 Dolphin Smalltalk 98 / 1.1판을 배포하면서, 그를 사용하는 사람들이 무료로 등록번호를 발급 받아서 사용하 도록 하고 있습니다. 이는 Dolphin Smalltalk를 사용하는 사람들이 어떤 계 층인지, 그리고 이 사람들이 어떤 것을 원하는지를 조사하기 위한 수단이라 고 생각합니다. 또한 사용자 지원을 위해서도 필요한 사항이라고도 합니다. 등록은 무료입니다. 그러므로 인터넷을 사용할 수 있는 사람이라면 바로 등 록 절차를 거칠 수 있습니다. 앞서 말한 대로, 등록을 하려면 Object Arts사에서 발급하는 등록 번호를 받 아야 합니다. 등록 번호를 발급 받는 방법은 WWW(World Wide Web) 페이지를 사용하는 방법과 전자 우편(e-mail)을 사용하는 방법이 있습니다. 1) WWW를 사용하는 방법 Dolphin Smalltalk를 시작합니다. 그런 다음 File > Exit Dolphin 메뉴를 실 행시켜서 Dolphin Smalltalk를 종료합니다. 이 때 현재 Smalltalk의 상황을 저장하겠느냐고 묻는데, 이 물음에 <예>라고 대답합니다. 그러면 "Locked Image"라는 제목이 붙은 창이 열릴 것입니다. 여기서는 왜 등록을 해야 하는 지, 그리고 어떻게 등록을 해야 하는지가 설명되어있습니다. 여기서 Username 입력 상자에 여러분의 영문 이름을 넣습니다. 그러면 창 아 래에 있는 라는 단추를 누를 수 있게 될 것입니다. 인 터넷에 연결되어있는지 확인하고 이어서 이 단추를 누르면 Object Arts사의 "등록 페이지"로 이동하게 될 것입니다. 이 페이지에는 몇 개의 입력 항목이 있습니다. 간단하게 이 항목들에 대해서 설명합니다. * Product: 사용하고 있는 Dolphin Smalltalk의 종류. 우리는 1.1판을 고르 면 되겠지요? * First Name: 여러분의 이름을 넣습니다. 저의 경우는 ChanHong Kim으로 표 기되므로, First Name에는 ChanHong을 입력하면 됩니다. * Last Name: 여러분의 성씨를 넣습니다. 저의 경우에는 Kim이겠지요? * Stree Address: 우리의 경우에는 시/군, 구/읍면, 동, 번지로 주소를 쓰지 만 외국의 경우는 거꾸로 입니다. Street Address에는 여러분의 동 이름 과 번지수를 씁니다. 저의 경우라면 2288-3, DaeMyung 3 Dong, Nam-Gu 쯤으로 임력하면 되겠지요? * City: 여러분이 사는 도시를 입력합니다. 저는 대구랍니다. Taegu. * State: 미국의 경우는 주를 입력합니다만, 우리는 비워둡니다. * Zip Code: 여러분의 우편번호를 넣습니다. 700-234. * Country: 우리의 자랑스런 "Korea"를 선택합니다. * E-mail: 여러분의 전자우편 주소를 입력하면 됩니다. * Where did you hear about this product? Dolphin Smalltalk에 대해 처음어로 접한 매체를 고릅니다. * Previous experience of Smalltalk? 이전에 Smalltalk를 사용한 경험을 묻고 있습니다. * Intended use of this product? Dolphin Smalltalk를 어떤 목적에 사용할 것인지를 묻습니다. * How many attempts did it take you to download this software?: Dolphin Smalltalk를 몇 번만에 전송받았는지를 묻습니다. * Image Code: 여기에 "Locked Image" 창에 표시된 Image code를 넣습니다. * Usrname: "Locked Image" 창에 입력한 여러분의 Username을 입력합니다. (반드시 일치해야 합니다.) 여기까지 항목의 입력이 끝나면 이제는 아래의 단추를 누릅니다. 그러면 Image Code와 그에 해당하는 Password를 발급 받게 됩니다. "Locked Image" 창에 방금 받은 Password를 입력하면 등록 절차가 끝나게 됩니다. 현 재 여러분이 설치한 Smalltalk에 대해서는 Username과 Password가 그대로 사 용될 수 있으므로, 다음부터는 등록 절차를 거칠 필요가 없습니다. 등록 절차를 마치면 이제부터 여러분의 컴퓨터에 설치되어 있는 Dolphin Smalltalk는 저장 기능을 사용할 수 있게 설정됩니다. 이제 여러분이 Smalltalk에서 실행한 모든 것을 저장할 수 있습니다. 2) 전자우편을 사용하는 방법 WWW를 사용하기 어렵거나 인터넷을 사용하기 어려운 분들은 전자우편을 이용 하면 등록번호를 발급 받을 수 있습니다. 수신: support@object-arts.com 제목: password 내용: Username과 Image code. 위의 형식대로 편지를 보내게 되면 곧 여러분의 사서함으로 등록 번호가 동 봉된 편지가 도착할 것입니다. 이렇게 해서 발급받은 password를 (1)과 마찬가지로 입력하게 되면 Dolphin Smalltalk가 등록판이 됩니다. 일단 등록판이 생성되면 모든 기능을 제한 없이 사용할 수 있습니다. 1.4.2. 바탕본 여벌 받기 ----------------------- Smalltalk를 끝낼 때 여러분은 현재 Smalltalk의 상태를 그대로 저장했다가 나중에 Smalltalk를 실행할 때 똑같이 복원할 수 있습니다. 예를 들어, 여러 분은 저번 "1.3" 마디에서 Smalltalk로 만들어진 디지털 시계를 본 적이 있 을 것입니다. 이제 저장 기능을 사용할 수 있는 여러분의 Dolphin Smalltalk 에서 아래의 명령을 글쇠를 사용하여 실행해서 다시 한 번 디지털 시계를 표시해 봅시다. <바탕글 1> Smalltalk로 만든 디지털 시계 ---------------------------------------------------------- digitalClockProcess := [[ Processor sleep: 1000. (DesktopView current canvas) font: (Font name: 'Arial' pointSize: 36) bold; text: Time now printString at: 10@10; free ] repeat] fork. ---------------------------------------------------------- 여전히 화면에 큼지막한 디지털 시계가 표시되고 있을 것입니다. 이제 File > Exit Dolphin 메뉴를 사용해서 Dolphin Smalltalk를 끝내봅시다. 이 때 Smalltalk는 현재의 상태를 저장하겠느냐고 묻습니다. <예>를 선택하십시오. 그러면 Smalltalk의 실행이 끝나면서 여태껏 잘 돌아가던 시계가 멈춘 것을 볼 수 있습니다. 시계를 돌리던 Smalltalk 환경이 끝났기 때문에 당연히 멈 춘 것이지요. 이 상태에서 시계를 지우려면 현재 화면을 다시 그려줘야 합니 다. Windows의 바탕 화면이 표시되어있다면 글쇠를 눌러서 바탕 화면을 다시 그려줄 수 있습니다. 이제 다시 Smalltalk를 실행시켜 봅시다. 어떻게 되었습니까? Smalltalk가 실행되자마자 여러분이 입력한 <바탕글 1>과 함께 디지털 시계가 다시 움직 이기 시작했습니다. 즉, 여러분이 이전에 Smalltalk를 끝낸 상태를 그대로 유지하고 움직이는 것입니다. 신기하지 않습니까? 이야기를 더 진행하기 전에 다음의 명령을 로 실행시켜서 돌아가는 시계를 멈춥시다. digitalClockProcess terminate. UserLibrary default invalidate: nil lpRect: nil bErase: true. Smalltalk에서는 모든 것이 객체(object)입니다. 우리는 Smalltalk언어를 객 체지향적 언어라고 말합니다. 따라서 Smalltalk에서 모든 것은 객체라는 사 실이 그리 놀랄만한 일은 아닙니다. 그러나 C++나 Delphi 또는 Visual Basic 등 다른 개발 환경을 사용하던 사람이라면 Smalltalk의 객체가 살아있다는 사실을 간과하기 쉽습니다. 보는 바와 같이, Smalltalk의 모든 객체는 살아 있습니다. 그리고 이는 Smalltalk를 종료할 때 그대로 저장되었다가 나중에 Smalltalk 환경이 시작되면 제 상태를 유지하면서 계속 움직입니다. Smalltalk를 끝낼 때에는 현재의 상태를 그대로 기록해 둡니다. 여기서 '현 재의 Smalltalk 상태'를 "본"(image)이라고 부르고, 이러한 본을 저장해 두 는 것을 "본을 뜬다"고 말합니다. 본에는 Smalltalk 환경에서 살아서 돌아가 는 모든 종류의 객체들이 저장되어 있습니다. Smalltalk 환경은 결국 4만여 개의 객체가 어루러져서 돌아가는 곳이므로,'본'에는 Smalltalk의 모든 상태 가 기록되는 것입니다. 그러므로 '본'은 매우 중요한 것입니다. 그야말로 여 러분이 만들어 놓은 모든 것은 '본'에 저장됩니다. 그러므로 Smalltalk를 종 료할 때에는 반드시 "본"을 떠 두도록 합시다. 그래야만 나중에 Smalltalk 환경이 다시 시작될 때 이전에 뜬 본을 그대로 가지고 와서 객체들을 재생시 킬 수 있기 때문입니다. 결국 "본"은 시간이 흐름에 따라 자꾸 자꾸 변한다는 것을 알 수 있습니다. 때로는 새로운 객체가 만들어지기도 하고, 이미 있던 객체가 없어지기도 하 면서 말이지요. 그런데 만약 여러분이 실수로 Smalltalk에서 꼭 필요한 어떤 객체를 지웠다고 생각해 봅시다(물론 이러한 일을 Smalltalk가 묵묵히 지켜 보고 있지는 않습니다. 몇 번의 경고 과정을 거치지요.). 그럼 어떻게 되살 릴 수 있겠습니까? 사실 방법이 없습니다. 지우기는 쉬워도, 그렇게 해서 한 번 지워진 객체는 다시는 복구시킬 수가 없기 때문입니다. 이것이 여러분이 Smalltalk를 설치한 후에 바로 생성되는 '바탕본'(base image)을 한 벌 떠 두어야 하는 이유입니다. 그래야만 만일의 경우에 발생하는 문제를 예방할 수 있는 것입니다. 자, 이제 그럼 어떻게 하면 바탕본을 여벌 받아둘 수 있는지를 알아봅시다. Dolphin Smalltalk가 설치된 폴더를 열어보면 다음과 같은 파일이 있음을 알 수 있습니다. Dolphin.chg Dolphin.img Dolphin.sml 이 세 개의 파일이 여러분이 여벌(back up)을 받아야 하는 파일들입니다. 위 의 파일들을 여벌 받아서 다른 곳에 각각 복사해 두면, 만일 여러분의 실수 로 지워지거나 바뀐 Smalltalk 환경을 되돌릴 수 있을 것입니다. 필자의 경 우 위의 세 파일을 압축하여 따로 보관합니다. 적어도 일 주일에 한 번은 위 의 파일을 여벌 받아두는 것이 매우 좋습니다. (필자는 하루에 한 번 씩 여 벌을 받습니다만...) 그럼 위의 파일들이 각각 무슨 역할을 하는지 간단하게나마 설명을 하도록 하겠습니다. * Dolphin.sml 이 파일은 Dolphin Smalltalk 바탕본의 바탕글(source code)입니다. 여기에 는 기본적으로 Object Arts사에서 만들어 놓은 Smalltalk 환경을 이루고 있 는 모든 구성요소에 대한 바탕글이 실려 있습니다. 용량이 3MB가 넘습니다. * Dolphin.img 이 파일은 Dolphin Smalltalk의 '본'(image)입니다. 앞서 말했지만, 이 본에 는 Smalltalk의 모든 객체들의 상태가 저장되어있습니다. 그래서 다음에 Smalltalk 환경이 다시 실행되면 여기에 저장되어있는 객체들이 재생되어 활 동을 시작하는 것입니다. * Dolphin.chg 이 파일은 '변경 기록 파일'(change log file)이라고 부릅니다. 이 파일 안 에는 여러분이 Smalltalk에서 실행한 모든 명령이 기록됩니다. 새로운 객체 를 만든다 거나 이전에 있던 객체를 지운다거나 하는, 여러분의 모든 동작이 이 파일에 기록되어 있습니다. 다시 말하면 바탕본이 어떻게 변해왔는지를 이 파일에 기록해 두는 것입니다. 여기서 여러분이 궁금해하는 점이 있을지도 모르겠습니다. 바로 본은 무엇이 고, 바탕글은 무엇이냐는 것입니다. 즉 '본'이 있는데 왜 따로 바탕글이 필 요한가가 궁금할 것입니다. '본'에는 객체의 상태가 기억되어 있습니다. 그리고 '바탕글'은 이러한 본에 들어가는 객체를 만들기 위한 명령들이 들어 있습니다. 비유를 들어보면, '본'은 집이고 '바탕글'은 설계도입니다. 설계도대로 만들면 한 체의 집이 생깁니다. 그러므로 집이 있고 그 집을 만들기 위한 설계도가 있는 것입니 다. 마찬가지로 '본'에는 무수히 많은 객체들이 있고, 이 객체들을 만들기 위한 명령은 바탕글에 들어있습니다. 바탕글에 있는 명령을 사용하면 객체를 만들 수 있는 것이고, 이 결과가 바로 '본'에 저장되는 것입니다. 우리가 맨 처음에 3 + 4. ☞ 7 이라고 했는데, 이 간단한 명령도 객체를 만드는 일을 합니다. 즉 '3'과 '4' 라는 객체를 가지고 '7'이라는 새로운 객체를 만들었기 때문입니다. '7'이라 는 객체를 만들기 위해서 "3 + 4."라는 명령을 한 것이고, 이 결과 생겨나는 것이 "7"이라는 객체입니다. 여기서 "3 + 4."는 바탕글이 되는 것이고, '7' 은 그 결과(=본)가 되는 것입니다. 이제 '본'과 '바탕글'의 차이를 아시겠습 니까? 여하튼 Dolphin Smalltalk에서 여러분은 위에서 늘어놓은 세 개의 파일을 반 드시 여벌 받아 놓아야만 합니다. 그리고 여러분이 Smalltalk 환경으로 작업 을 해 나가면서 중간 중간에 여러분만의 본을 떠 두는 것이 좋습니다. 여벌 받기는 아무리 강조해도 지나치지 않으니까요. ---<잠깐!>---------------------------------------------------------- Dolphin Smalltalk가 아닌 다른 Smalltalk 환경에서는 필자가 설명한 것과 다른 방식으로 '본'을 관리할 수 있습니다. 그러나 Smalltalk는 기본적으로 본에 모든 상태를 저장하고, 다음에 Smalltalk 환경이 다시 실행되면 본에 기록된 것을 불러와서 쓴다는 것은 변함이 없습니다. ---------------------------------------------------------- 1.4.3. 글꼴 설정하기 -------------------- Dolphin Smalltalk는 기본적으로 영어권에 맞도록 설정되어 있습니다. 따라 서 한글 Windows에서 사용하는 기본 글꼴인 '굴림'으로 글꼴 설정을 바꾸어 줄 필요가 있습니다. Dolphin Smalltalk의 Tool > Options > Default Font... 메뉴를 사용하여 기 본 글꼴을 '굴림'으로 설정해 놓으면 이 후부터 Smalltalk는 기본적으로 굴 림체의 글꼴을 사용할 것입니다. ('굴림'과 '굴림체'는 다른 글꼴이므로 반 드시 '굴림'을 선택합시다.) 이제부터 여러분이 설정하는 것은 모두 Smalltalk의 본에 반영이 됩니다. 그 러므로 다음부터 Smalltalk를 시작하면 기본 글꼴이 적용될 것입니다. 지금까지 우리는 Dolphin Smalltalk를 등록하고, 바탕본을 여벌 받고, 기본 글꼴을 설정하는 방법을 익혔습니다. 이제 이를 바탕으로 하여 Smalltalk 환 경을 정비해 두면, 이 뒤로는 Smalltalk 공부에 많은 도움이 될 것입니다. 마지막으로 한 마디만 더 하겠습니다. "여벌 받기"는 아무리 강조해도 지나 치지 않습니다! :) 계속...