~cpp
Smalltalk์ ๋ํ ๋ช ๊ฐ์ง ์ด์ผ๊ธฐ
98. 11. 16. ๊น์ฐฌํ
mailto:andrea92@mail.hitel.net
์ด ๊ธ์ Smalltalk๋ผ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ๋ช ๊ฐ์ง ์ค์ํ ์ด์ผ๊ธฐ๋ฅผ ๋ด๊ณ
์์ต๋๋ค. Dolphin Smalltalk 98์ ๋ง๋ Object Arts๋ผ๋ ํ์ฌ๊ฐ ์ด "Dolphin
Smalltalk White pager"์ ๋ด์ฉ์ ์ ๊ฐ ์๊ฐํ ๊ฒ์ ๋ช ๊ฐ์ง ๋ง๋ถ์ฌ์ Smalltalk
์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ์์ํด ๋ณด๋ ค ํฉ๋๋ค.
์ฌ์ค Smalltalk์ ๊ดํ ๊ตญ๋ด์ ์๋ฃ๋ ๋งค์ฐ ๋น์ฝํ ํธ์
๋๋ค. ์ด์ํ๊ฒ๋ ์ฐ๋ฆฌ
๋๋ผ์์๋ C/C++์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ฃผ๋ฅ๋ฅผ ์ด๋ฃจ๊ณ ์์ผ๋ฉฐ, ์์ฆ์์ Delphi
์ Visual Basic๋ ์ ์ ๊ทธ ์ค์๋๋ฅผ ๋ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ์ ๊ฐ์ฒด์งํฅ ํ
๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์กฐ์์ด์ ์๊ฒฐํ์ด๋ผ๊ณ ํ ์ ์๋ Smalltalk์ ๋ํ ์๋ฃ๋ ๊ฑฐ
์ ์ฐพ์๋ณด๊ธฐ ์ด๋ ต์ต๋๋ค. ์ด๋ ์์ฉ Smalltalk ์์คํ
์ ๊ฐ๊ฒฉ์ด ๋ง๋ง์น ์์ผ๋ฉฐ,
Smalltalk๋ฅผ ์ ์ฐ ๊ต์ก ๊ธฐ๊ด์์ ๋ณ๋ก ์ค์ํ์ง ์๊ฒ ์ฌ๊ธฐ๊ณ ์๊ธฐ ๋๋ฌธ์ด๊ธฐ๋ ํฉ
๋๋ค.
๊ทธ๋ฌ๋ 90๋
๋์ ๋ค์ด์๋ฉด์๋ถํฐ ํ๋ฅญํ ๊ณต๊ฐ์ฉ Smalltalk ์์คํ
์ด ๋ง์ด ๋ฐฐํฌ๋
๊ณ ์์ผ๋ฉฐ, ํ์๊ฐ ์๋ฃ์ค์ ์ฌ๋ฆฐ Dolphin Smalltalk ์ญ์ ๊ทธ๋ฐ ํ๋ฅญํ ๊ฐ๋ฐ ํ
๊ฒฝ์ ์ํฉ๋๋ค.
์ด์ ๋ฏธ์ฝํ๋๋ง ์ ๋ Smalltalk์ ๊ดํ ์๋ฃ๋ฅผ ์กฐ๊ธ์ฉ ํ๋ฟ๋ ๋๋ก ์ฌ๋ฌ๋ถ์๊ฒ
์๊ฐ์์ผ ๋๋ฆด ๊ฒ์
๋๋ค. ๋ฌผ๋ก ํ ๋ฒ์ ๋ง์ ์์ ๋๋ฆฌ์ง๋ ๋ชปํ๊ฒ ์ง๋ง, ์์ผ๋ก
์ฌ๋ฆฌ๋ ์๋ฃ๊ฐ ์ฌ๋ฌ๋ถ์ด Smalltalk๋ฅผ ๊ณต๋ถํ๋๋ฐ ์์ด์ ์์ผ๋๋ง ๋์์ด ๋์์ผ
๋ฉด ํ๋ ๋ฐ๋จ์
๋๋ค.
๋จผ์ Smalltalk ์ธ์ด์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์๊ฐ๊ณผ ์ฒ ํ์ ๊ฐ๋จํ ์๊ฐํฉ๋๋ค. ํํ๋ค
Smalltalk์ ๋ํด ๊ฐ์ง๊ธฐ ์ฌ์ด ์คํด๋ค ๋ํ ์ฌ๊ธฐ์์ ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ทธ๋
์ Smalltalk ์ธ์ด๋ ๋ฐฐ์๋ณผ ๋งํ ๊ฐ์น๊ฐ ์๋ค๋ ๊ฒ๊ณผ ์ถฉ๋ถํ ์ค์ ์์ฉ
(application) ํ๋ก๊ทธ๋จ์ ๋ง๋๋๋ฐ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์๋ ค๋๋ฆฌ๊ณ ์ ํฉ๋
๋ค.
1. ๊ฐ์ฒด์งํฅ, ๊ทธ๋ฆฌ๊ณ Smalltalk
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
90๋
๋ ์ด์๋ ๋จธ์ง์์ ๋ฌด๋ฅธ๋ชจ(software)๋ ๊ฐ์ฒด(object)์ ๋ถํ(component)๋ฅผ
์ฌ์ฉํ์ฌ ๋ง๋ค์ด์ง ๊ฒ์ด๋ผ๋ ์ด์ผ๊ธฐ๊ฐ ๋ฌด์ฑํ์ต๋๋ค. ๊ณผ์ฐ ์ค๋๋ ๋ง์ ๋ฌด๋ฅธ๋ชจ๋ค
์ด ๊ฐ์ฒด์ ๋ถํ์ผ๋ก ๋ง๋ค์ด์ง๊ณ ์์ผ๋ฉฐ, COM์ด๋ CORBA์ ๊ฐ์ด ๊ฐ์ฒด์ ๋ถํ์ ์ค
์ํ๋ ์ฌ๋ฌ ๊ฐ์ง ๊ธฐ์ ๋ค์ด ๊ฐ๋ฐ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. 80๋
๋ ์ด๋ฐ์ ๋ฑ์ฅํ์ฌ ๋ฌด
๋ฅธ๋ชจ ๊ฐ๋ฐ์ ํ๋์ ์ปค๋ค๋ ์ฌ๊ฑด์ด ๋์ด๋ฒ๋ฆฐ "๊ฐ์ฒด ์งํฅ"(Object Oriented) ํจ๋ฌ
๋ค์์ ์ค๋๋ ์ ์์๋ ์ฌ์ค์ ๋ฌด๋ฅธ๋ชจ์ ๋ชจ๋ ์์ญ์ ์ ์ฉ๋๋ ํจ๋ฌ๋ค์์ด ๋์ด
๋ฒ๋ ธ์ต๋๋ค.
์ด์ ๋ ์ด๋ป๊ฒ ํ๋ฉด ์ง ์ข์ ๋ฌด๋ฅธ๋ชจ๋ฅผ ๋ณด๋ค ๋นจ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ๋ง์ด ๋ง๋ค ์ ์๋๋์
๋๋ถ์ด ์ฌ์ฉ์์ ์๊ตฌ์ ๋ฐ๋ผ ๋ฌด๋ฅธ๋ชจ๋ฅผ ์ผ๋ง๋ ์ฝ๊ฒ ์ ์ง.๊ด๋ฆฌํ ์ ์๋๋๊ฐ ์ค
์ํ ๋ฌธ์ ๋ก ๋๋๋์์ผ๋ฉฐ, ๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์์ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ํ
๋์ ๋์์ ์ ์ํด ์ฃผ์์ต๋๋ค.
์ค๋๋ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ C++, Java, Object Pascal ๋ฑ์ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ
์ด์ ๊ฐ์ฒด ์งํฅ ํจ๋ฌ๋ค์์ ์ ์ฉ์ํจ ์ข์ ์๋ผ๊ณ ํ ์ ์๊ณ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด
๋ฌํ ์๋๋ค์ ๊ธฐ์กด์ ์กด์ฌํ๋ ํจ๋ฌ๋ค์ ์์ ๊ฐ์ฒด ์งํฅ ํจ๋ฌ๋ค์์ ๋ง์์ด ๊ฒฐ
๊ณผ๋ฅผ ์ด๋ํ์ฌ, ํ์ ์ด์์ผ๋ก ๋ณต์กํ ์ธ์ด ๋ช
์ธ๋ฅผ ๋ง๋ค๊ฒ ๋์์ผ๋ฉฐ, ๊ธฐ์กด์ ๊ตฌ
์กฐ์ ํ๋ก๊ทธ๋๋ฐ ์ต๊ด์ ์ต์ํ ์ฐ๋ฆฌ๋ค์๊ฒ ๊ฐ์ฒด ์งํฅ ๊ธฐ๋ฒ์ ๊ตฌํํ ์ ์๋ ์
๊ฐ์ ์ฌ์ ๋ฅผ ํ์ฉํ์ง ์์์ต๋๋ค. ์ฌ๋๋ค์ ์์ ์ด ์ด๋ฏธ ์๊ณ ์๋ ๋ฐฉ์๋๋ก ํ
๋ก๊ทธ๋๋ฐ์ ํ๊ณ , ๋ฐ๋ผ์ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ก ๋ง๋ค์ด์ง ํ๋ก๊ทธ๋จ์ด ์ ํ ๊ฐ์ฒด์งํฅ
๋ต์ง ์์ ํ๋ก๊ทธ๋จ์ด ๋๊ณ ๋ง ๊ฒ์
๋๋ค. ๊ทธ๋์ ์ ๋ ์์ํ๊ฒ ๊ฐ์ฒด์งํฅ์ ์ธ ๊ด
์ ์์ ๋ฌธ์ ๋ฅผ ๋ฐ๋ผ๋ณด๋ ๊ฒ์ด ์ด๋จ๊น ํ๊ณ ์๊ฐํ๊ฒ ๋์์ผ๋ฉฐ, ๊ทธ๋์ ์ฐพ์๋ด๊ฒ
๋ ๊ฒ์ด ๋ฐ๋ก Smalltalk ์ธ์ด์
๋๋ค.
1980๋
๋ ์ด๋ฐ์ ์ฒ์ ๋ชจ์ต์ ๋๋ฌ๋ธ Smalltalk ์์คํ
์ ๋น์์ ๋ฌด๋ฅธ๋ชจ ์์ํ
(software community)์ ์ํด ๋งค์ฐ ์ค์ํ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์ผ๋ก ์ฌ๊ฒจ
์ก๊ณ , Smalltalk์ ์ธ์ด ๋ช
์ธ๋ ๋ค๋ฅธ ๋ชจ๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ฃ๋๊ฐ
๋์์ต๋๋ค. ๋ํ Smalltalk ํ๊ฒฝ์์ ์ฌ์ฉ๋๋ ๋ง์ ๊ฐ๋
๋ค์ด ์ฐ๋ฆฌ๊ฐ ํ์ฌ ์ฌ์ฉ
ํ๊ณ ์๋ Delphi๋ Visual Basic ๋ฑ์ ์ ์ฉ๋๊ณ ์๋ ๊ฒ์ผ๋ก ๋ณผ ๋, ์ด๋ฌํ ๊ฐ
์ฒด์งํฅ์ ์ธ ํ๊ฒฝ์ ๋งค์ฐ ๋์ ์์ฐ์ฑ์ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๋ ์ข์ ์๋ผ
๊ณ ํ๊ฒ ์ต๋๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ Smalltalk๋ ๋ฒ์ฉ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก์จ ์ฌ์ฉ๋๊ธฐ์๋ ๋ช ๊ฐ์ง
์ ์ฅ๋ฒฝ์ ๊ฐ์ง๊ณ ์์์ต๋๋ค. Dolphin Smalltalk๋ ์ด๋ฌํ ์ฅ๋ฒฝ๋ค์ ๋ฐ์ด๋์ด์
๋ง์นจ๋ด Smalltalk๋ ํ๋์ ํ๋ฅญํ ๊ฐ๋ฐํ๊ฒฝ์ด ๋ ์ ์๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๊ณ ์์ต
๋๋ค. ์ด๋ ๋น๋จ Dolphin Smalltalk๋ง์ด ์๋๋ผ, ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์๋ VisualAge
for Smalltalk๋ Visual Smalltalk ๋ฑ์ ํ๊ฒฝ์๋ ๋๊ฐ์ด ์ ์ฉ๋๊ณ ์์ผ๋ฉฐ, ๋ฐ๋ผ
์ ์ด๋ฌํ ์ฅ๋ฒฝ๋ค์ ๋ถ๋ช
ํ ํด๊ฒฐ๋ ์ ์๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค.
์ด์ ํํ ํ๊ฐ๋๊ณ ์๋ Smalltalk์ ๋ํ ์ฅ๋ฒฝ๋ค์๋ ์ด๋ค ๊ฒ์ด ์๋์ง ์์๋ณด
๊ฒ ์ต๋๋ค. ๋๋ถ๋ถ Smalltalk์ ๋ํ ํ๊ฐ ์ค์๋ ์คํดํด์ ๋น๋กฏ๋ ๊ฒ๋ค์ด ๋ง์ผ
๋ฉฐ, ์ด๊ฒ์ด Smalltalk๊ฐ ๋ฒ์ฉ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก์จ ์ฐ์ด๋๋ฐ ํ๋์ ์ปค๋ค๋ ์ฅ๋ฒฝ
์ด ๋์๋ ๊ฒ์
๋๋ค.
2. Smalltalk๋ ๋๋ฆฌ๋ค
~~~~~~~~~~~~~~~~~~~~~
1981๋
8์์ ์ถ์๋ "Smalltalk-80"์ ์ฒซ ๋ฒ์งธ๋ก ์ถ์๋ Smalltalk ์์คํ
์ผ๋ก
์จ ํฐ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์์ต๋๋ค. ์ด Smalltalk-80์ด ์ ๋๋ก ๋์๊ฐ๋ ค๋ฉด ์ค๋ํ
๊ธ ๋ฏธ๋์ปดํจํฐ ์ด์์ ์ฑ๋ฅ์ ๊ฐ์ง ์์คํ
์ด ํ์ํ์ต๋๋ค. ์์ฆ์ ์๋ฌด๋ ์ง๋
์๊ฒ ์ฌ์ฉ๋๊ณ ์๋ ์ ์ผ๋ก ์ด๋ฃจ์ด์ง ๊ทธ๋ฆผ(bitmap graphic)๊ณผ ๊ทธ๋ํฝ ์ฌ์ฉ์ ํ
๊ฒฝGUI), ๋ชจ๋ ๊ฒ์ด ๊ฐ์ฒด์ด๋ฉฐ ์ด ๊ฐ์ฒด๋ค ๊ฐ์ ์กด์ฌํ๋ ์์์ฑ, ๊ทธ๋ฆฌ๊ณ ๊ธฐ์ต ๊ณต๊ฐ
์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ ์ฐ๋ ๊ธฐ ์์ง(garbage collection) ๋ฑ ์ฒ์
Smalltalk์์ ์๊ฐ๋ ์ด๋ฌํ ๊ฐ๋
์ ๊ตฌํํ๊ธฐ ์ํด์๋ ๊ทธ ๋น์๋ก์จ๋ ๋งค์ฐ ๋
์ ์ฌ์์ ์์คํ
์ด ํ์ํ๋ ๊ฒ์
๋๋ค. ๋น๋ก ์ด๋ฌํ ๊ธฐ๋ฅ๋ค์ด ๊ฐ์ธ์ฉ ์ปดํจํฐ
(PC)์์ ๊ตฌํ๋ ์๋ ์์๊ฒ ์ง๋ง, 80๋
๋์ ๋๋ฆฌ ์ฌ์ฉ๋๋ PC์์ ๋์๊ฐ๋
Smalltalk๋ฅผ ์๊ฐํ๋ค๋ฉด? ์๋ง ๋ช
๋ น์ด ํ๋๋ฅผ ์ํํ๋๋ฐ ์กฑํ ๋ช ์ญ์ด๋ ๊ฑธ๋ฆด
๊ฒ์ด ๋ปํ์ ๊ฒ์
๋๋ค.
๊ทธ๋ฌ๋ ์ง๊ธ์ ๋ค๋ฆ
๋๋ค. ๋ฌด๋ฅธ๋ชจ(hardware)๋ ๋๋ถ์ ์๋๋ก ๋ฐ์ ํ์ฌ, ํ์ฌ ์ฐ
๋ฆฌ๊ฐ PC๋ก ์ฐ๊ณ ์๋ ํํฐ์๊ธ์ ์ปดํจํฐ๋ ๊ณผ๊ฑฐ 80๋
๋์ ์ฐ์ด๋ ๋ํ ์ปดํจํฐ์
์ฑ๋ฅ์ ํจ์ฌ ๋ฐ์ด๋๊ณ ์์ต๋๋ค. ๋ํ ๋ฌด๋ฅธ๋ชจ ์ญ์ ๋ง์ด ๋ฐ๋ฌํ์ฌ ๊ฐ์ ์์คํ
์ผ
์ง๋ผ๋ ๋ณด๋ค ํจ์จ์ ์ธ ์ํ ์ฑ๋ฅ์ ๋ณด์ฅํ ์ ์๊ฒ ๋์์ต๋๋ค. ์ด์ ๋น๋ก์
Smalltalk๋ 486DX 66 ์ ๋์ ์์คํ
์์๋ ์ถฉ๋ถํ ์ ๋์๊ฐ ์ ์๊ฒ ๋์์ผ๋ฉฐ,
ํํ ์ฐ๋ฆฌ๋ค์ด ์ฌ์ฉํ๊ณ ์๋ ํํฐ์๊ธ ์ปดํจํฐ์์๋ ๋์ฑ ๋ ์ต์ ์ ์ฑ๋ฅ์ ๋ฐ
ํํ๊ณ ์์ต๋๋ค.
์๋์ ๋ํด์ ์ด์ผ๊ธฐํ ๋ ์ํ ์๋(running performance)์ ๋๋ถ์ด ๋น ์ง ์
์๋ ๊ฒ์ผ๋ก๋ ๊ฐ๋ฐ ์๋๊ฐ ์์ต๋๋ค. ์์ฆ๊ณผ ๊ฐ์ด ์
๋ฌด ์ฒ๋ฆฌ ์๊ตฌ๊ฐ ๋ณต์กํ ๊ฒฝ
์ฐ์๋ ํด๋น ๊ธฐ๋ฅ์ ์ํํ๋ ๋ชจ๋ฅธ๋ชจ ์ญ์ ๋งค์ฐ ๋ณต์กํ๊ฒ ๊ตฌ์ฑ๋ ์ ๋ฐ์ ์์ต๋
๋ค. ์ด์ ๋ '์ธ๋งํ๋ค'๊ณ ์๊ฐ๋๋ ํ๋ก๊ทธ๋จ์ ๋๋ฌ๋ณด๋ฉด ๊ทธ ๋ฉ์น๊ฐ ์ด๋ง์ด๋งํ๊ฒ
๋น๋ํด์ ธ์์์ ๋ณผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ํ๋ก๊ทธ๋จ์ด ์ผ๋งํผ ๋น ๋ฅด๊ฒ ์คํ
๋๋๊ฐ๋ ์ค์ํ๊ฒ ์ง๋ง, ์ผ๋งํผ ๋นจ๋ฆฌ ์ด๋ฌํ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์๋๋์ ๋ํ
๊ฒ๋ ์๋นํ ๊ด์ฌ์ ๋์์ด ๋๊ณ ์์ต๋๋ค. ์ฌ๋ฌ๋ถ์ ๊ฐ๋ฐํ๋๋ฐ 6๊ฐ์์ด ๊ฑธ๋ฆฌ
๊ณ , ์คํํ๋๋ฐ 3๋ถ์ด ๊ฑธ๋ฆฌ๋ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ, ๊ฐ๋ฐํ๋๋ฐ 3๊ฐ์์ด ๊ฑธ๋ฆฌ๊ณ ์คํํ๋
๋ฐ 6๋ถ์ด ๊ฑธ๋ฆฌ๋ ๊ฐ๋ฐ ํ๊ฒฝ์ด ์๋ค๋ฉด, ์ด๋ ์ชฝ์ ์ ํํ๊ฒ ์ต๋๊น? ์๋ง ๋๋ถ๋ถ์
๊ฒฝ์ฐ ํ์๋ฅผ ์ ํํ ๊ฒ์
๋๋ค. ์ผ๋จ ๋น ๋ฅธ ์๊ฐ ์์ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐ์ ๋๋ด ๋
์ผ๋ฉด, ๋จ๋ ์๊ฐ์ ํ๋ก๊ทธ๋จ์ ์ํ ์๋ ํฅ์์ ์ํด ์ถฉ๋ถํ ํ ์ํ ์ ์๊ธฐ ๋
๋ฌธ์
๋๋ค.
Smalltalk๊ฐ ๋ฐ๋ก ๊ทธ๋ฌํ ์์คํ
์
๋๋ค. ๋ถ๋ช
ํ ๋ช ์ค ์ ๋๋ ๋ฐ๋ณต ์ํ๋ฌธ
(loop)์ ์ํ ์๊ฐ์ ์ธก์ ํ๋ฉด Smalltalk๋ ๋๋ฆฌ ์ฐ์ด๋ ๋ค๋ฅธ ์ธ์ด(C, Object
Pascal ๋ฑ)๋ค๋ณด๋ค ๋๋ฆฐ ๊ฒ์ ์ฌ์ค์
๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ Smalltalk๊ฐ ์ ๊ณตํ๋
์์ฐ์ฑ๊ณผ ์ตํต์ฑ์ ์๊ฐํ๋ฉด ์ถฉ๋ถํ ํฌ์๋์ด์ง ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. Java ์ธ
์ด ๋ํ ๊ฒฐ์ฝ C ์ธ์ด์ ๊ฐ์ ์๋๋ฅผ ๋ด๊ธฐ๋ ์ด๋ ต์ต๋๋ค. ๊ทธ๋ฌ๋ Java๊ฐ ๊ฐ์ง๊ณ
์๋ ํน์ฑ๋ค์ ์ถฉ๋ถํ ๋ง์ ์ฌ๋๋ค์ด Java์ ๋น ์ ธ๋ค๋๋ก ๋ง๋ค๊ณ ์์ต๋๋ค.
Smalltalk๋ ํฐ ์์คํ
์ ์ค๊ณํ ๋ ์ง๊ฐ๋ฅผ ๋ฐํํฉ๋๋ค. ๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์์ด๋ผ
๋ ๊ฒ์ด ์๋๋ ๊ฐ๋จํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ๋ณด๋ค๋ ํฐ ์์คํ
์ ์ด๋ป๊ฒ ํ๋ฉด ์ฝ๊ฒ ์ค
๊ณํ๊ณ ๋ง๋ค ์ ์๋๊ฐ์ ์ด์ ์ ๋ง์ถ์๊ธฐ ๋๋ฌธ์
๋๋ค. C์์๋ ๋์ด ์ค๋ก ๋๋
ํ๋ก๊ทธ๋จ์, C++์ ๊ฐ๋(class)๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์ค๋ก ์งฐ๋ค๊ณ ํด์, C++ ์ธ์ด๊ฐ C
๋ณด๋ค ๋ชปํ๋ค๋ ์ฌ๋์ ์์ ๊ฒ์
๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, Smalltalk ์ธ์ด๋ ํฐ ์์คํ
์ ์ค๊ณํ๊ณ ๊ฐ๋ฐํ๋๋ฐ ๋์ฑ ๋ ๋ง์ ํ์ ๋ํ๋
๋๋ค. ์ด๋ ๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์
์ ๋ฐ๋ฅด๋ ๋ฐ์ ์ค๋ ๋ช
ํํ ์ค๊ณ ๋๋ฌธ์ ๊ฐ๋ฅํ ๊ฒ์
๋๋ค.
Dolphin Smalltalk์ Delhi์์ ์์์๊ฐ 200๋ง๊ฐ์ธ ๋ฐฐ์ด ๋ณ์์์ ์ด๋ค ๊ฐ์ ์ฐพ
์๋ด๋ ์คํ์ ํ์ต๋๋ค.
<๋ฐํ๊ธ 1> 200๋ง๊ฐ์ ๋ฐฐ์ด์์ ํน์ ์์๋ฅผ ์ฐพ๋ Delphi ํ๋ก๊ทธ๋จ
----------------------------------------------------------
var
Data: array[1 .. 2000000] of Integer;
procedure TForm1.Button1Click(Sender: TObject);
var
i, Key: Integer;
begin
// ๋ฐฐ์ด ์ด๊ธฐํํ๊ธฐ
for i := 1 to High( Data ) do
Data[i] := i * 2;
Key := 6500000; // ์กด์ฌํ์ง ์๋ ๊ฐ.
for i := 1 to High( Data ) do
begin
if Data[i] = key then
begin
ShowMessage( IntToStr(i) );
Exit;
end;
end;
ShowMessage('๋ชป ์ฐพ์');
-----------------------------------------------------------
<๋ฐํ๊ธ 2> 200๋ง๊ฐ์ ๋ฐฐ์ด์์ ํน์ ์์๋ฅผ ์ฐพ๋ Smalltalk ํ๋ก๊ทธ๋จ
-----------------------------------------------------------
| data key |
"๋ฐฐ์ด ์ด๊ธฐํํ๊ธฐ"
data := Array new: 2000000.
1 to: data size do: [ :i | data at: i put: i * 2. ].
key := 6500000. "์กด์ฌํ์ง ์๋ ๊ฐ"
1 to: data size do: [ :i |
(data at: i) = key ifTrue: [
^MessageBox notify: i displayString
]
].
MessageBox notify: '๋ชป ์ฐพ์'.
-----------------------------------------------------------
์์ ๊ฐ๋จํ ๋ฒค์น๋งํฌ ์คํ์์, Object Pascal์ ์ฌ์ฉํ๋ Delphi์ ๊ฒฝ์ฐ๋ ์ค
ํํ๋๋ฐ 0.5์ด๋ ์์๋์ง ์์๋ฐ ๋นํด, Smalltalk์ ๊ฒฝ์ฐ๋ ์ฝ 5์ด์ ์๊ฐ์ด
๊ฒฝ๊ณผํ์ต๋๋ค. ์ด์ ๊ฐ์ด 32๋นํธ์ ์์ ํ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญ๋๋ ๋ฒ์ญํ ์ธ์ด์ ๊ฐ
์ฒด์งํฅ ์ธ์ด์ธ Smalltalk์์ ๋จ์ ๋ฐ๋ณต๋ฌธ ์คํ ์ฑ๋ฅ์ ๋งค์ฐ ํฐ ์ฐจ์ด๋ฅผ ๋ณด์์ต๋
๋ค. ์ด ๋น๊ต๋ฅผ ๋ณด๊ณ ์ค๋งํ๋ ์ฌ๋ฌ๋ถ์ด ๊ณ์๋ค๋ฉด, ์ฌ๋ฌ๋ถ์ด Smalltalk์ ๋ํด์
์ด๋ ์ ๋ ์์๊ฐ ๋๊น์ง, ๊ทธ ์ค๋ง์ ์ ์ ์ ์ด๋๊ธฐ๋ฅผ ๊ถํฉ๋๋ค. ์ ๋ง,
Smalltalk์๋ ์ฌ๋ฌ๋ถ์ด ์ง๊ธ๊น์ง ์๊ฐํ์ง ๋ชปํ๋ ์์ ๊ฐ์ฒด์งํฅ์ ์๋ฆฌ๊ฐ ์จ์ฌ
๊ณ ์์ผ๋ฉฐ, ์ด๊ฒ์ ์ฌ๋ฌ๋ถ์ ๋ฌด๋ฅธ๋ชจ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ํฌ๊ฒ ๋จ์ถ์์ผ ์ค ๊ฒ์
๋๋ค. ์ด
๋จ์ํ ์คํ ๋๋ฌธ์ Smalltalk์ ๋ํ ๊ณต๋ถ๋ฅผ ์ค๋จํ์ ๋ค๋ฉด, ์ฌ๋ฌ๋ถ์ ํฐ ๊ฒ์
์ป์ ์ ์๋ ๊ธฐํ๋ฅผ ์๋ ๊ฒ์ด๋ผ๊ณ , ๋ค์ ํ ๋ฒ ๋ง์ ๋๋ฆฝ๋๋ค. (๋ฌผ๋ก ํ์๋
์ฒ์ ์ด ์คํ์ ํด ๋ณด๊ณ Smalltalk์ ๋๋ฆฐ ์๋์ ์ข ์ค๋ง์ ํ์ง๋ง, Smalltalk
์๋ ๊ณผ์ฐ ๋ค๋ฅธ ์ธ์ด๊ฐ ์ ๊ณตํ์ง ๋ชปํ๋ Smalltalk๋ง์ ๊ทธ ๋ฌด์์ด ์จ์ด์์ต๋๋ค.
๋ถ๋ช
ํ!)
์์ธ๋ฌ, ์์ ์์ ๊ฐ์ด ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ๋ ์ค์ ํ๋ก๊ทธ๋๋ฐ์์ ๊ทนํ ๋๋ฌธ ์ผ์ด๋ผ
๋ ๊ฒ์ ์ฐธ๊ณ ๋ก ๋ง์ ๋๋ฆฝ๋๋ค. Smalltalk์ ์๋ ๋๋ฌธ์ ์ค๋งํ์ค ๋ถ์ด๋ผ๋ฉด
PowerBuilder๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์์ ๋ฅผ ๋ง๋ค์ด ๋ณด์๊ธฐ๋ฅผ ๊ถํฉ๋๋ค. ๋ํ ํ์ฌ
Smalltalk๋ ์คํ ์๋๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํ์ฌ ๋ง์ ์ฐ๊ตฌ๊ฐ ์ด๋ฃจ์ด์ง๊ณ ์๋ค๋ ๊ฒ๋
์ฐธ๊ณ ๋ก ๋ง์๋๋ฆฝ๋๋ค. ์ ์ด๋ ์คํ ์๋์ ๋ฌธ์ ์ ์์ด์ Smalltalk๋ JAVA์ ๊ฐ
์ ๋ฌธ์ ๋ฅผ ์๊ณ ์๋ค๊ณ ๋ณด์๋ฉด ์ดํด๊ฐ ๋น ๋ฅผ ๊ฒ์
๋๋ค.
3. Smalltalk๋ ๋ฐฐ์ฐ๊ธฐ ์ด๋ ต๋ค
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
์ด ๋ง์ ํ๋ฆฐ ๋ง์
๋๋ค. Smalltalk์ ์ธ์ด ๋ช
์ธ ์์ฒด๋ ๊ทธ ์ด๋ฆ์์ ๋งํด์ฃผ๋ฏ์ด
๋งค์ฐ ์์ผ๋ฉฐ, ๋ฐ๋ผ์ C++๋ Java์ธ์ด์ ๊ฐ์ด ์ธ์ด ๋ช
์ธ์ ๋ฌธ๋ฒ์ด ๋ณต์กํ ์ธ์ด์
๋นํด ์ตํ ๊ฒ์ด ๊ทนํ ์ ์ต๋๋ค. ์ด ์ฌ์ค์ ๋ณ๋ก ๋๋ผ์ธ ๊ฒ์ด ์๋๋ฐ, Smalltalk
์ธ์ด๋ฅผ ์ค๊ณํ Xerox์ฌ์ ์ฐ๊ตฌ์๋ค์ ์์ด๋ค์ด ์ฝ๊ฒ ๋ฐฐ์์ ์ฌ์ฉํ ์ ์๊ณ , ์ฝ
๊ฒ ํ๋ก๊ทธ๋๋ฐ์ ์งค ์ ์๋ ์์คํ
์ ๊ฐ๋ฐ์ ์๋ ๋ชฉํ๋ก ์ผ๊ณ ์์๊ธฐ ๋๋ฌธ์
๋
๋ค. ์ค์ ๋ก Smalltalk ์ธ์ด๋ฅผ ๊ณต๋ถํ ์ง ๋ ๋ฌ์ด ๋๋ ์ด๋ฑํ๊ต 5ํ๋
ํ์์ด ํฌ
๋ฆฌ์ฝฅํฐ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ ์ํ๋ค๋ ์ฌ์ค์ด Smalltalk ์์คํ
์ด ๋งค์ฐ ๋ต๋ค๋ ๊ฒ์
์ฆ๋ช
ํด ์ค๋๋ค(์๊ฐ ๋ง์ดํฌ๋ก์ํํธ, ์ ๋ณด์๋).
์ด๋ฐ ์คํด๋ ์๋ง ๋ค์์ ๋ ๊ฐ์ง ์์ญ์์ ๊ธฐ์ธํ ๊ฒ์ผ๋ก ์๊ฐ๋ฉ๋๋ค.
์ฐ์ , Smalltalk ์ธ์ด๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ ์ธ์ด๋ค์ ๋นํด์ ๋งค์ฐ ๋ค๋ฅด๋ค๋ ๊ฒ์
๋
๋ค. C++๋ Java์ ๊ฐ์ด ์ธ์ด ๋ช
์ธ์ ๋ฌธ๋ฒ์ด ๋งค์ฐ ๋ณต์กํ์ฌ, ๊ทธ๊ฒ์ ์ตํ๋๋ฐ ์
๋นํ ์๊ฐ์ ์๋นํ๋ ์ฌ๋๋ค์ ๋ช ๊ฐ์ง๋ ์ ๋๋ ๊ฐ๋
์ผ๋ก ์ด๋ฃจ์ด์ง Smalltalk
์ ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ์ ์ ์ํ๊ธฐ๊ฐ ์ด๋ ค์ธ ์๋ ์์ ๊ฒ์
๋๋ค. Smalltalk ์ธ์ด๋ "๊ฐ
์ฒด์๊ฒ ์ง์๋ฅผ ๋ด๋ฆฌ๋ฉด, ๊ฐ์ฒด๋ ๊ทธ ์ง์์ ๋ฐ๋ผ ๋ฐ์ํ๋ค"๋ ๊ฐ๋
์ ํ ๋๋ก ๋ฌธ๋ฒ
์ ํ์ฑํด ๋์๊ฐ๋๋ค. ์ฆ ๋ค๋ฅธ ์ธ์ด์ฒ๋ผ ๋ฌธ๋ฒ์ ๊ท์ ์ง๋ ๊ฒ์ด ์๋๋ผ, ๊ฐ์ฒด์
๊ฒ ๋ณด๋ด๋ ์ง์๊ฐ ์์ฐํ Smalltalk์ ๋ฌธ๋ฒ์ ์ด๋ฃจ๋ ๊ฒ์
๋๋ค. ์ด๋ ํก์ฌ ์ธ๊ฐ
์ ์ธ์ด ์ฒด๊ณ์ ๋น์ทํ๋ค๊ณ ํ ์ ์์ต๋๋ค. (๋ฌธ๋ฒ์ด ๋จผ์ ์๊ธด ๊ฒ์ด ์๋๋ผ ๋ง
์ ํ๋ค ๋ณด๋ ๊ฑฐ๊ธฐ์ ๋ฌธ๋ฒ์ด ํ์ฑ๋ ๊ฒ์
๋๋ค.)
๋์ฑ์ด Smalltalk ์ธ์ด์ ๋ฐํ๊ธ(source code)์ ๋ณด๋ฉด ๋ค๋ฅธ ์ธ์ด๋ค๊ณผ ๊ทธ ๋ชจ์์ด
๋งค์ฐ ๋ค๋ฆ์ ์ ์ ์์ต๋๋ค.(<๋ฐํ๊ธ 1>๊ณผ <๋ฐํ๊ธ 2>๋ฅผ ๋น๊ตํด ๋ณด์ญ์์ค) ๊ทธ๋ฌ
๋ ๋ชจ์์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ด๋ ต๊ฒ ๋ณด์ผ ๋ฟ์
๋๋ค. ์ค์ ๋ก Smalltalk์ ๋ช ๊ฐ์ง ๊ฐ
๋
์ ์๊ณ ๋๋ฉด ๋ฐํ๊ธ์ ๋งค์ฐ ์ฝ๊ฒ ์ฝ์ ์ ์์ต๋๋ค.
Smalltalk๊ฐ ์ด๋ ต๋ค๊ณ ๋๊ปด์ง๋ ์ด์ ์ค ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ Smalltalk๊ฐ ๊ฐ์ง๊ณ ์
๋ ๋ฐฉ๋ํ๋ฉด์๋ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ ๊ฐ๋ ๋ค๋ฐ(class library)๋๋ฌธ์ด ์๋๊น ํฉ๋
๋ค. Smalltalk๋ก ์ธ๋งํ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ธฐ ์ํด์๋ ํ์๋ก ํ๋ ๊ธฐ๋ฅ์ด ์๋ฐฑ๊ฐ
๊ฐ ๋๋ ๋ฐฉ๋ํ ๊ฐ๋ ์ค์์ ๋๋์ฒด ์ด๋ค ๊ฐ๋์ ์ํด ์๋์ง์ ๋ํด์ ๊ฟฐ๊ณ ์
์ด์ผ ํ๋๋ฐ, ์ด๊ฒ์ด ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐ์ ์ด๋ณด์๊ฐ ์ ๋ง ๋๊ธฐ ํ๋ '์ฅ๋ฒฝ'
์ด ๋์ด๋ฒ๋ฆฌ๋ ๊ฒ์
๋๋ค. Smalltalk๋ฅผ ์ฌ์ฉํด์ ์ ์ ๋ช
ํ "Hello, world!"๋ฅผ ์ถ
๋ ฅํ๋ ์์ ํ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ณ ๊ทธ๊ฒ์ ์ดํดํ๋ ค๋ฉด ์ด๋ ์ ๋์ ์๊ฐ์ด ํ์ํฉ
๋๋ค. ๊ทธ๋ฌ๋ Smalltalk์์ Hello World ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์๋ค๋ฉด, ๊ทธ ๋ค์์
์ ๋ง ์ฝ๊ฒ ์ฝ๊ฒ ๋์ด๊ฐ ์ ์์ต๋๋ค. C ์ธ์ด์ ๊ฒฝ์ฐ, Hello World ํ๋ก๊ทธ๋จ์ ๋ง
๋ค๊ธฐ๋ ์ฝ์ง๋ง, ์ด๊ฒ๋ง ๊ฐ์ง๊ณ ๋ C ์ธ์ด์์ ๊ณต๋ถํด์ผ ํ ๊ธฐ๋ฅ ์ค์ 10%๋ ์ ๋
๋ ๋ด์ฉ๋ฐ์ ์ ์ ์์ต๋๋ค. Smalltalk์์ Hello World ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ณ ๊ทธ
๊ฒ์ ์ดํดํ๋ค๋ฉด, Smalltalk ์ธ์ด์ 80% ์ด์์ ์ ๋ณตํ๋ค๊ณ ํด๋ ๊ณผ์ธ์ด ์๋ ๊ฒ
์
๋๋ค.
๊ทธ๋ฐ๋ฐ ๊ฐ๋ ๋ค๋ฐ์ ์ตํ๋ ๊ฒ์ด ์ด๋ ค์์ Smalltalk๊ฐ ์ด๋ ต๋ค๋ฉด, ์ด๋ C++,
Java ๊ทธ๋ฆฌ๊ณ ์ฝ๋ค๊ณ ์ฌ๊ฒจ์ง๋ Delphi๋ Visual Basic์ ๊ณต๋ถํ๋ ๊ฒ ์ญ์ ์ด๋ ต๋ค
๊ณ ๋ด์ผํฉ๋๋ค. Visual C++๋ฅผ ๊ฐ์ง๊ณ ํ๋ก๊ทธ๋จ์ ์ง๋ ค๋ฉด ์ ์ด๋ MFC(Microsoft
Foundation Classes)๋ผ๋ ๊ฐ๋ ๋ค๋ฐ์ ์ตํ์ผ ํ๊ณ , Delphi์ ๊ฒฝ์ฐ์๋ VCL
(Visual Component Library)์ ๊ณต๋ถํด์ผ ํ๋ฉฐ, Java์ ๊ฒฝ์ฐ๋ค๋ JavaBeans๋ ์ฌ
๋ฌ ๊ฐ์ง์ ๊พธ๋ฌ๋ฏธ(package)์ ๋ํด์ ์ด๋ ์ ๋์ ์ง์์ด ํ์ํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก, Smalltalk ์์คํ
์ ๋ํ์์
๋๋ค. ์์ ์ ๋ฒ ์ด์์ ๊ณต๋ถํด ๋ณธ ๋ถ์ด
๋ผ๋ฉด ๋ํ์ ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ด ์ผ๋ง๋ ์ฌ์ด์ง๋ฅผ ์ ๊ฒ์
๋๋ค. Smalltalk์์๋ ๋ช
๋ น์ด
๋ฅผ ํ ์ค ๋จ์๋ก ์คํ์์ผ๋ณผ ์ ์์ผ๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ์ ์ ์์ต๋๋ค. ์ปดํจํฐ
์ ๋ํํ๋ฏ์ด ์ด๋ค ์ผ์ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์, ์ตํ๊ธฐ๊ฐ ๋งค์ฐ ์ฝ์ต๋๋ค. ๊ท์
๋ ๋ฌธ๋ฒ์ ์ํด ๋ฐํ๊ธ์ ์ฐ๊ณ ๊ทธ๊ฒ์ ๋ฒ์ญ(compile)ํ์ฌ ์คํํด์ผ๋ง ๊ฒฐ๊ณผ๋ฅผ ์ป
์ ์ ์๋ ์ธ์ด๋ค์ ๋นํด์, Smalltalk์ ๊ฒฝ์ฐ์๋ ๋ํ์์ผ๋ก ๋ช
๋ น์ด๋ฅผ ์ํํ
์ ์๋ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ํนํ ์ด๋ณด์๋ค์ด ๋ฐฐ์ฐ๊ธฐ๊ฐ ๋งค์ฐ ์ฝ๋ค๊ณ ํ ์ ์์ต๋
๋ค. ์์ ๋ง์๋๋ ธ์ง๋ง, Smalltalk์ ๋ชจํ ๋ "์ด๋ฆฐ์์ด๋ค๋ ์ฝ๊ฒ ํ๊ณ ๊ทธ๋จ์ ์งค
์ ์๋ ํ๊ฒฝ์ ๋ง๋ค์"๋ ๊ฒ์
๋๋ค. (๋ฌผ๋ก ๊ทธ '์ด๋ฆฐ์์ด'๊ฐ ์์ด๊ถ์ ์ต์ํด์ผ
ํ๋ค๋ ๊ฒ์ด ๋ง์์ด ์ํ๋๋ค๋ง...)
์ด๋ฐ ๊ฒ๋ค์ ๊ณต๋ถํ๋ฉด์ ๋์์ ๋ณต์กํ ์ธ์ด ๋ช
์ธ๋ฅผ ๊ณต๋ถํ๋ ๊ฒ๊ณผ, ๋จ์ํ ์ธ์ด
๋ช
์ธ์ ๋ํ์ ๊ฐ๋ฐ๋ฅผ ์ง์ํ๋ Smalltalk๋ฅผ ๊ณต๋ถํ๋ ๊ฒ ์ค์, ๊ณผ์ฐ ์ด๋ค ๊ฒ์ด
๋ ์ด๋ ค์ ๋ณด์ผ๊น์? ๊ทธ๊ฒ์ ๋
์ ์ฌ๋ฌ๋ถ์ ํ๋จ์ ๋ง๊น๋๋ค.
4. Smalltalk์ ๋น์ธ๋ค
~~~~~~~~~~~~~~~~~~~~~
์ด๋ ์์ฃผ ๊ฐ๋จํ๊ฒ ์๋ฅผ ๋ค ์ ์์ต๋๋ค. ๊ณต๊ฐ์ฉ Smalltalk ์์คํ
์ด ๋ง์ด ๋์
์์ผ๋ฉฐ, Dolphin Smalltalk์ ๊ฒฝ์ฐ์๋ ์์ฉ ์ ํ๊ณผ ๊ณต๊ฐ์ฉ ์ ํ์ ๊ฐ์ด ๋ด๋๊ณ
์์ต๋๋ค. ๋ํ Dolphin Smalltalk ์์ฉํ์ ๊ฒฝ์ฐ๋ ์ฝ $50 ์ ๋์ ๊ฐ๊ฒฉ์ผ๋ก ์ถฉ
๋ถํ ๊ตฌ์
ํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์์ฉ ํ๋ก๊ทธ๋จ ๋ฐฐํฌ ๋ฑ์ ๊ธฐ๋ฅ์ ํฌํจํ
๊พธ๋ฌ๋ฏธ ํํ๋ก ํ๋งค๋๋ ์ ํ์ ๊ฒฝ์ฐ $219 ์ ๋์ ๊ฐ๊ฒฉ์ด๋ฉด ์ถฉ๋ถํ ๊ตฌํ ์ ์์ต
๋๋ค. Smalltalk๊ฐ ๋น์๋๊น?
5. Smalltalk๋ ํฌ๋ค
~~~~~~~~~~~~~~~~~~~
Smalltalk๋ผ๋ ์ด๋ฆ ์์ฒด๊ฐ ์ด ๋ง์ด ์ฌ์ค์ด ์๋์ ์ฆ๋ช
ํด ์ค๋๋ค. Smalltalk๋
์์ ์์คํ
์
๋๋ค. ์ด๋ ์ฅ์ ์ด ๋ ์๋ ์๊ณ ๋์์ ๋จ์ ์ด ๋ ์๋ ์์ต๋๋ค.
ANSI X3J20ํ์ค์ ์ํด ๊ท์ ๋ ๊ฐ๋ ์ป์ค(class hierarchy)์ ํํ ๋ณผ ์ ์๋
๋ค๋ฅธ ๊ฐ์ฒด ์งํฅ ์ธ์ด์ ๊ฐ๋ ๋ค๋ฐ๋ณด๋ค ๋ ๋ง์ ๊ฒ์ ๋ด๊ณ ์์ต๋๋ค. C++์ ๊ฒฝ์ฐ
ANSI์์ ํ์คํ๋ ๊ฐ๋ ๋ค๋ฐ์ ๊ธฐ๋ณธ์ ์ธ ๊ฒ๋ค ๋ฟ์ด๊ณ ๋๋ถ๋ถ C++๋ฅผ ๋ง๋ค์ด ํ๋
ํ์ฌ๋ง๋ค ๋
์์ ์ธ ๊ฐ๋ ๋ค๋ฐ์ ๋ง๋ค์ด ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ, ๋ฐ๋ผ์ ์ด๋ ํํ ๋งํ
๋ ๊ฒ์ฒ๋ผ ํธํ์ฑ ์ข์ C++๋ฅผ ์๊พธ ํธํ์ฑ ์๋ ์ธ์ด๋ก ๋ง๋๋ ์์ธ์ด ๋๊ณ ์์ต
๋๋ค(Visual C++์ MFC์ Borland C++์ OWL์ ์๊ฐํด ๋ด
์๋ค.) ANSI ํ์ค์ ๋ฐ
๋ฅด๋ Smalltalk์๊ฒฝ์ฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฉ๋ํ ์์ ๊ฐ๋ ๋ค๋ฐ์ ๊ฐ์ง๊ณ ์์ง๋ง, ์ด
๋ ์ด๋ฏธ ํ์คํ ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ Smalltalk์ ํธํ์ฑ์ ๋์ฌ์ฃผ๋ ์ด๋งค์ ๊ฐ ๋ฉ๋
๋ค.
์ด๋ฌํ ๋ฐฉ๋ํ ๊ฐ๋ ๋ค๋ฐ์ด ํ์คํ๋จ์ผ๋ก์จ ์๊ฒจ๋๋ ๋จ์ ์ผ๋ก๋ Smalltalk๋ก ํ
๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ๋, Smalltalk ํ๊ฒฝ ์์ฒด๊ฐ ๋ฐฉ๋ํด์ง ์ ์๋ค๋ ๊ฒ์ ๋ค ์ ์
์ต๋๋ค. ๋ฌผ๋ก ์ค์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ฐฐํฌํ ๋์๋ ๊ฐ๋ฐ ๋จ๊ณ์์๋ณด๋ค๋ ํจ์ฌ ์
์ ํฌ๊ธฐ๋ก ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ์ง๋ง, ํ์ฌ์ Smalltalk ๊ตฌํ ๊ธฐ์ ๋ก๋ ์์ง๊น์ง ๋ค๋ฅธ
์ธ์ด๋ก ๋ง๋ค์ด์ง ํ๋ก๊ทธ๋จ๋ค๋ณด๋ค๋ ๊ธฐ์ต ๊ณต๊ฐ์ ์๋น๊ฐ ํฌ๋ค๋ ๋จ์ ์ ๊ฐ์ง๊ณ ์
์ต๋๋ค.
๊ทธ๋ฌ๋ Dolphin Smalltalk์ ๊ฒฝ์ฐ๋ ๋ณดํต ๊ตฌํ๋๋ Smalltalk์ ํน์ฑ๋ณด๋ค ํ ๋จ
๊ณ ๋ฐ์ ๋ ๊ธฐ์ ์ ์ฌ์ฉํจ์ผ๋ก์จ, ์คํ ํ์ผ์ด ์ฐจ์งํ๋ ๊ธฐ์ต ๊ณต๊ฐ์ ์ ์ ์จ์ ๋งค
์ฐ ๋ฎ๊ฒ ํ ์ ์์์ผ๋ฉฐ, ์ด๋ Dolphin Smalltalk๊ฐ ๋ค๋ฅธ Smalltalk์ ๋นํด์ ์
๋ฑํ ์ฑ๋ฅ์ ๋ณด์ฅํ ์ ์๋๋ก ํด ์ค๋ค๊ณ ํฉ๋๋ค.
๊ธฐ์ต๊ณต๊ฐ ์๋น๊ฐ ์ฌํ๋ค๋ ํ๊ฐ์ ๋ํด์, Delphi๋ Visual Basic์ ๊ฒฝ์ฐ์ ๋น๊ต
ํด ๋ณด์ญ์์ค. ์์ ์ธก์ ๊ธฐ๋ฅผ ์ผ ๋์ ์ํ์์ Delphi 4.0์ ์คํํ ๊ฒฝ์ฐ, ์ฝ
10% ์ ํ์ ์์์ ์๋นํ๋ฉฐ, ์ด๋ ๊ฐ๋ฐ ํ๋ก๊ทธ๋จ์ด ์ปค์ง๋ฉด ์ปค์ง์๋ก ๋์ฑ ๋ ๋ง
์ด ์๋นํ๊ฒ ๋ฉ๋๋ค. (ํ๋ก์ ํธ์ ๋ฐ๋ผ์๋ ์ฝ 30%์ ์์์ ์๋นํ ๋๋ ์์์ต
๋๋ค.) ๊ทธ๋ฌ๋ Dolphin Smalltalk์ ๊ฒฝ์ฐ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฝ 3%์ ์์์ ์๋นํฉ
๋๋ค. ์ด๋ ์ด๋ฏธ ๋ชจ๋ ๊ฐ๋ ๋ค๋ฐ๊ณผ ๊ฐ์ฒด๋ค์ด ๋ค ์์ฑ๋ ์ํ์์ ์ฐจ์งํ๋ ๊ธฐ์ต
๊ณต๊ฐ์ ์ ์ ์จ์
๋๋ค. (๋ณดํต ๋ฐฐํฌ๋๋ Dolphin Smalltalk์๋ ์ฝ 540๊ฐ์ ๊ฐ๋์
45,000์ฌ๊ฐ์ ๊ฐ์ฒด๊ฐ ๋ค์ด์์ต๋๋ค.)
์ด์ฐ๋ณด๋ฉด Smalltalk๋ ํฝ๋๋ค. ๊ทธ๋ฌ๋ ๋ํ ์์ต๋๋ค. ํฐ ๊ฒ์ด ๋ฌด์กฐ๊ฑด ๋จ์ ์ด ๋
์๋ง์ ์๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฐ๋ฐ, ์ ๋ง Smalltalk๊ฐ ํฝ๋๊น? ๊ทธ๋ฐ์ง ๊ทธ๋ ์ง ์์์ง
๋ ์ฌ๋ฌ๋ถ์ด ์ง์ Smalltalk๋ฅผ ๊ณฑ์ฐํด ๋ณด๋ฉด ์ ์ ์์ ๊ฒ์
๋๋ค.
6. Smalltalk๋ ์ฐ๊ตฌ์ฉ ์ธ์ด์ด๋ค
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
์๋ง ์ด ๋ฌธ์ ๋ Smalltalk ์ธ์ด๊ฐ ๊ฐ๋ฐ๋ ๊ณณ์ด Xerox ์ฐ๊ตฌ์์ด๋ฉฐ, ๋ฐ๋ผ์ ์์ฉ
๋ฒ์ญ๊ธฐ ๊ฐ๋ฐ ํ์ฌ๋ค์ด ๋ด๋๋ ๊ฒ๋ณด๋ค๋ ๋ฎ์ ์คํ ์๋ ๋๋ฌธ์ ๊ธฐ์ธํ ๊ฒ์ด๋ผ๊ณ
์๊ฐํฉ๋๋ค. ํํ Delphi๋ Visual Basic, C++ ๋ฑ์ผ๋ก Windows ์ฉ์ ์์ฉ ํ๋ก๊ทธ
๋จ์ ๋ง๋ค๋ ค๊ณ ํ ๋ ๋งค์ฐ ๋์ ์์คํ
์ฌ์์ด ํ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ Smalltalk๋
๊ทธ๋ ์ง ์๋ค๊ณ ์์๋ ์ธ๊ธํ ๋ฐ ์์ต๋๋ค. ๋ํ Smalltalk๊ฐ ๊ฐ๋ฐ๋ ๋ ์๋๋ถ
ํฐ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด ๋ง๋ จ๋์ด ์์์ผ๋ฉฐ, ์์ ์๋
Smalltalk๋ฅผ ์ด์์ฒด๊ณ๋ก ์ฐ๋ ์ปดํจํฐ๋ ์์์ต๋๋ค. ๋์ฑ์ด Dolphin Smalltalk์
๊ฒฝ์ฐ์๋ WIN32 API๋ฅผ 90% ์ด์ ์ง์ํฉ๋๋ค. ๋ฐ๋ผ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ง๋๋๋ฐ๋
๊ฒฐ์ฝ ๋ค๋ฅธ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋นํด์ ๋ค๋จ์ด์ง์ง ์์ต๋๋ค.
7. ์์ฝ
~~~~~~~
Smalltalk, ํนํ Dolphin Smalltalk๋ ๋ค์์ ์ง์ํฉ๋๋ค.
* Dolphin Smalltalk๋ ํ์ต์ด๋ ์ค์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ์ ์๋ ๊ณต๊ฐ์ฉ
Smalltalk๋ฅผ ๋ฐฐํฌํฉ๋๋ค. ์ด์ ๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์
๊ฐ๊ฒฉ ๋๋ฌธ์ ๋ง์ค์ด๋ ์ผ
์ด ์์ ๊ฒ์
๋๋ค.
* ์๋์ ์ผ๋ก ์์ Smalltalk์ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ฎ์ ์ฌ์์ ์ปดํจํฐ์์๋ ์ถฉ๋ถํ
์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ์ ์๋๋ก ํ ์ ์์ ๊ฒ์
๋๋ค.
* ANSI X3J20์์ Smalltalk์ ํ์ค์ ์ ํ๊ณ ์์ผ๋ฉฐ, Smalltalk๋ C++์ ๋๋ถ์ด
์ฐ์
ํ์ค์ด ๋์ด๊ฐ๊ณ ์์ต๋๋ค.
* Dolphin Smalltalk์์ ์ ๊ณตํ๋ '3๊ณ์ธต ์์ฉ ํ๋ก๊ทธ๋จ ๋ชจํ'(three tiered
application framework)์ ํ๋ก๊ทธ๋จ์ ๋งค์ฐ ์ตํต์ฑ์๊ฒ ๋ง๋ค์ด ์ค๋๋ค.
* Dolphin Smalltalk๋ Windows ์์คํ
์ ๋ชจ๋ ์์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ,
Windows ์ด์ ์ฒด๊ณ์ ์ง์์ ๋ฐ์ ์ ์์ต๋๋ค. ์ด๋ WIN32 API์ ์ฌ์ฉ์ ๋ณด
์ฅํด์ฃผ๋ฉฐ, ๋ฐ๋ผ์ WIndows ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐ์ ์ฝ๊ฒ ํด ์ค๋๋ค.
์ด์ Smalltalk๋ฅผ ํ ๋ฒ ๊ณต๋ถํด ๋ณด์ญ์์ค. ์๊ฒ๋ ์ฌ๋ฌ๋ถ์ ๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์์
์ตํ๋ ๋๊ตฌ๋ก์จ, ํฌ๊ฒ๋ ์ค์ ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ ์ ์๋ ๋๊ตฌ๋ก์จ, Smalltalk
๋ ์ฌ๋ฌ๋ถ์๊ฒ ํฐ ๋ชซ์ ํ ๊ฒ์
๋๋ค. ์๋ฃ์ค์ ์ฌ๋ ค์ง Dolphin Smalltalk์
Dolphin Education Center๋ฅผ ๋ด๋ฆฌ๋ฐ๊ณ Smalltalk ๊ณต๋ถ๋ฅผ ์์ํด ๋ณด์ญ์์ค. ๊ทธ๋ฆฌ
๊ณ ์ฐ๋ฆฌ ํจ๊ป ๊ณต๋ถํฉ์๋ค. ๊ทธ๋์ Smalltalk์ ์๋ฃ๊ฐ ๋ ์ด์ ๋น์ฝํ์ง ์๋๋ก
ํฉ์๋ค.
์๋ฃฐ๋ก ํ์๋ Smalltalk๋ ํ๋์ ๋๊ตฌ๋ก ์๊ฐํฉ๋๋ค. ์ ๋ Delphi๋ฅผ ์ฃผ๋ก ์ฌ์ฉ
ํ๋๋ฐ, Smalltalk๋ฅผ ๊ณต๋ถํ๋ฉด์ ๋ธํ์ด๋ฅผ ๋ฐ๋ผ๋ณด๋ ์๊ฐ์ด ๋ฐ๋์์ต๋๋ค. ์ข ๋
์ง์์๊ณ , ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์ธ ์ ์๊ฒ ๋์์ต๋๋ค. ๊ฐ์ฒด ์งํฅ์ด ๋ฌด์์ธ์ง,
์ ๋ง ์ง์ ํ ๊ฐ์ฒด์งํฅ์ ์ง์๋ฅผ ๋ง๋ณด๊ณ ์ถ์ผ์๋ค๋ฉด, Smalltalk๋ฅผ ๊ผญ ๊ถํด๋๋ฆฝ๋
๋ค. ๊ฐ์ด ๊ณต๋ถํฉ์๋ค.