티스토리 뷰

반응형

 

주어진 학습목표를 이루기 위해서 이해를 우선으로 두고 공부할 것이다.

들어가기 전에 학습목표, 핵심 단어는 강의 자료를 가져올 것이고 그 이후로는 내가 이해하고 공부한 부분을 직접 적고, 마지막에는 배운 점이나 느낀 점을 적도록 하겠다. 

 

 


 

들어가기 전에

그래픽 인터페이스로 상호작용성이 좋은 스크래치로도 간단한 프로그래밍을 할 수 있지만, 텍스트 기반의 프로그래밍 언어를 이용해도 컴퓨터에게 동일한 일을 하게 할 수 있습니다. 가장 널리 쓰이는 프로그래밍 언어중 하나인 C의 기초를 배워보겠습니다.

 

학습 목표

C로 “hello, world”를 출력하는 프로그램을 만들 수 있습니다.

 

핵심 단어

  • stdio.h
  • clang
  • 컴파일러

 


 

stdio.h

 

C는 아주 오래되고 전통적인 순수 텍스트 기반의 언어이다.  아래는 "hello, world"를 줄바꿈으로 출력하는 코드이다. 

#include <stdio.h> : "stdio.h"라는 이름의 파일을 찾아서 "print"함수에 접근시켜준다.

int main(void)'시작한다'라는 의미를 담고있다. 

앞으로 작성할 코드는 int main(void) {} 중괄호 사이에 작성하게 된다. 

#include <stdio.h>

int main(void)
{
    printf("hello, world\n");
}

 

 

컴파일러

 

위의 코드는 우리가 직접 작성한 "소스코드"라고 한다. 하지만 컴퓨터는 이 문자를 곧이 곧대로 이해할 수 없기 때문에 2진수로 바꿔서 컴퓨터에게 전송해야한다. 그 2진수로 작성된 코드는 "머신코드"라고 하며 이 과정을 컴파일러라는 프로그램이 수행해준다. 

 

 

"clang"이라는 컴파일러로 "hello.c"라는 코드를 컴파일 하라는 명령어이다.

$ clang hello.c

 

그 결과로 a.out이라는 파일이 생성된다. 이는 머신코드이다. 

 

 

컴퓨터가 현재 디렉토리에 있는 a.out이라는 프로그램을 실행시켜준다. 맨앞의 .은 현재 폴더를 의미한다. 

$ ./a.out

 

 

물론 이런식으로 다른 이름의 머신파일을 저장할 수 도있다. 

$ clang -o hello hello.c

// 실행
$ ./hello

 

 

명령어 프롬프트를 사용해 리스트나 파일을 삭제 할 수 있다. (ls, rm)

ls를 통해 현재 디렉토리에 있는 파일의 목록이 나온다. 파일명 뒤에 *은 실행할 수 있는 머신파일을 의미한다.

$ ls
// a.out*  hello*  hello.c

 

 


 

생각해보기

 

C언어는 처음이지만 이번 강의를 통해 가볍게 한 번 접해보는 것도 아주 좋은 기회라는 생각이 들었다. (물론 가볍게 배울 수 있는 언어는 아니지만..? )

그동안 공부하면서 '이진수로만 이뤄진 컴퓨터가 어떻게 내가 쓰는 코드를 이해하지?' 라는 것에 대해 의문을 가져본적이 없었다. 

하지만 첫 강의부터 듣다보니 그 궁금증이 생기고, 오늘 컴파일러라는 프로그램을 배우면서 좀 더 컴퓨터를 이해할 수 있게 되었다. 

 

 



Reference : CS50



반응형