動的型付け
動的型付けのルーツはLISPにさかのぼる。LISPは、同時期のFORTRANやCOBOLとは一線を画した、計算モデル(ラムダ計算)を裏付けに持つ言語であった。しかし型付きラムダ計算ではなく、実行前に型チェックが行われることもなく、型エラーはその式が評価(実行)されるまでわからないという欠点、すなわち動的型付き言語特有の欠点を持つ初期の言語である。その後、LOGOを経て、動的な型という概念を明確にしたのがSmalltalkである。そして、このような性質の言語を動的型付き言語(どうてきかたつきげんご、英: dynamically-typed languages)という。
オブジェクト指向にもとづく Smalltalk では、すべての処理対象は何らかのクラスに属すため、型という概念そのものは存在する。しかし Smalltalk では、
すべてのクラスはルートクラスである Object に由来するので、最低限 Object としての振る舞いが保証される。
たとえ同一の機能名を持っていても、実際に起こる結果はクラスによって異なるかもしれない。
クラス(型)自体も一種のオブジェクトであり、必要ならクラスに関するメタプログラミングが行える。
などの特徴を持ち、型よりもむしろ「特定の名称のメソッドを受け付けるべき」「メソッドはその名前に見合った動作を行うべき」というプロトコル的な立場による疎結合の信頼性を重視している。