プログラムは処理を機械の手続きにあわせて実装するものでした。でも、そうすると人間が制御可能な複雑さを超えてしまいます。制御不能になるということは、つまりバグが入るということです。そこで、機械には少しがんばってもらって、その分人間が理解可能なレベルまで複雑さを落とすためのテクニックが生まれてきました。
そのステップを追ってみます(厳密には概念の誕生ははるかに古いものなどもあります。実際に用いられるようになってきた歴史をプログラム改善の流れと結びつけて並び替えてあります)。
手続きの抽象化。
抽象化が進んだとき、引数の多段受け渡しが発生する。