창의성과 경험에 대한 이야기를 해볼까 합니다.


“바둑 신동은 있어도 장기 신동은 없다!?”


어느 분야든 전문가가 되려면 자신만의 독창적인 스타일(창의성)과 다양하고 깊은 경험이 필요하기 마련입니다.

즉, 창의성과 경험이 모두 중요하다는데는 이의가 없습니다.

하지만 분야에 따라서는 둘 중 어느 하나가 더 중시되는 경우가 있습니다.
(둘 중에 뭐가 더 좋고 나쁘다가 아니라 둘의 성격은 이런 식으로 다르다는 뜻입니다.)




바둑과 장기


먼저 바둑을 보겠습니다.

바둑 게임이야 워낙 유명하니 따로 설명은 드리지 않겠습니다.

제가 바둑게임에서 주목하는 부분은 그 게임방법에 있습니다.

처음에 아무것도 없는 바둑판 위에 돌을 하나하나 두면서 플레이 해나가지요?

즉, 바둑게임은 빈 곳에다 뭔가를 만드는, 무에서 유를 창조하는 게임입니다.

단순한 게임 형태에서 오는 무한의 자유도가 있습니다.

어디에 어떻게 돌을 놓을지는 사람마다, 게임마다 매번 틀려집니다.

이창호, 이세돌 같은 사람들은 어려서부터(10대) 천재소리를 들으며 바둑계를 주름잡은 사람들입니다.

분명 바둑 전문가 중에는 이창호, 이세돌 보다 훨씬 오랜 기간(30년 이상) 바둑을 두어오신 분들이 계십니다.

즉, 그런 분들도 경험적으로는 이창호, 이세돌 보다 못하지 않다는 것이지요.

그렇지만 실제 바둑 대회에서 이창호, 이세돌 같은 신동들이 상을 휩쓸었던 이유는 분명 경험 외에 자신만의 독창적인 바둑세계를 가지고 있었기 때문입니다.

즉, 바둑 신동들은 남들과 다른 자신만의 창의적인 바둑을 두었기 때문에 승승장구 할 수 있었던 것입니다.

따라서 바둑은 경험보다는 창의성이 더 중요한 분야라고 말 할 수 있을 것입니다.



반면에 장기는 어떨까요?

장기라는 게임은 다양한 형태의 장기알과 장기판으로 구성되며, 게임 방법은 바둑과 비교하여 복잡합니다.

바둑과 달리 장기는 처음에 정해진 규칙대로 장기알을 배열한 후 시작하며, 도중에 장기알을 추가할 수 는 없습니다. 오로지 시작할 때 가지고 있던 장기알 만으로 게임을 진행하게 됩니다.

또한 장기게임의 첫 수는 게임마다 서로 비슷합니다. (끄트머리의 졸을 옆으로 이동하여 차의 길을 확보하고, 말을 올려 포를 궁앞에 배치하는 형태입니다.)

즉, 장기는 어떤 정해진 틀 안에서 제한된 장기알을 가지고 정해진 규칙대로 움직이는 것이지요.

따라서 게임의 자유도가 제한적입니다.

장기라는 게임은 많이 해본 사람이 무조건 이길 수 밖에 없습니다.

왜냐하면 제한된 자유도를 가졌기 때문에 플레이 패턴(정석)을 다 외워버리면 어떤 상황에서도 다음에 이어지는 패턴이 머리속에서 훤히 그려지기 때문이지요.

그래서 장기 고수들을 보면 대부분 연세가 지긋하신 분들이십니다.

따라서 장기라는 게임은 창의성 보다는 경험이 더 중요하다고 볼 수 있습니다.

* 몇 년 전에 IBM 의 DeepBlue 라는 컴퓨터가 세계 체스 챔피언을 이긴 사실을 두고 신문기사에서는 “드디어 컴퓨터가 사람을 넘어섰다.” 라고 호들갑을 떨었던 적이 있었습니다. 제한된 자유도를 가진 게임이라면 사람은 절대 컴퓨터를 이길 수 없습니다. 모든 경우의 수를 데이타베이스에 입력 후 최적화된 쿼리 알고리즘을 이용하면 사람과 비교할 수 없는 연산능력을 가진 컴퓨터가 이기는 것은 당연한 일이지요. 하지만 창의성이 요구되는 (만들어 가는 형식의) 바둑 게임은 경우의 수 자체가 없기 때문에 컴퓨터가 감히 사람에게 이길 수 없는 것입니다.




프로그래밍과 리버싱


프로그래밍
은 무에서 유를 창조한다는 의미에서 바둑게임과 비슷하다고 할 수 있습니다.

바둑 게임과 같이 프로그래밍이라는 것은 뭔가(프로그램)를 만들어내는 과정입니다.

만든다는 행위 자체에 이미 창의성의 개념이 포함되어 있지요.

프로그래밍 방법에서도 창의성이 요구되며, 그 결과물도 창의성이 크게 요구됩니다. (이미 존재하는 프로그램과 똑같은 프로그램을 만들어 봐야 크게 팔리지 않을 것입니다. 뭔가 다른 독창적인 요소가 있어야 사람들이 좋아하겠지요.)

따라서 프로그래밍은 창의성이 좀 더 중시된다고 말할 수 있습니다.



그렇다면 리버싱은 어떨까요?

이미 만들어진 프로그램을, 이미 존재하는 도구와 방법을 사용해서 분석한다는 개념으로 본다면 리버싱은 분명 장기 게임과 비슷하다고 할 수 있습니다.

또한 리버싱은 많이 해본 사람이 더 잘한다는 점에서 장기 게임과 유사합니다.

즉, 프로그래밍 신동은 있어도 리버싱 신동은 없다고 할 수 있지요.

이 말을 바꿔 말하면 아래와 같이 말 할 수 있습니다.


“내가 비록 천재가 아니지만, 열심히 노력한다면 리버싱 고수가 될 수 있다.”


네, 프로그래밍 고수가 되기 위해서는 다분히 창의성이 크게 요구됩니다. (물론 어떤 분야건 간에 창의성이 높으면 우수한 성과를 낼 수 있지요.)

하지만 리버싱 고수는 누구나 마음만 먹으면 될 수 있답니다.


+--+


Reverse Code Engineering 분야에 몸 담으신 여러분!!!

비록 처음에는 배울 것도 많고 실력도 별로 늘지 않는 것 같다고 생각되겠지만 위에서 설명 드린 바와 같이 리버싱 분야는 노력한 만큼 정직하게 성과가 나타나는 분야입니다.

계속해서 지금처럼 열심히 노력하세요. 성과가 나타나기까지 단지 시간이 필요할 뿐입니다.

www.ReverseCore.com 은 대한민국에 훌륭한 리버서가 많아질 수 있도록 작은 힘을 보태도록 하겠습니다.


모두 힘내세요! 화이팅!!! ^^

 

Trackback Address :: http://www.reversecore.com/trackback/37 관련글 쓰기

  1. HS 2009/07/07 16:48 댓글주소 | 수정 | 삭제 | 댓글

    바둑과 장기에 대한 비유.. 새롭네요~ ^^

  2. 감사 2009/07/30 17:59 댓글주소 | 수정 | 삭제 | 댓글

    댓글을 거의 안달고 웹서핑을 하는 스타일인데...
    이글을 읽고 있자니 그냥 지나칠수가 없네요 :)
    정말 좋은 비유에 이제 리버싱이란 걸 시작해 보려는 사람에게 희망을 주세요!
    감사합니다.
    좋은글 많이 쓰세요~~~

    • reversecore 2009/07/30 19:21 댓글주소 | 수정 | 삭제

      댓글 감사합니다.
      리버싱은 정말 매력적인 분야입니다.
      가끔 들러주세요~ ^^

  3. lain32 2009/08/04 20:34 댓글주소 | 수정 | 삭제 | 댓글

    개인적으로 리버스 엔지니어링을 매우 좋아하는데
    “내가 비록 천재가 아니지만, 열심히 노력한다면 리버싱 고수가 될 수 있다.”
    라는 말이 너무 마음에 드네요.

    좋은 글 감사드립니다.^^

  4. showtime 2009/10/08 13:04 댓글주소 | 수정 | 삭제 | 댓글

    참 새롭네요.
    바둑과 장기 비유 ㅎㅎ
    맘에 쏙드는군요 열심히 해봐야겠습니다~ ^^ ㅋㅋ

  5. 베리굿 2009/11/07 22:28 댓글주소 | 수정 | 삭제 | 댓글

    우와 희망적인글 감사합니다.

  6. 부자봉스 2009/11/12 00:52 댓글주소 | 수정 | 삭제 | 댓글

    지금 계속 잃으면서 느끼는건데 멋진분이시네여

  7. h0ney 2010/01/13 12:28 댓글주소 | 수정 | 삭제 | 댓글

    프로그래밍과 리버싱....
    프로그래밍이 창조의 학문이라면 리버싱은 분석의 학문이라
    사람마다 각각의 특성이 있으므로, 분석이 자신의 분야에 맞는다면
    리버싱으로 진로를 설정하는것이 좋습니다.

    리버싱도 마찬가지로 아무리 해도,
    재미가 없으면 할 맘이 들지가 않죠

    리버싱이라는 뭔가 있을 법한 이름을 찾아
    입문을 했다가, 내빼버리시는 분들을 종종 봤습니다.

    조엘 온 소프트웨어를 번역하신 박재호씨도 예전에 강의를 하다가
    "내가 디버깅 좋아하는 사람 뽀뽀해 줄게요~" 라고 할 정도로
    리버싱이라는 학문은 일반적으로 배우기 힘든 학문이 아닐까요

    그리고 프로그래밍을 모르는 사람이 과연
    리버싱을 어디까지 잘할 수 있을까요...

    • reversecore 2010/01/13 15:29 댓글주소 | 수정 | 삭제

      h0ney님, 안녕하세요.

      프로그래밍과 디버깅 모두 쉽지 않은 분야이지요.
      말씀하신대로 개인 성향에 따라 호불호가 갈릴것입니다.

      제가 아는 사람중에는 프로그래밍 경험이 거의 없지만 디버깅만 열심히 해서 뛰어난 실력을 갖춘 사람도 있습니다. 물론 그 과정에서 C 프로그래밍 실력이 자연스럽게 늘긴 했지요.

      뭐든지 자기 하기 나름인것 같아요.

      감사합니다.

  8. pico 2010/01/23 16:37 댓글주소 | 수정 | 삭제 | 댓글

    스터디 폴더를 전부 보고나서, 여기 저기 훓고 지나가다가 발자취 남깁니다. 갑자기 어셈블리가 궁금하여 구굴링하다가 우연하게 찾아왔는데 한글이라서 맘에 들어요. 더욱 맘에 드는건 원서보는 것 처럼 자세한 설명이 되어 있다는 거죠. 많은 도움 되네요. 앞으로도 좋은 글 부탁드려요.

    • reversecore 2010/01/26 20:59 댓글주소 | 수정 | 삭제

      pico님, 안녕하세요.

      칭찬 감사합니다. ^^

      좋은글 많이 올리도록 노력하겠습니다.

      자주 방문해 주세요~

  9. MetallizM 2011/05/09 09:08 댓글주소 | 수정 | 삭제 | 댓글

    리플을 안달 수가 없는 글이네요..리버스코어를 알게된건 오래되었지만...바둑과 장기에 대한 비유가 너무나 맘에 와닿습니다..이 글을 지금에서야 보다니 헐...
    보는 순간 소름이 돋더군요..

  10. 제이에스엠 2011/09/22 21:52 댓글주소 | 수정 | 삭제 | 댓글

    정말 자동으로 리플을 달게 됩니다.
    감사합니다.
    포기했었는데 다시 해야겠네요
    참고로 우리나라에서는 리버싱으로 물질을 얻거나 직업을 유지하는 데에 한계가 있을 것 입니다.

    • reversecore 2011/10/24 22:24 댓글주소 | 수정 | 삭제

      안녕하세요.

      저도 리버싱 전문가들이 개발자와 마찬가지로 전문직으로 대우받기를 바랍니다. ^^~

      감사합니다.

  11. 클레버 2011/11/23 07:14 댓글주소 | 수정 | 삭제 | 댓글

    전체적으로 옳은 말씀입니다.
    다만, 장기에서 사람이 절대 컴퓨터를 이길 수 없다는 말씀은 현실적으로는 잘 못 되었습니다.
    물론 보이는 상황으로는 옳은 말씀이지만, 실제 내막은 조금 다르다고 봅니다.
    제한된 자유도를 가졌기 때문에 플레이 패턴(정석)을 다 외워버리고, 모든 경우의 수를 데이터베이스화하고 최적의 알고리즘을 갖는다는 것은, 아이러니하게도 실제 장기판에서는 이루어지지 않는다고 생각합니다.

    물론 말씀하신 부분이 이론적으로는 장기를 최고로 잘 두는 사람 혹은 최고의 인공지능의 방향일 수는 있겠습니다. 하지만 이론과 달리 실제는 다른 점이 있습니다.
    제한된 안의 범위에서 정해진(최선이라고 나름 정의한 규칙) 일정한 방식을 정석이라고 볼 수 있습니다.
    그러나 정석은 정석일 뿐, 필승의 수가 아니라는 점입니다.
    기물 하나의 움직임에 앞으로 진행할 모든 수가 뒤바뀝니다. ( 당연하지만..-_-; )
    그래서 생각해볼 수 있는 것이 모든 경우의 수를 찾는 일인데요.
    하지만, 이건 불가능합니다.
    지금의 고성능 CPU로써도 수백 년 동안 연산해도 불가능하고, 그 수백 년이 걸리는 연산을 단지 수분 만에 처리한다는 양자컴퓨터가 존재한다고 할지라도 수백 년, 수천 년, 수만 년을 해도 불가능하다고 봅니다.
    여기에 추가로 모든 경우의 수를 찾으려 하다 보니 문제가 되는 것은 서로 기물을 취하지 않고 기물만 계속해서 움직일 수 있는 상황까지 더해서 찾아야 한다는 점인데, 이 점에서 더욱 폭발적인 경우의 수가 뒤섞이게 된다고 봅니다.

    그래서 결론은 완전하지 않은 수 연산능력은 불필요한 연산이 차지하는 비중이 크다는 것이고, 다른 차선책으로는 최적의 알고리즘을 적용하는 일이겠지요.
    그러나 이러한 규칙성을 갖는 하나의 틀 역시 조금 다른 변칙 된 수순에 의해 쉽게 돌파되어 깨져 버리고 말 것입니다.

    주위에서 기억력이 뛰어난 사람을 보면, 평소 자신이 대국했던 장기를 복귀하거나, 장기를 두다가 다른 일이 있어서 장기를 접고 나중에 다시 와서 진행하던 장기 기물의 위치를 아무일도 없던 것처럼 그대로 복귀하더군요. 하지만 장기 실력과는 비례적인 관계가 아니더군요.(물론 도움은 되겠지만요)

    글쓰신 님께서 말씀하신 바와 같이 장기 고수들을 보면 대부분 연세가 지긋하신 분들이라고 하셨습니다. 맞습니다. 다만 방대한 경험과 지식만으로는 해소될 수 없는 여지도 충분히 남아 있습니다. 아무리 자유도가 제한된 범위에서 경험과 지식을 쌓을지라도 그 지식을 끄집어내고 응용하여 가치 있는 수를 만들어 낼 수 있는 것역시 창의력과 노력의 방법 밖에는 없기 때문입니다.

    장기판은 넓게 보면 창의력이란 보이지 않는 사막과도 같습니다.
    그 사막에서 바늘을 찾는 일은 근거와 논리가 바탕이 되어야 하겠지요.
    하지만 어떠한 근거도 제시되지 않고 보이지 않는 수순을 찾아 승리의 바늘을 찾아야한다는 것은 실로 어려운 일이라고 생각합니다.

    흔히들 장기는 바둑보다 두어야 하는 수가 적다는 말을 합니다.(자유도 제한적)
    표면적으로 보여지는 부분이 그러니 틀린 말은 아니지만, 아이러니하게도 수가 적다는 말이 쉽다는 말과 같지가 않습니다. 바둑은 수를 만들어간다. 장기 역시 수를 만들어가기에는 매한가지라는 얘기가 됩니다. 다만 그 수를 찾아내는 일이 극히 제한된 루트이고 누가봐도 옳은 길이라 생각했는데, 잘 못된 길일 수도 있기에 한번 길을 잃으면 말짱 도루묵이기 때문에 어렵다고 생각합니다. 여기에 컴퓨터의 연산능력과 운영능력이 사람의 생각보다 유리한 입장에 있을 수는 있지만, 컴퓨터의 연산능력이 완전하지 않은 만큼 사람이 절대 컴퓨터를 이길 수 없다는 것 역시 잘 못 되었다고 생각합니다.(지금 현존하는 최고의 인공지능과 알고리즘을 갖춘 장기 프로그램이라고 하더라도 사람이 넘어서지 못하는 것은 아니니까요.)
    사람이 이기기 어렵다는 것이지 절대적인 기준은 아니라는 것입니다.

  12. 포쿨럼 2011/11/23 15:10 댓글주소 | 수정 | 삭제 | 댓글

    지나가다가 이글을 보게 되었는데 몇가지 비유가 조금 잘못되었네요
    위에서 클레버님도 언급하셨네요
    예를 들기 위해서 바둑과 장기를 비교하셨겠지만
    그런 비유를 통한 예는 장기류 게임의 팬들에게는 좋지 않은 느낌을 줄 수 있습니다.
    한국에서 장기류 게임을 좋아하시는 분들은 아주 않죠.
    말씀 하신것처럼 둘중에 하나가 좋고 나쁜것이 아니라 다른 것이죠 그런데 의도와 달리 바둑과 장기의 비교 때문에 그런 비교들을 보는 사람들에게 장기의 이미지가 나빠지는 경우도 많이 있었고요 그래서 글을 씁니다.

    "장기라는 게임은 많이 해본 사람이 무조건 이길 수 밖에 없습니다"
    "장기 고수들을 보면 대부분 연세가 지긋하신 분들이십니다"

    라는 하시며
    바둑은 창의력, 장기는 경험이라고 하셨는데
    그렇게 간단히 구분할 수 있는 것이 아니라고 생각합니다.

    이세돌, 이창호 같은 바둑신동들의 이야기를 하셨는데
    이건 제가 보기엔 장기류 게임과 전혀 다른것이 없는 것 같습니다.

    장기류게임은 대표적으로 장기, 체스, 샹기, 쇼기가 있습니다.
    체스, 샹기, 쇼기의 프로들을 보면 젊은 프로들이 주류입니다.
    체스만 해도 칼슨이라는 노르웨이분이 19살에 세계랭킹 1위에 올랐죠. 그전에 이미 수 많은 세계 대회에서 우승했고요.
    이제 겨우 17살인 기리라는 체스선수는 벌써 세계적인 명성을 가지고 있고 카라킨은 무려 12살때에 그랜드마스터라고 하는 체스 최고단계의 명칭을 획득하여 전 세계에 이름을 알렸었죠
    쇼기에서도 역사상 최강이라는 하부도 10대 후반에 이미 최고의 경지에 올라 수 많은 대회에서 이겼고 하부와 비슷한 시대에 태어난 쇼기프로들을
    하부세대 또는 차일드 브랜드라고 부르는데 이들은 10대 후반부터 쇼기계를 주름잡았죠. 이들은 어린 10대때부터 명성이 높았기 때문에 차일드라는 명칭이 붙었죠

    장기에서 경험을 중요시 여기셨는데
    체스 프로들이 평소에 연구를 할때 거의 모든 시간을 사용하는 것은
    오프닝(장기로 치면 포석)을 연구하는 것입니다.
    아주 유명한 체스챔피언이 "오프닝은 체스에서 가장 창의력을 발휘할 수 있는 부분이다"
    라고 하셨죠.
    체스 프로들간의 시합에서는 누가 어떤 신수(다른 사람들이 둔적이 없는 수)를 준비해서
    시합에 나오냐에 따라 승패가 달라집니다.
    즉, 누가 창의력을 더 발휘해서 , 다른 사람들이 생각하지 못한 수를 생각해 내냐에 따라 승패가 달라집니다.
    그래서 체스프로들은 대부분의 연구 시간을 오프닝에서
    창의력을 발휘해서 신수를 개발하는데 사용합니다.

    체스컴퓨터에 대해서도
    딥블루와 같은 체스컴퓨터들이 챔피언에게 이긴 것을 알고 있지만
    이 체스컴퓨터들이 그후에 아마추어들에게도 졌다는 사실은 모르시는 것 같습니다.
    사실 IBM이 이긴것은 뉴스로 자랑하지만 진 사실을 자랑하지 않겠죠.
    체스계에서는 한 평범한 아마추어가 컴퓨터를 연파해서 유명해진 일이 있었습니다.
    프로그램이 가진 한계 때문이였죠.
    히지만 이것은 어떻게 보면 꼼수라고 할 수도 있죠.
    상대가 가진 약점을 물고 늘어졌으니깐요.
    챔피언들은 자존심상 생중계되는 컴퓨터와의 시합에서 이런 방법들을 쓰지 못하죠.
    지금도 유튜브에서 찾아보시면 아마추어나 프로들이 컴퓨터를 이기는 동영상을 찾아서 볼 수 있습니다. 한번 찾아 보시기를 추천드립니다.

    딥블루 이후에 나온 최신 체스컴퓨터로 히드라 라고 하는 체스컴퓨터가 있습니다.
    유명한 체스선수를 이겼죠.
    하지만 이 컴퓨터가 좀 실력있는 아마추어들과 하루에 1수를 두는 조건으로 연습시합을 했다가
    완패했다는 사실은 잘 안 알려져 있죠.
    신문에서는 이긴게 뉴스거리가 되지 진것은 뉴스거리가 안되니깐요
    체스프로들은 컴퓨터가 전술(수읽기)가 매우 강하지만 전략적인 부분에서 약하다라는 말을
    많이 합니다.
    히드라와 아마추어 사이의 시합이 이것을 증명하고요
    사람에게 하루에 1수라고 하는 모든 전술을 계산할 수 있는 충분한 시간을 주면
    (시합에서 사람들이 실수를 하는 이유는 시합의 부족한 제한시간 때문이죠)
    전략적인 실력의 우위로 좀 실력있는 아마추어도 컴퓨터를 이길 수 있다라는 것을 증명했었죠

    반대로 바둑에서는 최근 프로그램이 발전해서
    2009년엔 9줄바둑에서는 컴퓨터가 프로들을 상대로 이겼습니다.
    19줄 바둑에서는 접바둑에서 점점 더 많이 이기고 있고요.
    http://baduk.netmarble.net/News/news_view.asp?seq=1611
    뉴스를 확인해 보세요
    바둑프로그램들도 계속 발전되도 있죠,
    바둑에서 컴퓨터가 감히 사람에게 이길 수 없다 라고 단언하시는 것은 좋지 않습니다.

  13. reversecore 2011/11/30 01:42 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요.

    클레버님과 포쿨럼님의 댓글에 감사드립니다.

    제 짧은 지식에 기반한 부족한 글에 훌륭한 댓글을 달아주시니,
    저와 다른 방문객에게도 좋은 참고가 될 것입니다.

    * 저도 최근에 우연히 체스 그랜드 마스터들이 대부분 10대, 20대라는 사실과 나이를 먹어감에 따라서 실력도 차츰 떨어진다는 사실을 알게 되었습니다. 그 이유가 지금도 참 궁금합니다. (아니면 이유는 당연한 건데도 그 나이를 한참 지난 상황에서 인정하고 싶지 않은 걸지도 모르겠습니다. ^^)

    감사합니다.

  14. lucy_han 2012/02/16 15:47 댓글주소 | 수정 | 삭제 | 댓글

    좋은글 읽고갑니다.

    프로그래밍 하다가 리버싱에 관심이 생겨서 돌아다니다가

    들럿는데 아직 고등학생이기도하긴 하지만

    국내에서 리버스 엔지니어를 필요로 하는 회사는 어떠한 회사들이있고

    들어가게 되면 어떤일을 하게되나요 ?

    또 이쪽으로 직업을 선택하려면

    알아야 할 정보라던가 알려주시면 감사하겠습니다.


◀ PREV : [1] : ... [53] : [54] : [55] : [56] : [57] : [58] : [59] : [60] : [61] : ... [91] : NEXT ▶