소프트웨어를 설명할 댸 음식을 만드는 레시피에 자주 비유하곤 한다.
요리에 필요한 재료, 수행해야 하는 작업 순서, 예상되는 결과를 열거한다.
프로그램도 필요한 데이터를 명시하고, 데이터에 대해 수행할 작업을 자세히 설명한다.
하지만 레시피는 소프트웨어를 완전히 담아내지는 못해서 납세신고서에도 비유한다
@@행에서 @@을 빼세요 등등 계산적 측면을 레시피보다 잘 담아낸다. 또한 처리 절차가 완전해야 하고 어떤 상황에서라도 결과, 즉 납부할 세액을 항상 산출해내야한다. 누구든 똑같은 초기데이터로 최종 결과에 도달해야한다.
알고리즘은 세심하고 정확하고 명료하게 작성된 납세신고서의 컴퓨터과학 버전이라고 할 수 있는데,결과를 정확하게 꼐산하도록 보장된 일련의 단계다.알고리즘을 구성하는 구성요소의 의미에 한치의 모호함도 있어선 안 된다. 입력 데이터가 어떤 유형이어야 하는지도 제공해야하고 모든 가능한 상황을 다루어야 하며 중요한 조건하나가 있는데 '알고리즘은 결국 멈춰야한다' 라는것이다.