리멤버 앱을 설치하고 오늘 가장 인기있는 글을 받아보세요
오늘 가장 인기있는 회사생활 소식을 받아보는 방법!

[윈도우 개발] c#이 c++ 보다 느리다 주장하시는 운영진분들께 한마디

2021.11.24 | 조회수 3,989
정백작
한 말씀 드리고 싶다는 생각에 적어보게 되었습니다. 다음 링크는 스택오버플 선생님께서 친절히 알려주신 글입니다. 결론부터 말씀드리자면, 답은 네 맞습니다! 그럼 이 글은 왜 쓰는건가요? 보통 프로그램을 개발할 때 다음과 같은 사항을 고려할겁니다. - stability 안정성 - agile 신속성 - maintain 유지보수 고려할 사항들이 참 많을 것 같은데 그냥 위 3개만 두고 이야기 해 보도록 합니다. * 이 글을 적으면서 저도 관련 지식이 충분하지 않는 것을 알기 때문에 조심스럽지만 할 말은 해보려 한다는 관점에서 봐 주시면 감사하겠습니다. 다음 심플한 프로그램을 작업한다고 가정해보겠습니다 윈도우 응용 프로그램을 하나 작성해서 개 사진을 올리면 개를 표시하고 고양이 사진을 올리면 고양이라고 표시 1. 코드 안정성 프로그램이 시작 할 때부터 종료시까지 메모리 누수가 하나도 없이 동작하면서 작업 도중 느려지거나 멈춤현상 없이 종료시까지 원할히 작업을 수행 후 종료가 되면 사용한 모든 자원을 반납하는 것(하나의 예로 캠 레코딩을 하던 중이라면 종료 즉시 캠 관련 리소스를 즉각 반납) 위 글도 지저분해서 한 마디로 써보려고 합니다. 프로그램 시작부터 끝까지 안 멈추고 잘 동작하고 문제없이 종료 • c++ 입장에서.. 그러면 c++로 작업을 한다면… 윈도우는 UI가 있는 응용프로그램이 다수이기에, UI 응용프로그램을 작성하면서 아마도 매우 많은 곳에서 mfc를 사용하고 있을 겁니다.. mfc언급도 길어질 것 같아서 죄송하게도 패스를 하겠습니다. 오픈소스를 사용해서 링크를 걸어 응용 프로그램을 작성하기까지 가정하였을 때 적게는 1개 많게는 열가지 정도로 라이브러리들을 하나하나 링크를 걸어줘야 합니다. 시간이 걸릴 수 밖에 없습니다. 안정성 부분에서 이제 본론으로 들어가서 내가 사용한 모든 라이브러리를 규칙에 맞게 로드, 초기화 후 코드를 사용하고 종료 시 규칙에 맞게 프로세스를 종료하고 자원을 반납합니다. 당연한 말을 왜 쓰나? 하지만 모든 코드 작업 시 반드시! 지켜줘야 하고 단 하나의 실수도 용납되지 않습니다. (사람의 실수를 안하기 어렵고 당연히 마이너한 실수는 프로그램의 동작에 영향을 주기 미비하지만 이 경우 위에 언급한 것 처럼 깔끔한 자원 반환이 이뤄지지 않을 수 있습니다) •c#의 입장에서 - 패키지 관리자로 따끈하고 최신 딥러닝 모듈을 받습니다. - 필요한 UI를 설계하고 코드 작업을 수행합니다. 마찬가지로 안정성 부분을 이야기하자면.. 최신 개발환경을 사용한다고 가정하였을 때, 악의적인 코드를 넣지 않는 이상 프로그램이 위에서 언급한 메모리 반환 문제는 발생하지 않는다고 보면 될 것입니다(메모리 관리 언어니까요) 개발자는 프로그램 동작 중 속도와 관련된 응답성만 고려해보면 좋을 것 같습니다. 일반적으론 그것만 봐도 충분하니까요 2. 신속성 - 고객 요청 대응 신속성이라고 쓰니까 너무 모호하네요 고객의 요청에 대한 대응이라고 적어보겠습니다. 고객이 어느날 화면에 버튼을 누르면 하트를 그려주세요 라는 요청을 했다고 가정해보겠습니다. •c++ 입장에서 요구 분석 과정은 공통적인 과정이니 생략을 하고 ui에 하트를 그려야 하니 필요한 것은 ui에 실질적으로 표시를 할 그리는 코드를 작성해야 하고 그리고 하트를 그리는 수식이 필요하겠네요 • c# 입장에서 - drawheart 메소드를 호출합니다. * 신속성 측면에서 말하고자 하는 것은 단순 작업에 대해 얼마나 많은 작업량이 들어가는가 입니다. 단순 작업에도 c++ 작업이 c# 작업보다 손이 많이 깁니다. 3. 유지보수 그러면 이제 20년 이상 된 오래된 소프트웨어 회사가 있다고 가정해보겠습니다. 20년 이상 유지해온 회사이니 자부심도 크겠고 기술력도 있어(?) 보입니다. 그러는 중에 수 많은 개발자들이 물 흐르듯(?) 지나갑니다… 대부분 그렇겠죠? 기술력 있는 소프트웨어 제품은 신규 입사한 개발자가 보기에는 먼 산을 바라보게 할 가능성이 높습니다. 결론은 유지보수 난이도가 매우 높습니다. (c++) 반면 c#의 경우엔 어떨까요? 위 2번과 같은 경우처럼 복잡성이 떨어지니 c++보다는 유지보수 난이도가 훨신 낫겠죠 • 마지막으로 이 글은 사실 개발자가 아닌 운영진 중에 막연히 c++이 c#보다 빠르니까 c++으로 프로그램을 개발해야 한다 혹은 막연히 c++가 낫다고 하시는 분들에 대해 한번 생각해봐 달라는 취지로 적어보려 했지만… 맨 위에 스택오버플 선생님도 그렇듯 매우 복잡한 문제라 쓰다보니 글이 지저분 해 보입니다. 최소한 윈도우 환경에서 운영하는 프로그램인데 c++를 고집하신다면, 심지어 mfc라면.. 이제는 왜 고집을 하는지에 대해 논리적으로 생각해봐야 할 시점이 아닌가 합니다.
21
닉네임으로 등록
등록
전체 댓글 18
1ieriiey
2021.11.24
BEST느리다 <- 요즘 컴퓨터는 매우 매우 빨라서 어떤 작업인지 몰라도 느리다 라는 이유로는 언어 선택을 하는건 아니라고 생각합니다. - stability 안정성 -> c++ 로 작성해서 안정성이 떨어지는게 아니라 개발자가 잘못해서 그런걸로 생각합니다. 개발자의 실수는 c# 이 처리해 주긴 하지만 안정성은 개발자의 실력이라고 보입니다. - agile 신속성 -> drawheart 처럼 특이한 형태가 아닌 일반적인 네모나 동그라미를 그릴 때는 동일할거라 생각 합니다. 자기에게 필요한 외부 라이브러리가 신속성에 관건 아닐까 합니다. 이미지 보여주는 라이브러리가 있는지 연동하기 쉬운 등이 아닐까 합니다. - maintain 유지보수 -> 20년 이상 c++ 로 개발되어 있으면 계속 c++ 로 개발하는게 회사 입장에서 좋지 않을까 합니다. 개발자를 계속 뽑을수만 있다면요 20년된 c++ 코드를 c#으로 바꾸는건 매우 많은 시간과 테스트가 필요 할거같습니다. 그리고 20년된 c# 프로그램이 있다고 보면 이것 역시 유지 보수는 어려울거 같습니다. 자신이 c# 자인데 회사에서 c++ 로 하라고 했을때 운영진과 이야기 해보면 어떨까요? 작성해 주신 위 내용들을 기반으로 발표해서 이야기해보면 좋을거 같습니다. 발표자체를 할수 없는 회사라 생각되어도 이직이 좋을거 같습니다. 그리고 발표가 끝나고도 무작정 속도 이야기만 한다고 하면 이직을 추천합니다. 하지만 운영진에서 합당한 이유를 가지고 올수도 있습니다. 합당한 이야기가 나왔을때 반론하지 못하고 무작정 c#이 좋다고 이야기 하는 자신을 본다면 운영진과 같다고 생각하면 됩니다. ㅠㅠ
7

리멤버 회원이 되면 18개의 모든 댓글을 보실 수 있습니다

로그인
회원가입
김커뮤니티
2020.07.01
BEST회사에서 풀지 못한 고민, 여기서 회사에서 업무를 하다가 풀지 못한 실무적인 어려움, 사업적인 도움이 필요한 적이 있으셨나요? <리멤버 커뮤니티>는 회원님과 같은 일을 하는 사람들과 이러한 고민을 해결할 수 있는 온라인 공간입니다. 회원 가입 하고 보다 쉽게 같은 일 하는 사람들과 소통하세요
154
김커리어
2020.07.01
BEST리멤버 회원을 위한 경력 관리 서비스, 리멤버 커리어를 소개합니다. 당장 이직 생각이 없어도, 좋은 커리어 제안은 받아보고 싶지 않으신가요? <리멤버 커리어>는 리멤버에서 새롭게 출시한 회원님들을 위한 경력 관리 서비스 입니다. 능력있는 경력직 분들이 <리멤버 커리어>에 간단한 프로필만 등록해두면, 좋은 커리어 제안을 받아 볼 수 있습니다. 단 1분의 투자로 프로필을 등록해두기만 하면, 기업인사팀이나 헤드헌터가 회원님께 꼭 맞는 제안을 직접 보내드립니다. 지금 바로 <리멤버 커리어>에 프로필을 등록하고, 새로운 기회를 만나보세요!
21
대표전화 : 02-556-4202
06235 서울시 강남구 테헤란로 134, 5층
(역삼동, 포스코타워 역삼) (대표자:최재호)
사업자등록번호 : 211-88-81111
통신판매업 신고번호: 2016-서울강남-03104호
| 직업정보제공사업 신고번호: 서울강남 제2019-11호
| 유료직업소개사업 신고번호: 2020-3220237-14-5-00003
Copyright 2019. Drama & Company All rights reserved.