필자의 말
C언어는 1972년 벨 연구소의 데니스 리치(Dennis MacAlistair Ritchie)에 의해서 탄생한 컴퓨터 프로그래밍 언어 입니다.
그당시 UNIX라는 운영체제는 어셈블리어라는 기계어에 가까운 저급언어로 제작되어 있었는데
어셈블리어는 사람들이 알아 보기 어렵고 추후 프로그램 수정이 어려운면이 많았습니다.
이러한 문제점을 해결하고
좀더 편리하게 프로그램을 작성하기 위하여 저급 언어의 특징을 포함한 고급 언어인 C언어를 만들었습니다.
이처럼, 태생 자체가 운영체제를 위해서 탄생한 컴퓨터 프로그래밍 언어이다 보니
C언어는 운영체제 개발이나 기타 하드웨어 제어에 특화된 언어라고 할수 있습니다.
이러한 특징들로 인하여 C언어를 제대로 배운다는 것은
단순히 문법만 배우는 것으로는 부족하게 됩니다.
C언어를 올바르게 배우고 이해하기 위해서는
2진법, 불대수, 논리 게이트, CPU의 구성(ALU, 레지스터), 메모리 접근, 할당 등등
다른 프로그래밍 언어에서 대체적으로 다루지 않는
컴퓨터 하드웨어에 대한 전반적인 지식을 필요로 합니다.
그래서 처음 컴퓨터 프로그래밍 언어를 접하는 분들에게 C언어는 조금 어려운 프로그래밍 언어에 속하기도 하고
C 언어를 입문서를 집필하는 필자로써도 어디서 부터 어디까지 설명을 해야 할지 참 난감한 부분이기도 합니다.
위에 언급한
2진법, 불대수, 논리 게이트, CPU의 구성(ALU, 레지스터), 메모리 접근, 할당만 하더라도
대학교 정규과정 1-2년치에 해당하는 내용이기 때문입니다.
(물론 반학기만에 끝내는 우수한 대학도 있겠죠.)
하지만,
C언어가 이러한 하드웨어 전반에 대한 지식을 요구하는 프로그래밍 언어라는 점이
조금 부담이 될수도 있겠지만
오히려 그점이
C언어를 교육용 언어에 더 적합하다고 할 수 있습니다.
배우기에는 조금 까다롭지만
거의 모든 프로그래밍 언어의 문법적인 표준이자,
하드웨어를 직접 제어하는 강력한 기능을 제공함으로써
JAVA, Python등의 객체지향언어가 세상에 선을 보인지 오래 이지만
절차적 언어인 C언어가 교육용언어로 여전히 널리 통용되며
오늘날 까지도 가장 핫하고 인기있는 프로그래밍언어로 자리 잡았습니다.
(요즘은 파이썬을 교육용으로 많이 이용하는 추세이기는 합니다.)
JAVA나 기타 객체지향 언어가 이미 세상에 선을 보인지 오래이지만
특히 이공계 학과 학생들이 필수로 배우고 익히는 이유가 그것이 아닐까 생각합니다.
C언어는 문법적인 형태로 보았을 때 JAVA나 PHP등의 언어와 유사하고 너무 당연한 이야기이겠지만 C++와 거의 동일한 문법을 가지므로 위에 나열한 새로운 언어를 배울 때 특히나 C언어를 능숙히 다루는 프로그래머들이라면 아무런 부담감 없이 고급 프로그래밍 언어들을 접할 수 있는 장점이 있습니다.(문법적인 부분만)
물론 문법이 같다고 해서 프로그래밍 방식이나 그 특징이 같다는 뜻은 아니지만 한글의 가 나 다 라를 배운 사람이 책을 읽을 수 있는것과 마찬가지로 C언어를 배운다는 것은 다른 프로그래밍 언어를 배우기 위한 첫 과정이라고 생각해도 됩니다.
물론 가 나 다 라를 안다고 해서 단어 뜻을 알수는 없는것과 마찬가지로 다른 프로그래밍 언어로 쓰여진 내용의 숨겨진 깊을 뜻을 모두 이해 할수는 없을 것입니다.
그럼에도 불구하고
제가 C 언어를 여러분들께 추천드리는 이유는
C언어라는 것이 아주 아주 방대한 내용을 알아야 하는 프로그래밍 언어이며
C언어 자체의 문법적인 성취만으로는 입문자 수준을 벗어나기 힘든 언어라는 이야기를 하고 싶었습니다.
그렇다면 어떻게 C언어를 공부해야 할까? 라는 질문을 던져 볼수 있겠습니다.
모든 분들에게 적합하지는 않겠지만
그리고 모든 분들이 동의 하시지는 않겠지만
제가 생각하는 C 언어 입문서는
C언어를 배움에 있어서 넓은 범위의 고차원 적인 사용법 보다는
가장 기초적인 문법의 조합을 통하여 문제를 해결해 나가며
간단한 알고리즘을 배우는 기회를 제공하는 책이
C언어 입문서로써 가장 바람직한 형태가 아닐까 생각합니다.
제가 지금부터 설명할 C언어는 일부러 멀리 돌아가며
깊지는 않더라도
하드웨어에 대한 전반적인 내용을 두루 두루 설명하고
기초를 다지는 알고리즘 중심의 실전 C언어 강의가 될 것입니다.
그럼 강의시간에 뵙겠습니다.