[KOCW 한국산업기술대학교 박정민 교수님] C 프로그래밍 강의를 모두 수강하였습니다.
회고를 통해 앞으로의 어떤 태도로 무엇을 학습할지 고민하는 시간을 갖도록 하겠습니다.
총 19강
[KOCW 한국산업기술대학교 박정민 교수님] C 프로그래밍 1강
~
[KOCW 한국산업기술대학교 박정민 교수님] C 프로그래밍 19강
프로그래밍을 입문하여 첫 언어로 자바스크립트를 선택했었습니다.
스크립트 언어를 선택한 덕분에 배우기 쉽고 별도의 컴파일 과정이 없어 눈에 보이지 않는 부분들을 신경 쓸 필요가 없었습니다.
그러나 전산학을 공부하기 시작하면서 눈에 보이지 않는 부분들이 궁금해 지기 시작했으며 타입 스크립트를 공부할 때 타입을 지정하는 것이 번거롭고 낯설게만 느껴졌습니다.
자바스크립트를 첫 언어로 선택하여 얻은 이점들도 많지만 많은 것이 생략되고 자유로운 자바스크립트를 했던 것이 독이 되었다는 느낌도 들었습니다.
그러나 자바스크립트, 타입스크립트, 파이썬을 공부했을 때 어느 정도의 틀은 비슷하다고 느꼈어서 이러한 프로그래밍 언어들의 초석이 되는 언어는 무엇일까 찾아보았더니 C 언어가 모든 언어의 기본이 된다는 것을 알게 되었습니다.
컴퓨터 과학과 대학교 커리큘럼에서도 공통적으로 1학년 1학기에 C 프로그래밍을 배우는 점 또한 충분히 이유가 있을 것이라고 생각이 들었습니다.
또한 인턴 생활을 하며 메모리 관리와 메모리 주소에 대한 지식이 부족하다고 느꼈기에 C 언어를 통해 프로그래밍 언어의 기초를 다지고 저의 부족한 부분들을 채워 나갈 수 있다고 판단하여 해당 강좌를 선택하게 되었습니다.
소스코드는 컴파일되어 오브젝트 파일이 생성되고, 링커를 통해 실행 파일이 만들어지고, 로더를 통해 메모리에 적재되어 CPU가 연산하여 프로그램이 실행되게 됩니다.
프로그램 작성 시 컴파일되지 않은 코드 그대로의 파일을 소스파일 이라고 함. => .c 파일 코드 작성
GNU 컴파일러 모음(GNU Compiler Collection,GCC), 유닉스/리눅스의 컴파일러를 사용하여 컴파일한다.
터미널에 $ gcc Hello.c
입력 시 a.out(macOS 기준이고, 윈도우는 a.exe) 파일이 생성됨.
로딩은 우리 눈에 보이지 않기에 로딩과 실행은 동시에 일어남.
터미널에서 $ ./a.out
입력 시 printf 함수에 작성한 "Hello C world"가 출력됨을 확인할 수 있음.
프로그램에서 사용되는 메모리는 정적 메모리와 동적 메모리가 있습니다.
정적 메모리는 언제 할당되고 해제될지 그리고 크기가 컴파일할 때 결정되는 메모리입니다.
런타임 중에 메모리의 크기를 변경할 수 없어 이러한 문제를 해결하기 위해 동적 메모리가 요구됩니다.
눈에 보이지 않던 부분은 생각조차 하지 못했었는데 C 프로그래밍을 통해 조금 더 많은 것들을 볼 수 있게 되었습니다.
당장의 프로그래밍을 하고 코드를 짜는 것보다 컴퓨터 과학의 기본적인 부분들을 학습할 계획입니다.
또한 C 언어를 기반으로 개발된 C++과 JAVA를 공부하며 객체 지향에 대해 공부할 예정입니다.
그리고 자료 구조를 공부할 때 자바스크립트로 된 자료들이 부족하여 불편함이 있었기에 C 언어로 된 많은 자료들을 찾아보면서 보다 더 깊게 학습할 예정입니다.