"유레카!!" 느껴봅시다!!

프로그래밍 2007.06.11 20:13

  요즘 조금씩 《임백준의 소프트웨어 산책》이라는 책을 읽고 있습니다(시험기간임에도 불구하고..;;). 머릿글에서 저자는 이 책은 '공부'를 위한 책이 아니라 프로그래밍에 조금이라도 관련이 있는 사람이라면 소설책처럼 가볍게 읽는 목적의 책이라고 강조하고 있습니다. 책 분류도 '프로그래밍 일반/교양'이라고 되어있네요^^ㅋ 혹시 책을 보시려면 공부를 위한 책은 아니라는 것을 미리 알고 읽으셔야 할 것 같습니다.

  아직 앞 부분만 조금 읽었을 뿐인데 저자가 말하는 소설책 처럼 재미있습니다. 제가 대강 알고는 있지만 설명하라고 한다면 우물쭈물 할만한 주제인 '객체지향', '다형성', '상속', '캡슐화' 등에 대해서 책의 초반부분에 재미있게 설명하고 있습니다. 그 설명이라는 것이 공부하는 서적처럼 설명되어있는 것이 아니라 '왜 이런 개념이 생겨났는가', '이런게 왜 필요했는가' 정도를 컴퓨터 역사속의 이야기들과 잘 버무려 설명하고 있습니다. 일단 책을 다 읽어봐야 블로그에 뭐라도 쓸 수 있을것 같으니 책의 재미있는 부분은 나중에 기회가 될 때 블로그에 적겠습니다.

소프트웨어산책_뒷면


  오늘 쓰고자 하는 글은, 책 뒷변에 쓰여있는 글 입니다. 책의 뒷면에 이런 짧막한 글이 있습니다.

"어려운 문제를 드디어 풀어냈다는 성급한 기대가 K씨의 심장을 빠르게 뛰게 만들었다. 사실 프로그래머가 이와 같은 '유레카'의 순간에 느끼는 순백의 열정은 사랑에 빠진 청춘의 감격과 별로 다를 것이 없다. 적어도 그 순간만큼은 세상의 모든 사물이 그 자리에서 동작을 멈추고 시간이 정지한다."

_프로그래머 K씨의 하루 중에서

  무심결에 책 뒷면을 살펴보다가 읽은 글인데 글에서 말하는 '유레카'의 순간, 저 알고 있어요. 저렇게 사랑에 빠진 청춘의 두근거림으로 나타날 수도 있고, 저 처럼 등골을 타고 내려오는 짜릿한 전율로도 다가올 수 있는 '유레카'의 순간!!

  제가 느꼈던 전율의 '유레카'를 예전에 제가 블로그에 쓴 글에서 짧막하게 적었었는데, 저만 느꼈던게 아니었군요. 이렇게 책에도 쓰여있을 정도니까요. 저는 '유레카'의 순간을 이렇게 적었었죠.

  생각하는 방법을 바꾸고 새로운 시각으로 문제에 접근해 보면 가끔 너무나도 기발한 해결법이 튀어나온다. 그건 마치 '2+2+2+2+2'라는 긴 수학 식에서 '2*5'라는 짧은 식을 발견하는 것과 같다. 반복되는 덧셈 과정에서 발생할 수 있는 실수를 획기적으로 줄일 수 있고 식 조차도 간소화되어버린다. 다만 내부적으로는 덧셈을 계산하는 것 보다는 훨씬 부하가 가중될 수 있지만 말이다. 덧셈보다는 곱셉이 어렵잖아요^^ㅋ

  긴 코드를 붙잡고 씨름을 하다가 갑작스레 그 모든 코드를 한줄로 해결할 수 있는 방법이 머릿속에 떠올랐을땐 혼자서 환호한다.

유레카!!

  그 순간만큼은 나도 아르키메데스가 목욕탕에서 부력을 발견했을때와 비견할만한 발견을 한 느낌이다. 순간 등골을 타고 온몸에 짜릿함이 전해진다.

  이 '유레카'의 순간에서 느껴지는 느낌은 마치 환각제와 같다(아마 비슷하지 않을까?). 마약보다 더 큰 쾌감을 주며(마약을 해본적이 없어서..아마도?) 중독성이 있다. 난 아마도 이게 좋아서 프로그래밍을 하고싶어 하는게 아닌가 싶다.

  제 친구가 제게 《임백준의 소프트웨어 산책》이라는 책을 소개해준 것 처럼, 저도 프로그래밍에 관심이 있는 사람들에겐 이 책을 꼭 추천해 주고 싶습니다.

  그나저나 혹시 다른분들 중에서 '유레카'의 순간을 느껴보신 분들 계신가요? 계시다면 그 순간에 느끼는 느낌을 뭐라고 표현하고 싶으신가요?S

'프로그래밍' 카테고리의 다른 글

자바 논리연산의 단축평가(short-circuit)  (8) 2007.07.21
Mysql 4.0.X 한글저장 문제  (0) 2007.06.23
"유레카!!" 느껴봅시다!!  (6) 2007.06.11
임백준의 소프트웨어 산책  (4) 2007.06.01
맥OSX 터미널  (0) 2007.05.03
코딩 스타일  (6) 2007.04.21
top
     TAG 유레카, , 프로그래밍
  1. Favicon of http://www.myhyuny.net/ 화현 2007.06.12 08:35 신고 수정/삭제 댓글

    이 글을 보니 읽어보고 싶어지네요... ㅎㅎㅎ

  2. Favicon of http://laputian.net Laputian 2007.06.14 15:40 신고 수정/삭제 댓글

    유레카는 역시 수학문제 풀 때 느껴지지 않나 싶습니다. 1시간 넘게 고민하다가 순간적으로 원리를 이해했을 때의 그 짜릿함이란..

    ... 사실 그딴거 안 느껴도 되니 공부좀 안했으면 좋겠습니다.

    • Favicon of http://signpen.net 싸인펜 2007.07.24 23:32 신고 수정/삭제

      필요하다고 생각되면 공부를 하게 되는 것 같습니다. 필요성을 느끼기 전까지는 공부라는게 참 지루하고 지겹죠..ㅎㅎ

      제 친구가 했던 말이 생각나네요. 공부하는게 싫고 노는게 좋아서 항상 이런 논리를 내새웠죠..ㅎㅎ
      "공부하는 것에도 때가 있듯이, 노는 것에도 때가 있다"

  3. Favicon of http://www.shimminkyu.com 망고 2007.07.23 13:31 신고 수정/삭제 댓글

    전 브라보! 라고 한다는 ^^

댓글 쓰기

재귀적 사용

프로그래밍 2007.02.10 03:25
GNU
   GNU....
   GNU is Not Unix

  GNU, 참 재미있는 이름이다. GNU라는 이름 자체가 재귀적으로 사용되어있다. 약자는 'GNU'이고 풀어쓰면 'GNU is Not Unix'라고 쓴다.

  2학년때 C를 배우면서 함수의 재귀적 사용을 이용한 팩토리알 계산 프로그램을 보고 참 신기했던 적이 있었다. 예제 코드를 보기 전까지는 그런 사용법을 본적도 없었고 상상조차 해 본적이 없었기 때문이었다.

  생각하는 방법을 바꾸고 새로운 시각으로 문제에 접근해 보면 가끔 너무나도 기발한 해결법이 튀어나온다. 그건 마치 '2+2+2+2+2'라는 긴 수학 식에서 '2*5'라는 짧은 식을 발견하는 것과 같다. 반복되는 덧셈 과정에서 발생할 수 있는 실수를 획기적으로 줄일 수 있고 식 조차도 간소화되어버린다. 다만 내부적으로는 덧셈을 계산하는 것 보다는 훨씬 부하가 가중될 수 있지만 말이다. 덧셈보다는 곱셉이 어렵잖아요^^ㅋ

  긴 코드를 붙잡고 씨름을 하다가 갑작스레 그 모든 코드를 한줄로 해결할 수 있는 방법이 머릿속에 떠올랐을땐 혼자서 환호한다.
유레카!!
  그 순간만큼은 나도 아르키메데스가 목욕탕에서 부력을 발견했을때와 비견할만한 발견을 한 느낌이다. 순간 등골을 타고 온몸에 짜릿함이 전해진다.

class Factorial
{   
    static int op_Factorial(int n)
    {
        if(n==1)
            return 1;
        else
            return n*op_Factorial(n-1);
    }
    public static void main(String[] args)
    {
        int a;

        a = op_Factorial(5);
        System.out.println("5!="+a);
    }
}

  그냥 팩토이알 생각이 난 김에 자바의 메소드를 재귀적으로 이용해 5! 값을 구해내는 간단한 코드를 작성해 보았다.

  최근에 맥북을 장만한 후에 자바코드 작성을 위해서 Xcode를 설치 해 보았다. 잠깐 만져본게 전부이지만 재미있는 녀석같다. 뒤늦게 알았지만 맥OS X용 자바 컴파일러는 Xcode를 통해서 설치가된다. C컴파일러로는 GCC가 설치되고, 코코아라던가 카본처럼 윈도우즈에서는 볼 수 없었던 신기한 녀석들도 함께 설치가 되었다. 아직은 윈도우즈에서 코드를 작성하는것이 익숙해서 맥으로는 많이 헤맨다. 그래도 새로 보는 물건을 이리저리 연구해가는게 재미있어서 종종 만져보고는 있다^^ㅋ

  그러니까 오늘 일기의 결론은... 코드를 짜면서 잘 해결되지 않는 문제가 발생했을땐 잠깐 담배 한대 태우면서 여유를 가지고 그것에 대해서 다시한번 생각해 본다. 그러면 시간이 오래 지나지 않아 외칠 수 있다. "유레카!!" 싸인펜은 엉뚱한넘S

June 2, 2007 Update
  GCC는 Xcode와 함께 설치하지만 자바 컴파일러는 OSX에 기본적으로 설치되어있습니다. 당시엔 잘 몰라서 Xcode와 함께 설치된다고 기록해 두었네요^^ㅋ

'프로그래밍' 카테고리의 다른 글

공인인증만이라도 자바로~  (2) 2007.03.14
초급개발자가 본 어이없는 프로젝트의 진행  (14) 2007.03.05
재귀적 사용  (6) 2007.02.10
웹제로 호스팅의 modsecurity  (14) 2007.02.06
mysql 4.1.X 한글처리  (6) 2007.01.12
JSP에서 JDBC클래스 로드  (2) 2007.01.02
top
     TAG gnu, 유레카, 재귀호출
  1. Favicon of http://www.myhyuny.net/ 화현 2007.02.10 11:55 신고 수정/삭제 댓글

    오, 재귀함수의 아주 기초적인 구조네요 ㅎㅎ
    그런데 저 함수에서는 -값을 넣으면 에러가 날 것 같네요 그래서~

    if(n > 1) return n * op_Factorial(n - 1);
    return 1;

    이런식으로 바꿔보는건 어떻까요 ^^;

  2. Favicon of http://wooyoon.net 흰우유 2007.02.10 12:23 신고 수정/삭제 댓글

    저는 그래도 담배는 해롭습니다.. 요러고. ㅡ.ㅡ

  3. Favicon of http://expj.net expj 2007.02.11 15:07 신고 수정/삭제 댓글

    ㅋㅋ 제가 컴퓨터 과외를 하나 하는데요, 거기서 그 친구한테
    아주 간단한 알고리즘 짜는 숙제를 이런식으로 생각해보라고 하면서
    이것을 설명하는데 한참 걸렸던 기억이 나네요 ㅠㅠ
    함수에 익숙한 사람들이야 한번 보면 오호! 라고 느껴지는 이 방법이
    함수에 익숙하지 않은 사람들에게 설명하려면 정말 힘들다는걸 느꼈었습니다 ㅠㅠ
    GNU이름 너무 재밌어요 ㅋㅋㅋ :)

    • Favicon of http://signpen.net 싸인펜 2007.02.11 16:09 신고 수정/삭제

      expj님!! 과외도 하시는군요!!
      누군가에게 무언가를 이해시키고 가르쳐 주는게 상당히 어려울텐데, 멋지십니다^^ㅋ

댓글 쓰기