- 0. Introduction
읽었던 내용 중, 가장 헷갈렸던 부분을 여러번 보고 정리하였습니다.
C는 string, set, list, array 같은 것들을 제공하지 않습니다. (자바의 ArrayList나 C++의 vector 같은 것들을 말한다.) C의 문자열은 포인터를 이용하여 문자열을 사용하기에 다른 의미입니다. 따라서, 자바나 C++에서 제공하는 객체관련 함수를 조작하는 함수들도 제공하지 않습니다. (array.length())
또한 C는 정적 정의, 함수의 지역 변수 관련 스택을 제외하고는 어떠한 저장 할당 방법도 존재하지 않습니다. 따라서 C는 heap, garbage collection이 존재 하지 않습니다. (malloc()같은 함수는 C 자체가 아닌 함수로 구현된 ANSI 표준 함수입니다.)
마지막으로 C는 입출력이나 READ, WRITE 문장, 파일 접근을 제공하지 않습니다.
제공하지 않는 기능들은 함수들에 의해서 호출되어야 합니다. C는 오직 간단한 single-thread만 제공합니다. multiprogramming, parallel opertations, synchronization, coroutines을 제공하지 않습니다. (OS가 제공하게 도와줍니다.)
위의 내용들을 보면 C는 단점이 많아 보입니다. 하지만 다음과 같은 제한들이 C의 파일 크기를 커지지 않게 제한하기 때문에 많은 benefits를 얻습니다. 또한 다른 언어들에 비해 상대적으로 크기가 작습니다. 그렇기 때문에 적은 resource를 필요한 곳에서도 안성맞춤입니다. 또한 언어 자체로 보면 간단한 구조체계를 가지고 있기 때문에 빠르게 배울 수 있습니다. 이와 같은 장점들을 효과적으로 사용하기위해 ANSI(American National Standards Institute)에서 ANSI C 표준을 정의하였습니다. 그로인해, 아무리 많은 컴파일러라도 ANSI 표준만 지켜준다면, 어떤 시스템이든 같은 함수들로 구현할 수 있게 되었습니다.
영어 독해 실력이 많이 부족하기 때문에, 저자의 의도를 정확히 이해했는지는 확신할 수 없습니다. 이상, K&R : Introduction 부분을 마치겠습니다.
댓글 없음:
댓글 쓰기