Page 11 -
P. 11

물론 선수 선서를 한다고 모든 부정행위를 막을 수 있는 것은 아니다. 하지만 믿음직한 대
                표자가 선서를 하면 그 선서를 쉽게 깰 수가 없어서 부정행위를 차마 하지 못하는 선수도
                있을 것이다. 즉, 부정행위를 완전히 없앨 수는 없지만 줄일 수는 있다. 이것이 선수 선서의
                효과다.

                사실 프로그램에서도 부정행위가 가능하다.

                예를 들어 화면에 직선을 그리는 프로그램에서 점을 하나씩 건너뛰고 표시한다면 처리 시간
                은 줄어들 것이다. 하지만 ‘이런 방식이 정당하지 않다’고 불평하는 사람도 있기 마련이다.

                점을 하나씩 건너뛰더라도 가까이에서 보지 않는다면 직선으로 보이므로 문제는 없다. 하
                지만 선으로 사각형을 그리고 그 안에 색을 칠하려고 하면 문제가 생긴다. 선이 연결되어
                있지 않아 사각형 여기저기에 빈틈이 생기고 만다.

                물론 변수 선언만으로 이런 부정행위를 피할 수 있는 것은 아니다. 하지만 변수 선언만으로

                도 부정을 방지할 수 있는 경우가 있다.
                예를 들어 정보를 기억하는 변수의 수를 반으로 줄여서 ‘메모리 사용량을 줄였다’고 주장할

                수 있다. 이때 필요한 정보를 잃지 않고 변수를 줄일 수 있다면 좋지만, 필요한 정보 중 일
                부를 포기하고 줄인 것이라면 부정행위다. 예를 들어 지리 좌푯값에는 세 가지 매개변수,
                즉 경도/위도/고도가 필요하지만, 고도를 사용하지 않을 때도 많다. 따라서 몰래 고도 정보
                를 버리면 처리 능력도 올라가고 메모리 사용량도 줄일 수 있을 것이다.

                이 문제는 경도/위도/고도라는 세 가지 매개변수를 반드시 선언하게 만들면 어느 정도 방지
                할 수 있다. 변수가 있는 이상 무조건 대입할 의무가 생기는 것이다(변수를 선언만 하고 사
                용하지 않으면 경고가 발생한다). 물론 경고를 무시하고 변수를 사용하지 않는 방법도 있지
                만, 경고를 무시할 수 없는 프로그래머는 해당 변수를 사용하도록 코드를 수정할 것이다.


                이외에도 한 가지 더 중요한 효과가 있다. 부정행위뿐만 아니라 실수도 방지할 수 있다.
                ‘어린이’는 근거 없는 자신감이 있어서 자신이 주의해서 코드를 작성하면 실수가 생기지 않

                는다고 생각한다. 반면, ‘어른’은 자신이 주의력이 부족해서 늘 실수를 저지른다고 생각하기
                쉽다. 하지만 이는 고정관념일 뿐 실제로는 ‘어린이’가 ‘어른’보다 실수를 더 많이 한다. 경험
                이 적다 보니 어디서 주의해야 할지를 잘 모르기 때문이다.

                즉, 누가 하든 실수를 0으로 줄일 수는 없으며 무언가 대책을 세워야 한다.




               018
   6   7   8   9   10   11   12   13   14   15   16