선언과 정의.


선언( declaration )


    선언이 프로그래밍 언어에 존재하는 이유는 세상속에서 선언이 갖는 가치와 같다.


    구체화 하지 않은 수많은 약속들을 사람들 사이에 알리기 위해 우리는 선언을 활용한다.

    예를 들자면, 만난지 한 시간도 안된 여성에게 다가가,


    우리 사귀자! ( 동사를 바꾸면 19금 가능 )


    이런 경우겠지.


    공감할 컨텍스트가 있는 경우엔 ( 여성도 어지간히 외로웠다든지 ) 그게 또 통하는 경우가 있다.

    특히 이런 상황은 어린 아이들 사이의 놀이에서 자주 등장한다.


    우리 소꿉놀이하자!

    구래!

    내가 아빠고 네가 엄마야!

    구래!


    뭐 이런.


    유치하지 않은가?

    선언은 작위적이다.

    하지만 효과적으로 협동할 수 있는건 사실이다.

    당연히 배경지식이 거의 없는 바보 멍탱구리 컴파일러에게 협동을 요구할 때도, 선언은 유용하게 된다.



정의( definition )


    상대방도 협력의 의사를 표해 올 경우 ( 구래! ) 역할과 책임의 범위에 대한 정의가 필요해진다.


    군데 아빠는 뭘 하는거고 엄마는 뭘 하는거야?


    라는 질문에 답하지 않으면 아무것도 할 수 없다. ( 데꿀멍? )


    이에 필요한 구체적인 사항들을 명백히 하는 것이 정의다.

    하지만 막상 정의를 해 보면 그 정의 안에서도 수 많은 다른 개념들을 차용해야 한다.

    이 때, 정의 안에서 또다른 세부 정의를 풀어쓰는 것 보다는,

    선언된 다른 개념을 활용하는 것이 ( 호출 ) 효과적이라는 것.


    아빠는 요리 재료를 찾아올테니까, 너는 요리를 해!

    앙~ 군데~ 요리가 뭐야?

    ( 슈발~ )


    이래서 수준에 맞는 애랑 놀아야 된다.

    그러니 다시 한 번 말하지만,


    컴파일러에게 니 생각을 일일이 가르치기 귀찮으면 프레임웍을 써라.



여러분이 살면서 얼마나 세련된 문장을 생활속에서 사용하는가?


밥 먹자.

고마 자자.

공부 하자.

개소리 그만해라.


수준이지?


프로그래밍도 별반 다를 바 없다.


우리는 크게는 명사와 동사, 작게는 주어, 목적어, 동사 에만 집중해도 대부분의 일을 할 수 있다.

약간의 수식어가 필요한 경우도 있지만 말이다.