Search

'프레임워크'에 해당되는 글 1건

  1. 2010.10.03 WPF를 생각한다2 - 좋은 프레임워크의 조건. (2)

WPF는 극복해야한다.

WPF
가 극복해야 하는 그것은 사실 WPF만이 가지는 고유한 것이 아니다. 그것은 모든 프레임워크라 불리는 것들이 극복 해야 하는 일종의 원죄와도 같은 것이다. 그리고 그 원죄는 그것을 사용하는 개발자가 아닌 그것을 만든 창조자가 깨끗이 씻어 구원의 길로 이르게 해야 한다. 다시 말한다. 창조자들은 그 문제를 반드시 해결해야만 한다.

그렇다면 그 원죄란 것이 무엇인가? 조엘은 이 원죄를 The Law of Leaky Abstractions라는 멋진 글로 잘 정리해놓은 바 있다. 바로 '추상화'에서 오는 side-effect인 것이다.

 

So the abstractions save us time working, but they don't save us time learning.

 

And all this means that paradoxically, even as we have higher and higher level programming tools with better and better abstractions, becoming a proficient programmer is getting harder and harder.

, 역설적이게도 높은 추상화의 프로그래밍 툴을 가지고 있다고 하더라도 숙련된 프로그래머가 되는 것은 오히려 점점 더 어려워진다. 또한 추상화는 프로그래머가 일하는 시간을 절약해 주지만 그것은 결코 프로그래머의 배움의 시간을 절약해주지는 않는다. 더 나아가보자. 높은 추상화 레벨의 프로그래밍 툴(도구와 프레임워크)을 사용해야 할 때 개발자가 알아야만 하는 지식의 양은 오히려 증가한다. 우리는 배워야 한다. 알고리즘이 아닌, 컴퓨터 사이언스가 아닌, 심지어 C#언어도 아닌 그 WPF를 별개로 배워야 한다. 그것만의 철학과 그것만의 독자적 개념과 그것만의 언어를 따로 배워야 한다.

 

따라서, 훌륭한 프레임워크는 첫째, 다음과 같이 말할 수 있어야 한다.

이 프레임워크를 배우기 위해 투자한 당신의 시간이 절대 헛되지 않을 것입니다.”

 

프레임워크의 창조자는 위 문장을 개발자들이 의식적이든 무의식적이든, 사실로 느낄 수 있도록 해야 한다. 개발자들이 의식적으로 분명히 느낄 수 있도록 프레임워크는 우리에게 그 배움의 가치가 프레임워크의 목적 생산성의 향상을 가져다 줄 것이라는 사실을 자세하고도 측정 가능한 수치로 우리에게 제시해야만 하고 개발자들이 무의식적으로 그 프레임워크가 곧 대세가 될 것이라는 사실, 고로 이 프레임워크를 배우는 것이 네게 이득을 가져다 줄 것이라고 세뇌시켜야 한다.

WPF는 이 작업에 성공했는가? 난 이 질문에 대한 답을 하지 않겠다. 왜냐면 당신이 WPF에 대해 느끼는 이미지가 바로 그것의 대답이므로.


둘째, 좋은 프레임워크는 기존의 개발자들이 쉽게 배우고 사용할 수 있도록 좋은 프로그래밍 경험을 가지고 있어야 한다. 어렵게 말하지 말자. 사용하기 쉬워야 한다는 것이다. 가장 좋은 것은 그것의 독자적인 언어와 도구 그것이 그것만이 가지는 개념을 잘 표현할 수 있도록 하는 것이다. 또한 배우기 쉽도록 다양한 예제와 서적을 제공해 주어야 한다.

WPF는 이 작업에 성공했는가? . WPF는 젠장, (깊이) 배우기 쉽지 않다. 굉장히 웃긴 것은 WPF GUI프로그래밍 미 경험자보다 기존의 Win32 WinForm을 해오던 개발자들이 저절로 알아내기 힘든 개념을 참 많이 가지고 있다는 것이다. 이것은 기존에 알던 지식이 새로운 배움에 오히려 해가 될 수 있다는 것을 의미하며, 이것은 기득권에 반하는 것이다. 참으로 WPF의 색은 너무나 붉으며 그가 서있는 장소는 너무 왼편이다.


셋째, 좋은 프레임워크는 그 자신을 두꺼운 외투로 감추는 것이 아니라 안이 훤히 비치는 시스루 옷을 입고 나타나야 한다. 즉 그것이 어떠한 문제를 해결하기 위해 출발했고 그것이 그 문제를 어떠한 방법으로 해결 했는지, 반드시 우리에게 최대한 자세히 보여야 한다. 추상화에서 오는 Side-Effect를 극복하는 방법이 바로 여기에 있기 때문이다.

WPF는 이렇게 하고 있는가? . 그리고 바로 이 지점에서 내 불만이 폭발한다. , 추상화의 문제가 바로 극명하게 나타나는 것은 대부분 성능의 문제에서 비롯된다. 새 프레임워크를 들여왔다. 생산성이 폭발한다. 열심히 무엇인가를 만들어냈다. 그런데.. 점점 느려진다. 이것을 해결하려면 개발자가 만든 프로그램이 아닌, 그 프로그램의 토대, 곧 그 프레임워크 내부의 동작과 원리를 자세히 알아야 한다. 우리는 그 정보를 쉽게 얻을 수 있는가? 내 대답은 긍정적일 수 없다. 가뜩이나 추상화의 옷들을 몇 겹이나 뒤집어쓰고 있는 WPF인데 그 옷 하나 하나 벗겨내기가 너무 힘들다. 물론, 어떤 이들은 그 옷들을 기어이 벗겨 낼 것이고 성인의 반열에 들어 권력을 얻게 될 것이다. 하지만, 이것은 근본적인 방법이 아니다. 글 첫머리에 언급했듯이 이것은 창조자가 제공해야 하는 일이다.

 

여러 겹의 추상화의 옷을 입으려면 그 옷 하나하나가 투명해, 그 속을 훤히 드러낼 수 있어야 한다. 어렵다고? 그 누구도 그렇게 하고 있지 않다고? 그것은 내 알바아니다.

신고