혼공학습단 10기 시작하는 글.



지난번에도 참여하였고 SQL과 ML을 공부하였습니다.
기초가 체계적으로 잡혀있어서 정리와 추가 공부에 도움이 많이 되었었습니다.
이번에는 혼자 공부하는 C언어를 시작합니다.


제가 C언어를 공부하려는 이유는 다음과 같습니다.


1. 프로그래밍 언어에 더 깊이 알고싶다.

저는 Python을 사용합니다.
high-level language라고 하지만 개발할 떄에는 최대한 효율적으로 굴러갈 수 있게끔 해야합니다. 알고리즘, 시간/공간 복잡도, 최적화의 개념에서 그렇습니다.


이를 고민하다보면 자연스레 궁금하게 되는 것은, Python에서 내장함수들은 어떤식으로 작성되었는지가 궁금하게 됩니다.


이러한 예시가 있을거 같습니다.

"key" in dict 같은 동작은 dict가 해시테이블이기 때문에 O(1)으로 빠르게 동작한다. dict자리에 list를 넣으면 겉보기에는 거의 같은 코드일 것 같으나, list의 원소 개수 n에 따라 O(n)이 된다.

동작 원리를 알기위해서는 Python의 소스코드를 열어봐합니다.

또한, C언어는 가장 Low-level에 존재하는 assembly를 제외하고 언어로써 프로그래밍 세상의 원리를 담고 있다고 생각합니다.
저는 Python을 비롯해 프로그래밍 세상의 원리를 더 알고싶습니다.


2. 실무적으로 필요할 때가 있다.

소프트웨어 개발을 하거나 사용하다 보면, 사용하지 않는 언어임에도 기능을 가져오거나 고쳐야할 때가 있습니다.
제 분야인 Bioinformatics를 포함해서 많은 분야의 소프트웨어들은 빠른 속도를 고려할 때에는 C, C++, Java 중에서 선택합니다. 그 중에서 C언어는 가장 빠르고, 제가 사용하는 도구, 라이브러리 들에서도 많이 사용하고 있어서 배우고 싶다는 마음을 가졌습니다.

그리고 가장 중요한 것은 체감상 이러한 언어들로 작성된 코드를 잘 들여다 봐야할 사건이, 종종 발생합니다. 언어들은 비슷한점이 많아서 읽는것은 가능합니다. 쓰는건 아직 어렵습니다 . 마치 언어처럼 … 하지만 그 때마다 약간의 고통을 감수하는 것 보다는 기초적인 부분을 닦고 활용하는게 더 낫겠다 라는 생각을 자주하였습니다. 지금이 그 시간인 것 같습니다.


따라서…

저한테 필요한 것은 체계적인 기초, 빠른 학습 입니다.

혼자 공부하는 시리즈는 지난번 참여 했을때 만족스러웠고, 목차와 내용을 살펴보았을 때 "혼자 공부하는 C언어"는 저한테 알맞은 것 같습니다. 좋은 책으로 잘 공부해보겠습니다.