[Teach Yourself C] Day. 01 - 시작하기

 지난 4월 이직을 했습니다.

 꾸준하게 Android 자료를 번역하고 공부하려고 했었는데, 이직을 결심한 뒤에 인수인계를 하고 이것저것 일처리를 하다 보니 Blog 관리는 뒷전으로 밀리고 말았습니다. 혹시나 Android 자료 번역을 기다리셨던 분이 계시다면 사과 말씀 드립니다...

 전 회사의 일을 어찌어찌 마무리한 뒤, 4월부터 새 직장에서 일을 하고 있습니다. 새 직장은 지금까지의 직장과는 일하는 스타일도, 일의 영역도 다릅니다. 사용하는 언어도 다릅니다. 새 직장에 빠르게 적응하려고 노력하고, 주어지는 일들을 처리하다 보니 어느덧 7월이 되었습니다.

 약 3개월의 시간을 돌아보니, 공부가 필요하다고 느꼈습니다. 대학 시절에 쌓은 C 언어 지식으로 어찌어찌 일을 처리했지만... 기본기는 흔들리고, 응용력은 떨어집니다. 그래서 다시 C 언어를 공부하기로 마음 먹었습니다.
 어떤 방법으로 공부를 할까... 고민을 하다보니, 대학 시절에 친구들과 함께 C 언어 스터디를 했었던 것이 기억이 났습니다. 그 때 사용했던 교재가 "Teach Yourself C" 라는 책 입니다. C 언어를 21일 간의 학습으로 끝내는 책 이지요.
 10년도 더 지난 일이지만, 다시 그 책을 꺼내봤습니다.

 하루, 하루, 공부를 계속하다가 보면 흔들리는 기본기가 잡히고, 응용력도 올릴 수 있을 거라고 생각합니다. 빠르고 정확하게 공부를 마치고 자료구조와 알고리즘까지 공부를 연장시켜 보려고 합니다. 이번엔 안 밀리고 잘 할 수 있었으면 좋겠습니다... 하하...ㅠ

 잡설이 길었네요. 그럼 오늘의 공부를 시작하겠습니다.



*** 오늘의 학습 내용
  0. 간단한 C 언어의 역사
  1. C 언어를 선택하는 이유는?
  2. C 프로그래밍 개발 주기
  3. 첫번째 C 프로그램을 작성하여 컴파일하고 실행하기

 오늘의 학습내용은 위와 같습니다.
 C 언어의 역사를 짧게 짚어보고, C 언어를 선택하는 이유를 알아보고, 프로그래밍 개발 주기의 단계를 살펴봅니다. 그 뒤에 마지막으로 정말 간단한, 그렇지만 프로그래밍을 시작할 때 꼭 해봐야 하는, "Hello World" 를 출력하는 프로그램을 작성해보겠습니다.


*** 간단한 C 언어의 역사
  0. C 언어는 1972 년, 벨 전화 연구소에서 근무하던 '데니스 리치' 라는 분이 만드셨습니다.  
  1. 이 당시 C 언어는 아무 의미없이 만들어진 언어가 아니라, 유닉스 운영체제를 디자인하기 위해서 만들었다고 합니다.
  2. 매우 강력하고 유연성이 있었던 이 C 언어는 급속도로 퍼져나갔다고 합니다.
  3. 다만 표준이라는 것이 없었던터라 각자 자기들만의 버전을 만들어서 사용했다고 합니다. 이 때문에 개발자들은 협업하기가 굉장히 어려웠다는 이야기를 들은 적이 있습니다. 여기서는 돌아가는 코드가 저기에서는 안 돌아갔기 때문이지요.
  4. 이 문제를 해결하기 위하여 미국 국립 표준 연구소(ANSI, American National Standards Institute) 에서 C 언어의 표준을 정의하기 위해서 1983 년에 위원회를 조직했습니다.
  5. 이 위원회는 'ANSI 표준 C' 라고 알려져 있습니다.
  6. 몇 가지 예외(정확히 어떤 예외가 있는지는 굳이 찾아보지는 않았습니다...) 를 제외하고, 대부분의 C 언어 컴파일러는 이 표준을 따라야 합니다. 말 그대로 표준이기 때문이지요.
  7. 2017년 현재도 'ANSI 표준 C' 을 따라서 프로그래밍 되고 있습니다.


*** C 언어를 선택하는 이유
 C 언어를 선택하는 기준은 다양합니다.
 누군가는, 임베디드 프로그래밍을 할 때 아직은 C 만한 것이 없다고 말하며 C 언어를 사용합니다. 누군가는, 프로그래밍을 처음 배우는 학생들의 개념을 잡아주기에는 C 언어가 가장 좋다고 말하며 C 언어를 사용합니다. 누군가는, 컴퓨터 공학을 전공한 사람이라면 C 언어는 다룰 줄 알아야 한다고 말하며 C 언어를 사용합니다.
 이처럼 다양한 이유와 다양한 필요에 의해서 C 언어를 선택합니다. 다른 언어들도 마찬가지겠지요.

 하지만 저는 새로 들어간 회사가 C 언어를 사용하기 때문에 C 언어를 사용합니다.
 다른 이유가 없네요.

 이 책에서는 다음과 같은 이유를 이야기합니다.
  0. 강력하면서도 유연한 언어. C 언어의 능력은 사용자의 상상력에 의해서만 제한된다.
  1. 전문 프로그래머들이 가장 많이 선호하는 언어. -> 현재는 조금 다른 것으로 알고 있습니다. (RedMonk 의 'GitHub 와 StackOverflow 에서 많이 쓰이는 프로그래밍 언어 조사[2016년]' 에 따르면 C 언어는 9위에 위치하고 있습니다.)  
  2. 이식성이 있는 언어. ANSI 표준 C 덕분에 이식성이 더 좋아졌다.
  3. 소수의 키워드로 이루어진 언어. 몇 개의 키워드 만으로 프로그램을 작성할 수 있다.
  4. 모듈 방식의 언어. 함수를 만들어서 재사용이 가능한 코드를 생성할 수 있다.

 가볍게 읽고 넘어가셔도 될 것 같습니다.


*** C 프로그래밍 개발 주기
 이 책에서는 다음과 같은 단계를 제시합니다.

  0. 프로그래밍 준비.
    (0) 프로그램의 목표를 설정.
    (1) 프로그램을 작성하는데 사용할 방법 결정.
    (2) 문제를 해결할 프로그램 작성.
    (3) 프로그램의 결과를 확인.

  1. 프로그래밍.
    (0) 소스코드 작성.
    (1) 소스코드 컴파일.
    (2) 실행파일 만들기 & 링크하기.
    (3) 실행 및 결과 확인.

 뭔가 너무 당연한 이야기 같다고 느끼실 수도 있습니다.
 하지만 사실이라서 어쩔 수가 없습니다. (;;;)


*** 첫번째 C 프로그램.
 바로 코드를 보시지요.
 코드가 길지 않으니 간단한 주석으로 설명을 대체합니다.



 작성이 완료되었으면, 위에서 이야기한 것처럼... 컴파일을 하고 실행파일을 만들어줍니다. 실행했을 때 Hello World ! 라는 문구가 보이신다면 첫번째 C 프로그램은 완료입니다.



 이렇게해서 Teach Yourself C 의 첫째날 공부가 끝이 났습니다.
 첫날이라 짧고 개론적인 이야기가 주를 이뤘습니다. 달달 외우고 있을 필요는 없지만, 슬~쩍 읽고 넘어가기에는 괜찮은 내용이라고 생각합니다

 그럼 이것으로 첫째날 공부를 마치고, 다음에 둘째날 공부 내용을 들고 오겠습니다. (최대한 빨리 오겠습니다...)
 읽어주신 모든 분들, 감사합니다.

CloudD

예술하는 프로그래머, 코딩하는 예술가

댓글 쓰기

다음 이전