01.이것이 c언어다. Programming Language/열혈강의c 공부2017. 6. 26. 23:46
2017-06-26
오늘 나간 진도
chapter 01 이것이 c언어다.
chapter 02 프로그램의 기본 구성
----------------------------------------------------
01-1) c언어는 뭐냐
c언어는 프로그래밍 언어이다.
말그대로 c언어는 프로그래밍 언어이다.
프로그래밍 언어란 컴퓨터와의 대화에 사용되는 일종의 '대화수단'이다.
대화수단으로서 프로그래밍 언어는 다양하다. c, java, pyhon 등등등
마치 한국어 일본어 영어 처럼 말이다.
다른 언어체계를 익힌 사람들이 대화를 나누기 위해서는 그 사이에 공통적인 대화 수단이 마련되어야 한다.
통역가나 번역기 처럼 말이다
여기서 compiler(컴파일러)라는 개념이 나오는데
사람이 컴퓨터에게 명령시킬때 프로그래밍 언어로 명령을 시키면 컴파일러가 컴퓨터가 이해할수있는 기계어로 변경하여 전달한다.
왜 굳이 컴파일러를 등장시켰냐 라고 한다면
(사람도 컴퓨터가 인식하는 기계어를 알지 못하고 사람이 기계어를 공부하기에는 부담이 크기때문이다.
그리고 컴퓨터에게 사람의 언어를 가르친다는 것은 아직까지 불가능하기에)
기계어(Machine Language)란 컴퓨터가 이해할 수 있는 0과 1로 구성된 언어체계이다.
<정리>
-프로그래밍 언어란 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어를 의미한다.
-컴파일러의 역할은 프로그래밍 언어로 작성한 프로그램을 컴퓨터가 이해할 수 있도록 기계어로 번역하는 역할을 한다
-->이렇게 번역하는 일 자체를 가리켜 '컴파일(compile)'이라 한다.
01-2) c언어의 역사와 특징
C언어의 역사와 특징을 알면 좀더 이해하기 쉽고, 이런 장점이 있구나 하고 생각해보게되서 정리한다.
<c언어의 역사>
c언어는 1971년경에 UNIX라는 운영체제의 개발을 위해 Dennis Ritchie와 Ken Thompson이 함께 설계한 범용적인 고급(high-level)언어이다.
기존의 UNIX라는 운영체제는 '어셈블리(assembly)언어' 라는 저급(low-level)언어로 만들어졌기 때문에 하드웨어 의존도가 높았다.(=이식성이 낮다)
여기서 저급언어가 말그대로 질이 낮은 언어라고 오해하면 안된다! 저급 언어라는건 인간보다 컴퓨터에 더 가까운 언어라는 것을 뜻한다.
저급언어로 작성되었다는건 작성된 컴퓨터 하드웨어가(cpu) 이해하기 쉽게 작성되었다는 것이고, 다른 cpu에 그 프로그램을 실행하려고 하면 똑같은 기능이라도 cpu종류에 따라서 별도로 구현해야했다. (그래서 위에서 하드웨어 의존도가 높다라고 설명했다.)
여기서 CPU는 'Central Processing Unit'의 약자로 중앙처리장치 라고한다. 컴퓨터의 두뇌에 해당하는 것으로, 사용자로부터 입력받은 명령어를 해석, 연산한후 그 결과를 출력하는 역할을 한다.
--->어셈블리언어의 단점 해결을 위해서 c언어의 개발로 어셈블리언어의 저급 언어적 특징을 지니면서 이식성도 좋은 c언어가 운영체제의 90%이상이 대 체되었다.
<c언어의 특징>
-C언어는 절차지향적 특성을 지닌다
절차지향이란 '정해진 순서의 실행흐름'을 중시한다. 즉 절차지향 프로그래밍에서 중심이 되는것은 순서이다.
-C언어로 작성된 프로그램은 이식성이 좋다
-C언어로 구현된 프로그램은 좋은 성능을 보인다.
01-3)C프로그램의 완성과정
C프로그램의 완성과정을 설명하려고한다.
1.프로그램 작성
2.컴파일(Compile)
3.링크(Link)
4.실행파일 생성
순으로 프로그램이 생성된다.
나는 Visual C++ Express Edition 2010을 기반으로 실습했고, 인터넷에 무료로 배포중이다.
C프로그램을 이루는 파일의 종류는 소스파일과 헤더파일로 나뉜다.
파일의 이름을 입력할때 주의할점은
"C언어의 소스파일 확장자는 .c가 되어야 하므로, 소스파일의 이름을 입력할 때 반드시 확장자 정보인 .c를 붙여줘야 한다."
'Programming Language > 열혈강의c 공부' 카테고리의 다른 글
04.데이터 표현방식의 이해 (0) | 2017.06.29 |
---|---|
03.변수와 연산자 (0) | 2017.06.27 |
02.프로그램의 기본구성 (0) | 2017.06.27 |
00.시작 (0) | 2017.06.26 |