01 - C 입문

유현수·2024년 1월 12일
post-thumbnail

C의 역사

유래

C는 UNIX 운영체제의 산물이다. UNIX를 개발하면서 어셈블리어보다 더 고급 언어의 필요성을 느껴 B언어가 탄생했고 여기서 더 발전된 언어가 C 언어이다.

표준화

C는 등장 이후 많은 인기를 얻었고 꾸준히 발전해왔다. 그에 따라 표준화의 필요성 또한 대두되었다. 대표적인 C 언어 표준은 다음과 같다.

  • C89: 88년도 ANSI(미국규격협회)의 승인을 받아 표준화된 C언어 (규격 X3.159-1989)
  • C90: 90년도 ISO(국제표준화기구)의 승인을 받아 표준화된 C 언어 (규격 ISO/IEC 9899:1990)
  • C99: 99년도 대대적인 변화가 이루어진 새로운 규격 (규격 ISO/IEC 9899:1999)

C 기반 언어들

C는 현대 프로그래밍 언어들에 영향을 주었으며, 일부는 막대한 영향을 받았다. 대표적인 언어들은 다음과 같다.

  • C++은 C의 모든 특징을 갖고 있으나, 클래스와 다른 특징들이 추가되어 객체 지향 프로그래밍이 가능하다.
  • Java는 C++에 기반하고 있는데, 그렇기에 C의 여러 특징을 공유하고 있다.
  • C#은 비교적 최근 언어로, C++과 Java에 영향을 받아 만들어졌다.
  • Perl은 본디 비교적 쉬운 프로그래밍 언어였다. 시간이 지나자 C의 많은 특징을 공유하기 시작했다.



장점과 단점

특징

  • Low-level 언어: 본래 운영체제, 시스템 소프트웨어를 만들기 위해 제작된 언어이다. 따라서 자연스럽게 기계 수준의 개념까지 다룰 수 있는 로우 레벨(Low-level) 언어가 되었다.
  • 작은 언어: C 언어의 초창기 매뉴얼은 단 49페이질 정도로 작았다. 이렇듯 C 언어는 가능한 작게 만들어졌기에 표준 함수들로 이루어진 라이브러리에 크게 의존한다.
  • 관대한 언어: C는 개발자를 믿는다는 철학 아래 높은 자유도를 제공한다. 또한 에러가 발생하더라도 구체적인 안내를 해주지 않는다...

장점

  • 효율성: 어셈블리어를 대체하기 위해 만들어진만큼 C 언어는 매우 빠르다.
  • 확장성: 빠르게 표준화가 이루어지면서 컴팡일러가 다양한 환경을 지원하게 됐고 폭넓은 확장성을 갖게 되었다.
  • 유연성: 시스템 프로그램, 임베디드 등 다양한 애플리케이션을 제작하는데 사용할 수 있다. 또한 다른 언어에서 허용되지 않는 기능들이 C 언어에서는 대부분 허용된다.
  • 표준 라이브러리: 인풋/아웃풋, 문자열 처리, 메모리 할당 등 유용한 함수 수백가지가 있다.
  • UNIX와의 통합: UNIX, Linux와 만났을 때 최고의 궁합. 몇가지 UNIX 기능은 사용자가 C를 할 줄 안다는 전제하에 제공되기도 한다.

단점

  • 에러가 나기 쉬울 수 있다.: 다른 언어에서는 쉽게 잡힐 실수들이 C 컴파일러에서는 잡히지 않을 수 있다.
  • 이해하기 어려울 수 있다.: C가 상대적으로 작은 언어이긴 하지만 다른 언어에는 없는 여러 기능들이 여럿 있다. 또한 유연한만큼 저마다 개발 방식이 달라 다른 프로그래머의 코드를 이해하는 것이 어려울 수 있다.
  • 수정하기 어려울 수 있다.: 현대 프로그래밍 언어들이 클래스나 패키지와 같은 기능을 제공하는 반면 C는 이러한 기능이 없다.

C를 효과적으로 사용하는 법

  • 실수를 줄이는 방법을 익힌다.
  • 소프트웨어 도구를 사용한다. (ex. Lint)
  • 라이브러리를 활용해 안정성을 높인다.
  • 실용적인 코딩 습관을 들인다.
  • 간결한 코드를 작성한다.
  • 표준을 지킨다.
profile
"Life isn't about finding yourself. Life is about creating yourself."

0개의 댓글