소프트웨어란 현실세계(real world)에서 수행되는 작업이나 행위가 컴퓨터세계(computer world)에서 수행될 수 있도록 해 주는 수단이다. 즉. 소프트웨어란 현실세계를 모델링한 결과이다.
1에서 1000 까지의 합계를 계산하는 문제를 생각해 보자.
종이와 연필만 가지고 이 문제를 해결한다고 하면 1+2+3+4+.........와 같이 순차적으로 숫자를 더해나가는 방법을 사용할 것이다.
컴퓨터로 하여금 이 문제를 해결하도록 하려면 어떻게 해야 할까?. 컴퓨터도 사람이 문제를 푸는 것과 동일한 절차를 거쳐서 풀어야 할 것이다. 그렇게 하기 위해서는 컴퓨터에게 문제를 해결하는 절차를 알려주어야 한다. 컴퓨터가 알 수 있도록 문제를 해결하는 방법을 알려 주는 수단이 '프로그램'이다. 따라서 컴퓨터가 문제를 풀기 이전에 문제를 해결하는 절차를 수립해야 하는데 이러한 절차를 보통 '알고리즘'이라고 한다.
전산학에서 유명한 명제 중에 '사람이 종이와 연필로 해결할 수 없는 문제는 컴퓨터도 해결할 수 없다'라는 명제가 있다. 이 말을 풀어서 설명하면 인간이 문제해결 절차를 모델링할 수 없다면, 즉 알고리즘을 만들 수 없다면 컴퓨터세계에서도 문제를 해결할 수 없다는 것이다.
<현실세계>-------<개념적 모델>--------<소프트웨어>
start main( ) {
i = 0 int i = 0 sum = 0 ;
sum = 0 while (i<1000) {
i<1000 .... no i ++ ;
i = i + 1 ..... yes sum + = i ;
sum = sum + i
}
print sum
print(sum) ;
}
end
(문제 해결의 모델) (프로그램)