이 포스팅은 K.N.King의 C programming : a modern approach를 참고하여 만들었습니다.

  C 언어의 유래

C언어는 Bell Lab의 Ken Thompson, Dennis Ritchie 등이 만들었다.

당시의 다른 운영체제들 처럼, UNIX도 어셈블리어로 제작됨

어셈블리어로 제작된 프로그램들은 디버깅과 성능 업그레이드가 힘들어서 고급 언어가 필요했고 B언어를 만들었다.

B언어는 PDP-11이라는 컴퓨터에 잘 맞지 않았고 조금 더 발전된 New B(NB)를 만들었는데 B와는 형태가 많이 달라서 C언어라고 부르게 되었다.

1973년이 되자 UNIX전체를 C로 프로그래밍 했고 당시 C의 가장 큰 장점은 확장성이었다.

 


 C 기반 언어들

C++ 은 C의 특징을 많이 가지고 있는 언어이다.

Java는 C++을 베이스로 만든 언어이기 때문에 C의 특징을 많이 물려받았다.

C# 은 C++과 Java를 본 떠 만들었다.

이러한 언어들을 배울 때 C의 특징을 알면 조금 더 이해하기 쉽다는 장점이 있다.


 C의 특징과 장단점

C언어의 본 용도는 운쳥체제나 시스템 소프트웨어를 제작하는 것이다. C는 Low level language이다.

운영체제처럼 시스템을 제어하는 언어들은 바이트 단위와 메모리 주소 값 등의 기계 수준의 개념까지 다룰 수 있어야 한다.

대부분의 다른 언어에서는 직접 제어하지 않고 미리 짜인 알고리즘에 의해 작동한다.

C로 짠 프로그램들은 매우 빨라질 수 있다.

C는 작은 언어. 다른 언어들에 비해 매우 한정된 특징들을 제공한다. C언어는 표준 함수들로 이뤄진 라이브러리에 매우 크게 의존한다.

C는 관대한 언어이다. C는 다른 언어들에 비해 좀 더 큰 자유를 선사한다. 에러가 발생했을 때 구체적으로 무엇이 일어났는지에 대해 알려주지 않는다.

 장점

1. 효율성 - 어셈블리어를 대체하기 위해 만들어 졌기 때문에 한정된 메모리 내에서 빠르다.

2. 확장성 - 다양한 컴퓨터에서 프로그램이 실행 가능하다. 규격화 되어있다.

3. 강력함 - 다양한 자료형들과 연산자들은 C를 강력한 언어로 만들어 주었다.

4. 유연성 - 시스템 프로그램을 위해 만들어졌지만 임베디드 시스템이나 데이터 처리등 여러 응용프로그램을 제작하는데 사용된다. 다른 언어에서는 허용되지 않는 기능이 C 언어에서는 대부분 허용된다.

표준 라이브러리

UNIX와의 통합 - UNIX의 기능들은 사용자가 C를 할 줄 안다는 전제하에 제공되기도 한다.

 

단점

에러가 쉽게 난다.

실행하기 전까진 에러가 있는지 없는지 모른다. 

이해하기 어려울 수 있다.

수정하기 어려울 수 있다. 다른언어들은 클래스나 패키지로 잘게 나누어서 관리가 용이한데 C는 그런 기능이 없다.

+ Recent posts