2

Smalltalk が「型なし」ではなく「動的型付き」と呼ばれることがある理由を理解しようとしています。

Smalltalk には、変数、パラメーター、およびメソッドの戻り値に対する型注釈はありません。では、オブジェクトの型 (オブジェクトの型がそのクラスであると言う場合) を何と比較しますか?

また、動的型付けは動的型チェックと同じではありませんか? つまり、Smalltalk が動的に型付けされた場合、内部的に Smalltalk は実行時に変数、パラメーター、メソッドの戻り値に型を与えるということでしょうか? そうですか?

4

4 に答える 4

4

1つの規則は、2つの次元に沿ってプログラミング言語を比較することです。

  • 動的型付けから静的型付けへの連続体
  • 強いタイピングから弱いタイピングまでの連続体

動的型付けは、多くの場合、型がコンパイル時にチェックされないことを意味しますが、静的型付け用です。

多くの場合、強い型付けとは、実行時の型が決して変更されない別個の型であることを意味しますが、弱い型付けとは、コンテキストに応じて基になる型を変更できることを意味します。

Smalltalkには強力な動的型付けがあると言われています。

于 2012-07-17T14:34:10.590 に答える
4

「動的に型付けされた」は、特定のプログラミング言語コミュニティで「動的にチェックされた」という意味で広く使用されています。同様に、より理論志向のサークルでは、技術的に誤解を招くと広くみなされています。なぜなら、チェックされているのは、言葉の正式な意味での型ではないからです。ただし、その使用法は最近ではあまりにも一般的であり、修正する可能性はありません。

もう少し背景については、逆の質問に対する私の回答も参照してください。

于 2012-07-17T10:48:13.827 に答える
3

静的/動的型および暗黙的/明示的型の完全な議論については、http: //blogs.perl.org/users/ovid/2010/08/what-to-know-before-debating-typeを確認してください。 -systems.html

于 2012-07-17T15:46:15.247 に答える
2

Smalltalk では、各オブジェクトにはそのタイプ (インスタンス (およびその方法) で実行できる操作を定義するクラス) があります。したがって、オブジェクトにメッセージを送信すると、そのクラスはそのメッセージを処理できるかどうか、およびその方法をチェックします。

一方、静的に型付けされた言語とは対照的に、変数はプログラムの存続期間にわたってさまざまな型のさまざまなオブジェクトを含むことができるため、変数 (または引数) ベースの型チェックはありません。

ダミアンによって提案された優れた記事が指摘しているように、静的型付け言語と動的型付け言語では型の概念がまったく異なります。直接比較しようとすると、この違いによって多くの混乱が生じる可能性があります。

于 2012-07-17T16:21:06.867 に答える