Smalltalk以前のコード開発方法というと、ボトムアップトップダウンなどというアプローチがありました。
ボトムアップ手法は、基礎となるものすごく低いレベルの手続きから積み上げていって一つのアプリケーションを完成させる方法です。言ってみればマッチ棒からお城を作るような手法です。下からつんでいくので一見テストが簡単ですが、全体が見えにくいのが欠点です。この方法を突き詰めたのがForth言語です。この方法は再利用性が言いといわれますが、実際には再利用できるのはせいぜい最下部の基本ルーチン群くらいです。
トップダウン手法は反対に全体像からかっちりと決めてだんだんと詳細な部分を組んでいく方法です。これは石から彫像を削りだしていくような方法と考えればいいでしょう。Pascalは文法そのものがこの方法を強制します。
ボトムアップ手法の欠点は、全体の流れを支配するアルゴリズムが毎回書き換えになる点です。作業の流れというものはプログラミングの中でも判じ物になりやすいところで、これが再利用できないのが最大の問題です。
一方トップダウン方式を採用しても、全体ががっちりと組み合わさってしまうため、プログラムの再利用という点ではあまり思わしくありません。Pascalには手続き変数という概念があり、アルゴリズムに詳細部分を渡すということも出来ますが、わかりにくいのであまり使われていません。
Smalltalkの画期的だった点は、手続きをデータ型にくくりつけてしまうことで、手続き同士の関係を切断してしまったことです。それまでの手続き指向言語では手続きの呼び出し関係が堅牢な木構造をなしていたのですが、Smalltalkでは手続き同士が呼び合うということはなくなってしまいました。Smalltalkの世界では主人公はオブジェクトと呼ばれるデータです。オブジェクト同士がメッセージを飛ばしあい、オブジェクトは受け取ったメッセージに応じて手続き(メソッド)を呼び出します。
それまでの言語では「どのような手続きを呼ぶか」「どのような手続きから呼ばれるか」を意識しながらプログラムを書いていましたが、Smalltalkの世界ではメッセージ・セレクタと呼ばれるインターフェースによって手続き(メソッド)と外部の世界が分断されています。必然的にプログラムはモジュール化されることになります。

/* -----codeの行番号----- */