C++보다 C#을 써야하는 이유

반도체 장비 제어를 하는데 요즘 장비 업체들은 다들 C#을 사용 중이거나 C#으로 넘어가더라구요. 저희 회사는 C++을 사용 중이고, C#으로 넘어가려고 하는 단계에 있는데요… 분명 대세는 C++ → C#인데, 몇몇 팀원분들은 넘어가는 것에 대해서 회의적이신데… 저는 지식이 얕아서 설명을 못 드리겠습니다. C++ 레거시 코드를 보면… 메모리 누수가 쌓여서 프로그램이 죽는 경우도 종종 있고 그래서 전 C#으로 넘어가면 지금보다 프로그램이 죽는 경우가 적을 것이라고 생각을 하는데 어떻게 설명을 드려야 납득을 하실까요?

4개의 좋아요

그분들이 GC를 믿을거같지는 않은데, 메모리로 설득을 하시려면 Rust같은거나 아다리가 맞을거고 아마 팀원분들 본인들이 짜는 C++ 프로그램에 대한 자부심을 잃어버리기 전까진 어렵지 않을까요
설득못해서 아예 C++팀 C#팀 나뉜경우는 들었네요

2개의 좋아요

꼭 메모리적인 측면 아니어도 여러가지 면에서 다른건 없을까요?

1개의 좋아요

C#으로 바꾸면

  • 강려크한 문법&기능 덕분에 생산성이 높아진다.
  • 메모리 누수 걱정 덜 수 있다.
  • 진입 장벽 허들이 낮아진다.
  • 넘어가는 단계에서 레거시 청산 할 수 있다.
  • 신입 뽑으면 폼 올라오는게 빠르다.
  • 개꿀잼이다.
6개의 좋아요

보통 로우 코드 및 최적화에 부심이 있어서… 설득하기 쉽지 않긴 하죠

2개의 좋아요

억까는 답이 없어서…실제로 타당하다고 생각되는 이유를 들이밀어도 싫으면 끝까지 싫고

사람에겐 관성이라는 게 있어서 쉽지 않을 것 같습니다.

그 어떤 기술도 기술 자체가 나쁘지는 않지요. 다만 쓰는 사람들 머릿수나 커뮤니티 활성화 정도나 이런저런 인간적인 요인에 영향을 받는거지…

C++ → C# 이 대세라고 하셨지만 제가 아는 분들은 대부분 C++ → Rust 셔서 오히려 C++을 최신버전까지 쭉 쓰시면서 C++ 자체를 사랑하시는 분들은 Rust에 유저를 뺏겨간다고 생각하셔서 안타까워 하시더군요.

의도와 다른 맥락이긴 하지만 유관하다고 생각하여 몇자 적어보았습니다.

4개의 좋아요

특별한 기술이나 플랫폼 문제만 아니라면 C#이 개발하기가 훨씬 수월한것 같습니다.
다른것은 차지하고, 디버깅 난이도가 꽤많이 차이 난다고 생각합니다.

제 경험에 비추어… 강력하게 거부하는 사람들은 설득이 되지 않았습니다.
본인이 새 기술(C#이든 Rust든 뭐든)의 장점을 한번이라도 경험해 본 후에야 새 기술을 사용했습니다.

모두들 MFC로 테스트 프로그램 만들때, 제가 C#으로 테스트 프로그램 만들면 아주 쉽게, 빨리 만들수 있다고, 아무리 이야기해도 안 바뀌더니… 본인이 직접 간단한 테스트 프로그램 C#으로 만들어 보고 나니깐 바로 바뀌더군요.

2개의 좋아요

강력한 문법과 레거시 청산이 참 좋네요.

3개의 좋아요

꼭 그런건 아닌 것 같은게… 문법도 쓰는것만 쓰던데(거의 조건문…) 하긴 저처럼 쌩신입 아니고서야 커리어 생각할 여유가 없긴 하겠죠…

1개의 좋아요

반도체 장비 제어나 MES, SECS/GEM에서 RUst는 한 번도 못 봐서…요

3개의 좋아요

말단 신입이 뭘 바꾸긴 쉽진 않겠네요. 뭐 어쩌나 저쩌나 C#으로 가느건 확정이긴 한데…

2개의 좋아요

C# 세계에 오시게 된 걸 환영합니다!

객체지향을 잘 활용하시기 바랍니다.

3개의 좋아요

저희도 그럴 기세네요… 팀 나누기…

2개의 좋아요

C++로 만들면 메모리 누수가 생긴다?로 들릴 수 있는 얘긴데…
개발자 역량 문제 아닐까요?
개발 언어 환경을 바꾸는 건 대단히 어려운 일인데 차라리 메모리 누수 잡아서 죽지 않게 해달라고 해야…

3개의 좋아요

같은 과제를 C#팀, C++팀 에게 주면 좋을 듯.
경쟁도 되고, 어느 한 팀으로 결정할 기회도 되고.
내가 사장이라면~ ㅋ

1개의 좋아요

어차피 C++를 쓸 사람은 뭐라도 이유를 대고 쓰게 됩니다.

2개의 좋아요

왠지 느낌에 C# 쓴다고 해놓고
요즘 닷넷이 아닌 프레임워크 쓰면서
아 느리네 되는 게 하나도 없네 하는 엔딩일 것 같아요 -_-

1개의 좋아요

직접 경험하기 전까지는 자기가 하던 환경을 바꾸는건 쉽지 않긴하죠

1개의 좋아요

앗 젬을 아시다니ㅎㅎ 여기서 보석 통신하시는 분을 뵈니 신기방기 하네요ㅋㅋ
저도 예전에 젬 할때는 링크제니시스꺼 사용했었는데 C++, C#정도만 되었던듯요ㅎㅎ
NI의 GPIB도 C++, C# 정도만 지원해줬던것 같고요 ㅎㅎㅎ

일단 여기가 C#이 메인인 커뮤라 말하기 조심스러워 지는것은 있습니다만…

설득이 어려운 이유가 글 내용 대로라면
C++에서 C#으로 이동 했을때의 장점이 많지 않기 때문입니다.

C++에서 C#으로 이동 시 장점은 대표적으로는 아래와 같습니다.

  1. 훌륭한 GUI
  2. 빠른 개발
  3. 쉬운 메모리 관리
  4. 안정성
    물론 더 있지만… 저는 저 정도를 기본으로 봅니다.

이제 문제를 나열하겠습니다.

  1. 훌륭한 GUI. => 장비쪽에서는 그렇게 와닿지 않습니다.
  2. 빠른 개발. => 이미 개발된것을 갈아 엎어야 하는데. 와닿을리가 없죠.
  3. 쉬운 메모리 관리. => 2번과 마찬가지에 더해서 GC로 인해 메모리 사용량이 늘어나며 경우에 따라서는 C++로 메모리 관리 하는것에 비해 확연하게 느려집니다.
  4. 안정성 => 이게 좋아지긴 합니다. 만 만약 죽는 부분이 외부 라이브러리로 인한거면 의미 없어 집니다.

거기에 반대하는 팀원들 나이가 좀 있고 공부 싫어하는 분들 아닌가요?
그런분들은 사실 본인 경력과 노하우를 버리라는 얘기인데. 당연히 반대를 하겠죠.

그러면 언제 C++에서 C#으로의 전환을 진행해야 하는가?
이것도 전제 조건이 있습니다.

  1. 글 쓰신분이 디버깅등을 해서 확실하게 메모리 관리나 기타등등의 C++ 코드로 인해 죽는다는것을 증명을 해야 하고요. (외부라이브러리로 인해 죽는거면 해당 없습니다)
  2. 앞에 번호가 바뀌는 큰 버전업이 필요한 경우

최소한 위의 두가지 전제조건이 갖쳐지면 아예 신규 버전 팀을 만들어 달라고 하거나 본인이 전부 해야 합니다.

신규 버전을 만들기 위해 팀을 구성하는건 글 쓰신분이 어느정도 책임을 질 수 있는 위치여야 가능하고요. 혼자 하는 경우는 부서장이 허락하면 가능하겠죠.

추가로 C#초창기에 찍먹 해본분들도 C#싫어하더군요.
엄청 불안하다고…

10개의 좋아요