지난번에도 참여하였고 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언어"는 저한테 알맞은 것 같습니다. 좋은 책으로 잘 공부해보겠습니다.