기억해 두거라. 추상화, 상속, 다형성이란 개념을 알았다고 해서 네가 훌륭한 객체 지향 설계자가 되는 것은 아닐지어다. 진정한 구루는 어떻게 하면 유연성을 갖도록 설계를 하여, 유지보수가 용이하고 변화에 능동적으로 대응할 지에 관해 고민을 한다. (알겠느뇨?)

Remember, knowing concepts abstraction, inheritance, and polymorphism do not make you a good object oriented designer. A design guru thinks about how to create flexible designs that are maintainable and that can cope with change.


- guru틱한 자세로 앉아있는 어떤 인도여자 왈(in Head First Design Pattern) -
stroustrup 이 C를 제껴놓고 C++를 만들 때 추구했던 목표 중 하나는 속도 향상이 아니라 유지보수성(maintainability) 향상이 아니었을까? 다시 말하자면 그의 목표는 C보다 나은 유지보수성을 갖춘 언어를 만드는 것에 있지 않았을까?
아니 좀더 일반화하여, Object Oriented Programming이라는 개발 방법론의 탄생 배경에는 보다 나은 유지보수성을 갖춘 프로그래밍 방법론이라는 목표가 담겨있지 않았을까?

그러한 최종 목표를 달성하기 위해 그들(OOP의 선구자들)은 코드 가독성(readibility)을 높이는 데 더 많은 신경을 쓰지 않았을까?

됀장.. 당장에 쓰고있는 언어, 내 밥줄을 잡고 있는 언어.. 여기에 담긴 제작자의 의도를 이제서야 파악하려 하고 있다.. 헐헐..


p.s 만약 나의 생각이 맞다면.. 그들 역시 나처럼 유지보수하는 데에 똥빠지도록 고생하였을 것이 분명하다.. 오죽 고생했으면 잘나가던 언어(C)를 놔두고 새로 만들 생각까지나 했겠어?
Posted by 어쨌건간에