The Platform War

직장 일 관계로 곧 특정 플랫폼과의 전투에 직면해 있다. 언제가 될진 모르겠지만 언젠가는 싸움을 해야 된다는 말이다.

개발자로써 내가 추구하던 모토(?), 개발을 함에 있어 일정한 사상(?)이 있었다면 그건 크로스플랫폼 추구라는 것이다. 말이 좋아 크로스플랫폼이지 사실은 컴파일러 의존성을 크게 받지 않는 것, 특정 언어라면 그 언어를 번역해 줄 모든 컴파일러에게 고생을 시키지 말자는 것이었다. 그리고 동작 자체도 코드의 의미에서 벗어나지 않는 것을 의미한다.

그래서 지금까지 만들어 온 모듈 들은 대체로 새롭게 개발한 것이 대부분이다. 로직이나 알고리즘 전부 새롭게(?) 만들어왔고 특별한 부분이 있다면 특정 플랫폼에 종속적인 (예를 들자면 File I/O 정도) 부분만을 떼 두고 나머지 API는 대체로 Standard C Library라 불리우는 그것 들이었다. 떼어둔 부분들은 예쁘게 포장해서 사용했다. 그것이 전부이다. 하지만 나만의 사상은 그럭저럭 이어왔다고 생각된다. 그리고 그 증거로 윈도우든 리눅스든 임베디드 플랫폼이던 다 잘 돌아가더라. (자랑은 아니지만 -_- 그 만큼 별로 중요한게 아니었을지도) 내가 생각하고 설계한 로직대로 움직이는 녀석이다.

자. 이제 새로운 플랫폼과의 전투가 시작될 지도 모른다.

특정 플랫폼이라 지칭했지만 사실 이 분류는 좀 모호하다. OS가 될 수도 있고 H/W가 될 수도 있다. 아니면 OS위에서 움직이는 Application급일 수도 있다. 여기서 플랫폼의 의미는 '무언가 움직이는 데 기반이 될 수 있는 모든 것'을 의미한다. 일례로 OS위에서 움직이는 시스템 소프트웨어가 플랫폼으로 분류될 수도 있다. 결국 이 플랫폼 자체를 건드리거나 이 위에서 돌아가는 무언가를 만들어야 할 지도 모른다는 것이다. 정리하여 플랫폼 종속적인 작업이다.

그래서 두렵고 짜증난다. 말하자면 내 모토, 내 사상, 내 주관 모두를 부정할 만한 작업이 될 것이다. 작업의 난이도와는 별개의 문제로 내 생각을 부정한다는 것은 상당히 고난이 될 것이다.

지금까지도... 특정 플랫폼과의 싸움은 참 괴로웠다. 이를 테면 Directshow라면 윈도우에서 미디어 플레이어 관련 작업을 할 때는 필수이고 여기에는 필터라는 개발 존재와 함께 이를 뒷받침하는 필터그래프 라는 플랫폼도 따로 생각할 수도 있다. 이럴 때 마다 항상 플랫폼의 지정된 규약을 준수해야 하기에 그것을 찾아보느라 시간을 허비하고 왜 이렇게 하면 안되느냐며 꾿꾿이 따져보기만 하다가 시간이 흘러가 버렸다.

특정 하드웨어에 리눅스를 포팅할 때도 그랬다. 하드웨어라는 플랫폼 제약에 묶여버리면 상당히 골치가 아프다. (더구나 나는 소프트웨어공학 출신이란 말이다!) 그리고 드라이버라는 플랫폼 제약, 그 드라이버를 사용해야만 하는 애플리케이션의 규약도 상당한 고통을 수반했다.

플랫폼에 묶여버린 코드는 결국 내 생각대로 동작하는게 아니다.

사실 징징대는 이야기다. 지금까지 나는 일반적인 OS라는 플랫폼에 묶여 살아왔던게 분명하다. 이렇게 생각해보면 한심하지.

결론이 나왔구나. 난 바보다.

덧글

  • 승네군 2008/03/25 16:04 # 삭제 답글

    ... 플랫폼.. 요즘엔 vm위에서 돌아가는 언어들이 있으니까요..
    플랫폼에 대한 개념이 약해져 간다고 알고 있습니다만..;;
  • Seorenn 2008/03/26 11:54 # 답글

    승네군// 플랫폼의 분류가 다양하다고 정의했으니깐요. (물론 제가 독단적으로! 'ㅅ') 그렇기에 새로운 환경은 역시 적응이 힘들지요. 더구나 이번엔 그 플랫폼을 직접 건드려야 합니다! ;ㅁ;
댓글 입력 영역