티스토리 뷰

반응형

 필자는 92년부터 프로그램을 하기 시작하였고, 96년부터는 프로그래밍이 나의 밥줄이 되어 현재에 이르고 있다. 어셈블리어부터 Turbo C, Borland C, 각종 Firmware(하드웨어 프로그램을 말하며 다시는 하고 싶지 않다), SDK 프로그래밍(Boralnd C, Visual C), MFC(Visual C)프로그래밍 등 개발 툴을 바꾸면서 프로그램을 하였다. 근 9년동안 프로그램을 작성하면서 정말 시행착오도 많았고 어려움도 많았다. 이러는 동안 미약하나마 프로그램을 하는 여러분에게 노하우라고 하긴 그렇고 느낀 점들을 이야기하고자 한다.

 

1. 프로그래밍은 공부가 아니다.

  프로그램을 하는 많은 사람들이 중도 포기할 수 있는 가장 빠른 지름길이 공부처럼 프로그래밍 공부(약간 어패가 있나?)를 하는 것이다. 물론 처음 시작하는 사람들은 책을 한권 잡아서 처음부터 끝까지 보면서 사용법 및 개념을 익혀 가는 것도 필요하다. 그러나 이 경우 많은 사람들이 영어 공부하듯이, 수학 공부하듯이 열심히 앞 부분부터 외우기 시작한다. 이렇게 시작하는 90%이상의 사람들이 책의 3/1도 보지 못하고 중도 포기를 한다.

  대부분의 프로그램 책들은 Chapter 별로 하나의 주제로 몇가지 예제와 함께 설명되어 있다. 설명 부분은 대강 읽어 보고 예제를 실행(대부분 CD에 Source가 그대록 들어 있다)하여 그 결과를 보고 Source를 한번 대강 보고 넘어 가도록 하고, 한 Chapter당 1~2개의 예제는 실제 만들어 보아야 한다. 이렇게 책을 처음부터 끝까지 보았다고(1개월 훨씬 안걸려서 모두 볼수 있을 것이다) 프로그래밍을 잘할 수 있는 것은 아니다. 실제로 필자의 생각으로는 1년에 걸려 책한권을 외운 사람과 1주일 걸려 위와 같은 방법으로 책을 본 사람의 프로그래밍 실력은 거의 같고 초보를 조금 벗어난 상황으로 본다.

  책을 끝까지 보아도 좋고 보는 중간에도 좋고 작성하고 싶은 프로그램을 1개(필자는 C를 배우면서 테트리스를, SDK 프로그램을 배우면서는 파일 관리용 프로그램 Sfile을 선택했다)정한다. 그리고 그 프로그램을 작성해 나가면서 실제 프로그래밍을 배우게 된다.

 

2. 끝까지 프로그램을 완성한다.

  자신은 프로그래밍을 잘한다고 생각하는 사람들 중에서 'Serial 통신 프로그램도 만들어 보았고, LAN 통신 프로그램도 해보았고, FTP 프로그램도 해 보았고 기타등등 모든 기능을 다 구현해 보았으므로 나는 프로그램을 잘한다'라고 생각하는 경우가 많다. 특히 학생들 중에서.... 이런 사람과 프로그램을 같이 해보면 각 기능 구현에 대한 개념을 가지고 있는 것을 제외하고는 초보와 별 다를 바가 없다는 것을 알 수 있다. 실제 현업에서 사용되고 있는 프로그램은 각 기능들이 모여서 하나의 기능을 수행하는 하나의 제품이다. 필자의 경험에 의하면 일반 사용자들이 사용할 수 있는, 사용하기 편한 제품을 만들기 위해서, 끝까지 프로그램을 완성해 보지 않은 사람이 기능 구현을 완료하였다면 전체 1/3 정도 작업이 진척되었다고 보면 될 것 같다. 아무리 작은 프로그램이라도 나머지 2/3 작업을 수행하면서 정말 프로그래밍이 이거 구나 하고 한번이라도 느낀 사람은 어떠한 프로그램이라도 만들 수 있으리라 생각한다. 프로그램 완성에는 도움말 및 Setup 프로그램도 포함된다.

 

3. 다른 사람이 작성한 Source를 잘 사용해야 한다.

  필자가 프로그램을 시작할 당시에는 아니었으나 요즈음은 인터넷의 발전으로 만들어진 Source가 정말 많이 돌아 다니고 있다. 따라서 요즈음 프로그래밍은 남이 작성한 Source를 얼마나 빨리 찾아 효율적으로 조합하여 프로그램을 제작하느냐가 관건이 되고 있다. 즉 모든 기능을 자기가 다 지원하려고 노력하는 독불장군의 시대는 지났다는 것이다. 물론 인터넷에 돌아 다니는 Source 들이 완벽하게 원하는 기능에 맞지 않을 수도 있고 또한 버그가 있는 경우가 많다. 이 경우 제공하는 Source를 수정하는 능력도 길러야만 한다. 필자가 권하고 싶은 프로그램 방법은 인터넷 등에서 소스를 구하여 그 소스를 자신의 프로그램에 접목 시킨 후 내부 루틴 또한 어느 정도 파악하는 방식이다.

 

4. 프로그램은 구조가 가장 중요한다.

  이 말은 프로그램 서적 대부분에서 이야기할 만큼 중요하다. 그러나 말은 간단하나 초보자에게 있어서 정말 어려운 이야기이다. 가장 이상적인 프로그래밍 방식은 프로그램 전체 구조를 먼저 설계한 후 코딩에 들어가는 방식이나 처음부터 이렇게 하려고 한다면 지레 포기할 가능성이 크다. 따라서 다음과 같이 프로그램 구조를 잘 잡도록 하는 방식 두가지를 제시하고자 한다. 이 두가지 방식 또한 초보자가 생각하면서 프로그램 하기는 벅차다. 그러나 조금씩, 조금씩 더 생각하며 프로그램하기 바란다.

1). 기능 별로 파일을 만들고(.cpp 및 .h) 그 파일을 독립적으로 사용하도록 만든다.

모든 파일을 독립적으로 작성할 수는 없다. 그러나 예를 들어 하나의 기능을 지원하는 파일을 하나 만들고(1번 파일이라 칭함), 그 기능을 사용하면서 다른 기능을 지원하는 파일을 만들었다면(2 번 파일이라 칭함), 2번 파일 기능을 사용하기 위해서는 1번 파일도 같이 사용해야 하나(종속적), 1번 파일 기능을 사용하기 위해서 2번 파일을 사용할 필요가 없도록 구성해야 한다. 이것은 당연한 이야기이나 초보자가 프로그램하면 대부분 이 내용을 지키지 않는다. 이 내용만을 지키더라도 프로그램을 하면서 만든 파일들이 차츰 자신의 재산이 된다는 것을 느낄 것이다. 즉 이 파일들은 재사용이 가능해 진다.

 

2). 화면 모양 보다 메모리 구조를 먼저 생각한다.

  메모리 구조를 먼저 설계하고 플로우챠트 등으로 만들어서 프로그램하라는 것(이 방식이 가장 이상적인 방식이나 필자도 버릇이 안되어서...) 은 아니다. 단지 이 프로그램은 대강 메모리 구조를 이렇게 구성하면 되겠구나 하고 먼저 한번 생각하고 프로그램을 하라는 것이다. 필자의 예를 들어 본다면 필자는 도스 시대에 그래픽 편집기를 만든 적이 있다. 당연히 당시에는 화면상에 표시되는 데로 점찍는 루틴을 구현하고, 선그리기, 사각형 그리기 등 기능을 구현해 나갔다. 모든 기능 구현을 다하고 이제 파일로 저장하는 루틴을 제작하려고 할 때 대단히 높은 벽에 부딪혔다. 모든 기능 구현은 화면상에 그리는 것으로 완료했는데 그 내용을 파일로 저장할 방법이 없었던 것이다. 즉 메모리가 전혀 없이 화면상에 그렸기 때문에 문제가 생긴 것이다. 도저히 방법이 없어 지금까지 작성한 모든 소스를 버리고 새로 작성하기 시작한 적이 있다. 먼저 모든 기능을 화면이 아닌 메모리(Bitmap 메모리로 만듬)에 그리도록 하고 그 메모리 내용을 화면에 뿌리도록 말이다.

 

5. 직업 프로그래머가 되고자 한다면 프로그래밍을 좋아해야 한다.

  프로그래밍은 노가다다. 그것도 머리 쓰면서 밤까지 세워야 하는 노가다. 이 말은 프로그래머가 프로그래밍을 좋아하지 않을 경우 정확히 적용되는 말이다. 2일 밤을 세워 단지 1줄을 고쳐 기능을 완성했을 때 즐거워 할 수 있는 사람이 좋은 프로그램을 만들 수 있다고 생각한다. 그렇다고 처음 시작하는 사람이 이 느낌이 없다고 지레 포기하라는 말이 아니다. 필자는 프로그래머가 프로그래밍을 좋아하기를 바래서 하는 말이다. 자기가 좋아하는 일?, 잘은 모르겠지만 자기가 열심히 한일에 남들이 칭찬해 주고, 또 그 일을 가지고 남들을 도와줄 수 있으면 차츰 그 일은 자기가 좋아하는 일이 되지 않을까 싶다. 

 

출처 : http://rnd.vitzro.com/Language/VisualC/AboutProgramming.htm

반응형
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday