brunch

매거진 Sinclair

You can make anything
by writing

C.S.Lewis

by Sinclair Feb 03. 2016

Prologue

천리 길은 한걸음부터, 돌다리도 두들기고




제 글을 처음 보는 대부분의 사람들이 "에이.. 머야? 또 씨야? 에이씨~ 널린 게 씨책이고 씨블로근데..." 이런 반응일 겁니다. 그러나 이미 여러 책들과 웹사이트를 전전하셨던 분들 중에는 혹시나 하는 희망에 이 글을 읽고 계신 분들도 있을 겁니다.

 


, 맞습니다. C언어와 표준 함수들에 대한 두껍고 좋은 책들이 현재 시중에 많이 나와 있습니다. 그럼에도 불구하고  다른 글을 여기에 쓰게  까닭은 K&R(Brian Kernighan - http://cm.bell-labs.co/who/bwk/​​ - "K"  Dennis Ritchie - http://cm.bell-labs.co/who/dmr/​​ -  "R")께서 The C Programming Language라는 책을 내신지 (초판을 기준으로) 30 년이 흘렀고, 프로그래밍을 하는 개발 현장에서 강의를 하는 교육 현장에서  분이 의도하셨던 C언어의 자유로움이 사라지고 그분들의 의도가 왜곡된 현실을 보게 되었기 때문입니다. 제가 진행했던 업체 컨설팅과 기술 강의  많은 사람들이 전혀 새롭지 않은 것을 새로운 것으로 받아들이며 놀라워하는 것을 보면서 K&R  분의 뜻을 이을 글을 적어야겠다는 생각을 감히 하게 되었습니다. 또한 시대와 기술이 놀라운 속도로 바뀌었고 사용자들과 독자들의 요구사항이 점점 다양해졌으며  분이 처음에 의도하셨던 자유롭고 놀라운 확장성을 가지고 있는 C언어를 정말 자유롭게 사용하면서 기존에 있는 제한적인 내용의 책으로는 많이 부족한 것을 느끼게 되었습니다. 기본적인 책은 내용이 너무 부실하고 깊이 있는 책은 아주 어려운 용어들과 내용으로 가득  있는 모양새가 너무도 안타까웠습니다.



앞으로 적게 글들의 묶음은 { Sinclair ˚C* }라 적고 "씽클레어도씨"라고 읽겠습니다. 아, 씽클레어도 씨를 한다고 생각해도 좋습니다. 그러나 다만 여기에 어려운 용어 사용을 가급적 배제하면서도 깊이 있는 내용과 함께 프로그래머로서의 삶이 그대로 녹아있는, 그래서 36.5℃ 따뜻한 체온이 느껴지고 사람 냄새 나는 그런 글을 짓고 싶은 마음을 담았습니다. 함수의 영역을 나타내는 { }를 감싸고 포인터 연산자인 *를 넣은 것은 C의 기본이라고 할 수 있는 함수와 포인터에 충실하기 위함입니다.



저는 C언어는 심플하기 때문에 그것에 관해 설명한 책도 두꺼울 필요가 없다고 하셨던 K&R 두 분의 거룩한 의도처럼 절대 XXX 바이블 류의 두꺼운 책이나 글을  짓지 않겠노라고 스스로 다짐하고 또 다짐을 했습니다.


게다가 지금까지 제 프로그래머로서의 삶은 다른 책에 있는 것을 그대로 따라 할 때는 다 되지만 막상 스스로 문제를 해결하려고 할 때는 코드 한 줄, 한 줄이 모두 막히고 문제였습니다. 하지만 어떤 책도 안 되는 것을 말해주거나 그것이 왜 안 되는지 이유를 설명해주지 않았습니다. 그래서 앞으로 글에는 그 동안 누구나 완벽하다고 믿었고 실제로 그렇게 실행되는 뻔한 코드나 이야기는 줄이겠습니다. 하지만 문제가 되거나 모두가 가능하다고 믿었지만 안 되는 것들 또는, 반대로 안 되는 줄 알고 있고 아무도 시도하지 않았지만 전혀 아무 문제 없이 실행되는 것들로 채웠습니다.


그래서 모든 프로그래밍 책에 나오고 심지어 스티브 잡스가 최초의 맥킨토시에서도 고집했던 "Hello world!"는 작성하지 않겠습니다.


오로지 원리와 개념에 충실하되 여러분이 고정관념에 사로잡히지 않도록 최대한 노력했습니다.



이 { Sinclair ˚C* }는 C언어의 기본을 설명하는 용도가 아닙니다. 기본적인 것을 원하신다면 White Book으로 통하는 K&R의 "The C Programming Language(Second Edition) by Brian W. Kernighan and Dennis M. Ritchie. Prentice Hall, Inc., 1988. ISBN 0-13-110362-8 (paperback), 0-13-110370-9 (hardback)."을 추천합니다. 번역서가 나와있긴 하지만 가급적 원서를 머리말부터 읽어 보길 권합니다.



 







C언어 표준에 대해 관심이 있다면 ISO/IEC 9899:1999 Programming Languages – C (일명 ISO 표준문서)를 참고 하기 바랍니다. 그리고 C 표준 함수에 대한 궁금증이 있다면 "The Standard C Library by Plauger. Prentice Hall, Inc., 1991. ISBN 0-13-131509-9"을 소개합니다.

그 밖에 참고할 만한 서적으로는 "C Programming FAQs: Frequently Asked Questions by Steve Summit. Addison-Wesley, 1995. ISBN 0-201-84519-9"이 있습니다.  


이 { Sinclair ˚C* }는 C언어 심플함과 자유로움에 근거하여 작성하고 있기 때문에 어떤 일부분에서는 새로운 패러다임을 요구합니다. 기존에 있던 다른 책들과 접근 방식이 다를 수 있지만 기존의 C언어 책들과 다른 이야기를 하는 것은 아닙니다. 다만 고정 관념과 기존의 틀을 깨는 정도의 수고를 요구합니다. (사실 그것이 가장 어려운 것이긴 합니다.) 마음을 열고 새로운 눈으로 바라보면 좀 더 멋진 세상을 만나게 될 겁니다.  


그래서 어쩌면 이 { Sinclair ˚C* }는 생텍쥐뻬리가 어린왕자에게 그려주었던 상자 그림과 같습니다. 여기에 모든 것이 들어 있습니다. 하지만 다르게 보면 아무 것도 없습니다. 그냥 아주 작은 상자일 뿐입니다. 우리가 가진 상상력을 동원한다면 여러분들이 알고 있는 것 이상의 것을 볼 수 있습니다. 가장 중요한 것은 눈에 보이지 않는다는 여우의 말을 기억하길 바랍니다. 어쩌면 우리는 바라보고 있으면서도 못 믿고 있는지도 모르겠습니다. 이미 우리가 잃어버린 어렸을 적 순수한 마음을 다시 한 번 기억하길 바랍니다.

세상을 바꾸는 것 보다 어려운 것이 바로 자신의 마음을 바꾸는 일입니다. 그리고 우리가 하지 못하는 까닭은 바로 우리 스스로 하기 싫은 까닭입니다.


안되는 일은 없습니다. 오직 못하는 일만 있을 뿐입니다.

하기 싫은 일에는 핑계가 떠오르고 하고 싶은 일에는 방법이 떠오릅니다.








서둘러 모터를 분해해야 했기 때문에

나는 더 이상 참지 못하고 여기 있는 그림을 되는대로 끄적거려 놓고는

한마디 툭 던지 듯 말했습니다.  

"잘 봐, 이건 상자야. 네가 원하는 양은 바로 여기 이 안에 있어."  

그러나 환하게 밝아지는 내 어린 심판관 얼굴을 보고는 새삼 놀라지 않을 수 없었답니다.

"응, 이게 바로 내가 원하던 그 양이야! 그런데 있잖아… 풀을 많이 주어야 해?"

"왜 그런걸 물어?"

"나는 아주 작은 곳에서 살거든…"

"음… 아마 거기 있는 것만으로 충분할거야. 이건 아주 작은 양이니까."

어린왕자는 고개를 숙이곤 다시 상자 그림을 들여다 보았습니다.

"글쎄, 그다지 작지도 않은걸. 어라! 그새 벌써 잠들어 버렸네…"

이렇게 해서 나는 어린왕자를 알게 되었죠.  

…  

"안녕" 여우가 말했답니다.

"내 비밀은 이런 거야. 그것은 아주 단순하지. 오로지 마음만 보아야 잘 보인다는 거야.

언제나 가장 중요한 건 눈에 보이지 않는단다."

"가장 중요한 건 눈에 보이지 않는단다."

잘 기억하려는지 어린왕자는 다시 따라서 말했죠.

"사막이 아름다운 것은 그 안 어딘가에 우물을 감추고 있기 때문이야…"

라고 어린왕자가 말했답니다.

Antoine-Marie-Roger de Saint-Exupe'ry (1900.6.29~?)의 "Le Petit Prince"중에서







C언어 및 기타 프로그래밍 관련 질문은 오픈 카톡으로

group talk - https://is.gd/yourc


1:1 talk - https://is.gd/aboutc


#Sinclair #씽클레어 #싱클레어 #씽클레어도씨 #씨언어 #씨프로그래밍  #C언어 #Cprogramming #C_Programming #C #Programming #Clanguage #C_Language

매거진의 이전글 C언어 프로그래밍이란?
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari