기타/컴퓨터공학

초보자들과 프로그래밍을 가르치는 분들께 드리는 말씀

바로이순간 2020. 2. 10. 06:32

초보시절에는 함수를 만드는 것을 신경쓰지 않고 그냥 메인함수 안에서 프로그램을 

작성하는 것이 무난하다고 생각합니다. 물론 함수를 짜서 프로그래밍을 하는 것이 

잘못된 것은 아닙니다. 하지만 처음에는 그냥 간단한 환경에서 머리만 많이 써서 

제어를 익히는 것을 먼저 하는 편이 낫다고 봅니다.


여기 초보를 면할때 까지 나오는 거의 모든 문제들이 함수를 전혀 만들지 않고 

그냥 메인에서 프로그램을 작성하는 것으로 가정하고 낸 문제들입니다. 이들 문제를 

다풀때가 되면 함수를 정의하고 만들어서 함수를 이용해서 문제를 푸는 것을 쉽게 

할수 있다고 봅니다.


제가 여기서 초보자들에게 권하고 있는 공부방법은 보통 다른 곳에서 배우는 사람들

한데는 상당히 이상하게 보일수 있다는 것을 압니다. 다른 C언어나 C++언어를 

중심으로 프로그래밍을 가르치는 선생님들과는 달리 저는 진도를 많이 나가는 것이 

배우는 사람에게 방해가 된다는 생각을 하고 있습니다.


꼭 필요한 만큼만 알아서 제어를 구사하는 훈련을 먼저 하고 프로그래밍의 기초를 

다져 나가는 것이 필요하다고 생각합니다. 이때 까지는 아주 기본적인 것들만 

알고 구사하는 편이 낫다고 봅니다. for문, printf문, scanf문만 가지고도 

한참 나갈 수있습니다. 심지어 if문 조차 한참 뒤에 소개를 합니다.


for문을 이용해서 여러가지 프로그램을 작성하는 훈련이 된후에 2차원 배열을 

사용하여 지금까지 사용했던 for문과 if문 2차원 배열을 써서 하는 제법 어려운 

프로그램들을 시작하게 됩니다. 여기 까지도 함수가 있어야할 필요성은 거의 느끼지 

못합니다. 


꽈배기[골뱅이]나 홀수 마방진 같은 꽤 어려운 문제를 풀고난 분들께 본격적으로 

초보를 뛰어넘는데 필요한 개미수열 문제를 드립니다. 


이 문제는 일차원 배열을 이용한 문제이기는 하지만 상당한 정도의 난이도를 

가진 문제로 이문제를 잘풀수 있는 사람들은 앞으로 중급, 고급 프로그래머가 될수 

있는 가능성이 있습니다.


그 이후에 파일입출력을 시작합니다. 개미수열을 풀때 비로소 while문을 소개합니다. 

파일입출력이 되면 본격적으로 while문을 사용합니다. 물론 복잡한 개념들이 많이 

나옵니다. 성공적으로 파일입출력을 마치고 나면 비로소 함수의 개념과 함수를 만드는 법, 

함수를 만들어서 프로그램을 짜는 법을 알려드립니다.


물론 이렇게 순서를 밟아가는 것이 꼭필요하다는 것은 아닙니다. 


이렇게 배워나가는 것이 자연스럽다고 저는 생각하고 있습니다. 기본적인 프로그래밍 

실력이 생기고 나서 어려운 개념들을 접하고 소화해야 한다고 믿습니다. 구조체나 

포인터에 대한 소개는 이와같이 초보과정을 끝내고 나서 하는 것이 좋습니다.


이 때쯤 정렬프로그램도 시작하는 것이 좋다고 생각합니다. 보통 학교에서는 아주 

초보시절에 정렬 프로그램을 숙제로 준다거나 하는 일들이 많습니다. 이것은 배우는 

사람의 능력을 고려하지 않은 것이라고 생각합니다.


개학을 하고 나면 학교에서 내어준 과제를 하기 위해서 많은 사람들이 여기저기 카페나 

프로그래밍 숙제를 도와 주는 사이트로 달려갑니다. 이런 일들이 일어나고 있는데는 

일차적으로 프로그래밍을 지도하는 교수님들이나 강사님들에게 문제가 있다고 생각합니다.


아직 아무런 준비가 되어있지 않은 학생들에게 한학기를 마치고나서야 풀수 있는 

과제를 내어 준다든지 하는 것은 매우 무책임한 행동이라고 생각합니다. 물론 

수업을 듣는 학생들중에는 수업에 들어오기전에 미리 프로그래밍 능력을 가지고 

수업을 듣는 학생들도 있습니다.


만약 모두가 프로그래밍을 할줄아는 학생들이라면 무엇때문에 프로그래밍 수업을 

합니까? 할필요가 없지 않겠습니까? 


또 수업시간에는 프로그래밍에 관해서 학생들에게 무엇을 할수 있는 방법을 

알려줍니까? 아니라고 생각합니다. 저자신도 학생들에게 줄수 있는 것은 없다는 

것을 알고 있습니다.


그런데다 소화도 되지않는 어려운 개념들을 마구마구 쏟아 붓습니다. 

학생들은 정신적으로 타격을 받습니다. 프로그램도 못짜겠고 무슨말을 하는지도 

모르겠고 그냥 포기하라는 강요를 받는 기분이 들수도 있다고 생각합니다.


이렇게 길게 이야기를 늘어 놓는 것은 왜 프로그래머의 길 카페가 생겼는가 하는 

이유를 설명하는 것도 되겠습니다 마는 공부하는 방법에 대해서 알려드리고 싶다는 

생각이 들었기 때문입니다. 또 C언어를 가르치시는 분들,  C++언어를 가르치시는 

분들께 하고 싶은 말을 여기서 한다고 볼수도 있습니다.


이만 줄여야 할것 같습니다. 다음기회에 다시 기회가 되면 이야기 하도록 하겠습니다. 

[2003/03/15]