U E D R , A S I H C RSS

Small Talk/강좌From Hitel/강�2

~cpp 
����������������������������������������
 제  목:[강좌] Smalltalk 배우기 #2                                관련�료:없�
 보낸�:김찬�(안드래아)     1998-11-23 10:40  조회:392   1/34
 ───────────────────────────────────────
                           Smalltalk 배우기 #2
                                                    1998. 11. 22. 김찬�
                                               mailto:andrea92@hitel.net
 
         ======================================
         1. Smalltalk� 소개
           1.1. 프로그램과 프로그래� 언어
         →1.2. Smalltalk� 설치
           1.3. Smalltalk 맛보기 프로그램
           ........
         =======================================
 
                           1. Smalltalk� 소개
                      ------------------------------
 
 ───────────────────────────────────────
 1.2. Smalltalk� 설치
 ~~~~~~~~~~~~~~~~~~~~~
 Smalltalk를 사용하여 프로그램�  짜기 위해서는  우선 여러분�  시스템� 
 Smalltalk 환경� 설치�어있어야 합니다.  �단 우리들� Object  Arts사� 
 Dolphin Smalltalk를 사용할 것�므로, �료실�서 Dolphin Smalltalk를  내
 리받�시다.
 
 �래 Dolphin Smalltalk는 �용과 공개용  Smalltalk 환경� 같� 배�하고 
 있습니다. Dolphin Smalltalk 1.1�� 공개용�며, 2.1�� �용입니다.  현
 재 필�가 사용하고 있고 �한 �료실� 올려진 환경� 1.1�입니다. 그러므
 로 여러분� 마�대로 전송 받아서 사용할 수 있� 것입니다.
 
 �래 Object Arts�서 제공하는 배��� 파� �름�  Dolphin981Setup.Exe
 �지만, �료실� 파�명 길� 제한 때문� 위� 실행 파�� 다시 WinZip으
 로 ì••ì•하여 올린 것입니다. 그러므로 Dolphin Smalltalk를 설치하기 위해서
 는 다�과 같� 과정� 거치면 �니다.
 
         1. �료실�서 Dolphin Smalltalk와 Dolphin Education Center를 찾
            아서 내리받으십시오.
         2. 내리받ì�€ 파ì�¼ì�€ zip ì••ì•파ì�¼ì�´ë¯€ë¡œ WinZip 등과 ê°™ì�´ 긴  파ì�¼
            ì�´ë¦„ì�„ ì§€ì›�하는 ì••ì• í”„ë¡œê·¸ëž¨ì�„ 사용하여 ì••ì•ì�„ 푸십시오.
         3. ì••ì•ì�´ 풀리면 실행 파ì�¼ 하나가 나오는ë�°, ì�´ê²ƒì�„ 실행시키십시
            오. �� 풀림 파��므로 실행파�� 실행하면 바로 설치  화면
            으로 넘어갑니다.
         4. 다른 �용 프로그램� 설치할 때처럼 그냥 <Next> 단추를 누르면 
            바로 바로 넘어갑니다. 고칠 사항� 있는 사람��면 알맞게  고
            치면 �니다. 
         5. 설치를 마무리하면 Dolphin Smalltalk� 바로 가기를 시작  메뉴
            � 넣� 것�가를 묻습니다. 여러분� 알아서 하면 � 것입니다.
 
 �렇게 하면 설치� 전 과정� 다 �나게 �니다. 특별히 설정해 줄 것� 없
 기 때문� 매우 쉽게 설치를 할 수 있� 것입니다. 나중� 필요하다면 언제
 든지 Dolphin Smalltalk를 제어�� "프로그램 추가/삭제"를 통해서  제거할 
 수 있습니다.
 Dolphin Smalltalk를  시작하기 위해서는  "시작  → 프로그램  → Dolphin 
 Smalltalk 98"� 가리킨 다� 안� 들어있는 "Dolphin Smalltalk 98" 아�콘
 � 실행하면 �니다. 
 
 ---<잠�!>-----------------------------------------------------------
 처� Dolphin Smalltalk를 설치하여 실행할 때� 화면� 경고 ��가 나타납
 니다. 대강� 내용�, 지금 사용하고  있는 Dolphin Smalltalk는 아�  등� 
 절차를 거치지 않았기 때문� 프로그램� 실행 결과를 저장할 수 없다는  것
 입니다. 저장 기능� 사용하려면 Object  Arts사�서 무료로 배부하는 등� 
 번호를 발급 받아야 하는�, �� 관해서는 조금 뒤� �세히 설명합니다.
 --------------------------------------------------------------------
 
 1.3. Smalltalk 맛보기 프로그램
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 �제 Smalltalk� 설치를 마쳤으므로 설치� Smalltalk 환경� 실행시켜  봅
 시다. 그러면 "Transcript"와 "Workspace"�는 제목� 가진 � 개� 창� 뜰 
 것입니다. � � 개� 창� 모� Smalltalk� 명령어를 실행시킬 수 있는 기
 능� 가지고 있습니다. 그러나 지금  우리가 주목해야 할 창� 'Untitled  - 
 Workspace'�는 �름� 가진 창입니다. � 창�는 아마 "Welcome to Dolphin 
 Smalltalk/98"��는 � 제목과 함께 제법 긴 문장들� 들어 있� 것입니다. 
 � 문장들�는 여러분� Smalltalk 프로그램� 실행하는� �숙해지��, 그
 리고 Smalltalk 프로그래�� 대한 �미를 �낄 수 있�� 짤막한 Smalltalk 
 프로그램들� 실려 있습니다. �제 여기서는  � 창� 들어 있는  Smalltalk 
 프로그램� 실행하고 그 결과를  알아보는 방법� 알아봄으로�,  Smalltalk 
 명령� 실행방법과 Smalltalk 프로그래�� �김새를  어� 정� 파악할 수 
 있게 하겠습니다.
 
 여러분� 보고  있는 Workspace를  "�터"�고 부릅니다.  여기는  여러분� 
 Smalltalk 시스템� 명령� 내리거나, �미 만들어진 프로그램� 결과를  확
 �하는 곳입니다. �터는 '메모장'�나 '워드패드'와 비슷한 �작 방법� 가
 지고 있습니다. 즉 �히 사용하는 �스트 문서 편집기와 비슷한 �작 방�� 
 가지고 있다는 �입니다. 
 
 � 창� 여러분� 마�대로 글� 쓸 수 있으며, ��(block)를 씌워서 한 번
 � 여러 개� 글�들� 복사 �는 ��할 수 있습니다. 단지 �터가 �반 �
 스트 편집기와 다른 ��, �곳�는 Smalltalk� 명령들� 들어가고, �  명
 령� 실행할 수 있다는 것입니다.
 
 �단 마우스나 글쇠�으로 밀대(scroll bar)를 사용해서 아래와 같� 문장� 
 보��� 화면� 아래로 �아 내리십시오.
 
 ----------------------------------------------------------
 "First evaluated  by  Smalltalk in   October 1972, and   by Dolphin  in 
 February 1995. With a bit of luck the answer will be 7."
 3 + 4.
 ----------------------------------------------------------
 
 위� 보�는 문장� Smalltalk�서 실행할 수 있는 명령입니다. � 위�  다
 른 문장들� Smalltalk� 명령� 어떤 방�으로 실행하는 것�지, 그리고 실
 행 결과를 어떻게 얻어낼 수 있는지� 대해서 설명하고 있습니다.
 
 �, �제부터 우리는 Smalltalk 명령� 내려보게 � 것입니다. 방향  글쇠를 
 �용하여 커서를
 
         3 + 4.
 
 가 있는 줄로 ��하십시오. '.' 바로 뒤� 커서를 위치시키는 것입니다.
 
 �제 글쇠��서 <Ctrl-D>를 누르십시오. 그리고 화면� 살펴봅시다. 커서가 
 놓였� �리� ��(block)가 씌워진 "7"��는 글�가 나타났습니다. 
 
 
         3 + 4.  ☞ 7
 
 여기서 ��� 둘러싸� 체로 나타난 "7"� 방금 우리가 실행시킨 명령� 결
 과입니다. "3 + 4"�는 명령� 실행하였�니 "7"��는 결과가 나왔다는  �
 입니다.
 �처럼 Smalltalk�서는 명령� 실행하면 그  결과가 언제나 ��가 씌워진 
 체로 나타납니다. 따�서 � �태�서 바로 글쇠�� <Delete> 글쇠나 <Back 
 Space>글쇠를 �용하여 ��를 지우게 �면, ��가 씌워진 명령� 실행  결
 과� 역시 지워지게 �는 것입니다.
 
 방금 우리가 실행한 명령� 1972년  10월� Smalltalk 시스템�게 처�으로 
 내려진 명령��고 합니다. Object Arts사는  1995년 2월� �사� Dolphin 
 Smalltalk�서 � 명령� 실행했다는군요.
 
 �제 다� 명령� 실행할 차례입니다.
 
         200 factorial.
 
 위� 문장 �� 커서를 갖다 놓고, 앞서 사용했� <Ctrl-D> 글쇠를 사용해서 
 명령� 실행시켜봅시다. 어떻게 �었습니까?
 
 200 factorial. 
 ☞788657867364790503552363213932185062295135977687173263294742533244359
 44996340334292030428401198462390417721213891963883025764279024263710506
 19266249528299311134628572707633172373969889439224456214516642402540332
 91864131227428294853277524242407573903240321257405579568660226031904170
 32406235170085879617892222278962370389737472000000000000000000000000000
 0000000000000000000000  
 
 지금 여러분� 200!, 즉 200� 계승� 구한 것입니다. 정� 어마어마한 �릿
 수ì�˜ 결과가 ì‚°ìœë�˜ì—ˆìŠµë‹ˆë‹¤. 대단하지 않습니까? 아마 C++나 Java 언어ì—�서 
 기본으로 제공하는 기능만으로 위와 같� 결과를 얻으려면 �당한 노력� 필
 요했� 것입니다.
 
 ---<잠�!>----------------------------------------------------------
                                  계승?
 
 계승(階乘, factorial)�란 n� 하나� �연수� 때, 1�서 n까지� 모든 �
 연수� 곱� n� 대하여  �컫는 �입니다(한글학회, 1994,  우리��사전). 
 �를테면 5!는 5x4x3x2x1, 즉 120� �는 것입니다.
 ----------------------------------------------------------
 
 그럼 Smalltalk�서 200!� 구하는� 과연 얼마나 시간� 걸릴까요? 바로 다
 �� 명령� 실행하면 결과를 알 수 있습니다. <Ctrl-D>를 사용하십시오.
 
         Time millisecondsToRun: [200 factorial].  ☞ 1
 
 와우! 200!� 구하는�  1ms정�� 시간밖�  걸리지 않는다고  그러는군요. 
 1ms초는 1000분� 1초�므로, 매우 빠른 ��로 200!� 구할 수 있다는 것� 
 알 수 있습니다.
 좀 � 세밀하게 측정할 수� 있습니다. 다� 명령� 실행해 보십시오. (�제 
 � 명령� 실행하기 위해서는 해당 명령 �� 커서를 위치하고 <Ctrl-D>글쇠
 를 누른다는 것쯤� 기억하고 계시겠지요?)
 
         Time microsecondsToRun: [200 factorial].  ☞ 1024
 
 위� 명령� 200!� 구하는� 걸린 시간� 100만 분� 1초 단위로 구하는 명
 령입니다. 필�� 경우는 약 1024㎲� 시간� 걸렸습니다. 물론 여기서 여러
 분� �접 실행했� 때� 결과는  다를 수 있습니다. � 결과는  시간값�기 
 때문� 명령� 실행하고 있는 컴퓨터�  ��� 매우 민�하게 반�합니다. 
 여기서 중요한 것� �러한 시간값� 아닙니다. 필요하다면 Smalltalk�서는 
 100만 분� 1초 단위로 명령 실행 시간� 측정할 수 있다는 것� 중요한 것
 �지요.
 
 �제 Smalltalk� 내부를 한 번 들여다보겠습니다. Smalltalk 환경�는 많� 
 수� �체(object)가 있으며, �들 �체는 저마다� 갈래(class)� �해  있
 습니다. 아래� 명령� 실행시키면 현재 Smalltalk 환경� 어떤 갈래들� 있
 는지를 한 눈� 알 수 있습니다.
 
         Class allClasses asSortedCollection.
 
 ☞ a SortedCollection(_FPIEEE_RECORD AbstractCardContainer 
 AbstractToTextConverter ACCEL AcceleratorPresenter AcceleratorTable
         ....(중략)....
 DWORDBytes DWORDField EDITSTREAM ... etc ...
 
 �번�� 참 많� 결과가 화면� 표시�었습니다. 그런� 맨 마지막 줄� 보
 십시오. "... etc ..."로 �났습니다. �는 지금 화면� 표시� 것보다 훨씬 
 � 많� 수� 갈래가 존재한다는 �입니다. �한 방금 실행한 명령� 결과를 
 제대로 알아보기가 어려웠습니다. 왜 그랬�까요? 그것� 바로 갈래�  �름
 들� 그냥 줄줄� 늘어놓았기 때문입니다.
 
 지금까지 살펴본 것처럼 Smalltalk�서 어떤  명령� 실행한 뒤�는 언제나 
 결과가 남습니다. 그 중�는 "3 + 4."� 경우와 같� 간단한 결과를 남기는 
 경우� 있지만 지금� 경우처럼 복잡한 결과를 남기는 경우� 많습니다.
 �와 같� 복잡한 결과를 좀 � 쉽게 보기 위해서, 지금까지와는 다른 명령
 � 명령 실행 방법� 준비�어 있습니다.
 
 위�서 내린 명령� 한 번 � 실행해 봅시다. 역시 명령� �� 커서를 놓고 
 글쇠��서 <Ctrl-I>를 누르십시오.  <Ctrl-D>가 아니� <Ctrl-I>�는  �� 
 주�해 주십시오.
 
         Class allClasses asSortedCollection.  ☞ "Inspector 창 열림"
 
 어떻습니까? "Inspecting a SortedCollection"��는 제목� 창� 화면� 나
 타났습니다. 지금 나타난 창� "�체 �색기"(object inspector), 혹� 간단
 히 "�색기"(inspector)�고 부릅니다.
 
 창� 왼쪽�는 self부터 시작하여 몇  개� 항목들� 있으며, 그 밑�는  1, 
 2, 3,...처럼 번호가 매겨져 있습니다. 그리고 오른쪽�는 왼쪽�서  ��� 
 항목� 결과를 표시하는 부분� 있습니다. 처��는 "self"�는 항목� 선�
 �어있� 것�고, 오른쪽�는 방금 우리가 <Ctrl-D>로 명령� 실행했� 때와 
 똑같� 결과가 나타났� 것입니다.
 
 다른 항목들� 내버려�고, 1, 2, 3,...처럼 번호가 매겨진 항목들� ��해 
 봅시다. 그러면 � 항목� 하나씩� 낱�� 오른쪽 창� 보� 것입니다.  �
 것� 지금 Smalltalk 환경�서 사용할 수 있는 갈래(class)입니다. 맨  마지
 막 항목�  �  몇 번입니까?   필�� 경우는 567입니다.   결국 �  ��, 
 Smalltalk 시스템�는 500개가 넘는 갈래가 존재한다는 �입니다.  갈래들� 
 한 번 쭉 훑어보았으면 �제는 열려있는 �색기를 닫으십시오.
 
 계� 명령어를 실행시켜봅시다. 아래� 명령� Smalltalk 환경� �대체  몇 
 개� �체(object)들�  존재하는지를  보여�니다. <Ctrl-I>를  쓰지  �고 
 <Ctrl-D>로 실행하십시오.
 
         Object allSubinstances size.  ☞ 44121
 
 필�� 경우�는 44121개� �체가 있다고 보고�었습니다. 여러분� 경우�
 는 좀 다른 숫�가 나타날지� 모르겠습니다만, 여하튼 현재 �아가고  있는 
 Smalltalk 환경� �어� 4만개가 넘는 �체들� 서로 맡� 바 임무를  수행
 하면서 �고 있습니다.
 
 '�체'니 '갈래'니 하는 �� �소하십니까?  �제부터 �� 명령� �미를 
 파악하기가 어려워집니까? 전혀 신경 쓸 필요가 없습니다. Smalltalk를 공부
 하면서 차차 �세하게 알게 � 것�기 때문입니다. 지금� 단지 Smalltalk� 
 명령� 실행하고 결과를 알아보는 방법�만 초�� 맞춥시다.
 
 지금까지 우리는 몇  가지� Smalltalk 명령�  실행해 보았습니다.  여기서 
 Smalltalk 명령� 실행하는 방법� 대해서  지금까지 알아본 것� 간단하게 
 정리하고 넘어가�� 하겠습니다.
 
         1. 실행해야 할 명령 �� 커서를 놓는다.
         2. <Ctrl-D>글쇠를 입력하면 명령� 실행�고 결과가 나타난다.
         3. 나타난 결과가 지나치게 복잡하면 <Ctrl-I>를 사용하여 "�색기"
            를 통해서 결과를 살펴볼 수 있다.
 
 정리가 �십니까? 아�까지 �해가 잘 안 가시는 분들� 여기서 잠시 휴�� 
 취하십시오. 그리고 처�부터 차근차근 다시 한 번 제 글� 따�가면서 명령
 � 실행시켜 봅시다.
 
 �, 그럼 �제 다�� 명령� 실행시켜보겠습니다.
 
 <바탕글 1> 간단한 디지털 시계
 digitalClockProcess := [[
         Processor sleep: 1000.
         (DesktopView current canvas)
                 font: (Font name: 'Arial' pointSize: 36) bold;
                 text: Time now printString at: 10@10;
                 free
 ] repeat] fork.
 ----------------------------------------------------------
 
 지금까지 우리는 한 줄 짜리  Smalltalk 명령� 실행해 보았습니다.  그런� 
 위� <바탕글 1>� �곱 줄로 �루어진 명령입니다. � 명령� 그럼  어떻게 
 실행할 수 있�까요?
 
 방법� 간단합니다. 위� �곱 줄� 모� ��를 씌우십시오. ��를 씌우는 
 방법�
 
         1. 마우스를 �용하여 �어서 ��를 씌우는 방법.
         2. 명령� 첫 글�� 커서를 놓고, <Shift>를 누르면서 방향 글쇠를 
            �용하는 방법
 
 등� 있습니다. 둘 중�서 여러분� 편리한 것� 골�서 사용하시기  바�니
 다. 어쨌건 중요한 것� 위� �곱 줄�서 한 글�� 빼놓지 �고 ��를 씌
 워야 한다는 것입니다.
 
 ��를 씌웠으면 �제는 앞�서 한 것처럼 <Ctrl-D>를 입력하여 명령� 실행
 시켜 보겠습니다. 어떻게 �었습니까?
 
 <바탕글 1>
 ☞ a Process(a CompiledExpression, priority: 5, state: #ready)
 
 �곱 줄� ��를 씌운 다�  <Ctrl-D>를 누르�마� 위� 결과를  뿌리면서 
 화면 왼쪽 구�� �지막하게 현재  시간� 표시�는 것� 볼 수  있습니다. 
 시간� 나타나는 �리� 다른 그림�  그려지��� 곧 그 그림�  지워지고 
 그 �리� 시간� 나타납니다. 아주 �지막하게 �입니다. 결과�으로 <바탕
 글 1>� 간단한 디지털 시계를 만들어서 화면� 보�는 프로그램�었습니다.
 
 그렇지만 언제나 저렇게 �지막한 시계가 표시�어있으면 때로는 불편할  때
 가 있� 것입니다. �, �제 우리가 방금 표시한 디지털 시계를 없애�� 합
 시다. 다� 명령� 실행하십시오. 한 줄 짜리 명령�므로 ��를 씌울  필요
 는 없습니다. 그냥 명령� �� 커서를 놓고 <Ctrl-D>를 눌러보십시오.
 
         digitalClockProcess terminate. ï¿¢ 
         UserLibrary default invalidate: nil lpRect: nil bErase: true.
         ☞ true
 
 ※ 줄 �� '¬' 표시가 �어 있는 것� 한 줄� 쓸 수 있는 글�수�  제한 
    때문� 어쩔 수 없�  � 줄 ��으로  갈�서 나타낸 것�  �미합니다. 
    그러므로 � 표시가 있다는 것� 바로 다� 줄과 �어서 한 줄임�  나타
    냅니다.
 
 위� 명령� 실행하면 여태� 표시�� 시계는 없어지고 'true'를  결과값으
 로 받게 �니다.
 
 앞서 우리는 � 가지 명령� 실행해 보았습니다. 하나는 <바탕글 1>로�  화
 면� 시계를 보�는 명령�고, 나머지 하나는 �작하고 있는 시계를  멈추어
 서 지우는 명령�었습니다. 그런� � 명령� 실행한 뒤� 나타나는  결과값
 � 무엇�었습니까? 둘 다 사실 우리�게는 별로 쓸모 없는 결과입니다.  우
 리는 시계를 보�고 없애는 것�  중요하지, 실제로 � 명령� 실행�고  난 
 뒤� 어떤 결과를 �터� 표시하는지는 별로 관심� 없습니다.
 
 �럴 때 Smalltalk�서 명령� 실행하는 세 번째� 방법� 있습니다. �것� 
 바로 <Ctrl-E> 글쇠입니다. 명령어를 실행하고  나서 보고�는 결과를 굳� 
 ì�¼í„° 화면ì—� 표시하고ì‹ì§€ 않ì�„ 때 사용합니다.
 
 우리가 방금 실행했� <바탕글 1>과 "UserLibrary"로 시작하는 명령�, �번
 �는 <Ctrl-D> 대신 <Ctrl-E>를 사용하여 실행시켜 보십시오. 한결 깔�하게 
 실행�는 것� 볼 수 있습니다.
 
 �, 다시 한 번 정리합시다. Smalltalk�서 명령� 실행하는 방법�...
 
 ---<정리>----------------------------------------------------------
                         Smalltalk� 명령 실행법
 
 * <Ctrl-D>: 가장 �반�� 형태. 명령� 실행하고 나서 결과를 보�다.
 * <Ctrl-I>: 명령� 실행하고 난 결과가 복잡할 때, 결과값� �색한다.
 * <Ctrl-E>: 명령 실행 ìž�ì²´ì—� ì�˜ë¯¸ê°€ 있고 결과는 무시하고 ì‹ì�„ 때 쓴다.
 ----------------------------------------------------------
 
 ---<다른 Smalltalk>---------------------------------------
 Dolphin Smalltalk가 아닌 다른 Smalltalk 환경� 경우 명령 실행 방법� 다
 를 수 있습니다. �단 �� 대해서는 나중� 명령 실행� 중��으로 다루는 
 마당�서 �세하게 설명할 것입니다.
 ----------------------------------------------------------
 
 �, 그럼 계�해서 Smalltalk가 어디까지 할 수 있는지를 시험해 봅시다. 아
 래 명령ì�€ 여러분ì�´ 듣고ì‹ì�€ ì�Œì„±(wave) 파ì�¼ì�„ 연주해 ì¤�니다.
 
         (Sound fromFile: 'xxxxx.wav') woofAndWait; woofAndWait.
 
 위ì—�서 'xxxxx.wav'를 ìž�ì‹ ì�´ 연주하고 ì‹ì�€ 파ì�¼ ì�´ë¦„으로 바꾸어 주면  ë�©
 니다. 위� 명령 역시 실행� 후� 결과값 보다는 명령 실행 �체가 중요하
 므로, <Ctrl-E>를 사용하여 실행시켜 봅시다. 필�는
 
 (Sound fromFile: 'C:\Windows\Media\Ding.wav') woofAndWait; woofAndWait.
 
 로 고�서 실행해 보았습니다. 여하튼 위� 명령� 우리가 지정한 �성 파�
 � � 번 연주해 주는 �� 합니다. 우와! Smalltalk�서 멀티미디어까지???
 
 다� 명령� �미 프로그래� 언어를 접해본 사람들�게 �미가 있�지� 모
 르겠습니다. 100개� �소를 가진 배열� 만들어 내는 명령입니다.
 
         (1 to: 100) collect: [:i | i].  ☞ #(1 2 ...(중략)... 99 100)
 
 결과가 너무 많습니까? <Ctrl-D>를 사용하지 �고 <Ctrl-I>를 사용하여 �색
 해 봅시다. (배운 것� 잘 �먹는 것� 정� 중요하겠지요?) 위� 명령� 1
 부터 100 까� 수 100개가  들어 있는 배열(array)� 만들어 내는  명령입니
 다. '배열'� 간단히 �해서 번호가 붙� '통'��고 ��하면 �겠습니다.
 
 �, �제 처�보다는 Smalltalk 명령 실행� 많� �숙해졌� 것입니다.  �
 제는 좀 � 부드럽게 진행해 나갈 수 있겠습니다. �, �까지 해 봅시다.
 
 지금� �요��면 TV�서 복권 추첨� 합니다. � 때가 복권� 산 사람들� 
 �비가 엇갈리는 순간�겠지요 아래� 명령� 주�복권� 추첨하여 여섯  개
 � 번호를 담� 배열―앞�서 배열� '번호가 붙� 통'쯤으로 �해하�고 �
 씀드린 것, 기억하십니까?―� 결과값으로 넘겨�니다.
 
         (Random new next: 6) collect: [:n | (n * 49) rounded]. 
         ☞ #(37 48 22 19 22 24 )        "첫 번째 실행"
         ☞ #(4 36 20 37 24 5 )          "� 번째 실행"
         ☞ #(18 43 28 15 41 22 )        "세 번째 실행"
                 ...(중략)...
 
 위� 명령� 실행할 때마다 서로 다른 번호를 나타냅니다. 신기하지 않습니까? 여
 러분ì�´ ì¦�겨하ë�˜ 게임ì—�서 매번 다른 ìƒ�황ì�´ ì—°ìœë�˜ëŠ” 것ë�„ ì�´ì™€ ê°™ì�€ ì›�리가 ì �
 용�었기 때문입니다.
 
 위� 명령� 다 좋지만 한 가지 결�� 있습니다. 가�가다가 � 개 ��� 같� 
 수가 나올 확률� 있다는 것입니다. (첫 번째 실행 결과를 잘 보십시오.) 실제로 
 복권� 추첨할 때�는 같� 숫�가 � 번 �� 나오면 다시 추첨� 합니다. 그래
 서 중복� 수가 나오지 않�� 하는�요... 아래� 명령� 바로 �러한 �리를 그
 대로 �용한 예입니다. 명령� � 줄 ���므로 글쇠��나 마우스로 ��를  씌
 운 후 실행하십시오.
 
 <바탕글 2> 복권 추첨 프로그램
 r := Random new.
 s := Set new.
 [ s size = 6 ] whileFalse: [s add: (r next * 49) rounded].
 s asSortedCollection asArray.
 
 [ 실행 결과
 ☞ #(15 18 21 25 31 39 )        "첫 번째 실행"
 ☞ #(6 11 21 26 27 31 )         "� 번째 실행"
         ...(중략)...
 ----------------------------------------------------------
 
 <바탕글 2>는 단순히 중복� 숫�만 나오지 않는 것� 아니�, 작�  수�서 
 � 수로, 즉 오름차순으로 정렬� 결과를 남�니다. �제 정� 복권 추첨 프
 로그램 같습니까? 
 
 지금까지는 글�들하고만 놀았으므로, �번�는 여러분� 그림 솜씨를  마�
 � 발휘할 수 있는 기회를 드리겠습니다. 다� 명령� <Ctrl-E>를  사용하여 
 실행하십시오.
 
         scribble := Scribble show.
 
 화면� 'a Scribble'��는 제목� 달린 노란색 창� 열릴 것입니다. 주저하
 지 �고 � 창 위� 마우스를 �어서 그림� 그려봅시다. 아주 잘 그려질 것
 입니다. 여러분� 그림 솜씨가 여기�서 드러나겠지요?
 
 그림�� 좀 ��합니다. 아래� 명령� 한 번 실행시켜 보십시오. 방금  여
 러분� 실행했� 명령어� 결과로 만들어진 그림�� 닫지 않�� 하십시오.
 
         EtchASketch showOn: scribble model.
 
 위� 명령� 실행하면 "Etch A Sketch"�는 그림�� 열릴 것입니다. 그리고 
 방금 여러분�  노란색 그림��  그렸� 그림�  그대로 나타납니다.  아마 
 Dolphin Smalltalk를 만든 �국�서는 "Etch-a-Sketch"�는 그림�� 보편�
 으로 사용�고 있나봅니다.
 
 지금 화면�는 노란 그림�과 Etch-aSketch가 떠 있습니다. 둘 중 아무 곳�
 나 여러분� 그림� 그리면 다른 한 쪽� 그것� 바로 반�� �니다. 즉 둘
 � 모양� 서로 다르지만 같�  �료를 공유하고 있습니다. �것�  Dolphin 
 Smalltalk�서 �용 프로그램� 만드는 "MVP 짜임새"� 예를 보여주는  것입
 니다. "MVP 짜임세"� 대해서 공부하려면 아�� 많� 여정� 남았지만,  그 
 때까지 지치지 �고 열심히 합시다.
 
 그림� 다 그렸으면 �제 열려있는 � 개� 그림�� 닫으십시오.
 
 아래 명령� "발�취 창"(walkback window)를 표시하는 명령입니다.  발�취 
 창� 대해서� 나중� �세하게 다루겠지만, 여기서는 단지 프로그램� 어떤 
 �취로 실행�어왔는가를 나타내는 창쯤으로 ��하면 �니다.
 
         self halt.
 
 위�  명령�  실행하면   "발�취 창"�   열립니다.  보통�   경우 그냥 
 <Terminate> 단추를 누르는 것으로 문제가 해결�니다. 만� 다른  프로그래
 �  언어를  공부해  본  사람��면  여기서  <Debug>  단추를  누름으로� 
 Smalltalk 환경� 벌레잡개(debugger)를 구경하실 수 있습니다. 물론 �렇게 
 해서 열린 벌래잡개는 Smalltalk 환경� 들여다볼 수 있는 중요한  �구입니
 다. 그러므로 잘못 다루는 ��  없�� 조심하십시오. 나중� Smalltalk� 
 대해서 어� 정�� 지�� �기면 그 때 벌래잡개� 대해서 깊� 있는 공부
 를 할 수 있� 것입니다. 운전� 못하면서 ��차 뚜껑� 열어서 차를 �그
 러뜨리는 �� 있어서는 안�겠지요? ^^:
 
 다� 명령�  Smalltalk 환경�서  'Dolphin'��는 낱��  �함�  바탕글
 (source code)를 찾아내는 명령입니다. 3MB가 넘는 � 용량� 파�� 뒤져서 
 내용� 찾는 것�기 때문� 몇 십초 정�� 시간� 걸릴 수� 있습니다. 조
 금만 기다리면 'Dolphin'��는 낱�� �함하고 있는 여러 가지� 바탕글들
 � 나타나게 � 것입니다.
 
         SmalltalkSystem current browseContainingSource: 'Dolphin'.
 
 "Containing Source: 'Dolphin'"�란 �름� 붙� 창� � 부분으로  �루어
 져 있습니다. 위쪽� 찾아낸 바탕글� 나타내고, 아래쪽� 해당 글� �세한 
 내용� 표시�는 곳입니다. 과연 Smalltalk 환경�서 Dolphin��는  낱�� 
 몇 번�나 나왔으며, � 어디서 사용�고 있는지를 한 번 살펴보시기 바�니
 다. (참고로 '바탕글'� 명령� �넣� 글��는 뜻입니다.)
 
 �제 마지막 명령입니다. 우리는 지금까지 여러 가지 명령� 실행해 왔는�, 
 �번 명령처럼 ��한 것� 없� 것입니다. 어� 정�로 ��하�고요? �접 
 실행� 해 보십시오. 아래� 명령� 실행해 봅시다.
 
         View destroyAll.
 
 위� 명령� 실행��마� Smalltalk 환경�  열려있� 모든 창� 없어지고 
 "Transcript"�는 �름� 창만 하나 ��  남아 있게 �었습니다. ��하지 
 않습니까? ^^: 
 
 방금 내린 명령ì�€ 주로 Smalltalk 환경ì�„ 깨ë�—ì�´ 하고 ì‹ì�„ 때 사용하는 명
 령입니다. 지금까지 우리는 ë§Žì�€ 명령ì�„ 실행해서 결과를 ìœë ¥í–ˆìœ¼ë¯€ë¡œ 우리
 가 가지고 놀았� ��(?)� 깨�� 하는 것��고 ��하면 �겠습니다.
 
 지금까지 우리는 Smalltalk�서 여러 가지 명령� 실행해 보았습니다.  그리
 고 명령� 어떻게 실행하는지� 대해서� 알아보았습니다. 명령� 실행할 때
 �는 <Ctrl-D>, <Ctrl-E>, <Ctrl-I>� 세 가지 글쇠를 사용한다는 것� 알아
 보았습니다. �한 한 줄 짜리 명령과 여러 줄� 걸친 명령� 실행하는 방법
 � 알아보았습니다.
 
 �제 Smalltalk�서 명령� 내리는 것� 별로 어렵지 않� 거�고  ��합니
 다. 만약 잘 모르겠으면 Smalltalk를 빠져나간 다� 다시 들어와서 �  글� 
 있는 내용� 다시 한 번 따�해 보시기 바�니다.
 
 �제 Smalltalk를 �내야 하는�, 앞서 �씀드렸듯� 저장� 문제가 남아 있
 습니다. Smalltalk를 �낼 때마다 현재 Smalltalk� �태를  저장하겠��고 
 묻게 �니다. 지금� 아� 등� 절차를 밟지 않았으므로 저장�  불가능합니
 다. 오히려 �것� � 잘� ��지� 모르겠습니다. 저장� 안 �다는  �� 
 여러분� 무슨 실수를 하��� 그것� Smalltalk 환경� �향� 주지  않�
 � �미하기 때문입니다. 그러므로 당분간 Smalltalk� �숙해질 때까지  저
 장 기능 없� 연습해 보는 것� �움� � 것입니다. 등� 절차� 관한 것� 
 바로 다�� 설명� 드리�� 하겠습니다.
                                                                 계�...


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:03
Processing time 0.0140 sec