ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•œ ์‚ฌ๊ณ ์˜ ์ „ํ™˜์„ ๋ณด์—ฌ์ฃผ๋Š” ์ƒ๋ช… ๊ฒŒ์ž„

208 views
Skip to first unread message

๊ตฌ๋ฅด๋งˆ

unread,
Sep 5, 2012, 6:17:32โ€ฏAM9/5/12
to lisp-...@googlegroups.com
3์žฅ์— ๋‚˜์˜ค๋Š” ์ƒ๋ช…๊ฒŒ์ž„์€ ํด๋กœ์ ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ง„์ˆ˜๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ƒ๋ช… ๊ฒŒ์ž„์ด๋ผ๋Š” ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ 3๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค.

๋ฐฉ์‹ 1. ๊ธฐ์กด์˜ imperativeํ•œ ๋ฐฉ์‹, ๊ณง index๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹
๋ฐฉ์‹ 2. ์‹œํ€€์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹.
๋ฐฉ์‹ 3. value๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹.

์ฑ…์—์„œ๋Š” ๋ฐฉ์‹ 1๋ณด๋‹ค๋Š” ๋ฐฉ์‹ 2๊ฐ€ ๋” ์ข‹๋‹ค๊ณ  ํ•˜์ง€๋งŒ, ์†”์งํžˆ ๊ทธ๋Ÿฐ๊ฐ€ ์‹ถ์Šต๋‹ˆ๋‹ค.
์™œ๋ƒ๋ฉด neighbours๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ ๋‹จ์ง€ index๋ฅผ ์“ฐ๋ƒ, ์•„๋‹ˆ๋ฉด ์‹œํ€€์Šค๋ฅผ ์“ฐ๋ƒ๋งŒ ์ฐจ์ด๊ฐ€ ์žˆ์„ ๋ฟ์ธ๋ฐ
๊ทธ๊ฑธ ์ดํ•ดํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ๋Š” ๋ฐฉ์‹ 2๊ฐ€ ํ›จ์”ฌ ๋” ์–ด๋ ต๋”๊ตฐ์š”.

๋ฐ˜๋ฉด ๋ฐฉ์‹ 3์€ ๋„ˆ๋ฌด๋‚˜๋„ ๊ฐ„๊ฒฐํ•˜๊ณ , ๋ฌด๋ฆŽ์„ ํƒ์น˜๋ฉฐ '์ด๋ ‡๊ฒŒ ์ ˆ๋ฌ˜ํ•  ์ˆ˜๊ฐ€!'ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค๊ฒŒ ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์ด ์„ธ๊ฐ€์ง€ ๋ฐฉ์‹์„ ๋ณด๋ฉด์„œ ๋ฐ์ดํƒ€๋ฅผ ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฃจ๋Š”๋ฐ ์žˆ์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์˜ ์šฐ์„ ์„ฑ์„ ์ƒ๊ฐํ•ด ๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค < ์‹œํ€€์Šค <<< ๊ฐ’

์ฑ…์—์„œ๋„ ๋‚˜์™”๋“ฏ์ด ํ”„๋ ˆ๋“œ๋ฆญ ๋ธŒ๋ฃฉ์Šค๋‚˜ ์—๋ฆญ ๋ ˆ์ด๋ชฌ๋“œ ๊ฐ™์€ ๋Œ€๊ฐ€๋“ค์€ ํ”„๋กœ๊ทธ๋žจ์˜ ๋กœ์ง์ด๋‚˜ ํ”Œ๋กœ์ฐจํŠธ, ์ฝ”๋“œ, ๊ตฌํ˜„๋ณด๋‹ค๋Š”
์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ๋” ์ค‘์š”ํ•˜๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์ •ํ•ด์ง€๋ฉด ๋‚˜๋จธ์ง€๋Š” ๋ถ€์ˆ˜์ ์ธ ๊ฒƒ์ด ๋˜๋Š” ๊ฒƒ์ด์ฃ .

์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ ์žˆ์–ด, ์ธ๋ฑ์Šค๋‚˜ ์‹œํ€€์Šค๋Š” ๋น„๋ณธ์งˆ์ ์ธ ๊ฒƒ์ด๊ณ , ๊ฐ’์ด ๋ณธ์งˆ์ ์ธ ๊ฒƒ์ด ๋˜๋Š” ๊ฑฐ์ฃ .
ํด๋กœ์ ธ์˜ ์žฅ์ ์€ ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๋กœ ํ•˜์—ฌ๊ธˆ ๋‹ค๋ฅธ ์–ธ์–ด์— ๋น„ํ•ด ๋น„๋ณธ์งˆ์ ์ธ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ณธ์งˆ์ ์ธ ๊ฒƒ์— ๋” ์ง‘์ค‘ํ•˜๋„๋ก ๋„์™€์ค€๋‹ค๋Š” ์ ์— ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์ธ ๊ฒƒ์„ ํ‘œํ˜„ํ•˜๊ณ  ๋‹ค๋ฃจ๊ธฐ ์‰ฝ๊ฒŒ ํ•ด์ค€๋‹ค๋Š” ์ ์ด์ฃ .

์œ„์˜ ๋ฐฉ์‹ 1๊ณผ ๋ฐฉ์‹ 2๋Š” ๋ฐ์ดํƒ€์˜ ๋ชจ๋ธ๋ง์„ ๊ฐ๊ฐ ์ธ๋ฑ์Šค์™€ ์‹œํ€€์Šค ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.ย 
์ธ๋ฑ์Šค ๋ฐฉ์‹๊ณผ ์‹œํ€€์Šค ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋‚˜๊ฐ€๋Š” ๊ฒƒ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ์ € ๋ณต์žก์„ฑ์„ ๋ณด์‹ญ์‹œ์š”.
ํŠนํžˆ ๋ฐฉ์‹2๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ €๋Š” ๋ช‡ ์‹œ๊ฐ„์„ ๋“ค์—ฌ์„œ ํŒฝ์ฐฝํ•˜๋ฉด์„œ ์ˆ˜์ถ•ํ•˜๋Š” ์‹œํ€€์Šค ์ง€๋„๋ฅผ ๊ทธ๋ฆฌ๋ฉด์„œ ์ซ’์•„๊ฐ€์•ผ๋งŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด ๋ฐฉ์‹ 3์€ ์˜ค์ง ๊ฐ’๋งŒ์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. live cell์˜ ์ขŒํ‘œ. ๋‹จ์ง€ ์ด๊ฒƒ๋งŒ์ด ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
dead cell์˜ ์ขŒํ‘œ๋Š” ์•„์˜ˆ ๋“ฑ์žฅํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ์ง€ live cell ์ขŒํ‘œ ์ง‘ํ•ฉ์˜ ์—ฐ๋Œ€๊ธฐ์  ๊ณ„์—ด์ด ๊ณง ์ƒ๋ช… ๊ฒŒ์ž„์ธ ๊ฒƒ์ด์ฃ .
๋”ฐ๋ผ์„œ ์ด ๊ณ„์—ด์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ํ•จ์ˆ˜๋งŒ ์ž‘์„ฑํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—ˆ๊ธฐ์— ์ฝ”๋“œ๊ฐ€ ๊ทธํ† ๋ก ๊ฐ„๊ฒฐํ•  ์ˆ˜๊ฐ€ ์žˆ์—ˆ๋˜ ๊ฒƒ์ด์ฃ .

๊ฒฐ๊ตญ ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํƒ€ ๋ชจ๋ธ๋ง์‹œ ๊ฐ’์— ์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ๋ณธ์งˆ์ ์ธ ๊ฒƒ์— ์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด
ํด๋กœ์ ธ๋ผ๊ณ  ํ•ด๋„ ์šฐ๋ฆฌ๋ฅผ ์˜ˆ์ „์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์—์„œ ๋ฒ—์–ด๋‚˜๊ฒŒ๋Š” ํ•  ์ˆ˜ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ ˆ์ฐจํ˜•์—์„œ ๊ฐ์ฒด์ง€ํ–ฅ์œผ๋กœ ์‚ฌ๊ณ ๋ฅผ ์ „ํ™˜ํ•ด์•ผ ํ–ˆ๋“ฏ์ด(C์ฒ˜๋Ÿผ ์งœ์—ฌ์ง„ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์šฐ๋ฆฌ๋Š” ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ๋ด์™”์Šต๋‹ˆ๊นŒ?)
ํด๋กœ์ ธ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ฐ์ฒด์ง€ํ–ฅ์—์„œ ๊ฐ’์ค‘์‹ฌ ์‚ฌ๊ณ ๋กœ ์ „ํ™˜ํ•˜๊ธฐ๋ฅผ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์‚ฌ๊ณ ์˜ ์ „ํ™˜์„ ์œ„ํ•œ Rich Hickey์˜ pdf ์ž๋ฃŒ๊ฐ€ ์กฐ๊ธˆ ๋„์›€์ด ๋  ์ˆ˜๋„ ์žˆ์„ ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.

Are We There Yet?
ย 
์ด์ œ OOP์—์„œ๋„ ๋– ๋‚˜์•ผ ํ•˜๋Š” ๊ฑด๊ฐ€์š”?




๊ตฌ๋ฅด๋งˆ

unread,
Sep 6, 2012, 2:56:01โ€ฏAM9/6/12
to lisp-...@googlegroups.com
์ƒ๋ช… ๊ฒŒ์ž„ ๋‹ค์Œ ์˜ˆ์ œ์ธ ๋ฏธ๋กœ ๋ฐœ์ƒ๊ธฐ๋Š” ๊ฐ’์ค‘์‹ฌ ๋ฐ์ดํƒ€ ๋ชจ๋ธ๋ง์œผ๋กœ ์งํ–‰ํ•˜๊ณ  ์žˆ๋„ค์š”.
์ •๋ง ์ด๋ ‡๊ฒŒ ์งง์€ ์ฝ”๋“œ๋กœ ์ €๋Ÿฐ ๋ณต์žกํ•œ ๋ฏธ๋กœ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋†€๋ผ์šธ ๋”ฐ๋ฆ„์ธ๋ฐ์š”.
์ œ๊ฐ€ ์—ฌ๊ธฐ์„œ ํŠนํžˆ ์ฃผ๋ชฉํ•˜๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์€ ๋ฐ์ดํƒ€ ๋ชจ๋ธ๋ง์„ ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

p.146์—์„œ๋Š” ๋ฏธ๋กœ๋ฅผ ๋ฐœ์ƒํ•˜๋Š” ์œŒ์Šจ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ entity๋ฅผ ๋ฝ‘์•„๋ƒ…๋‹ˆ๋‹ค.

  1. locationย 
  2. the visited state
  3. the maze itself
  4. random walks
  5. exit directions.ย 

์ด๊ฒƒ์€ OOP์—์„œ ๋””์ž์ธ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ถ„์„ํ•œ ๋’ค ํด๋ž˜์Šค๊ฐ€ ๋  ํ›„๋ณด๋ฅผ ๋ฝ‘๋Š” ๊ณผ์ •๊ณผ
๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. OOP ๋ชจ๋ธ๋ง ๊ธฐ๋ฒ•์— ๋”ฐ๋ผ UML์„ ์ž‘์„ฑํ•  ๊ฒƒ์ด๊ณ ,ย ย ๊ฒฐ๊ตญ ์œ„ entity๋“ค์€ย ย ํด๋ž˜์Šค๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฐ’์ค‘์‹ฌ ๋ฐ์ดํƒ€ ๋ชจ๋ธ๋ง์€ ์ „ํ˜€ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ location, wall, maze๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค.

location : ์ขŒํ‘œ์˜ ๋ฒกํ„ฐ, [0 0]
wall : locaton์˜ ์ง‘ํ•ฉ #{[0 0] [1 0]}
maze : wall์˜ ์ง‘ํ•ฉ #{#{[0 0] [1 0]}ย #{[1 0] [2 0]} ...}

์ž ์ด์ œ ์ด๊ฒƒ์„ ์‹ค์ œ ํด๋กœ์ ธ ์ฝ”๋“œ๊ณผ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•  ๋•Œ ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ๋ณด์‹œ์ฃ .

ํด๋กœ์ ธ ํ‘œํ˜„
; location
[0 0]
; wall
#{[0 0] [1 0]}
; maze
#{#{[0 0] [1 0]}ย #{[1 0] [2 0]}ย #{[2 0] [3 0]} ...}

์ž๋ฐ” ํ‘œํ˜„
Class Location {
ย  private int x, y;
ย  public Location (int x, int y) {
ย  ย  this.x = x;
ย  ย  this.y = y;
ย  }
ย  int getx() {
ย  ย  return x;
ย  }

ย  int gety() {
ย  ย  return y;
ย  }
}

Location loc = new Locatin(0, 0);

Class Wall {
ย  private Location[2] locs;
ย  public Wall(Location loc1, Location loc2) {
ย  ย  this.locs[0] = loc1;
ย  ย  this.locs[1] = loc2;
ย  }
ย  ...
ย  ...
ย  ...
}

Wall wall = new Wall(new Location(0, 0), new Location(1, 0));

Class Maze {
ย  private ArrayList walls = new ArrayList();
ย  public void add(Wall wall) {
ย  ย  walls.add(wall);
ย  }
}

Maze maze = new Maze();
maze.add(wall1);
maze.add(wall2);
maze.add(wall3);
...



ํด๋กœ์ ธ์— ๋น„ํ•ด ์ž๋ฐ”๊ฐ€ ์›”๋“ฑํ•˜๊ฒŒ ๋ณต์žกํ•ด์กŒ์Šต๋‹ˆ๋‹ค.ย 
์ž๋ฐ”๊ฐ€ OOP๋ผ ํด๋ž˜์Šค ์ •์˜๋ถ€ ๋•Œ๋ฌธ์— ์–ต์šธํ•ด ํ•  ์ˆ˜๋„ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค๋งŒ,
location๊ณผ wall์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ ์ž๋ฐ”๋Š” ๊ฒฐ๊ตญ index๋‚˜ List๋“ฑ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—
ํด๋ž˜์Šค ์ •์˜๋ง๊ณ  ๋ฐ์ดํƒ€๋ฅผ ์กฐ์ž‘ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๋„ ์—„์ฒญ ๋ณต์žกํ•ด์กŒ์„ ๊ฒ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฐ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ๊ทผ๋ณธ ์›์ธ์€ ๋ฌด์—‡์ผ๊นŒ์š”?
์ค‘์š”ํ•œ ๊ฒƒ์€ ์ด ์ฐจ์ด๋Š” ํด๋กœ์ ธ์™€ ์ž๋ฐ”๋ผ๋Š” ์–ธ์–ด ์ž์ฒด์˜ ์ฐจ์ด์—์„œ ๋‚˜์˜จ ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์™œ๋ƒ๋ฉด ํด๋กœ์ ธ๋กœ๋„ location์„ defrecord๋กœ ์–ผ๋งˆ๋“ ์ง€ ํƒ€์ž… ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ์š”.
์ด๋Ÿฐ์‹์œผ๋กœ ํ–ˆ๋‹ค๋ฉด ํด๋กœ์ ธ ์ฝ”๋“œ๋„ ๋งŒ๋งŒ์น˜ ์•Š๊ฒŒ ๋ณต์žกํ•ด์กŒ์„ ๊ฒ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฌธ์ œ๋Š” ์œ„์˜ ์งง์€ ์ € ํด๋กœ์ ธ์˜ ์ฝ”๋“œ๋Š” ๋„๋Œ€์ฒด ๋ญ๋ƒ๋Š” ๊ฒƒ์ด์ฃ . ์ €๊ฒƒ์€ ์™œ ์ €๋ ‡๊ฒŒ ์งง์•„์งˆ ์ˆ˜ ์žˆ์„๊นŒ์š”?
์ด ์ฐจ์ด๋Š” ์–ธ์–ด์˜ ์ฐจ์ด๊ฐ€ ์•„๋‹ˆ๊ณ  ๋ฐ์ดํƒ€ ๋ชจ๋ธ๋ง ๋ฐฉ์‹์˜ ์ฐจ์ด์ž…๋‹ˆ๋‹ค.
์ฆ‰ OOP ๋ชจ๋ธ๋ง ๋ฐฉ์‹๊ณผ ๊ฐ’์ค‘์‹ฌ ๋ชจ๋ธ๋ง ๋ฐฉ์‹์ด ์ €๋Ÿฌํ•œ ์ฐจ์ด๋ฅผ ๋งŒ๋“ค์–ด ๋‚ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

p.146 18๋ฒˆ์งธ ์ค„ ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์žฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

"a location is just a (natural) identifier."

p.137 10๋ฒˆ์งธ ์ค„์—๋Š” natural identifier์— ๋Œ€ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์žฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

"Natural identifiers are opposed to synthetic or surrogate identifiers, where the latter
are usually strings or an artificially generated number, akin to sequences or autoincrements
in databases or object references themselves in most object-oriented languages.
Thus, synthetic identifiers are by definition artifacts of incidental complexity"


์—ฌ๊ธฐ์„œ๋Š” ์ž์—ฐ ์‹๋ณ„์ž(natural identifier)์™€ ํ•ฉ์„ฑ ์‹๋ณ„์ž(synthetic identifier)๊ฐ€ ๋Œ€๋น„๋˜์–ด ๋‚˜์˜ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์—ฐ ์‹๋ณ„์ž๋Š” ๋ฐ์ดํƒ€ ๊ทธ ์ž์ฒด๊ฐ€ ์ž์‹ ์„ ์‹๋ณ„ํ•˜๋Š” ์‹๋ณ„์ž๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.
ํ•ฉ์„ฑ ์‹๋ณ„์ž๋Š” ๋ฐ์ดํƒ€๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๋ณ„๋„์˜ ์‹๋ณ„์ž๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

ํด๋กœ์ ธ ์ฝ”๋“œ์—์„œ wall์„ #{[0 0] [1 0]}์œผ๋กœ ํ‘œํ˜„ํ•  ๋•Œ ์ด๊ฒƒ์€ ๋ฐ์ดํƒ€ ์ž์ฒด๊ฐ€ ์ž์‹ ์„ ํ‘œํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰ ๊ฐ’ ์ž์ฒด๋งŒ์œผ๋กœ ์ž์‹ ์„ ์‹๋ณ„ํ•œ ๊ฒƒ์ด์ฃ . ์ž์—ฐ ์‹๋ณ„์ž์ธ ๊ฒƒ์ด์ฃ .
๋ฐ˜๋ฉด ์ž๋ฐ”์ฝ”๋“œ์—์„œ๋Š” wall์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด wall์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ช…์ด ํ•„์š”ํ–ˆ๋Š”๋ฐ, ์ด๊ฒƒ์ดย ํ•ฉ์„ฑ ์‹๋ณ„์ž์ธ ๊ฒƒ์ด์ฃ .

์ž๋ฐ” ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์กŒ๋˜ ์ด์œ ๋Š” ํ•ฉ์„ฑ ์‹๋ณ„์ž๋“ค์ด ๋“ค์–ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํ•ฉ์„ฑ ์‹๋ณ„์ž๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ณต์žก์„ฑ์„ ์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ด์ฃ .

ํ”„๋ ˆ๋“œ ๋ธŒ๋ฃฉ์Šค๊ฐ€ 30๋…„ ์ „์— "No Silver Bullet"์—์„œ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ์žˆ์–ด์„œ ๋ณธ์งˆ์  ๋ณต์žก์„ฑ๊ณผ ์šฐ์—ฐ์  ๋ณต์žก์„ฑ์„ ๊ตฌ๋ถ„ํ–ˆ์Šต๋‹ˆ๋‹ค.ย ๋ณธ์งˆ์  ๋ณต์žก์„ฑ์€ ์ œ๊ฑฐํ•  ์ˆ˜ ์—†์ง€๋งŒ, ์šฐ์—ฐ์  ๋ณต์žก์„ฑ์€ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด์„œ ๊ณ ์ˆ˜์ค€ ์–ธ์–ด(๋‹น์‹œ์—” ํฌํŠธ๋ž€)๊ฐ€ ๊ทธ๋Ÿฐ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž๋ฐ”๊ฐ€ C์–ธ์–ด์˜ ํฌ์ธํ„ฐ๋ผ๋Š” ์šฐ์—ฐ์  ๋ณต์žก์„ฑ์„ ์•ผ๊ธฐ์‹œํ‚ค๋Š” ์š”์†Œ์˜ ์ œ๊ฑฐ๋ฅผ ํ†ตํ•ด ๋งŽ์€ ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ๊ฒƒ์„ ๋ณด์•„์™”๋˜ ๊ฒƒ ์ฒ˜๋Ÿผ, ์ด์ œ๋Š” ํ•ฉ์„ฑ ์‹๋ณ„์ž๋ผ๋Š” ์šฐ์—ฐ์  ๋ณต์žก์„ฑ์„ ์•ผ๊ธฐ์‹œํ‚ค๋Š” ์š”์†Œ๋ฅผ ์ž˜ ํ”ผํ•ด ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด์ธ ํด๋กœ์ ธ๋ฅผ ๋ณด๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.ย 

์ด๋ฒˆ ์˜ˆ์ œ๋“ค์„ ํ†ตํ•ดย OOP ๋””์ž์ธ ๋ฐฉ์‹์€ ๊ฒฐ๊ตญ ์šฐ์—ฐ์  ๋ณต์žก์„ฑ์ด ํฌํ•จ๋˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š”๋ฐ ๋งค์šฐ ์ทจ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.ย ๊ทธ๋™์•ˆ CRC๋กœ ์„ค๊ณ„ํ•˜๊ณ  TDD๋กœ ๊ฐœ๋ฐœํ•ด ์˜ค๋˜ ์ €์—๊ฒŒ๋Š” ์ •๋ง ๋‹นํ˜น์Šค๋Ÿฝ๊ธฐ๊นŒ์ง€ ํ•œ ์ˆœ๊ฐ„์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ์ฑ…์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ํด๋กœ์ ธ ์ฝ”๋“œ๋“ค์ด ์ฃผ๋กœ ๋ณ€์ˆ˜๋ช…์ด๋‚˜ ํด๋ž˜์Šค๋ช… ๋“ฑ๋“ฑ ย ์–ด๋–ค ์‹๋ณ„์ž๋“ค์ด ์—†๋Š” ๊ฒƒ์ดย 
๋ณ„๋กœ ๊ทธ๋ ‡๊ฒŒ ์™ ์ง€ ์ฝ”๋“œ๋‹ต์ง€ ๋ชปํ•˜๋‹ค๋Š” ๋А๋‚Œ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.ย ๊ทธ๋ฆฌ๊ณ  ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ '์Œ ๊ทธ๋ž˜~ ์ด์ œ ์ฝ”๋“œ๋ฅผ ๋ณด๋Š” ๊ฒƒ ๊ฐ™๊ตฐ' ํ–ˆ์—ˆ๋Š”๋ฐ์š”.์ด์ œ๋Š” ์œ„์—์„œ์ฒ˜๋Ÿผ ์ž๋ฐ” ์ฝ”๋“œ๋“ค์ด ์ •๋ง ์ถ”ํ•˜๊ฒŒ ๋ณด์ด๋„ค์š”. ์ € ๋ง๋„ ์•Š๋˜๋Š” ๋ณต์žก์„ฑ๋“ค์˜ ์ฝ”๋“œ๋“ค~~

๋ฆฌ์น˜ ํžˆํ‚ค๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ง์„ ํ–ˆ๋‹ค๋„ค์š”.

"Familarity Hides Complexity"

์™œ ์ด๋Ÿฐ ๋ง์„ ํ–ˆ๋Š”์ง€ ์ •๋ง ์ถฉ๋ถ„ํžˆ ๊ณต๊ฐ์ด ๋˜๋Š” ์ˆœ๊ฐ„์ž…๋‹ˆ๋‹ค!


์ด์ƒ์ž…๋‹ˆ๋‹ค.
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.



2012๋…„ 9์›” 5์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 7์‹œ 17๋ถ„ 32์ดˆ UTC+9, ๊ตฌ๋ฅด๋งˆ ๋‹˜์˜ ๋ง:

kumjiki

unread,
Sep 6, 2012, 7:27:17โ€ฏAM9/6/12
to lisp-...@googlegroups.com
String string = new String("string");
Array<String> arrayString = new Array<String>();

์ „ ์ด๋Ÿฐ ๊ฑฐ ์“ธ ๋•Œ๋งˆ๋‹ค ๊ฑฐ๋ถ์Šค๋Ÿฌ์› ์–ด์š”;;
..๋ผ๊ณ  ํ•œ ์ค„ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‹ฌ๊ณ  ์‹ถ์€๋ฐ ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ๋ผ ์ข€ ์–ด์ƒ‰ํ•˜๋„ค์š” ^^;

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€๊ฒŒ,ย 
๋ฐ์ดํ„ฐ ์‚ฌ์ด์˜ ๋งคํ•‘์„ ์ •์˜ํ•˜๋Š” (์ด๊ฒŒ ํ•จ์ˆ˜์ฃ ) ๊ฒƒ ์ž์ฒด๊ฐ€ย ๋ฐ”๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ
๋ง์”€ํ•˜์‹  ์ผ์ข…์˜ ์ธ์‹์˜ ์ „์ด ๊ฐ™์€ ๊ฒŒ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋‚˜ ํ•˜๊ณ 
๊ฐœ์ธ์ ์œผ๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์„ ์š”๋ ‡๊ฒŒ ๋ฐ”๋ผ๋ณธ ๊ฒƒ์ด ์ €๊ฒƒ์ด๋‹ค๋ผ๊ณ ๋งŒ ํ•˜๋ฉด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋˜๋‹ค๋‹ˆ..
(์Œ 'ํ”„๋กœ๊ทธ๋ž˜๋ฐ'์ด๋ž€ ํ‘œํ˜„์ด ์ ์ ˆํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™๋„ค์š”. ์ ˆ์ฐจ์ ์ธ ๋А๋‚Œ์ด๋ผ)

2012๋…„ 9์›” 6์ผ ์˜คํ›„ 3:56, ๊ตฌ๋ฅด๋งˆ <psk...@gmail.com>๋‹˜์˜ ๋ง:

--
Google ๊ทธ๋ฃน์Šค 'Lisp์„ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ๊ทธ๋ฃน(ํ•œ๊ตญ ๋ฆฌ์Šคํผ)' ๊ทธ๋ฃน์— ๊ฐ€์ž…ํ–ˆ์œผ๋ฏ€๋กœ ๋ณธ ๋ฉ”์ผ์ด ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์›น์—์„œ ์ด ํ† ๋ก ์„ ๋ณด๋ ค๋ฉด https://groups.google.com/d/msg/lisp-korea/-/bx30E442MCgJ์„(๋ฅผ) ๋ฐฉ๋ฌธํ•˜์„ธ์š”.

์ด ๊ทธ๋ฃน์— ๊ฒŒ์‹œํ•˜๋ ค๋ฉด lisp-...@googlegroups.com(์œผ)๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์„ธ์š”.
๊ทธ๋ฃน์—์„œ ํƒˆํ‡ดํ•˜๋ ค๋ฉด lisp-korea+...@googlegroups.com๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์ฃผ์„ธ์š”.
๋” ๋งŽ์€ ์˜ต์…˜์„ ๋ณด๋ ค๋ฉด http://groups.google.com/group/lisp-korea?hl=ko์—์„œ ๊ทธ๋ฃน์„ ๋ฐฉ๋ฌธํ•˜์„ธ์š”.

๊ตฌ๋ฅด๋งˆ

unread,
Sep 6, 2012, 7:43:41โ€ฏAM9/6/12
to lisp-...@googlegroups.com
์•„๋ž˜ ํ‘œ๋Š” wilson's ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์˜๋ฌธ ๋ฌธ์žฅ๊ณผ ํด๋กœ์ ธ ๊ตฌํ˜„ ์ฝ”๋“œ๊ฐ„์— ์ผ๋Œ€์ผ ๋งค์นญ ๊ด€๊ณ„๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ํด๋กœ์ ธ ์ฝ”๋“œ ๋ผ์ธ ์ด 14๊ฐœ์ค‘์— ์˜๋ฌธ ๋ฌธ์žฅ์„ ๊ทธ๋ž˜๋„ ํ‘œํ˜„ํ•˜์ง€ ์•Š๋Š” ๋ผ์ธ์€ ๋‹จ์ง€ 6๊ฐœ ๋ฟ์ž…๋‹ˆ๋‹ค!
๊ฒฐ๊ตญ ํด๋กœ์ ธ ์ฝ”๋“œ๋Š” ์ธ๊ฐ„์˜ ์ž์—ฐ์–ด๋ฅผ ๊ฑฐ์˜ ๊ฐ™์€ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™” ์ˆ˜์ค€์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š”...@@;;;



ย 1ย (defn mazeย X
ย 2ย ย [walls]ย X
ย 3ย ย ย  (let [paths (reduce (fn [index [a b]]ย ย ย X
ย 4ย ย ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  (merge-with into index {a [b] b [a]}))ย X
ย 5ย ย ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  {} (map seq walls))ย X
ย 6ย ย ย  ย  ย  ย  start-loc (rand-nth (keys paths))]ย ย ย wilson's 1 : random pick a loc.
ย 7ย ย  ย  ย (loopย [walls wallsย X
ย 8ย ย ย  ย  ย  ย  ย  ย unvisited (disj (set (keys paths)) start-loc)]ย ย wilson's 1 : mark it as visited.
ย 9ย ย ย  ย  ย  (if-letย [loc (when-let [s (seq unvisited)] (rand-nth s))]ย ย wilson's 2 : mark visited, random pick unvisited loc.
ย 10ย ย  ย  ย  ย  ย (let [walk (iterate (comp rand-nth paths) loc)ย ย wilson's 3 : perform random walk.
ย 11ย ย ย  ย  ย  ย  ย  ย  ย  steps (zipmap (take-while unvisited walk) (next walk))]ย ย wilson's 3 : until visited loc.
ย 12ย ย  ย  ย  ย  ย  ย (recurย (reduce disj walls (map set steps))ย ย wilson's 4 : remove walls.
ย 13ย ย ย  ย  ย  ย  ย  ย  (reduce disj unvisited (keys steps))))ย ย ย wilson's 4 : mark visited.
ย 14ย ย  ย  ย  ย  ย ย walls))))ย ย ย ย ย wilson's 2 : return maze.






2012๋…„ 9์›” 6์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 3์‹œ 56๋ถ„ 1์ดˆ UTC+9, ๊ตฌ๋ฅด๋งˆ ๋‹˜์˜ ๋ง:

๋ฐ•์ƒ๊ทœ

unread,
Sep 6, 2012, 8:00:14โ€ฏAM9/6/12
to lisp-...@googlegroups.com


2012๋…„ 9์›” 6์ผ ์˜คํ›„ 8:27, kumjiki <kum...@gmail.com>๋‹˜์˜ ๋ง:

String string = new String("string");
Array<String> arrayString = new Array<String>();

์ „ ์ด๋Ÿฐ ๊ฑฐ ์“ธ ๋•Œ๋งˆ๋‹ค ๊ฑฐ๋ถ์Šค๋Ÿฌ์› ์–ด์š”;;

์ €๋„ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.
ย 
..๋ผ๊ณ  ํ•œ ์ค„ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‹ฌ๊ณ  ์‹ถ์€๋ฐ ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ๋ผ ์ข€ ์–ด์ƒ‰ํ•˜๋„ค์š” ^^;

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€๊ฒŒ,ย 
๋ฐ์ดํ„ฐ ์‚ฌ์ด์˜ ๋งคํ•‘์„ ์ •์˜ํ•˜๋Š” (์ด๊ฒŒ ํ•จ์ˆ˜์ฃ ) ๊ฒƒ ์ž์ฒด๊ฐ€ย ๋ฐ”๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ
๋ง์”€ํ•˜์‹  ์ผ์ข…์˜ ์ธ์‹์˜ ์ „์ด ๊ฐ™์€ ๊ฒŒ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋‚˜ ํ•˜๊ณ ย 
๊ฐœ์ธ์ ์œผ๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์‹œ์ž‘์ธ ๊ฒƒ ๊ฐ™๋„ค์š”. ์•„์ง ๋งคํฌ๋กœ๊ฐ€ ๋‚จ์•„์žˆ๋‹ค๋Š”..ย 
Reply all
Reply to author
Forward
0 new messages