더북(TheBook)

여기서 프로그램이 얼마나 쉽게 잘못될 수 있는지 볼 수 있다. 흐름도에서 데이터를 하나 변경하거나 화살표의 시작이나 끝 지점을 바꾸면 버그가 많은 프로그램이 된다. 운이 좋다면 아예 실행되지 않는 프로그램이나 계속 실행되면서 절대 멈추지 않는 프로그램을 얻을 수 있다. 이런 경우가 운이 좋은 이유는 프로그램을 실행하자마자 바로 문제를 발견할 수 있기 때문이다. 그림 1-2는 그런 문제 몇 가지를 보여준다.

▲ 그림 1-2 같은 프로그램에서 비롯된 버그가 있는 세 가지 프로그램

첫 번째 예제는 틀린 결과를 만들어내고, 두 번째와 세 번째는 절대 끝나지 않는다. 하지만 여러분이 사용하는 프로그래밍 언어가 이 예제 중 일부 프로그램을 아예 작성하지 못하게 막을 수 있다는 점을 알아 두라. 참조를 변경할 수 없는 언어나 루프를 허용하지 않는 언어 또는 무조건 분기를 허용하지 않는 언어라면 이 세 가지 프로그램 중 그 어느 것도 작성할 수 없다. 따라서 단지 그런 언어를 사용하기만 하면 이런 문제가 해결된다고 생각할 수도 있다. 그리고 실제로도 그렇기는 하다. 하지만 그렇게 제약을 가하는 언어는 제공하는 기능의 범위가 너무 좁기 때문에 전문적인 프로그래밍 환경에서 사용하기에는 적합하지 않다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.