검수요청.png검수요청.png

C 언어

위키원
Asadal (토론 | 기여)님의 2019년 6월 25일 (화) 03:49 판 (같이 보기)
이동: 둘러보기, 검색

C 또는 C 언어는 1972년 데니스 리치(Dennis Ritchie)가 미국 AT&T벨 연구소 시절에 개발한 범용 프로그래밍 언어이다. 기존의 A 언어와 B 언어를 개량하여 만들었다. 빠른 처리 속도가 필요한 시스템 제어 분야에 많이 사용한다. C 언어를 변형하여, C++, C#, 비주얼 C++, 엠에프씨(MFC), 프로씨(Pro-C), 오브젝티브-C, 스위프트, 러스트 등 다양한 프로그래밍 언어가 만들어졌다.

역사

알골 -> BCPL -> B 언어로 개조되는 과정에서 발생 [1]

발생 동기

  • 케네스 톰슨(Ken Thompseon)이 벨 연구소에서 MULTICS 운영체제를 개조하여 유닉스를 만들던 중 기계마다 운영체계를 제작 하다시피 하여 만드는 애로사항을 해결하고자 이식성이 좋고, 호환성이 좋은 언어로 제작하여야겠다는 필요성을 가졌다.

이때 데니스 리치(Dennis Ritchie)가 B 언어를 개조하여 1972년 C언어를 제작하고, 이를 이용하여 유닉스를 다시 만들게 된다.

  • 사용자가 늘어남에 따라 매뉴얼이나 지속적인 작업이 이루어지지 않아 초기에 개발회사나 사용회사별로 C 언어가 혼란을 겪게 된다.
  • 미국 ANSI협회에서 ANSI-C를 규정하고 이때부터 ANSI-C를 표준으로 각 회사들이 개성있게 제작을 시작한다.
  • 이후 1982년 C++이 개발되며 더욱 성장하게 된다.
  • C 언어를 이용하여 자바, C#, 엠에프씨(MFC), 프로씨(Pro-C), 오브젝티브-C, 스위프트, 러스트 등 다양한 프로그래밍 언어가 만들어졌다.

[1]

제작 과정

[1]

특징

C 언어의 장점

  • 이식성이 뛰어나다.
C 언어는 다른 프로그래밍 언어보다 높은 호환성을 가지고 있고 C 언어의 표준함수로만 작성된 프로그램은 어떤 기종의 컴퓨터에서도 정상적으로 컴파일되고 실행될 수 있다.
  • 다양성을 가진다.
C언어는 과학 계산용 프로그램뿐만 아니라 FA(공장 자동화), OA(사무 자동화), GUI(Graphic User interface), 시스템 프로그램(System program), 응용 프로그램(Application Program)과 같이 다양한 분야에서 사용할 수 있도록 설계된 효율적인 프로그램 언어이다.
  • 절차 지향적 특징을 지니고 있다.[2]

C 언어의 단점

  • 유닉스를 기술하기 위한 언어로서 개발되었기 때문에 유닉스가 가진 약점을 그대로 가지고 있다.
  • 자료형의 검사기능이 미약하다.
  • 혼합연산의 경우 연산 우선순위에 따라 자동 계산되므로 연산 우선순위를 모르면 잘못된 계산 결과를 얻을 수 있다.
  • 프로그램을 모듈화하지 않으면 이해하기 어려운 프로그램이 되는 경우가 많다.

[2]

절차지향 언어객체지향 언어의 차이

절차지향 언어

  • 대표적인 절차지향 언어로는 C 언어가 있다.
  • 위에서부터 아래로 정해진 절차(순서)에 따라 실행된다.
  • 프로그래밍 수준이 복잡하지 않고 유지 보수하기가 쉽다.
  • 객체지향보다 코딩 속도가 빠르다.

[3]

객체지향 언어

  • 대표적인 객체지향 언어로는 C++, 자바가 있다.
  • 절차지향으로 해결하지 못할 정도로 많은 기능을 만들게 되면서 복잡해진 코드를 작성하기 위해 등장한 언어
  • 추상화 : 객체들의 공통적인 특징을 뽑아내는 것
  • 캡슐화 : 데이터 구조와 데이터를 다루는 방법을 결합해 묶는 것
  • 상속 : 상위개념의 특징을 하위개념이 물려받는 것
  • 다형성 : 일을 하는 함수를 같은 이름으로 호출해 주는 것

[3]

다른 컴퓨터 언어와 비교

C 언어와 C++

C 언어는 1972년부터 사용되기 시작해 현재까지 핵심적인 컴퓨터 언어로 사용되고 있다. C 언어는 절차 지향적 언어임에 반해 C 언어의 개량형으로 알려진 C++의 가장 큰 특징은 객체지향 언어이며 광범위함이다. C++은 추상적인 개념을 통해 구성을 먼저하고 그 후 그것들을 조합하는 상향식 접근 방법으로 만들어진다. [4]

C 언어와 자바

자바 또한 객체지향 언어로 지금까지 여러 소프트웨어 개발의 주축이 된다. 기계와 근접한 위치에서 실행되거나 하드웨어를 직접 다루는 경우 C 언어는 컴파일 시 바로 기계코드로 컴파일이 되어 프로세스에 의해 직접 실행된다. 따라서 중간 코드인 바이트 코드로 컴파일되어 기계코드로 다시 변환하는 자바의 경우 제한된 메모리를 최적으로 사용해야 하는 프로그램에는 C 언어가 유용하다. [5]

개발도구

Visual Studio(Visual Studio) 로고
  1. 비주얼 스튜디오
  2. dev C++
  3. Code::Blocks
  4. ideone 웹페이지 개발

[6]

각주

  1. 1.0 1.1 1.2 luckey, 〈C언어의 유래와 역사〉, 《makebyhand 블로그》, 2009-03-19
  2. 2.0 2.1 ashly77, 〈C언어의 특징, C언어의 정의, C언어의 장단점〉, 《네이버 블로그》, 2011-03-14
  3. 3.0 3.1 zzaxowns, 〈[C++ 절차지향 언어와 객체지향 언어]〉, 《네이버 블로그》, 2019-03-11
  4. JJOREG, 〈C++ 과 C의 차이점〉, 《티스토리닷컴》, 2014-06-25
  5. Serdar Yegulalp, 〈C 프로그래밍 언어가 여전히 최고인 이유 : 개발언어 일대일 비교〉, 《InfoWorld》, 2018-06-22
  6. magnetah, 〈[https://blog.naver.com/magnetah/221257011286 재미 삼아 코딩 <C언어> 프로그램 개발도구에 대하여 : 통합 개발 환경 종류〉, 《네이버 블로그》, 2018-04-19

같이 보기


  검수요청.png검수요청.png 이 C 언어 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.