본문 바로가기

#기본개념

C 언어에 대해 알아보자!!

반응형

C  언어에 대해 알아보자!!

 

 

 

 

[작성자의 다른 글 보러가기: '프레임워크와 라이브러리의 차이점은 무엇일까?']

 

 


 

개요

 

C언어란 무엇일까? C++는 또 어떤것일까?

C와 C++에 대해 알아보고 정리해보도록 하자.

 

 

목차

1. C언어란

2. C언어의 장점

3. C언어의 단점

4. C언어의 활용범위

 

부가링크 1:  C++언어란

부가링크2: C와 C++의 차이점

 

 

 

 


 

 

 

# C언어란 무엇일까

 

 

C 1972년 켄 톰슨 데니스 리치가 벨 연구소에서 일할 당시 새로 개발된 유닉스 운영 체제에서 사용하기 위해 개발한 프로그래밍 언어이다. 켄 톰슨은 BCPL언어를 필요에 맞추어 개조해서 "B"언어(언어를 개발한 벨 연구소의 B를 따서)라 명명했고, 데니스 리치가 이것을 개선하여 C 언어가 탄생했다. 유닉스 시스템의 바탕 프로그램은 모두 C로 작성되었고, 수많은 운영 체제의 커널 또한 C로 만들어졌다. 오늘날 많이 쓰이는 C++는 C에서 객체 지향형이다.

이는 오늘날의 널리 쓰이는 거의 모든 운영 체제 커널이 C를 이용해 구현된 이유이기도 하다. 이처럼 C는 시스템 프로그램 개발에 매우 적합하지만, 응용 프로그램 개발에도 많이 쓰이기도 한다.

 

출처: 위키백과

 

 

 


 

# C언어의 장점

 

 

 

1.  효율성이 높으며 간결하다

 

효율성이 높으며 간결하다. 효율성이 좋아 대규모의 고기능 프로그램을 만들 수 있다. 제작된 프로그램의 크기가 작고 속도도 빠르다. 문법이 간결하다. 예약어가 적고 제공하는 연산자가 다양하기 때문에 잛은 명령으로 많은 일을 할 수가 있다.

모든 분야의 두루 활용할 수 있을 정도로 범용적이고 사무처리, 과학기술, 상업용 등 거의 대부분의 응용프로그램을 개발할 수 있다. 제한없이 자유로운 프로그래밍이 가능하여 장치제어 등의 Low level 프로그래밍에는 여전히 C가 많이 사용된다. C언어로 할 수 없으면 다른 언어로도 할 수 없다고 보면 된다.

 

 

 

 

2.  하드웨어를 직접 제어하는 저수준 / 고수준의 프로그래밍도 가능하다

 

다른 언어들에 비해 어셈블리어와 같은 저수준(low-level)언어에 가깝습니다. 고급언어 이지만 메모리 관리와 같은 하드웨어 제어도 가능합니다. 실제 컴퓨터가 작동하는 과정과 구조를 C언어를 통해 파악할 수도 있습니다. 운영체제 개발을 목적으로 만든 언어이므로 저수준 프로그래밍이 가능하며 어셈블리 수준의 하드웨어 제어를 할 수 있다.

 

 

 

 

 

3.  절차지향적 특성이며 이해하기 쉽다

 

C언어는 인간의 사고방식, 일 처리방식과 유사합니다. 따라서 C언어의 정해진 순서에 따른 실행흐름을 이해하기가 쉽습니다.

 

 

 

 

4.  이식성이 좋다.

 

다른 말로는 기계 독립성이 있다고 할 수 있습니다. 대부분의 컴퓨터에는 종류에 관계없이 C언어의 컴파일러, 인터프리터가 내장되어 있습니다. 대부분의 플랫폼에서 C/C++언어를 사용할 수 있으므로 재컴파일만 하면 타 운영체제에서 실행되는 프로그램을 쉽게 만들 수 있다.

 

 

 

4.  실행속도가 빠릅니다.

 

프로그래밍 과정과 구조에 따라 다를 수도 있지만 다른 언어들은 인터프리터가 한 줄씩 읽어들여 프로그램을 실행하는 반면에 C언어는 컴파일 후 링크를 통해 실행파일을 만들기 때문에 속도가 더 빠릅니다. 이러한 이유로 속도가 중요한 임베디드 계열에서는 C언어(C++)을 사용하는 경우가 대다수입니다.

 

 

 

 


 

 

 

# C언어의 단점

 

 

 

1.  언어사용의 난이도

 

프로그래밍하는데 많은 주의를 요하고, 완전한 고급언어에 비해 상대적으로 어렵다.

 

 

 

 

2.  문자열 타입의 부재

 

C언어는 문자열이 저장될 때 항상 null문자가 마지막에 옵니다. 따라서 프로그래머가 마지막 문자를 신경쓰지 않고 처리하게 되면 심각한 오류가 발생할 수도 있습니다. 또한 문자열에 대한 자료형이 없어서 배열로 저장하는데 이를 다른 언어의 자료형과 헷갈리면 오류가 발생할 수도 있습니다.

 

 

 

 

3.  C언어의 이식성 & 편의성

 

C언어가 다양한 하드웨어와 컴파일러에서 작동 가능한건 사실이지만, 이는 하드웨어의 각각의 특성을 고려해서 코드를 짰을 때 가능한 것 입니다. 예를 들어 하드웨어마다 int자료형의 정의된 크기가 다 다르기 때문에 기존의 코드와 오차가 생길 수도 있습니다. 이는 결국 작동이 불가능 하다는 것을 말해줍니다.

 

나온지가 오래되다 보니 요즘 언어들에서 1~2줄로 끝나는 기능구현을 위해서 수백, 수천줄의 암호문을 작성해야 한다는 것 또한 단점입니다. 또한 성능을 위해 불필요한 에러 처리를 하지 않습니다. 타입의 불일치나 배열 경계 점검 등은 프로그래머가 직접 해야 하므로 개발자는 항상 이점을 주의해야 합니다.

 

 

 


 

 

 

# C언어의 활용 범위

 

시스템프로그래밍 / 임베디드 시스템 / 드라이버 / 보안 솔루션 / 안티바이러스 / 게임 개발 / 교육용