[解決済み] アカデミックなCSの世界では、「untyped」は「dynamically typed」の意味もあるのか?
質問
あるスライドデッキを読んでいたら、「JavaScriptは型付けされていない」と書いてありました。
の回答はすべて JavaScriptは非定型言語ですか? は、JavaScriptが ではない 型付けされない、静的、動的、強い、弱い型付けの様々な形式の例を提示しており、私はそれに慣れていて満足しているのですが、その方法はありませんでした。
そこで、JavaScriptの生みの親であるBrendan Eichに尋ねてみました。
学術的な型は "untyped" を使って "no static types" を意味する。彼らは値が型を持つことを理解できるほど賢い(当たり前か!)。
学術的なコンピューターサイエンスの人々は、"untyped" を"dynamically typed" の同義語として使っていますか(そしてこれは有効ですか)、それとも私が見逃している何か深いものがあるのでしょうか?私はBrendanと同じように文脈が重要であることに同意しますが、私が現在読んでいる本がこのトピックに対応していないため、説明の引用があれば助かります。
また、ウィキペディアにもこのような使い方は載っていません。もし私が間違っていた場合、その用語の使用や疑問のどちらかを台無しにしたくありません:-)
(一流のSmalltalkerがSmalltalkは"untyped"と言っているのも見たことがあるので、この探求を始めたのは一回限りではないのです) :-))
解決するには?
そう、これは学術的な文献では標準的なやり方なんだ。これを理解するには、quot;type"の概念が1930年代にラムダ計算の文脈で(実際はもっと前に集合論の文脈で)発明されたことを知るのに役立ちます。それ以来、計算論理学の一分野として、型理論(quot;type theory")と呼ばれるものが生まれました。プログラミング言語の理論も、これらの基礎の上に成り立っている。そして、これらすべての数学的文脈において、quot;type"は特定の、確立された意味を持っているのである。
動的型付け(dynamic typing)という用語は、ずっと後になって考案されたもので、数学的に一般的な型という言葉の使い方とは矛盾しています。
例えば、Benjamin Pierceが彼の標準的な教科書で使っている「quot;型システム」の定義は次のとおりである。 型とプログラミング言語 :
型システムとは、型がないことを証明するための扱いやすい構文的手法である。 によってフレーズを分類することによって、特定のプログラム動作の を計算する。
と発言している。
静的」という言葉は、時に明示的に付け加えられます。 例えば、「静的型付けされたプログラミング言語」と区別するために ここで考えているようなコンパイル時解析と Scheme などの言語で見られる動的または潜在的な型付け (Sussman とSteele, 1975; Kelsey, Clinger, and Rees, 1998; Dybvig, 1996)があります。 ここで、実行時の型タグは、異なる種類のものを区別するために使用されます。 ヒープ内の構造体 動的型付け "などの用語は、間違いなく というのは誤用で、おそらく「動的にチェックされる」と置き換えるべきでしょう。 しかし、この使い方は標準的なものである。
この点については、現場で働く人の多くが共感しているようです。
ただし、これは ではなく これはquot;untyped"とquot;dynamically typed"が同義語であることを意味します。むしろ、後者は前者の特定のケースに対する(技術的に誤解を招く)名前であるということです。
PS: ちなみに、私は型システムの学術的な研究者と、JavaScriptの非学術的な実装者の両方であるため、シスマと共存しなければなりません。)
関連
-
親子コンポーネント通信を解決する3つのVueスロット
-
[解決済み] TypeError: $.ajax(...) is not a function?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] Facebookがブラウザに統合されたDeveloper Toolsを無効にする方法を教えてください。
-
[解決済み] javascript:void(0)」とは何ですか?
-
[解決済み] 静的型付け言語と動的型付け言語の違いは何ですか?
-
[解決済み] jQuery.fnとは何ですか?
-
[解決済み】関数の前のエクスクラメーションマークは何をするのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
親子コンポーネント通信を解決する3つのVueスロット
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
vue for 登録ページ効果 vue for sms 認証コードログイン
-
vueはopenlayersを使用してスカイマップとガオードマップをロードする
-
vueにおけるv-forループオブジェクトのプロパティ
-
[解決済み】JavaScriptの配列でforEachが関数でない不具合
-
[解決済み】React Nativeアプリをターミナルから実行するとエラーが発生する(iOS)
-
[解決済み】(Google Map API) Geocodeは以下の理由で成功しませんでした。REQUEST_DENIED
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
[解決済み] 弱型付け言語に関する明らかな矛盾の解明を求めて