Part1 C 언어 소개와 프로그램 작성 방법
1.1 C언어의 탄생
누가 만들었나?
- 미국 AT&T사의 벨(Bell) 연구소의 연구원들이 만듦
- 켄톰슨(Kenneth Lane Thompson), 데니스리치(Dennis Ritchie)
왜 만들었나?
- 프로그램의 이식성을 높이기 위해.
SW는 비용은 적게 들고, 효과는 높이자는 철학을 갖고 있음.
즉, 재사용을 말한다.
그러나 이전에는 소프트웨어를 만들면 A 컴퓨터에서는 작동이 되나 B 컴퓨터에서는 작동하지 않는 이식성 문제가 있었음.
이를 해결하기 위해 켄톰슨이 만든 B 언어를 기반으로 데니스리치가 C 언어를 개발.
1.2 컴파일러란 무엇인가?
컴파일러란?
- 인간이 만든 프로그램을 기계가 이해하도록 기계어로 변환하는 변환기, 해석기의 역할
- pile: 포개 놓은 것, 더미
- compile: 엮다, 편집하다, 명령어를 번역하다.
기계어란?
- 기계가 이해하는 2진 숫자(0과 1)로 작성된 언어
1.3 프로그램 작성 4단계
프로그램 작성 방법 4단계 - 이론
- Step1: 프로그램 작성 시 컴파일되지 않은 코드 그대로의 파일을 소스파일 이라고 함. => .c 파일
- Step2: .c 파일을 가져다 컴파일러가 컴파일하여 기계가 이해할 수 있는 언어로 오브젝트 파일(기계어 파일)을 생성 => .obj 파일
- Step3: .obj 파일을 가져다 링커가 링크(연결)하여 .exe 파일(실행 파일) 을 생성 => .exe
- Step4: .exe파일을 실행 시 로더가 로딩(읽어들임, 파일을 메모리에 올림)함. 그럼 CPU가 실행. => 로더가 메모리에 로딩하여 CPU가 실행
프로그램 작성 방법 4단계 - 실습
우리가 관심있는 건 프로그램 작성과 실행
컴파일, 링크 단계는 우리 눈에 보이지 않고 신경쓰기에 복잡함.
그래서 1~4 단계까지 작업을 도와주는 소프트웨어를 '통합 개발 소프트웨어'라고 함.
-
step1: 코드 작성
-
step2~3: 컴파일 및 링크
GNU 컴파일러 모음(GNU Compiler Collection,GCC), 유닉스/리눅스의 컴파일러를 사용하여 컴파일한다.
터미널에 $ gcc Hello.c
입력 시 a.out(macOS 기준이고, 윈도우는 a.exe) 파일이 생성됨.
-
step4: 로더 및 실행
로딩은 우리 눈에 보이지 않기에 로딩과 실행은 동시에 일어남.
터미널에서 $ ./a.out
입력 시 printf 함수에 작성한 "Hello C world"가 출력됨을 확인할 수 있음.
1.4 C 언어의 특징
- 이식성과 효율성이 좋음
- 다른 프로그래밍 언어를 배우기에 좋음, 기초가 되는 언어이기 때문에
- 지능형 서비스 로봇 제어
- 절차지향 언어
1.5 C 언어의 학습 방식
- 1단계: 교재에 있는 코드 분석
- 2단계: 분석된 내용을 통해 교재를 참고하지 않고 코드 작성
- 3단계: 나만의 코드 작성 후 , 코재의 코드와 비교
이러한 학습 단게는 어떤 공부를 할 때에도 적용이 될 만해서 기록
Reference
- 강의: 박정민, 『C 프로그래밍』, KOCW 한국산업기술대학교, 1강
- 교재: 박정민, 『열혈강의 C 언어 본색 명강의가 일으키는 C 언어 기적』, 프리렉 (2011), p5-23.