[C] C Programing Language

wrld_worthy·2023년 11월 2일

C

목록 보기
4/6

C Programing Language

배경

C언어 이전에는 운영 체제를 개발하기 위해 주로 어셈블리어를 사용했다. 벨 연구소에서 운영되던 유닉스 운영 체제를 개선하고 확장하기 위한 필요성에서 비롯되었는데, 유닉스 운영 체제의 초기 버전은 PDP-7어셈블리어로 작성되었다. 어셈블리어는 기계 종속적이고 프로그램이에 많은 시간과 노력이 필요했는데, 이는 프로그램의 이식성과 개발 속도에 큰 제약이었다.

이 문제를 해결하기위해서 유닉스 개발자들은 좀 더 고수준의 프로그래밍 언어를 원했따. 켄 톰슨은 B언어(BCPL에서 파생된 언어)를 사용해 유닉스의 일부를 다시 작성했으나, B언어는 몇 가지 한계가 존재했고, 특히 타입 체크가 없고 하드웨어 수준의 접근이 제한적이었다.

테니스 리치는 이렇나 문제점을 해결하고자 새로운 프로그래밍 언어를 개발하기 시작했다. 그 결과 탄생한 언어가 바로 C언어이다.


C언어의 특성

  • 저수준 접근과 고수준 추상화: C언어는 메모리 주소를 직접 조작할 수 있는 포인터를 포함하여 하드웨어에 대한 직접적인 접근을 가능하게 했으며, 동시에 함수와 같은 고수준 추상화도 지원했다.
  • 이식성: C언어로 작성도니 프로그램은 다양한 컴퓨터 아키텍처에서 컴파일러만 있으면 쉽게 컴파일되고 실행 될 수 있었다. 이로 인해 유닉스 운영체제의 이식성이 대폭 상향됨.
  • 효율성: C언어는 매우 효율적인 코드를 생성하여, 리소스가 제한적인 시스템에서도 빠른 선능을 제공할 수 있었다.
  • 유연성: 다양한 유형의 시스템과 응용 프로그램 개발에 사용할 수 있또록 유연하게 설계되었다.

이러한 특성으로 C언어는 빠르게 인기를 얻었고, 유닉스 운영 체제를 비롯한 많은 시스템 소프트웨어의 개발에 사용되었다. 오늘날에도 C언어는 시스템 프로그래밍, 임베디드 시스템, 기기 드라이버, 고성능 서버 등 다양한 분야에서 활발히 사용되고 있다.

C언어와 고급 언어들

C언어는 저수준 고성능의 언어이다. 요즘 나오는 언어들은 고수준 프로그래밍 언어가 많은데 차이를 알아보자.

  1. 메모리 관리: 현대의 고급 언어들 4대부분은 가비지 컬렉션(GC)를 제공한다. 이는 개발자가 메모리 할당 및 해제를 직접 관리하지 않아도 되도록 한다. 반면 C언어는 개발자가 메모리 할당(malloc)과 해제(free)를 사용하여 직접 관리를 해야한다.
  2. 객체 지향 프로그래밍: C++와 같은 언어는 C언어의 기본에 객체 지향 개념을 추가하여 클래스와 상속 같은 기능을 제공한다. 현대 언얻르, 예를 들어 Java,C#,Python, 등은 기본적으로 객체 지향 프로그래밍을 지원한다. C언어는 절차 지향 언어로 객체 지향 프로그래밍을 내장하지 않는다.
  3. 안전성: 많은 현대 언어들은 타입 안정성과 메모리 안전성을 중시한다. 이들은 실행 시간 오류를 방지하기 위해 강력한 타입 체크와 경계 체크를 수행한다. C언어는 더 유연하지만, 이로 인해 버퍼 오버플로와 같은 보안 취약점이 발생할 수 있다.
    4.편의성과 라이브러리: 현대 언어들을 풍부한 표준 라이브러리와 프레임워크를 제공한다. 이러한 라이브러리들은 파일처리, 네트워킹, 그래핑스 처리 등 다양한 작업을 보다 쉽게 처리 할 수 있도록 돕는다. C언어도 표준 라이브러리를 가지고 있지만, 현대 언어만큼 방대하진 않다.

종합하면, C언어는 하드웨어에 가까운 작업과 높은 성능이 필요한 시스템 수준의 프로그래밍에 적합한 언어이다. 반면, 현대의 고급 언어들을 더 빠른 개발 시간, 더 높은 안전성, 그리고 개발의 편의성을 제공한다.

0개의 댓글