- 질문 게시판입니다.
Date | 23/04/18 16:27:22 |
Name | 아침커피 |
Subject | C, C++ 개발자가 적은 이유가 무엇인가요? |
얼마 전 뉴스 게시판에서 https://redtea.kr/news/34171 이 글을 보았는데, 댓글에서 요즘 C와 C++ 개발자를 찾기 힘들다는 내용을 보았습니다. 둘 다 점유율도 높은 언어들이고 대학에서도 많이 가르치는 것으로 알고 있고 수요도 많을 텐데 왜 개발자 수가 적은 것인지 궁금합니다. 문법도 C-like 언어들인 C#이나 자바 쓰시던 분들은 쉽게 접근할 수 있을 것 같은데요. 0
이 게시판에 등록된 아침커피님의 최근 게시물
|
1) 어렵고(특히 포인터) 2) 요즘 트렌드가 아니라 최근의 IT서비스와 거리가 있습니다. 3) 생산성도 떨어집니다.
+ C/C++은 웹/앱 서비스 개발보다는 디바이스 펌웨어에 주로 쓰여서요, 우리나라에는 삼전/하이닉스에 엄청 훌륭한 C/C++ 개발자들이 있는걸로 알고 있습니다.
+ C/C++은 웹/앱 서비스 개발보다는 디바이스 펌웨어에 주로 쓰여서요, 우리나라에는 삼전/하이닉스에 엄청 훌륭한 C/C++ 개발자들이 있는걸로 알고 있습니다.
최근 양산되고 있는 인공지능 개발자들은 거의 파이썬 원툴입니다. 관련 라이브러리들이 파이썬에서 제공되고 있어서 다른 언어 공부할 이유가 없어요. 아마 분야별 요구 언어 수요가 천차만별일 것으로 생각됩니다.
아니 이 주제는 자세히 설명하다간 C부심 부린다는 소리 듣는 주제! 하지만 도전해보겠어용...
요새 트렌드는 협업(==조립)인데, 프로젝트가 커져서 참여자가 늘어날수록 설계상 스펙에 대한 해석에 오차가 발생할 가능성이 높습니다. 변수의 타입이나 스택 사이즈, 콜과 참조는 어떤 디자인으로 구현해 놓을 것인지 등등... 그래서 요새 언어들은 이를 고려하여 여러가지 철학을 도입해서 편의성을 갖추고 오류를 (보통 자동으로) 잡아냅니다.
하지만 C는... 흔히 하는 말로 바퀴부터 발명하고 장인의 정신으로 만들어야 하는 경우가 많아... 더 보기
요새 트렌드는 협업(==조립)인데, 프로젝트가 커져서 참여자가 늘어날수록 설계상 스펙에 대한 해석에 오차가 발생할 가능성이 높습니다. 변수의 타입이나 스택 사이즈, 콜과 참조는 어떤 디자인으로 구현해 놓을 것인지 등등... 그래서 요새 언어들은 이를 고려하여 여러가지 철학을 도입해서 편의성을 갖추고 오류를 (보통 자동으로) 잡아냅니다.
하지만 C는... 흔히 하는 말로 바퀴부터 발명하고 장인의 정신으로 만들어야 하는 경우가 많아... 더 보기
아니 이 주제는 자세히 설명하다간 C부심 부린다는 소리 듣는 주제! 하지만 도전해보겠어용...
요새 트렌드는 협업(==조립)인데, 프로젝트가 커져서 참여자가 늘어날수록 설계상 스펙에 대한 해석에 오차가 발생할 가능성이 높습니다. 변수의 타입이나 스택 사이즈, 콜과 참조는 어떤 디자인으로 구현해 놓을 것인지 등등... 그래서 요새 언어들은 이를 고려하여 여러가지 철학을 도입해서 편의성을 갖추고 오류를 (보통 자동으로) 잡아냅니다.
하지만 C는... 흔히 하는 말로 바퀴부터 발명하고 장인의 정신으로 만들어야 하는 경우가 많아서 이러한 편의성이 크게 떨어집니다. 특히 프로젝트 규모가 커지면 협업하고 있는 개발자들의 평균 실력이 좋다고 해도 많은 문제가 발생합니다. 때문에 프로젝트 관리자가 개발자들 이상의 실력을 가지고 있어야 하는 경우가 많습니다. 설계를 모두 머릿속에 넣고 있다가 협업 오류가 일어날 수 있는 곳을 미리 교통정리하고 필요하다면 직접 스펙을 코드로 구현해야 합니다.
그래도 왜 C, C++을 쓰느냐? 완성된 코드의 퍼포먼스 때문이죠. (평범한 사람이 읽을 수 있는 언어중에 가장) 머신과 가까운 로우레벨 언어답게 성능이 매우 뛰어납니다. 품질이 좋습니다. 쓰는 사람에 따라서 유연함도 좋습니다. 그래서 DB나 데이터 전송, 임베디드 모듈, 대규모 정보처리 수학 연산, 게임엔진 등등에 쓰입니다. 코드 생산성 보단 품질이 더 중요한 분야죠.
하지만 요새 대부분 프로젝트는 웹이나 앱의 프론트와 백엔드에 집중되어 있습니다. 그래서 최고의 품질보다 생산성과 유지보수가 더 중요합니다. 그래서 굳이 이런 프로젝트를 C로 구현할 이유가 없고, 프레임워크가 잘 만들어져 있고 유행이 강물처럼 흐르는 언어로 프로젝트를 진행하게 됩니다. 당연히 사람들도 거기로 모이죠.
그래서 C나 C++을 한다는 사람을 찾아보기 힘듭니다. C-like 언어에서 C를 메인으로 하기도 어렵고, 그럴 이유도 없고... 물론 필요한 곳이 있기 때문에 장인은 있습니다. 우리나라에도 초절정 고수인 분들이 계십니다. 제가 아는 분들은 의료장비 개발이나 대형DB 쪽에서 일하시는 듯...
요새 트렌드는 협업(==조립)인데, 프로젝트가 커져서 참여자가 늘어날수록 설계상 스펙에 대한 해석에 오차가 발생할 가능성이 높습니다. 변수의 타입이나 스택 사이즈, 콜과 참조는 어떤 디자인으로 구현해 놓을 것인지 등등... 그래서 요새 언어들은 이를 고려하여 여러가지 철학을 도입해서 편의성을 갖추고 오류를 (보통 자동으로) 잡아냅니다.
하지만 C는... 흔히 하는 말로 바퀴부터 발명하고 장인의 정신으로 만들어야 하는 경우가 많아서 이러한 편의성이 크게 떨어집니다. 특히 프로젝트 규모가 커지면 협업하고 있는 개발자들의 평균 실력이 좋다고 해도 많은 문제가 발생합니다. 때문에 프로젝트 관리자가 개발자들 이상의 실력을 가지고 있어야 하는 경우가 많습니다. 설계를 모두 머릿속에 넣고 있다가 협업 오류가 일어날 수 있는 곳을 미리 교통정리하고 필요하다면 직접 스펙을 코드로 구현해야 합니다.
그래도 왜 C, C++을 쓰느냐? 완성된 코드의 퍼포먼스 때문이죠. (평범한 사람이 읽을 수 있는 언어중에 가장) 머신과 가까운 로우레벨 언어답게 성능이 매우 뛰어납니다. 품질이 좋습니다. 쓰는 사람에 따라서 유연함도 좋습니다. 그래서 DB나 데이터 전송, 임베디드 모듈, 대규모 정보처리 수학 연산, 게임엔진 등등에 쓰입니다. 코드 생산성 보단 품질이 더 중요한 분야죠.
하지만 요새 대부분 프로젝트는 웹이나 앱의 프론트와 백엔드에 집중되어 있습니다. 그래서 최고의 품질보다 생산성과 유지보수가 더 중요합니다. 그래서 굳이 이런 프로젝트를 C로 구현할 이유가 없고, 프레임워크가 잘 만들어져 있고 유행이 강물처럼 흐르는 언어로 프로젝트를 진행하게 됩니다. 당연히 사람들도 거기로 모이죠.
그래서 C나 C++을 한다는 사람을 찾아보기 힘듭니다. C-like 언어에서 C를 메인으로 하기도 어렵고, 그럴 이유도 없고... 물론 필요한 곳이 있기 때문에 장인은 있습니다. 우리나라에도 초절정 고수인 분들이 계십니다. 제가 아는 분들은 의료장비 개발이나 대형DB 쪽에서 일하시는 듯...
우리나라 IT서비스가 기본적으로 웹서비스라고 볼 때
1. 리소스? 그거 그렇게까지 꼭 아껴야 하나? 부족하면 서비스 하나 더 붙이면 될 것을..
2. 레이턴시? 어차피 웹서비스인데 전송 속도가 더 걸리잖아.. 이거 체감 될 정도로 잘 만들 수 있어?
3. 다른 서비스들 뭐로 만들었어? 그거 가져다 쓰려면 뭐가 편한데?
4. 그저그런님이 말씀해주신 포인터. 이거 때문에 안정성이 떨어집니다. 그래서 이걸 언어 내부적으로 해결 하려고
스마트포인터를 사용하지만 문제는 사라지지 않죠. ㅎ
5. C/C++의 장점을 유지하... 더 보기
1. 리소스? 그거 그렇게까지 꼭 아껴야 하나? 부족하면 서비스 하나 더 붙이면 될 것을..
2. 레이턴시? 어차피 웹서비스인데 전송 속도가 더 걸리잖아.. 이거 체감 될 정도로 잘 만들 수 있어?
3. 다른 서비스들 뭐로 만들었어? 그거 가져다 쓰려면 뭐가 편한데?
4. 그저그런님이 말씀해주신 포인터. 이거 때문에 안정성이 떨어집니다. 그래서 이걸 언어 내부적으로 해결 하려고
스마트포인터를 사용하지만 문제는 사라지지 않죠. ㅎ
5. C/C++의 장점을 유지하... 더 보기
우리나라 IT서비스가 기본적으로 웹서비스라고 볼 때
1. 리소스? 그거 그렇게까지 꼭 아껴야 하나? 부족하면 서비스 하나 더 붙이면 될 것을..
2. 레이턴시? 어차피 웹서비스인데 전송 속도가 더 걸리잖아.. 이거 체감 될 정도로 잘 만들 수 있어?
3. 다른 서비스들 뭐로 만들었어? 그거 가져다 쓰려면 뭐가 편한데?
4. 그저그런님이 말씀해주신 포인터. 이거 때문에 안정성이 떨어집니다. 그래서 이걸 언어 내부적으로 해결 하려고
스마트포인터를 사용하지만 문제는 사라지지 않죠. ㅎ
5. C/C++의 장점을 유지하면서 안정성까지 가져가려고 Rust 같은 언어를 사용하기도 하지만..그럴거면 자바는.. 무너졌냐?
위 이유로 우리가 흔히 아는 IT서비스에서는 C/C++ 사용이 적습니다.
위 이유 때문에 게임 및 디바이스는 아직도 C/C++ 많이 사용합니다.
그리고 같은 이유로 게임서버는 C/C++에서 점점 벗어나려고 하고 있습니다.
1. 리소스? 그거 그렇게까지 꼭 아껴야 하나? 부족하면 서비스 하나 더 붙이면 될 것을..
2. 레이턴시? 어차피 웹서비스인데 전송 속도가 더 걸리잖아.. 이거 체감 될 정도로 잘 만들 수 있어?
3. 다른 서비스들 뭐로 만들었어? 그거 가져다 쓰려면 뭐가 편한데?
4. 그저그런님이 말씀해주신 포인터. 이거 때문에 안정성이 떨어집니다. 그래서 이걸 언어 내부적으로 해결 하려고
스마트포인터를 사용하지만 문제는 사라지지 않죠. ㅎ
5. C/C++의 장점을 유지하면서 안정성까지 가져가려고 Rust 같은 언어를 사용하기도 하지만..그럴거면 자바는.. 무너졌냐?
위 이유로 우리가 흔히 아는 IT서비스에서는 C/C++ 사용이 적습니다.
위 이유 때문에 게임 및 디바이스는 아직도 C/C++ 많이 사용합니다.
그리고 같은 이유로 게임서버는 C/C++에서 점점 벗어나려고 하고 있습니다.
C/C++/C#/자바 다 개발 해봤고 지금은 python을 주로 쓰고 있는 입장에서 말씀드리자면
C/C++ 하다가 C#/자바 는 아주 쉽게 배울 수 있습니다. 반면 그 반대는 굉장히 어려워요.
C/C++ 에는 상위 언어에 없는 개념들이 있어서 그렇습니다. 그냥 자동 기어 운전하다가 수동 기어 운전하는 거랑 똑같다고 보시면 됩니다. 전혀 신경 안쓰던 주소값, 메모리 등의 개념을 항상 신경쓰면서 코딩을 해야 하는데 그냥 언어를 배우는 건 할 수 있지만 업무 효율성이 잘 나오지 않습니다. 신경안쓰던걸 계속 신경쓰면서 일해야하고 문... 더 보기
C/C++ 하다가 C#/자바 는 아주 쉽게 배울 수 있습니다. 반면 그 반대는 굉장히 어려워요.
C/C++ 에는 상위 언어에 없는 개념들이 있어서 그렇습니다. 그냥 자동 기어 운전하다가 수동 기어 운전하는 거랑 똑같다고 보시면 됩니다. 전혀 신경 안쓰던 주소값, 메모리 등의 개념을 항상 신경쓰면서 코딩을 해야 하는데 그냥 언어를 배우는 건 할 수 있지만 업무 효율성이 잘 나오지 않습니다. 신경안쓰던걸 계속 신경쓰면서 일해야하고 문... 더 보기
C/C++/C#/자바 다 개발 해봤고 지금은 python을 주로 쓰고 있는 입장에서 말씀드리자면
C/C++ 하다가 C#/자바 는 아주 쉽게 배울 수 있습니다. 반면 그 반대는 굉장히 어려워요.
C/C++ 에는 상위 언어에 없는 개념들이 있어서 그렇습니다. 그냥 자동 기어 운전하다가 수동 기어 운전하는 거랑 똑같다고 보시면 됩니다. 전혀 신경 안쓰던 주소값, 메모리 등의 개념을 항상 신경쓰면서 코딩을 해야 하는데 그냥 언어를 배우는 건 할 수 있지만 업무 효율성이 잘 나오지 않습니다. 신경안쓰던걸 계속 신경쓰면서 일해야하고 문제가 생겨도 원인파악이 어렵고... 남의 코드 보는 건 더더 어렵습니다. 문법도 온갖 이상한 문법이 등장하고 업체마다 개발자마다 이거 같은 언어 맞아? 할정도로 다르거든요...
지금은 주로 python으로 일하는데 세상 그렇게 편할 수가 없습니다. 수동차 운전하다가 자율주행기능 있는 전기차 운전하는 기분이랄까? 필요한 로직도 만들려다가 좀만 찾아보면 다 라이브러리도 있고... python 최고!
C/C++ 하다가 C#/자바 는 아주 쉽게 배울 수 있습니다. 반면 그 반대는 굉장히 어려워요.
C/C++ 에는 상위 언어에 없는 개념들이 있어서 그렇습니다. 그냥 자동 기어 운전하다가 수동 기어 운전하는 거랑 똑같다고 보시면 됩니다. 전혀 신경 안쓰던 주소값, 메모리 등의 개념을 항상 신경쓰면서 코딩을 해야 하는데 그냥 언어를 배우는 건 할 수 있지만 업무 효율성이 잘 나오지 않습니다. 신경안쓰던걸 계속 신경쓰면서 일해야하고 문제가 생겨도 원인파악이 어렵고... 남의 코드 보는 건 더더 어렵습니다. 문법도 온갖 이상한 문법이 등장하고 업체마다 개발자마다 이거 같은 언어 맞아? 할정도로 다르거든요...
지금은 주로 python으로 일하는데 세상 그렇게 편할 수가 없습니다. 수동차 운전하다가 자율주행기능 있는 전기차 운전하는 기분이랄까? 필요한 로직도 만들려다가 좀만 찾아보면 다 라이브러리도 있고... python 최고!
목록 |
|