C 언어 리뷰

프로그래밍/C 2006/04/28 13:40
C 언어 리뷰(1) 에필로그.

http://www.xevious7.com

꼭 읽어두어야 할 부분

이글은 C언어를 제가 복습을 하면서 나름대로 정리하는 글입니다.
복습을 수없이 해보았지만 가장 좋은 복습방법중에 하나는 잘 정리하면서
글을 쓰거나 또는 누군가에서 가르치는 방법이 꽤 좋은 방법이라고 생각합니다.
후배를 양성하는 의미와 좀더 연마하는 것 말입니다. 언젠가 또다시 대대적인
복습으로 인해 문서가 더 만들어질 수는 있겠지만 이 문서를 수정하는 방법을
취하려고 합니다. 따라서 C언어 리뷰라고 올라오는 이 문서들은 아마도 수시로
조금씩 여러부분이 갱신또는 삭제 또는 수정될 것 입니다.
(여러가지 개념이나 기타 문서를 좀더 편안하고 재미있게 읽게 하기 위해서
여러 삽화나 도안 또는 개념도를 추가적으로 직접 그려넣으려 생각합니다.)

이 글은 C언어를 처음 공부하는 사람에게도 어느 정도 괜챦은 글이 되리라
생각합니다. 그리고 C언어를 복습하려는 사람에게도 물론 좋은 글이 되리라고
생각합니다.

들어가는 잡담

C는 제가 제일 많이 사용했던 언어입니다.  현재는 C++를  사용해서
프로그래밍을 하고있지만  사실상 C++은  문법적으로는 C를 포함하고
있습니다. 즉 C에서는 없는 부분이 C++에서 있지만 C의 모든 부분은
C++에서 사용가능합니다.

C의 대부분의 문법을 C++ 에서 사용하기 C와 다른 C++의 내용을 배우면
코드를 읽고 쓰는데는 큰 불편은 없습니다.

하지만
C는 절차적 프로그래밍과 모듈 프로그래밍을 지원하는 언어라면
C++는 C와 비슷한 문법구조를 가지고 있지만 객체와 일반화 프로그래밍을
지원하기 위한 추가적인 언어적인 지원이 있기 때문에 프로그래밍의 방법은
매우 다르다고 생각하셔야 합니다
.

그리고 무엇이 옳은 가에 대해서 또는 어떤 언어가 우월한가 하는 부분에
대한 논쟁은 끊임없이 이루어지고 있으면 저는 그러한 논란이 정말 무의미
하다고 생각합니다. 여러분도 그런 논쟁에 휘말리지 않는게 좋을 것입니다.

(이 부분에 대한 참 명쾌한 글중에 하나는 조엘온소프트웨어의 12장
다섯 가지 세계라는 글입니다. 이 글에서 조엘 스폴스키 씨는
운영체제,플랫폼,프로그래밍 언어 , 개발 환경 등을 주제로 , 상대방
입장을 고려하지 않고 벌이는 거친 논쟁이 모두 부질 없다는 것을

쉽게 설명해놓았습니다.)

하지만 프로그래밍을 위한 커뮤니티를 조금만 돌아보아도 아직도
유닉스냐 원도우즈냐 C냐 C++이냐 어떤것이 우월한지 등등으로 논쟁을
하고 있는 게시판이 수두룩 합니다. 이제는 그런 쓰레드는 들어가지도
않습니다.

이 글을 읽는 여러분은 분명 프로그래머 이거나 프로그래머가 되려는 사람일 것입니다.
공식적이든 비공식적이든 말입니다. 적어도 이글을 읽은 여러분이라도 자기가 아는 것만을
내세워 거친 논쟁을 하는 사람이 되지 않길 바라겠습니다.


사실 어떤 컴퓨터 언어를 배우는 것은 문법(syntax)만 배운다고 하면
처음인 경우는 1주일 컴퓨터 언어에 익숙해져 있는 경우는 하루 이틀이면
충분합니다.  

우리가 언어를 알고 있다고 해서 모두다 글을 잘 쓰는 것이 아니듯이
컴퓨터 언어 문법을 알고 있다고 해서 컴퓨터 프로그램이 뚝딱하고
나오지는 않습니다.

프로그래밍 작업을 이해하기 쉽게  여러가지로 비교할 수 있지만 가장 흔하게
비교되는 것은 글쓰기입니다.
( 보통 수십 수백명의 프로그래머가 공동작업하는 대규모 S/W 프로젝트의
소프트웨어를 만드는 작업은 건설/건축과 비교합니다. 보통 혼자 하는
프로그래밍은 글쓰기에 비교됩니다.)

만약 해적이나 그와 관련된 소설을 쓰려고 한다면 해적에 대한 여러가지
정보와 상상력같은 재료가 필요하듯이 어떤 프로그램을 작성하는 것도
그와 같은 추가의 노력이 필요합니다.


앞서 말했듯이 제가 제일 많이 사용했던 언어는 C언어였고 또한 제가 프로그래밍을
공부하면서 가장 많이 사용했던 언어역시  C언어였습니다.
16년 전에 제가 C언어 프로그래밍 공부를 열심히 하였던 당시에
주로 사용했던 컴파일러는 볼랜드사의 Turbo C 였습니다.
1.0 버젼부터 사용했지만 2.0 버젼 이야 말로  그 시대 C 컴파일러의 대명사라고
할 수 있습니다. 하드 디스크가 없는 XT 컴퓨터에선 5.25인치를 A,B 디스크
드라이브에 넣고 Pass1 와 Pass2 를 넘어갈떄 디스켓을 갈아주어야 했던
시절이었습니다. 물론 시간이 몇개월 흐르자 하드디스크 있는 PC덕분에
이러한 불편은 사라졌지만 조금 긴 프로그램 코드를 컴파일 하려면 꽤 많은
시간을 기다려야 했던 시절이었습니다. 지금 컴파일러에서는 컴파일 되는
라인수를 볼 수 없지만 그 당시 느린 컴퓨터에서는 컴파일 되는 라인수를
직접 눈으로 볼 수 있었습니다.

Turbo C는 이후 C++을 지원하는 TCC로 바뀌었고  그것이 다시 회사이름을
딴 BCC로 바뀌었습니다. 반대로 경쟁자 였던 MSC는 원도우로 넘어가면서
VC로 바뀌었고 볼랜드사는 윈도우즈용으로 파스칼을 지원하는 델파이를
만들어냈습니다. 그리고 그 이후에 C++빌더를 만들어 내었지만 이미 PC시장에서
C와 C++컴파일러의 대세는 VC로 넘어가버린 상태였습니다.

아 그리고 BCC 와 VC 그리고 도스에서 윈도로 넘어가는 시절 강력한 컴파일러였던
Watcom C 라는 컴파일러가 무섭게 인기를 끌었습니다.

C언어 책은 여러권 보았지만 책을 사서 두고두고 때가 꼬질 꼬질 묻을정도로
많이 보았던 책은 데니스 리치의 C언어 프로그래밍 과 허버트씨의
C Complete Reference 라는 두권의 원서였습니다.

특히 C Complete Reference 책은 저의 코딩스타일에 많은 영향을
주었습니다. 예를 들면 무한 while 문의 사용 같은 것입니다.

while(1) {

  ... 내용 ...
}

또 브레이스( { } ) 를 사용하는 방법에 있어서 위처럼 사용하는 스타일도
이책의 소스 영향이 있었다는 것을 최근에 깨달았습니다.
이 코딩스타일은 최근에

if (조건문)
{
  코드.
}

이런 형태로 바꾸었습니다. 위 형태가 훨씬 보기가 좋아서 과감히
바꾸었습니다. 맨날

if(조건문) {
  코드.
}

이런 형태로 코딩했었는데 말입니다.


어찌되었든 ~
모처럼 다시 C언어 복습을 하려고 합니다. 예전에 본 똑같은 내용이지만
그 동안 보지 못했던 새로운 면이 있을 것 같습니다.

From Xevious7. 복습은 최고의 학습.  더 높이 나는 새가 더 멀리 본다.
top

Trackback Address :: http://xevious7.com/trackback/39

  1. 작은나무 2006/09/17 15:38 MODIFY/DELETE REPLY

    c언어를 배우고 있는 학생인데 첫번째 글을 보니 많이 기대됩니다 ^^
    좋은글 부탁드립니다.

    • Xevious7 2006/09/19 00:15 MODIFY/DELETE

      감사합니다. ^^
      시간이 날때마다 쓰는 글들이라 업데이트가
      아주 더딥니다. 어쩌면 특정카티고리들은
      업데이트가 없을수도 있습니다.

  2. 지나가는 나그네.. 2006/10/14 10:37 MODIFY/DELETE REPLY

    언어를 다시 복습한다..
    언어는..언어일 뿐 입니다. 중요한건 설계입니다.
    언어는.. 필요할때 찾아서 쓰는.. 일종에 도구에 불구합니다.
    C언어에서 필요한 기본적인.. 개념들만.. 익히면 좋을 듯합니다.

    • xevious7 2006/10/14 18:51 MODIFY/DELETE

      저 역시 설계가 중요하다고 생각하는 사람입니다.
      블로그의 포스트에서도 많이 언급되었습니다.

      언어를 복습한다고 해서 설계가 안 중요해지는것이
      아니지 않습니까?
      설계의 중요성과 언어의 복습과는 무관한듯 합니다.
      필요할때 쓰는 것이 언어이기 때문에
      언어는 복습할 필요가 없다 라고 생각하는 것도
      하나의 방법입니다.
      시간이 날때 잊어버리지 않도록 복습하고
      필요할때 바로 쓰는 방법도 하나의 방법이지요.
      언어를 복습을 한다고 해서 설계가 중요하다 안중요하다가
      결정되는것은 아니기 때문입니다.

      어떤것을 만들것인가가 중요한 것하고
      도구를 잘 쓸수 있도록 수련하는 하고는
      또는 필요할때 꺼내 쓰던지
      별개의 문제입니다.

Write a comment