ps.
C에서 C++로 넘어 오면서 C의 장점과 단점인 제어권에 대해서 말이 많았다.
C의 제어력이 좋고 제안이 없기 때문에 마음껏 표현 할 수 있다는 장점이 있지만
무작위로 사용될 수 있기 때문에 잘 못 사용하게 될 우려도 많았다.
그래서 그 제어력을 마음껏 사용해서 개발해보니, 프로그램에 많은 버그를 만들고 질이 떨어 졌다.
물론 그러한 것들을 잘 사용하면 문제가 없지만
즉, 그것을 잘 사용하기 위해서는 전체적인 평준화, 즉 법칙 같은 것을 준수 해야 하나
모든 프로그래머가 그런 것을 다 제대로 교육 받거나 알면서 사용하지 않는 문제가 있다.
그래서 C++로 넘어 오면서 어떠한 장치를 만들게 되는데
그 장치는 꼭 의존적이지는 않지만, 프로그래머에게 컴파일러가 알려줄 수 있는 시스템을 마련하거나
혹은 모든지 명시적으로 사용해서 명시 되지 않은 것들은 컴파일러가 집어내게 해 줄 수 있게 해주자는 식으로 마련 됐다.
그런 권한들을 컴파일러에게 넘겨주는 쪽으로 많이 진행이 됐다.
사실 define을 없애고 inline으로 대처하자라는 것도 보다 컴파일러에게 많은 정보를 쥐어 줘서 프로그래머에게 많이 알려줄 수 있도록 하여 버그를 줄이자는 취지이다.
그렇지만 꼭 의존적이기 보다는 기호로 되자는 의미다.
즉 프로그래머가 반드시 해야 할 것이 아니라 필요하면 사용할 수 있도록 해주자는 것이다.
어떻게 보면 프로그래머의 자율성을 존중한 것이라 생각하지만
그런 여러 장치들 중에 하나가 explicit(명시화) 같은 것이라고 본다.
여담으로 goto문을 C나 C++에서 사용하지 말자고 하지만
나뻐서가 아니고 무분별하게 사용하면 문제가 되기 때문이다.
그래서 당시에 나오는 말이
goto 문을 C/C++에서 제외시키지는 않지만 만약 사용하려면 제대로 알고 사용하길 바라는 것이다.
출처 : http://cafe.naver.com/cafec/2433