아주 좋은 글을 읽었다.

C++ 과 C# 의 차이점 정리

이분, 개발/개발언어 관련해서 꾸준히 좋은 글들을 많이 쓰신다. 저분의 블로그는 2007 년 Tistory 100 대 블로그에 오르기도 했더군.. (부럽다 ㅋ)

마이크로소프트에서 C++ 는 Naive Language 라 하고, C# 을 Managed Language 라고 표현한 것을 읽은 적이 있다. 분명 C# 은 개발자 입장에서 더 강력한 기능을 손쉽게 제공하고, 또 버그가 날 가능성을 줄여주는 파워풀한 현대적인 개발언어임에는 분명하다.

하지만 글에서 언급한 것과 같이 컴파일 한 바이너리가 커지는 문제, C++ 에 비해 느린 실행속도 등을 고려해 볼때 임베디드 시스템 개발용 언어로는 부적합 하다고 생각된다. 아무리 임베디드 시스템의 하드웨어 성능이 점점 좋아지고 있다고 해도... 리소스를 1byte 라도 절약하고 속도를 1milli sec 라도 줄여야 하는 상황에서 소프트웨어 개발 레벨에서 부터 이런 방식으로 리소스를 갉아먹는 건 매우 좋지 않다고 본다.

내가 아는 어느 팀에서는 임베디드 시스템의 OS 로 Windows CE 를 쓰고, 개발 언어로 C# 을 쓰는데,  여러가지 고민 끝에 선택한 결과겠지만, 내가 볼때 이 결정은 개발자가 편할수는 있지만 소비자나 회사의 입장에서는 불리하다고 판단된다.

Windows CE 라는 플랫폼 자체가 제품 당 OS 라이센스를 지불해야 하는 금전적 부담이 있으며, Windows CE 가 Linux 에 비해 갖는 장점은 개발자에게 친화적이고 소프트웨어 호환성이 좋다는 점 등인데, 진지하게 원가를 고려해 보고, 또 소프트웨어 변화가 적은 임베디드 환경을 생각해 본다면 좀 힘들더라도 Linux 에서 사용자가 편리한 UI 를 개발해서 서비스 하는 것이 맞다고 생각된다.

개발언어 역시 마찬가지로, C# 으로 개발을 하게 되면 개발자 입장에서 최신 언어를 사용한다는 만족감과 개발의 편리성은 증대되겠지만 제품 입장에서 보면 리소스와 퍼포먼스 측면에서 손해를 보게 된다. 추가로, 디바이스 드라이버나 연동부분의 legacy code 는 대개 C/C++ 로 되어 있어 호환성에도 문제가 생기게 된다.

결론은... 상용화 과제에 있어서는 개발자가 유리한 방향으로 개발을 해서는 안되고 사용자가 유리한 방향으로 개발이 진행되어야 하는데... 그것이 사실 쉽지 않다.  사실, 만약 Windows 개발에 익숙한 나에게 Linux 환경에서 개발해야 하는 과제가 주어지면 나 역시 불평 불만이 많을 것이다... ㅋㅋ

사실, 개발 난이도의 증가에 따른 개발비용과 리스크의 증가등도 분명 중요한 고려사항이 될 수 있다. 하지만 기술적인 어려움을 논외로 하고, 비지니스 측면을 진지하게 고려한다면 힘들더라도 항상 사용자 위주로 생각하면서 개발을 해야 할 것이다.
댓글을 달아주세요!
  1. BlogIcon hyperdash 2008.07.13 21:15 신고  댓글주소  수정/삭제  댓글쓰기

    C/C++이 최고지....

    VC8.0이 되면서 안전한 API들도 추가되었고

    다른 언어로 대체하는 것보다는 한차원 높은 개발 방법론이 더 중요하지 않을까?

  2. BlogIcon blueecho 2008.07.15 04:28 신고  댓글주소  수정/삭제  댓글쓰기

    개인적인 생각으로도 아직은 C#은 무리인거 같아. 하지만 뭐... 혹시 알아?
    시스템의 발전 속도가 너무 빨라서 말야.. -_-;;

    나같은 경우도 예전에는 메모리를 줄이면서 성능을 포기하는 경우가 많았는데 요즘은 메모리 많이 쓰더라도 최대한 성능 좋은 쪽 아니면 전력소모 작은 쪽으로 가는걸로 봐서 개발에도 트랜드가 있지 않을까 싶네 그랴.. ^^;;

    뭐.. 이런 문제야 실무 수행하는 자네들이 더 잘 알겠지만 말야.. 흐흐~
    사용자 위주의 개발이라고 해도 개발자 입장에서는 좀 더 편하게 하고 싶은 맘도 있고 말야... 뭐, 앞으로는 다품종 소량생산이라고 하니 TTM관점에서는 개발자가 빨리 개발할 수 있는 환경도 나름대로는 의미있다고 생각되네...

    하여간, 덕분에 좋은 글 읽고 간다. ^^

    • BlogIcon mynotepad 2008.07.16 06:07 신고  댓글주소  수정/삭제

      엉...
      납기를 제때 맞춰서 빠르게 개발할 수 있는 환경도 분명 중요하지..
      확실히 프로젝트는 여러가지 환경 변수를 고려해야 하는 것 같다.

이름 암호 홈페이지