2017.02.16

C 언어 배워야 할까요, 취업엔 도움 되나요?

Paul Rubens | CIO
프로그래밍 언어의 인기를 알려주는 지표인 '티오베(TIOBE) 프로그래밍 커뮤니티 지수(Programming Community Index)'를 보면, 구글 고(Go)와 다트(Dart), 펄(Perl)의 인기가 높다. 반면 유서 깊은 언어인 C의 순위는 급락했다. 이는 모바일과 웹 애플리케이션에 대한 수요가 높기 때문이다. 이들은 보통 C보다 배우기 쉽고 디버깅도 간편한 언어로 개발된다.



이런 것을 보면 C라는 저수준 언어는 시대에 뒤떨어진 것처럼 보이기도 한다. 그렇다면 C는 정말 배우 필요가 없는 언어일까? 결론부터 말하면 '맞다' 혹은 '아니다'라고 간단히 대답할 수 없는 질문이다.

수요의 역학
C는 아직도 IT 업계에서 널리 사용된다. 그러나 가트너의 애널리스트 마크 드라이버는 이것이 바뀔 수도 있다고 전망한다. 그는 "C와 C++는 시스템 수준 프로그래밍의 기본 언어이며, 앞으로 오랫동안 이 지위를 유지할 것이다. 그러나 결국에는 구글의 고 같은 언어가 이를 대체할 것이다"라고 말했다.

이어 "이제 IT 고객 사이에는 C나 C++에 대한 수요가 거의 없다. 대신 자바와 다른 관리형 코드 언어를 사용한다. C는 현대적인 아키텍처 베스트 프랙티스를 지원하지 않기 때문에 그 대안으로 자바와 C#이 부상하고 있다"라고 덧붙였다.

단, 특정 분야에서는 C 스킬을 갖춘 프로그래머 수요가 매우 높다. 바로 사물 인터넷(IoT)이다. IoT가 부상하면서 용량이 적은 코드베이스와 런타임이 부활할 조짐을 보이고 있다. 드라이버는 "기존 워크로드의 경우 과거처럼 '바이트'까지 고려할 필요가 없다. 그러나 IoT 애플리케이션은 크기가 가능한 작을 수록 좋기 때문에 C 스킬에 대한 수요가 뚜렷하다"라고 말했다.

C를 배워야 할까
그렇다면 C를 배워야 할까? 이를 주제로 하는 많은 논의 중 가장 설득력 있는 주장은 C가 라틴어와 비슷하다는 것이다. 즉, 사용할 일이 없을 수도 있지만, 다른 언어를 더 빨리 배울 수 있도록 도움을 준다는 논리이다. 자바스크립트를 가르치는 소프트웨어 개발자 아즈리엘 페이슨은 여기에 동의했다. 그는 "C를 배우는 것은 마치 대학의 교양과목을 듣는 것과 같다. 역사 공부가 우리 삶에 도움이 되는 것처럼 C 역시 마찬가지이다"라고 말했다.

그렇다면 소프트웨어 개발 관련 직업을 갖고 싶다면 그 출발점은 C 언어가 돼야 할까? 페이슨은 여기에는 동의하지 않았다. 학생이라면 버그를 추적하는 것보다 문제 해결이나 알고리즘 개발 등 기본적인 프로그래밍 스킬을 배우는 것이 더 낫다는 것이다. 그는 "실제로 C는 오류에 매우 취약해 버그를 찾는 작업이 많다. 이는 때때로 보안 문제로 이어지기도 한다. 다른 언어는 C와 비교했을 때 버그가 80% 가량 적다"라고 말했다.

더구나 컴퓨터 공학 학위 없이 프로그래밍 관련 직업을 찾는 사람의 경우 통상 웹이나 모바일 앱 개발 분야에서 일자리를 찾아야 하는 데 이 분야는 C 언어가 필요없다. 웹 앱처럼 많은 I/O를 처리하는 애플리케이션은 네트워크 대기 시간이 길어 C의 장점이 사라지기 때문이다. C 같은 언어가 필요한 부분은 데이터 처리 같은 고성능 애플리케이션, 운영 시스템 커널과 드라이브 같은 저수준 코드이다.

미구엘 마랄레스는 C 언어 덕분에 더 좋은 직장을 갖게 된 사람 중 한 명이다. 그는 AT&T와 HPE, 시스코에서 소프트웨어 엔지니어로 일한 경력을 갖고 있으며, 현재는 이러닝 업체인 유다시티(Udacity)에 C와 C++ 기반 무인 주행 자동차 나노 학위 과정을 개설해 다른 사람을 가르치고 있다.

그는 "간접적으로 C 언어에 대한 지식 덕분에 더 좋은 프로그래머가 됐다. 머신의 작동 방법, 레지스터를 이용해 데이터를 유지하는 방법, 메모리 할당의 작동 원리를 이해하는 데 큰 도움이 됐다. 이는 C를 사용하지 않아도 경쟁력이 된다. 더 책임 있게 변수를 생성할 수 있고, 가용한 최고의 알고리즘을 이용할 수 있고, 불필요한 명령문이 실행되지 않도록 할 수 있다. 물론 최신 언어에는 자동으로 이를 최적화하는 기능이 포함돼 있다. 그러나 많이 알수록 더 품질 높은 코드를 만들 수 있다"라고 말했다.


C 학습에 대한 가장 일반적인 주장은 C 자체가 배울 가치는 있지만 2번째 또는 3번째 언어로 배우라는 것이다. 일단 다른 언어로 빠르게 코딩 기술을 배운 후에 C를 통해 더 깊은 지식을 쌓는 식이다. 제브라 테크놀리지스(Zebra Technologies)의 컴퓨터 비전 엔지니어인 레이몬드 판도 여기 동의했다. 그는 "C 언어에는 꽤 어려운 개념이 포함돼 있다. 더 높은 수준의 언어로 기본을 학습한 후 고성능 프로그래밍에 필요한 C를 본격적으로 공부하는 것이 낫다"라고 말했다.

판은 C를 배우면 다른 언어 학습이 쉬워지고, 더 좋은 프로그래머가 될 수 있다는 주장에 동의하지 않았다. 그는 "C를 학습해야 메모리 관리에 대해 알 수 있고, 시스템의 숨겨진 부분을 이해할 수 있다. 그러나 C를 깊이 학습할 수록 오히려 혼동될 수도 있다"라고 말했다.

결론적으로 C 언어는 취업에 도움이 될까? 판은 "이력서에 C 언어 관련 내용을 넣으면 도움이 된다. 그러나 다른 관련 스킬도 동시에 평가된다. 즉 C는 '보너스'이지, 결정적인 요소는 아니다"라고 말했다. 가트너의 드라이버도 비슷한 의견이었다. 그는 "C 학습 여부는 프로그래밍에 대한 태도를 보는 지표가 되기도 한다. 즉 진지하지 않은 사람을 골라내는 역할을 하는 것이다. 따라서 C 언어에 대한 지식은 최소한 자신을 돋보이게 할 수 있다"라고 말했다. ciokr@idg.co.kr
2017.02.16

C 언어 배워야 할까요, 취업엔 도움 되나요?

Paul Rubens | CIO
프로그래밍 언어의 인기를 알려주는 지표인 '티오베(TIOBE) 프로그래밍 커뮤니티 지수(Programming Community Index)'를 보면, 구글 고(Go)와 다트(Dart), 펄(Perl)의 인기가 높다. 반면 유서 깊은 언어인 C의 순위는 급락했다. 이는 모바일과 웹 애플리케이션에 대한 수요가 높기 때문이다. 이들은 보통 C보다 배우기 쉽고 디버깅도 간편한 언어로 개발된다.



이런 것을 보면 C라는 저수준 언어는 시대에 뒤떨어진 것처럼 보이기도 한다. 그렇다면 C는 정말 배우 필요가 없는 언어일까? 결론부터 말하면 '맞다' 혹은 '아니다'라고 간단히 대답할 수 없는 질문이다.

수요의 역학
C는 아직도 IT 업계에서 널리 사용된다. 그러나 가트너의 애널리스트 마크 드라이버는 이것이 바뀔 수도 있다고 전망한다. 그는 "C와 C++는 시스템 수준 프로그래밍의 기본 언어이며, 앞으로 오랫동안 이 지위를 유지할 것이다. 그러나 결국에는 구글의 고 같은 언어가 이를 대체할 것이다"라고 말했다.

이어 "이제 IT 고객 사이에는 C나 C++에 대한 수요가 거의 없다. 대신 자바와 다른 관리형 코드 언어를 사용한다. C는 현대적인 아키텍처 베스트 프랙티스를 지원하지 않기 때문에 그 대안으로 자바와 C#이 부상하고 있다"라고 덧붙였다.

단, 특정 분야에서는 C 스킬을 갖춘 프로그래머 수요가 매우 높다. 바로 사물 인터넷(IoT)이다. IoT가 부상하면서 용량이 적은 코드베이스와 런타임이 부활할 조짐을 보이고 있다. 드라이버는 "기존 워크로드의 경우 과거처럼 '바이트'까지 고려할 필요가 없다. 그러나 IoT 애플리케이션은 크기가 가능한 작을 수록 좋기 때문에 C 스킬에 대한 수요가 뚜렷하다"라고 말했다.

C를 배워야 할까
그렇다면 C를 배워야 할까? 이를 주제로 하는 많은 논의 중 가장 설득력 있는 주장은 C가 라틴어와 비슷하다는 것이다. 즉, 사용할 일이 없을 수도 있지만, 다른 언어를 더 빨리 배울 수 있도록 도움을 준다는 논리이다. 자바스크립트를 가르치는 소프트웨어 개발자 아즈리엘 페이슨은 여기에 동의했다. 그는 "C를 배우는 것은 마치 대학의 교양과목을 듣는 것과 같다. 역사 공부가 우리 삶에 도움이 되는 것처럼 C 역시 마찬가지이다"라고 말했다.

그렇다면 소프트웨어 개발 관련 직업을 갖고 싶다면 그 출발점은 C 언어가 돼야 할까? 페이슨은 여기에는 동의하지 않았다. 학생이라면 버그를 추적하는 것보다 문제 해결이나 알고리즘 개발 등 기본적인 프로그래밍 스킬을 배우는 것이 더 낫다는 것이다. 그는 "실제로 C는 오류에 매우 취약해 버그를 찾는 작업이 많다. 이는 때때로 보안 문제로 이어지기도 한다. 다른 언어는 C와 비교했을 때 버그가 80% 가량 적다"라고 말했다.

더구나 컴퓨터 공학 학위 없이 프로그래밍 관련 직업을 찾는 사람의 경우 통상 웹이나 모바일 앱 개발 분야에서 일자리를 찾아야 하는 데 이 분야는 C 언어가 필요없다. 웹 앱처럼 많은 I/O를 처리하는 애플리케이션은 네트워크 대기 시간이 길어 C의 장점이 사라지기 때문이다. C 같은 언어가 필요한 부분은 데이터 처리 같은 고성능 애플리케이션, 운영 시스템 커널과 드라이브 같은 저수준 코드이다.

미구엘 마랄레스는 C 언어 덕분에 더 좋은 직장을 갖게 된 사람 중 한 명이다. 그는 AT&T와 HPE, 시스코에서 소프트웨어 엔지니어로 일한 경력을 갖고 있으며, 현재는 이러닝 업체인 유다시티(Udacity)에 C와 C++ 기반 무인 주행 자동차 나노 학위 과정을 개설해 다른 사람을 가르치고 있다.

그는 "간접적으로 C 언어에 대한 지식 덕분에 더 좋은 프로그래머가 됐다. 머신의 작동 방법, 레지스터를 이용해 데이터를 유지하는 방법, 메모리 할당의 작동 원리를 이해하는 데 큰 도움이 됐다. 이는 C를 사용하지 않아도 경쟁력이 된다. 더 책임 있게 변수를 생성할 수 있고, 가용한 최고의 알고리즘을 이용할 수 있고, 불필요한 명령문이 실행되지 않도록 할 수 있다. 물론 최신 언어에는 자동으로 이를 최적화하는 기능이 포함돼 있다. 그러나 많이 알수록 더 품질 높은 코드를 만들 수 있다"라고 말했다.


C 학습에 대한 가장 일반적인 주장은 C 자체가 배울 가치는 있지만 2번째 또는 3번째 언어로 배우라는 것이다. 일단 다른 언어로 빠르게 코딩 기술을 배운 후에 C를 통해 더 깊은 지식을 쌓는 식이다. 제브라 테크놀리지스(Zebra Technologies)의 컴퓨터 비전 엔지니어인 레이몬드 판도 여기 동의했다. 그는 "C 언어에는 꽤 어려운 개념이 포함돼 있다. 더 높은 수준의 언어로 기본을 학습한 후 고성능 프로그래밍에 필요한 C를 본격적으로 공부하는 것이 낫다"라고 말했다.

판은 C를 배우면 다른 언어 학습이 쉬워지고, 더 좋은 프로그래머가 될 수 있다는 주장에 동의하지 않았다. 그는 "C를 학습해야 메모리 관리에 대해 알 수 있고, 시스템의 숨겨진 부분을 이해할 수 있다. 그러나 C를 깊이 학습할 수록 오히려 혼동될 수도 있다"라고 말했다.

결론적으로 C 언어는 취업에 도움이 될까? 판은 "이력서에 C 언어 관련 내용을 넣으면 도움이 된다. 그러나 다른 관련 스킬도 동시에 평가된다. 즉 C는 '보너스'이지, 결정적인 요소는 아니다"라고 말했다. 가트너의 드라이버도 비슷한 의견이었다. 그는 "C 학습 여부는 프로그래밍에 대한 태도를 보는 지표가 되기도 한다. 즉 진지하지 않은 사람을 골라내는 역할을 하는 것이다. 따라서 C 언어에 대한 지식은 최소한 자신을 돋보이게 할 수 있다"라고 말했다. ciokr@idg.co.kr
X