모든 개발자들에게 프로그래밍의 감을 잡아가는 왕초보 시절의 기억은 완전히 개인적일 것이기
때문에, 제가 하는 말이 다른 분들과는 다르거나 아예 정반대일 수도 있겠습니다만...
많이 답답해보이셔서 생각나는대로 써보지요.
보통, 님과 같은 단계에 계신 분들에게, 그 수준을 벗어난 분들은 일단 코딩을 많이 해보고 남의
소스를 많이 들여다보라는 말만 많이 하는 것 같습니다. 하지만 코딩을 많이 경험해보는 것이
필수이긴 하지만, 그것이 핵심은 아닐 겁니다.
제 생각에는.. 프로그래밍은 기본적으로 번역 혹은 통역이라고 생각합니다.
처음 프로그래밍을 시작할 때 누군가로부터 그와 비슷한 표현을 들었었는데.. 실제로 프로그래밍을
익혀가는 중에는 그런 말이 체감이 안되었었죠. 근데 지금 다시 생각해보면.. 역시 번역 혹은 통역
이라는 표현이 정말 딱일 것 같습니다.
전 지금과 같은 OOP나 컴퍼넌트 기반 프로그래밍의 시대가 아니고.. C로 구조적 프로그래밍을 하던
시절도 아니고.. 포트란으로 말 그대로 절차적 프로그래밍을 시작해서.. (goto가 코딩의 필수였던
시절...) 프로그래밍을 시작할 때 프로그래밍의 생각하는 방식이 많이 달랐었습니다.
(저보다 더 이른 시기에 어셈블리로 시작한 분들도 많겠습니다만.)
하지만, 지금 돌아보면 프로그래밍의 기본적인 생각 방식이 OOP이건 컴퍼넌트 기반이건 구조적이건
구조적이건 절차적이건, 기본은 똑같았습니다. 내가 하고 싶은 일을 컴퓨터에게 이해를 시켜야 했다는
거였지요. 먼저 컴파일러가 각 라인을 이해하는 방식이랄까.. 느낌같은 것을 이해하려고 노력했습니다.
내가 어떤 방식으로 말을 해줘야 얘가 알아들을 것인가... 하는 거죠. 내가 답답해한다고 컴퓨터가
스스로 아량을 베풀어서 내 미숙한 표현을 받아들여주지 않으니까요. 컴퓨터가 원하는 방식을 알고
그 방식대로 명령을 해야 한다는 것이 중요합니다.
이런 사실을 항상 머리에 콱! 박아두고... 그 다음은 역시 코딩 연습과 남의 소스 훔쳐보기입니다.
프로그래밍은 우리 일상의 다른 공부와는 사뭇 달라서, 프로그래밍의 개념들은 일상의 다른 개념들과
매칭이 될 수는 있지만 근본은 완전히 다른 별개의 세계죠. 일상의 세계에 대한 지식들은 그 방식이
어차피 사람과 사람 사이의 방식이기 때문에 마구 익히다보면 이해가 되는 수가 많습니다.
하지만 프로그래밍의 세계에서, 컴퓨터 세계의 개념들은 사람과 사람 사이의 개념과는 너무나 다른
순수하게 인공적인 개념들이라서, 그냥 무작정 연습을 한다고 그 방식이 익혀지지는 않습니다.
열심히 연습을 해보시되, 연습의 목표를 분명하게 가져야 합니다.
내가 얘를 이해시켜야 한다는 거죠. 컴퓨터는 절대로, 조금도 사람을 이해시키려고 노력하지 않습니다.
프로그래밍을 공부하는 첫 단계에서, 코딩 연습의 첫번째 목적은 컴퓨터를 이해시키는 것이란 것을
명심하세요. 그리고 그러기 위해서 컴퓨터를 이해하려고 노력해야 하는 겁니다.
대충 적어보고 "이넘이 왜 말을 못알아들어!" 하고 짜증을 내는 것은.. 사람에게는 통하지만
컴퓨터에게는 절대로 통하지 않는답니다. 프로그래밍에 있어서, 컴퓨터가 못알아듣고 있다면
그 책임은 100% 사람의 책임이라는 관점에서 컴퓨터를 이해하려고 노력해야 합니다.
너무 당연하고 기초적인 것 같지만... 제 주위에서 수없이 프로그래밍에 도전했다가 직업으로까지
가지 못하고 포기했던 분들을 지켜보면서 느낀 실패의 원인이 대부분 이런 것이었다고 생각하고
있답니다. 함수나 클래스를 익히고, 새로운 코딩법을 익히고 하는 것은 두번째 문제일 겁니다.
님에게 있어서 프로그래밍을 배우는 데 어려움을 느끼는 "병목"이 이것이 아닐 지도 모른다는 생각도
드네요. ^^ 그런 시절은 프로그래밍을 공부하는 사람이라면 누구나 겪는 시기이지만, 말씀드렸다시피,
모든 사람들에게 각자의 개인적인 경험이고 어려움을 느꼈던 이유가 제각기 다 다를 겁니다.
주위에 님보다는 조금정도 잘 해나가고 있는 분이 있다면, 그분과 님이 프로그래밍을 대하는 생각의
방식이 어떻게 다른가도 생각해보세요.
누구에게라도 가장 힘든 시기랍니다. 가장 힘든 이유가, 지극히 개인적이기 때문에 다른 누구도
도와줄 수가 없기 때문입니다. 그런만큼 문제의 원인을 스스로 찾으셔야 해결책이 나올 겁니다.
장황한 말이었지만... 님께 조금의 참고라도 되었으면 좋겠습니다.
님의 실력이 날로 달로 발전하여 언젠가 이름을 드날리시길 바랍니다. ^^
그럼...
빛의화살 님이 쓰신 글 :
: 안녕하세요.....
:
: 이제 겨우 C++을 시작하는 사람 입니다.
:
: 한 세권정도 C++ 책을 봤는데요....
:
: 이제 대충의 이론이나 '이렇게 이렇게 짜면 되겠다....'
:
: 또는 '여기서는 이런걸 쓰면 되겠군...'
:
: 정도의 생각은 드는데요....
:
: 막상 짜려고 하니 막막해지는 경향이 있어서요.....
:
: 아직 많이 부족한걸 알지만......
:
: 조금 도움 말씀 해주시면 감사하겠습니다.
|