OLEDB 객체 모델은 자동화 기술을 사용하지 않고 커스텀 COM 인터페이스를 통하여 기능을 제공하며, 이것은 스크립트 언어에서 직접 OLEDB 인터페이스를 사용할 수 없다는 것을 의미하게 됩니다. 따라서, UDA는 스크립트 언어에서도 OLEDB를 사용할 수 있도록 ADO(ActiveX data object)라고 하는 애플리케이션 레벨의 프로그래밍 인터페이스를 제공해주고 있습니다.
ADO의 가장 큰 이점은 사용하기 쉽다는 것입니다. ADO의 객체 모델은 복잡한 계층적인 구조를 갖는 DAO나 RDO의 객체 모델에 비하여 단순하고 평면적인 구조를 갖기 때문입니다. 개발자는 ADO를 사용하여 단순히 몇줄의 코드를 작성하는 것만으로도 데이터 소스에 접근하는 애플리케이션을 생성할 수 있습니다. ADO는 상위 레벨의 프로그래밍 인터페이스를 제공하므로, 스크립트 언어 뿐만 아니라 비주얼 C++나 비주얼 베이직 등의 모든 언어에서 사용될 수 있습니다.
ADO는 OLEDB 데이터 소비자이기 때문에 모든 OLEDB 데이터 제공자와 함께 사용될 수 있으며, 특정한 OLEDB 데이터 제공자나 데이터 소스에 한정된 기능을 구현하지는 않습니다. 이와 함께 ADO 자체도 OLEDB 데이터 제공자 위에 어떤 새로운 기능도 추가하지 않습니다. OLEDB 데이터 제공자의 기능을 확장하는 것은 OLEDB 서비스 컴포넌트의 역할이기 때문입니다. 사실, ADO가 제공하는 기능의 대부분은 OLEDB 데이터 제공자와 서비스 컴포넌트에서 제공하는 기능입니다. 또한, 이와 함께 ADO는 OLEDB 데이터 제공자의 기능을 해치지도 않습니다.
--- p.469
언젠가는 이런 책을 꼭 써보고 싶었습니다. 그리고 14번째 만에 이제 겨우 시작하게 되었습니다. ...(중략)...
'객체지향 이야기'에서는 딱딱한 번역투의 전형적인 컴퓨터 서적 문체에서 과감히 벗어나서 이야기 식으로 바꾸었답니다. 가뜩이나 어려운 객체지향 기술을 딱딱하게 쓴다면 여러분에게 지하철에서 잠을 청해야 하는 또 하나의 핑계를 만들어줄 것이 뻔하기 때문입니다. 나는 이 책을 통해서 여러분들이 객체지향 기술을 가슴으로 느낄 수 있게 되기를 바랍니다. 그것은 단순히 머리로 이해하는 것이 아니라, 몸에 벤 습관처럼 여러분과 하나가 되는 것입니다. 그렇게 객체지향 이야기는 느낌을 주는 책이 되기를 기대합니다.
이 책은 바닷물 속에 잠겨 있는 빙산의 91.7% 부분에 대해서 이야기합니다. 결코 드러나지는 않지만 그것 없이는 작은 파도에도 맥없이 뒤집혀버리기 때문입니다. 그래서 '객체지향 이야기'는 겉으로 드러나는 화려함보다는 보이지 않는 내면의 견고함을 이야기하고 싶어합니다.
그리고 그것이 끝이 아니라 새로운 시작을 준비하는 것임을 이야기합니다. 그 안에 튼튼한 기반을 갖추고 여기에서부터 새로운 시작을 하는 것이지요. 그래서 '객체지향 이야기'는 항상 새로운 시작을 준비하는 사람들을 위한 것이 됩니다.
내게 있어서 객체지향 이야기는 지금까지 내가 해왔던 것들을 정리하는 의미를 가지고 있습니다. 언젠가 이 책의 의도를 한 연구소의 연구원에게 말했더니 "그럼, 이 책만 읽으면 선생님처럼 되는 거예요?" 하고 되묻는 바람에 웃었던 기억이 있습니다. 그러니까 "이 책 일주일이면 전병선만큼은 한다' 이렇게 되는 거지요. 객체지향 이야기는 나의 지난 경험들 중에서 에센스만을 뽑은 것으로 생각할 수 있습니다. 어쩌면 지금까지의 13권의 책들은 이 책을 위한 준비 작업이었으며, '객체 지향 이야기'가 비로소 나의 첫번째 책이 되는 셈입니다. 그리고 '객체지향 이야기'는 새로운 시작을 위한 출발점이 될 것입니다.
--- 머리말에서
호랑이 담배 먹던 시절에 톱질을 기가 막히게 잘하는 목수가 있었답니다. 톱 하나만 있으면 모든 게 다 해결되었지요. 그야말로 톱의 달인이지요. 그래서 이 목수의 연장통에는 항상 톱 하나만 달랑 들어있었답니다. 어느날 이 목수에게 나무 판자를 매끄럽게 다듬어야 할 일이 생겼답니다. 이 톱의 달인은 여느 때나 다름없이 톱으로 나무 판자를 다듬기 시작했습니다. 이 작업은 몇날 며칠이고 계속되었습니다. 마침내 나무 판자를 다듬는 작업이 끝났을 때 사람들은 눈이 휘둥그레졌답니다. 모두들 '아! 역시!' 하며 감탄을 금치 못했습니다. 믿기지 않을 만큼 나무 판자가 매끄럽게 다듬어져 있었기 때문입니다. 이때 이 광경을 지켜보던 다른 목수가 그 옆에 있던 나무 판자 몇 개를 주섬주섬 챙기더니 탁자 위에 올려놓고 대패로 하나씩 쭉쭉 밀어버렸답니다. 순식간에 나무 판자들이 모두 매끄럽게 다듬어졌고 그 자리에 있었던 사람들은 놀라서 멍하니 나무 판자들을 바라보았습니다. 물론 톱의 달인도 얼굴이 벌게진 채 아무말도 하지 못하고 나무 판자들을 바라보았답니다.
근래들어 부쩍 어떤 언어를 공부해야 하는지 문의하는 메일이 많이 옵니다. 요즘 인기있는 프로그래밍 언어로 각광을 받고 있는 c++와 자바, c#, VB.NET 언어 중에서 어떤 것을 공부해야 좋겠느냐는 것이죠. 이 질문의 의도는 제일 좋은 것 하나만 공부하면 되지 않겠느냐는 생각인 것 같은데요. 글쎄 그것이...
실제로 실무 필드에 나가서 개발자로 일을 하다보면 여러가지 상황에 부딪치게 됩니다. 가령 내가 c++ 언어를 좋아하고 프로그래밍을 잘 할 수 있다고 하여도 C++ 언어만 사용하게 되는 경우는 거의 없는 것 같습니다. 오늘까지 C++ 언어를 사용했다고 하더라도 갑자기 자바를 사용하는 새로운 프로젝트가 수주되면 미련없이 C++ 언어를 버리고 자바 언어와 친해져야 합니다. '나는 죽어도 c++ 언어만 사용하겠다' 이렇게 주장해봐야 통할 리가 전혀없습니다. '못하겠으면 나가라 자바 언어 할 수 있는 사람을 데려다가 쓰겠다' 뭐 이런 식의 결과로 끝나는 경우도 있을 수 있습니다.
이글을 쓰는 요즘 인터넷 온라인 상에서 재미있는 논쟁이 벌어지고 있습니다. 닷넷이냐 자바냐는 것이죠. 마이크로소프트가 닷넷이 자바의 J2EE(Java 2 Enterprise Edition)보다 훨씬 빠르고 안정적이다고 테스트 결과를 발표하면서부터 시작된 이 논쟁은 '너 몇 살인데 까부냐?'는 식으로까지 가고 있는 듯 합니다. 하기는 이러한 논쟁이 이번이 처음은 아니죠. 마이크로소프트 SQLServer와 오라클 사이의 데이터베이스 싸움도 볼 만 했습니다. 그러나 그게 어디 승부나 나는 싸움인가요? 하지만 여기에 많은 개발자들이 끼어들어, 대부분 이런 논쟁은 대리전 양상을 띠게 됩니다. 하지만 더 이해가 되지 않는 것은 개발자들이 왜 이런 논쟁을 하느냐는 것입니다. 물론 당사자인 회사들은 그게 결국 밥그릇 싸움이니까 그렇다고 하더라도, 개발자들이 일종의 흑백 논쟁에 끼어드는 것은 그다지 바람직한 일이 아닌 듯 싶습니다. 그보다는 논쟁에 소모되는 시간과 힘을 열린 마음으로 상대방의 기술을 받아들이는데 사용하는 것이 자신의 발전을 위해 더 나을 듯 합니다.
어쩌면 개발자들은 앞에서 예로 든 목수와 크게 다를 바가 없습니다. 목수의 연장통에 자유롭게 사용할 수 있는 연장이 많으면 많을수록 그 연장이 필요한 때 적절하게 사용할 수 있을 것입니다. 톱은 나무를 자르는데 사용하는 연장이지 나무를 다듬는데 사용하기엔 적당하지 않은 것이지요. 나무를 다듬고 싶다면 대패를 사용하는 것이 나을 것입니다. 목수가 사용하는 연장들은 각기 그 쓰임새가 있는 것이지요. 그리고 목수가 자유롭게 사용할 수 있는 연장이 많으면 많을수록 그만큼 일을 할 수 있는 기회는 더 많아지게 됩니다. 그렇지 않난요? 여러분이 개발자라고 하는 목수라고 한다면 이들 프로그래밍 언어나 소프트웨어 기반 기술들은 여러분의 연장입니다. 필요한 곳에 마음대로 꺼내어 쓸 수 있는 도구인 것이지요. 여러분이 자유롭게 사용할 수 있는 연장이 많으면 많을수록 여러분은 그만큼 자유로운 소프트웨어 개발자가 될 것입니다. 그래도 여러분의 연장통에 C++ 언어라고 하는 연장 하나만 달랑 넣어둘 건가요?
그런데 재미있는 것은 하나의 언어를 이해하는데 100%의 노력이 필요하다면, 두개의 언어를 아는데는 50%의 노력만 더 투자하면 된다는 것입니다. 세개의 언어를 아는데는 30%의 노력만 더 하면 되지요. 이런 현상이 일어나는 이유는 이들에게 공통되는 요소가 있기 때문이지요. 결국 이들 모두 비슷하다고 하는 겁니다. 자바 기술을 잘 이해하고 있다면 닷넷 기술을 이해하기 그다지 어렵지 않을 것입니다. 그 반대도 마찬가지죠. 오히려 상대방의 기술을 아는 것이 내가 주로 사용하는 기술을 더 확실히 이해하게 하는데 도움을 주지요. 이렇게 내 연장통에 사용할 수 있는 연장들이 쌓이게 되면 그만큼 내가 해결할 수 있는 능력이 쌓이게 되는 것입니다. 이 책에서 C++, 자바, C#, VB.NET 등의 언어를 모두 다루는 이유가 여기에 있습니다.
--- pp.50-51