'Pair Programming'에 해당되는 글 1건

  1. 2008.01.27 간단한 생각을 어렵게

간단한 생각을 어렵게

Posted by DamienRice 내가 만든 것/생각, 글 : 2008. 1. 27. 20:13

최근 머리가 좋아지는 Logo 프로그래밍이라는 책을 읽고있다. 이 책은 Logo라는 언어에 대한 입문서라고 말할 수 있는데, 이 언어는 어린이들이 사용할 수 있을 만큼 쉽고, 창발적인 사고를 할 수 있도록 도와준다. 현재 미국, 유럽, 일본의 영재교육에 사용되는 것으로 알고있다.

Logo를 이용하여 코드를 작성하면 거북이(?)가 정의된 코드에 따라 화면에서 이동을 하게되고 그 궤적이 화면에 남게된다. 난 현재 기본적인 단계로 직진 및 회전하는 명령만 사용할 수 있다.

간단한 도형 - 사각형, 원, 삼각형등을 그리는 것은 아주 쉽다. 단지 '직진 100픽셀, 90도 우로회전'을 4번 반복하는 것이 사각형이고, 각도와 횟수만 바꿔주면 삼각형이 될 수도, 원이 될 수도 있기 때문이다. 내가 간단한 것을 복잡하게 생각하고 있었다는 것을 깨닫게 된 도형은 별이다. (변명을 하자면, 난 한 쪽 스크린에는 영화를 재생해놓고 다른쪽 스크린에서 코드를 작성하고 있었다는 것이다)

어쨋든, 내가 그린 별은 다음과 같다.

사용자 삽입 이미지
이때 사용한 코드는 repeat 5 [fd 100 rt 144 fd 100 lt 72] 이다. 해석하면 대괄호안의 명령문을 다섯 번 실행하는 것인데, 괄호안의 명령은 100만큼 앞으로 가서 오른쪽으로 144도 회전하고 다시 100만큼 앞으로 가서 왼쪽으로 72도 회전하는 것이다. 즉, 별의 꼭지점을 다섯개 그리라는 의미와 같다.

처음에 이 방법을 생각하게 된 기초는 정오각형에 삼각형을 하나씩 붙이려고 했던 것이 별과 같은 모양이라는 생각이었다. 허나 정오각형의 내각을 잘못 계산하는 바람에 (원래는 108도인데 120도로 생각하고 있었다) 계속 이상한 모양이 나오는 것이었다. 결국에는 각도를 제대로 알아내고 그려냈지만... 거북이의 입장에서 보면 거북이가 이동한 경로는 다음과 같다.

사용자 삽입 이미지
허나 책의 저자는 어떻게 했을까 하고 책장을 넘기는 순간, 더 간단하고 일반적인 방법이 있음을 알았다.

사용자 삽입 이미지
물론 내가 그린 모양과 책에서 그린 모양은 다르다 (내가 그린 별에는 내부에 있는 정오각형의 경계선이 없다) 그러나 둘다 사람이 보기에 '별'에 해당하므로 굳이 구분지을 필요는 없다. 이 별을 그리는 코드 repeat 5 [fd 200 rt 720/5] 이다. 이 방법은 거북이가 작은 삼각형을 그리는 것이 아니고 다음과 같이 별의 꼭지점과 꼭지점 사이를 바로 그린다.

사용자 삽입 이미지


공식에 있는 720은 거북이가 회전하는 각도의 총합이다. 이는 5각별이 아닌 경우에도 마찬가지인데, 이를 이용하면 n각별을 그리는 코드를 도출할 수 있다.

to nstar :n :length
   repeat :n [fd :length rt 720/:n]
end

시도해보지는 않았지만 내가 시도한 방법으로 n각별을 그리는 방법을 찾을 수는 있을 것 같다. 그러나 코드를 읽는 사람도 매번 n각형에 따른 별의 꼭지점 각도를 계산해야 하는등 직관성이 많이 떨어진다는 한계가 있다.

이와 같은 경우가 아니더라도 간단한 해결책을 두고 복잡한 경우만을 생각하고 쉬운 방법을 보지못해서 시간을 낭비하고 다른사람의 효율도 떨어뜨리는 경우는 많을 것이라 생각된다. 협력작업(나의 경우에 있어서는 Pair Programming)이 얼마나 중요한지 오늘 한번의 경험을 또 하게 되었다.







  
 «이전 1  다음»