단상,  컴퓨터와 인터넷

win32 단상

약간의 win32 수준의 시스템 프로그래밍 경험을 가지고 있다. Unix 환경에서 동작하도록 만들어진 DB엔진을 Windows 환경으로 이식(porting)하면서 얻게 된 경험이다.

그 덕분에 유명한 Jeffrey Richter의 Advanced Windows를 읽은 적이 있는데(더 유명한 Petzold의 Programming Windows도 읽었던 것 같은데 -_-a) , 지금 돌이켜보면 MS도 무던히 Unix의 표준인 POSIX를 베끼려 애를 썼구나 하는 생각이 든다. 이름만 다소 길 따름이지, POSIX에서 요구하는 기능이나 interface를 제공하려고 노력한 흔적이 보이는 것이다. 비슷한 이름의 Advanced Programming in Unix Environment(학생시절에는 고명하신 선배님의 명명에 따라 EUPA라고 불렀던 ‘그’ 책)과 비교를 해보면 비록 자세한 내용과 형식은 다르지만 말하고자 하는 바는 비슷하다. 운영체계를 잘 이용해서 시스템 프로그램이 제대로 동작하게 만드는 방법을 프로그래머들에게 알려주는 그런 것 말이다.

근데 아쉬운 점이 있었다. POSIX에서 열거해놓은 도구를 구현해놓지 않은 게 더러 있었다. 근데 시스템 라이브러리에 그런 한두 가지만 빠져 있어도 이식해야하는 입장에서는 답답한 노릇이 아닐 수 없는 게다. 예를 들면, semaphore가 없어서 다른 locking primitive로 semaphore를 비슷하게(라도) 만들어야 한다거나, socket API의 return value의 convention이 Unix의 그것과 미묘하게 달라서 예외 처리에 시간을 상당히 잡아먹는다는가 하는 것 말이다. 물론 내가 시스템 프로그래머로서 경험도 일천한 시절에 받았던 인상이니까 Windows 옹호자가 이 글을 본다면 적당히 감안해서 읽어주길 바란다.

닷넷이 시장의 주류가 된 지 오랜 이 마당에 win32 이야기를 한다는 게 다소 시의성이 떨어지는 바 없지 않으나, Unix 세상에서 시스템 프로그래밍을 하자면 아직도 POSIX를 빼놓을 수 없으니 그에 걸맞는 상대가 win32일 수 밖에 없겠다.

개발자 입장에서는 제대로 갖춰진 플랫폼이 아무래도 편할 수 밖에 없다. 내가 Windows를 거부하고 Unix 개발자를 고집하는 이유가 여기에 있다. 직업으로서가 아닌 취미로서의 프로그래밍 차원에서, 가끔은 윈도우즈 프로그래밍도 해보고 싶으나 소시적에 아르바이트 차원에서 Visual Studio를 이용해서 C++과 Basic으로 간단한 애플리케이션을 작성해본 경험만으로 다시 도전해보기에는 너무 많이 바뀐터라 엄두가 나질 않는다고나 할까… Unix가 Linux 덕분에 세상에 이름을 알렸다고는 하나, 사용자 PC는 아직도 Windows 판이니 Unix 개발자로서 절실히 한계를 느끼고 있다. ‘필요한 프로그램은 스스로 만들어 사용한다’는 해커 정신을 충실히 실천하지 못하고 있는 게 안타까울 따름이다.(사실 내게 필요한 프로그램은 어지간한 건 이미 누군가에 의해 다 만들어져 있다. 다만 잘 만들어져 있는 프로그램을 조금 고쳐서 커스터마이즈하고 싶을 뿐이다.)

댓글 3개

  • 용재

    http://kmug.co.kr/board/zboard.php?id=column&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=1214

    갈은 OS의 족보 같은 자료에서 보면, MS에서도 초기에는 XENIX 라는, Unix 라이센스 사서 포팅해서 팔아먹고 하는걸 했었고, OS/2 같은 것도 Unix Like한 요소가 많이 있었다고하고.. 어째튼 학교에서 컴퓨터 쟁이들이 쓰던 류에 Unix가 많았을테니, MS의 초기 멤버나, 나중에 들어오는쟁이들이나, Unix DNA를 가진 사람들이 많이 있었을거라고 생각하는게 자연스럽지 않나 싶은데. 결국 그냥 베꼈다는 의미보다는 당시의 Unix 유행이 묻어났다고 하는게 가깝지 않나 싶다..

    문제는 Main Stream이 아닌 자체 줄을 타고 있었으니, 변방의 문화가 중앙 문화의 과거에 대한 기록이 되는 것 같은 효과들이 섞여 있는게 아닌가 싶다. XENIX가 System V가 아닌 그 훨씬 이전버전부터 줄을 탔으니 (http://en.wikipedia.org/wiki/XENIX) Semaphore 같은 System V IPC 같은게 반영되기 이전의 Unix 의 흔적이 Win32 에 남아 있거나 머 그런게 아니게 하는..

  • terzeron

    제가 놓치고 있었던 포인트가 바로 XENIX였군요. 하도 오래전 기술들이라서 까맣게 잊고 있었습니다.

    근데 위 링크의 글은 사실 확인이 안 되는 사항도 좀 있고, 필자의 주관이 강하게 들어간 글인 것 같습니다.

    차라리 POSIX를 제대로 따랐으면 좋았을텐데, MS의 행보는 예나 지금이나 표준화를 통한 공동의 시장을 키우는 것보다는 자기만의 시장을 만들고 경쟁자들을 쫓아내려는 철저한 기업 정신으로 충만합니다.

답글 남기기