[CodeEater와 제로부터 시작하는 C언어] 1장 - C언어를 배우는 이유
사실 이 C언어 강의를 보는 사람들 중에서 C언어를 좀 진지하게 하려는 사람은 없을 것이다.
그 이유는 C언어를 배우는 사람의 거의 대부분은 어쩔 수 없이 학교에서 하니까 배우기 때문이다.
따라서 C언어를 배우는 이유에 대해서 말하는게 큰 의미는 없을 것이다.
그러나 그래도 이왕 배우는거 C언어를 도대체 왜 배워야하는지에 아는 것이 좋을 것이다.
그래서 이번 포스팅에서는 C언어를 배우는 이유에 대해서 몇가지를 이야기 해보도록하자.
C언어를 처음 배우는 이유는 관습적인 측면이 크긴하지만 납득 못할만한 이유는 아니다.
C언어를 배움으로 컴퓨터의 기본 동작원리에 대해서 이해하게 된다.
요즘에는 C언어를 배우는게 필수가 아니라고 생각하거나
다른 방법, 혹은 설명으로 충분히 알려줄 수 있다고 생각하는 사람들도 있다.
그래서 이러한 사람들은 C언어를 제일 처음 배우는게 아니라
파이썬 혹은 Java등을 처음 가르치는 경우도 있다.
그래서 C언어를 처음 배울 때 얻는 장점과 단점들을 알아보도록 하자.
C언어에서는 배열이나 포인터등을 직접다루며 메모리가 어떻게 배치되는지 보게된다.
그리고 이게 더 심도깊게 배울 경우 버퍼에는 어떻게 적재되고 어떻게 처리하는지 알게된다.
메모리 동적할당 및 구조체, 공용체, 배열등의 메모리 활용에 대해서 배우게 된다.
따라서 이러한 메모리 관리에 대해서 보는 눈이 생긴다.
C언어는 성능에 충실한 언어이다.
성능을 올리려면 C언어에서 썼던 활용테크닉을 떠올리게 되기에 성능에 대해서 생각하게 된다.
문자열이 내부에서 어떻게 관리하는지 확인하게 된다.
물론 C언어에서 배우는 문자 스타일은 다른 언어와 일치하지는 않지만
적어도 문자들이 어떻게 문자열을 이루게 되고 관리되는지에 대해서는 알 수 있다.
배열,구조체,공용체,포인터 등이 어떻게 메모리에 배치되며
이게 어떻게 성능에 영향을 미치는지 알 수 있다.
요즘 모든 언어들이 탑재중인 클래스라는 개념이 없고 메모리를 완전 수동관리한다.
C언어로 객체지향 코딩을 하지 못하는건 아니지만 객체지향을 지원해주는 언어는 아니다.
그래서 C로 코딩을 배울 때 절차적 코딩을 하게되는 경우가 많은데 이는 다른 언어를 배울 때 단점이된다.
입문자는 코딩 패러다임에 적응하는데 엄청난 시간과 리소스가 투자되는걸 잊어서는 안된다.
필자가 생각하는 가장 큰 문제점이다.
C언어는 문법이 쉽지만 이 쉬운 문법으로 어려운 작업들을 해나가야해서 생산성이 떨어진다.
필연적으로 활용법을 많이 알아야하며 사실 활용법을 포함한다면 C언어는 쉬운 언어가 아니라
아주아주아주 어려운 언어이다. 그런데 입문용으로 배우는 사람에게는 간단한 일밖에 시킬 수 없다.
게다가 활용을 하기위해서 매우 많은 부분에 대해서 이해를 시켜야하며 그럴 경우 다른 언어보다 학습량이 많다.
현재 한국의 구인 시장에서의 분야중 이직이 잘되는 분야는 프론트엔드, 서버, 안드로이드, ios등이고
거기에 머신러닝, 빅데이터, 임베디드 분야가 있다.
그런데 임베디드를 제외하고 나머지 분야에서 C를 잘 사용하지 않는다.
물론 입문 입장에서는 아직 취직이 먼 이야기이기 때문에 상관없지만
비전공자들이나 4학년 등의 취준생들에게는 좋은 언어라고 보기 어렵다.
모두 단순히 의견일 뿐이므로 여러분들도 깊게 생각할 필요가 없다.
어짜피 이거 보는 사람들은 학부생들이지 않는가?
억지로 하는거기 때문에 그냥 하면 되지만 장단점을 알아두는게 도움은 될 것이다.
'제로부터 시작하는 프로그래밍 > C' 카테고리의 다른 글
[CodeEater와 제로부터 시작하는 C언어] 4.2장 - 서식 지정자 (0) | 2019.11.30 |
---|---|
[CodeEater와 제로부터 시작하는 C언어] 4.1장 - 변수는 어떻게 표현되는가 (0) | 2019.11.23 |
[CodeEater와 제로부터 시작하는 C언어] 4장 - 변수와 자료형과 포맷 (0) | 2019.11.20 |
[CodeEater와 제로부터 시작하는 C언어] 3장 - 프로젝트 만들기/첫프로그램 (0) | 2019.11.12 |
[CodeEater와 제로부터 시작하는 C언어] 2장 - C언어란 무엇인가 (0) | 2019.11.11 |