C언어란?

Programming/C 2016. 4. 18. 19:35

프로그래머의 가장 기초적인 언어 중 하나인 C에 대해 설명하려 합니다.

C는 대학에서 IT관련 학과라면, 더하여 주위에서는 전자공학과 학생들도 기초적으로 배우는 과목이더군요.

먼저 프로그래밍 언어에 대해 소개하고 넘어가도록 하겠습니다.

프로그래밍 언어란 주어진 어떤 문제를 해결하기 위해 사람과 컴퓨터 사이에서 의사소통을 가능하게 하는 인공적인 언어입니다. 이 언어를 통해 사용자는 컴퓨터에게 일련의 일을 시키는 명령어들의 집합체인 '프로그램' 을 작성할 수 있습니다.

수 많은 프로그램 언어 중 공통적으로 프로그램 언어에 대해 살펴보겠습니다.

1. 간결성 - 사람이 프로그램을 쉽게 이해하고 읽을 수 있도록 간결하게 표현할 수 있다.

2. 직교성 - 언어의 각 구성요소가 상호 독립적이면서도 어떤 환경에서도 그 구성요소가 같은 의미로 사용된다.

3. 가독성 - 사람이 이해하기 쉽도록 작성된 프로그램이나 프로그래밍 언어의 문법, 주석등이 가독성의 향상에 도움이 된다.

라는 등등의 프로그래밍 언어의 특징이 있습니다.

먼저, C언어의 특성에 대해 살펴보겠습니다.

1. 이식성이 뛰어나다. - C언어는 다른 프로그램 언어보다 높은 호환성을 가지고 있으며 C언어의 표준함수만 작성 된 프로그램은 어떤 기종의 컴퓨터에서도 정상적으로 컴파일 되고 실행될 수 있습니다. 예를 들어 데스크탑 컴퓨터에서 작성된 프로그램이 대형 컴퓨터에서도 완벽히 사용 될 수 있다는 것입니다.

2. 다양성을 가진다. - C언어는 계산용 프로그램 뿐만이 아니라 GUI(Graphic User Interface), 시스템 프로그램(System Program), 응용 프로그램(Application Program)등과 같이 컴퓨터의 모든 분야에서 사용할 수 있도록 설계된 효율적인 프로그램 언어입니다.

3. 유연성이 좋다. - C언어의 가장 큰 특징 중 하나는 새로운 프로그램을 개발하기 위해 이미 작성된 프로그램 모듈들을 그대로 사용할 수 있다는 것입니다. 대표적인 응용 소프트웨어로 오토캐드, 윈도우, 폭스프로 등이 있다고 합니다.

4. 혼합성을 가진다. - C언어는 다른 프로그램 언어와 함께 혼합되어 사용될 수 있으며, 혼합 프로그램을 개발하는 프로그램의 혼합성을 극대화시키는 데에 사용될 수 있습니다. 

5. 절차지향적 특징을 가진다. - 기본적으로 많은 사람들이 인지하고 있는 C언어와 다른 언어의 차이점이라 할 수 있겠습니다. Java, C++ 등은 객체지향적인 특징을 가집니다. 객체지향에 관련 된 부분은 블로그 내 Java 카테고리에서 자세히 설명드리겠습니다. 절차지향적 프로그래밍이란 정해진 순서대로 프로그래밍을 하는 방식을 의미합니다. 따라서 C언어를 학습하는 데 오랜 시간이 걸리지 않는다는 장점이 있습니다.


위에서 C언어의 특징 및 장점에 대해 이야기 하였다면, 단점 또한 존재합니다.

1. 다른 학습자가 프로그램의 내용을 이해하기 어려운 표현이 될 수도 있습니다.

2. 완전한 고급언어에 비해서 상대적으로 LOW level(표현이 맞는지 모르겠습니다.^^) 을 이해해야 하므로 배우기가 쉽지 않습니다.

3. 자료형의 검사기능이 미약합니다.

4. 혼합적으로 연산하는 경우 연산 우선순위에 따라 자동적으로 계산되므로 연산 우선순위를 모르면 잘못된 계산 결과를 얻을 수 있습니다.

5. 배열에서 첨자의 범위를 검사하는 기능이 미약합니다.

6. 프로그램을 모듈화하지 않으면 이해하기 어려운 프로그램이 되는 경우가 많습니다.


이러한 C언어의 특징들은 보는 관점에 따라 다르게 가치가 판단될 수 있다고 생각합니다. 특히 C언어는 소프트웨어 측면이나 하드웨어의 개발 도구로써 다양하게 사용 될 수 있는 언어의 특징을 가지고 있으므로 널리 사용되는 언어라 할 수 있겠습니다.


이상으로 C언어의 특징을 마무리 하겠습니다.

해당 정보들은 '불량너구리'님의 블로그

http://blog.naver.com/PostView.nhn?blogId=ashly77&logNo=120125897912

를 다수 참고하여 정리하였습니다.

'Programming > C' 카테고리의 다른 글

(5) DoubleLinkedList 사용하기  (0) 2016.10.30
(4) Linkedlist 를 이용하여 Reverse, Concat 응용  (0) 2016.10.30
(3) Linkedlist 사용하기  (0) 2016.10.30
(2) ArrayStack 사용하기  (0) 2016.10.30
(1) ArrayList 사용하기  (0) 2016.10.30

WRITTEN BY
SiriusJ

,