비생물계(Disanimalia regnum)

소프트웨어문(software phylum)

응용소프트웨어아문(application software subphylum)

프로그래밍언어강(programing language classis)

C언어목(C language ordo)

정적타입C언어아목(static type C language subordo)

C언어과(C language familia)

C언어속(C language genus)

C언어종(C language species)

C

- C(1972)

K&R C

- K&R C

ANSI C

- C89

ISO C

- C90

- C95

- C99

- C11

- C18


정적타입C언어아목 -> C언어과 -> C언어속에 속한 이 비생물은 전자기기문 계산기아문 컴퓨터강의 비생물들을 영장목 사람과 사람속의 호모 사피엔스 종들이 자신들이 원하고자 하는 방향으로 프로그램의 제어를 하기 위한 목적으로 제작되어 사용되는 프로그래밍언어강의 비생물 중 하나이며, C언어라는 이름으로 불리고 있다.

비생물계이면서 신장이나 몸무게, 부피가 존재하지 않고 별도의 먹이나 잠을 필요로 하지 않으며 맨눈으로 볼 수 없는데, 컴퓨터, 랩톱 등 컴퓨터강에 속한 비생물의 내부에 서식중인 소프트웨어문 시스템소프트웨어아문의 비생물 OS(운영체제)를 이용해 booting작업을 진행한 뒤 C언어를 지원하는 통합 개발 환경 프로그램을 작동시키면 해당 언어의 존재를 확인할 수 있으며 프로그래밍 지식이 있다면 직접 조작할 수도 있다. 이는 전반적인 소프트웨어문에 속한 모든 비생물들이 갖는 공통적인 특징이다.

C언어의 탄생배경에는 넓게는 호모 사피엔스들의 수학 계산 속도 향상에 대한 끊임없는 열망이 반영되어 있다. 20세기 이전의 호모 사피엔스들은 손이나 주판 등을 이용하여 복잡한 계산을 수행했는데, 이후 폰 노이만 구조에 기반한 전기신호를 0과 1로 표현하여 정보를 표현하는 방법으로 계산속도의 비약적인 향상이 이루어졌다. 문제는 이러한 연산을 수행하는 명령어인 기계어는 오직 0과 1로만 이루어져 있어 호모 사피엔스들이 이해하기 어려웠기 때문에, 이에 대한 보완책으로 어셈블리어가 개발되었으며 이후 어셈블리어와 1 : 1호환이 되는 C언어가 개발되었다.

C언어는 명령어의 입력을 통해 응용소프트웨어 속성을 가진 비생물을 만들어내는 비생물이다. 예를들어 1+1의 결과를 출력하는 명령어가 작성된 소스파일을 만들었다면, 해당 응용소프트웨어는 결과값 2를 출력하는 비생물이 된다. 기계어와 호환되는 어셈블리어와 가장 가깝기 때문에 어셈블리어를 제외하면 타 프로그래밍언어 대비 가장 빠른 연산속도를 자랑한다. 만들어진지 오래되었지만 다양한 수학, 데이터 자료형과 연산자를 지원한다. 배열이나 변수를 선언하여 내부에 값을 저장할 수 있으며, 메인함수 상단에 적어놓은 명령어를 필요할 때 가져오는 호출문기능, 변수에 특정 변수의 주소값을 저장하여 간접주소접근이 가능한 포인터기능 등을 제공한다.

이런 다양한 기능을 지원하는 덕에 호모 사피엔스들에게 널리 쓰여왔고, 그만큼 단점도 부각되었다. 절차 지향적 언어 특성상 연산속도는 빠르지만 같은 기능의 응용소프트웨어 비생물을 만들어내는데 다른 언어보다 더 많은 시간이 필요하고, 이마저도 프로그래머가 최적화에 소홀할 경우 연산속도향상효과가 크게 줄어드는 문제가 발생한다. 정적 타입 언어이기 때문에 변수를 선언하거나 값을 출력할 때 올바른 자료형을 사용했는지 확인해야 하며, 포인터에 대한 개념을 완벽히 이해하고 숙련하기 어려운 것도 C언어 입문의 장벽 중 하나이다. 

상기된 단점들을 어느정도 해소하면서, 복잡한 기능들을 많이 제공하는 고수준 언어의 필요성이 요구되어 다양한 C계열 파생 비생물들이 탄생했다. C++(C언어과 -> C++속 -> C++)은 C언어의 특징을 유지하면서 객체 지향 언어의 개념이 탑재되어 3D게임, 그래픽 프로그래밍에 자주 사용되며, Java(정적타입C언어아목 -> Java과 -> Java속 -> Java)는 객체 지향 언어에 포인터 기능이 배제되어 언어가 복잡해지는 것을 막고 고수준의 객체지향 부분을 잘 구현하는 것에 집중했다. 이외에도 MS에서 개발된 C#(정적타입C언어아목 -> Java과 -> C#속 -> C#), 애플에서 개발된 Swift(동적타입C언어아목 -> Objective-C과 -> Swift속 -> swift)가 있으며, Java와 이름은 비슷하지만 C언어와의 연관성을 제외하면 전혀 다른 언어인 JavaScript(동적타입C언어아목 -> JavaScript과 -> JavaScript속 -> Javascript)가 있다