터보C정복 저장 임인건 wrote:
프로그래머 10계명

도스시절 한글라이브러리인 한라 프로를 만드신 임인건님께서 쓰신 글입니다.
프로그래밍을 공부하시는 분들께 큰 도움이 되리라 생각합니다.

시작부터 경지에 이르기까지…


1. 정보를 모음에 소홀히 하지 말고 설명서를 읽음에 게을리 하지 말지어

다. 오늘 필요 없는 정보는 내일 필요하리라. 가장 가치 있고도 저렴한

지식은 책 속에 있느니라. 서점과 동료의 책꽂이에 무엇이 꽂혀 있는지

때때로 살피어라. 무심코 흘렸던 종이 한 장이 너의 근심을 풀어 주었

으리라. 설명서는 충분히, 꼼꼼히 읽을지어다. 모든 의문은 설명서를

안 보는 데서 생기니라. 그렇더라도 모두 다 읽을 필요는 없느니라.


2. 너의 PC가 안전하다고 믿지 말지어다. 5분 후에 정전이 되고 내일 너의

하드가 맛이 가리라. 그러하니 너의 소중한 소스 코드는 정기적으로 여

러 군데에 단계별로 백업해 두어라.


3. 변하는 수를 다룰 때에는 늘 조심할지어다. 정수가 절대로 그 한계를

넘지 않으리라 가정하는 것은 어리석음이라. 127, -128, 255, 32767,

-32768, 65535, 이 숫자들을 너의 골수에 새기어라. 0.0은 0이 아니니

실수는 원래부터 결코 정밀하지 않느니라. 부호 없는 것과 있는 것을

어울리거나 정수끼리 나눌 때에는 늘 조심하여라.


4. 무슨 일을 반복시킬 때에는 처음과 끝에 유의할지어다. 너의 컴퓨터는

1보다는 0을 좋아 하니라. 배열의 첨자가 그 범위를 넘지 않을지 손 댈

때마다 따져 보아라. 수식에 1을 더하거나 뺄 때에는 늘 긴장하라. 너

의 프로그램은 단지 한 번 덜해서 틀리고 한 번 더해서 다운되느니라.


5. 항상 모든 경우의 수를 고려하고 섣불리 생략하지 말지어다. 절대로 일

어나지 않을 일은 반드시 일어나고, 가장 드물게 일어날 일이 가장 너

를괴롭히리라. 그러하니 언제나 논리에 구멍이 없는지 꼼꼼히 따져 보

고, if를 쓸 때에는 else부터 생각하라.


6. 함수 안에서 매개 변수값은 결코 믿지 말지어다. 지금 그 매개 변수가

결코 가질 수 없다는 값을 내일부터는 가지리라. 그러하니 매개 변수값

이 올바름을 항상 검사할지어다. 그렇더라도 처리 속도가 문제가 되는

경우는 예외이니라.


7. 오류를 알려 주는 기능은 있는 대로 모두 활용할지어다. 컴파일러의 경

고는 모두 켜 두어라. 경고는 곧 오류이니라. 오류를 알리는 함수의 결

과를 확인하지 않는 우를 범하지 말지어다. 모든 파일 입출력과 모든

메모리 할당은 조만간 실패할 것이라.


8. 한 번의 수정과 재컴파일만으로 연관된 모든 것이 저절로, 강제로 바뀌

도록 할지어다. 어떠한 것을 수정했을 때에 연관된 것이 따라서 변하지

않는다면 그것이 곧 벌레이니라. 컴파일러로 하여금 매개 변수 리스트

를 완전하게 검사하도록 하고, 언젠가 손대야 하거나 따라서 변해야 하

는 수치는 전부 매크로로 치환하며, 형 정의를 적극 활용하여라.


9. 사용자가 알아서 잘 써 주리라고 희망하지 말지어다. 너의 프로그램은

항상 바보와 미친놈만이 쓰느니라. 사용 설명서를 쓸 때에는 결코 빠뜨

리지 말아라. 빠뜨린 만큼 사용자는 너를 괴롭힐 것이니라.


10.매사에 겸손하고 항상 남을 생각할지어다. 가장 완벽한 프로그램일수록

가장 완벽하게 숨은 벌레가 있느니라. 네가 이 세상 최고의 프로그래머

라고 떠들며 자만할 때, 옆집 곳간에서는 훨씬 더 뛰어난 것을 묵묵히

만들고 있느니라. 아무렴 프로그래밍은 혼자 잘나서 할 게 아니니, 너

로 인해 다른 사람들도 더불어 잘 되면 그얼마나 좋은 것이냐.

이 모든 것을 깨닫고 지키려 애쓰는 자는, 있어도 없어도 되어도 아니

되어도 늘 평온하리라.있나니 너희는 모든 프로그램에 대해서 위의 프로시줘를 따를 지니라.

'Development > C' 카테고리의 다른 글

C언어 표준  (1) 2012.02.11
심볼 테이블 (Symbol Table)  (0) 2012.01.31
심볼 테이블  (0) 2011.07.31
C 언어 컴파일 과정  (0) 2011.02.20
toolchain 이란  (0) 2011.02.12
Posted by linuxism
,