質問

その利点と限界のダイナミック型言語に比べて静的タイプですか?

参照: していただきましたの愛の動的言語 (かなり理屈っぽいスレッド...)

役に立ちましたか?

解決

の能力の通訳が推型タイプ変換する開発時間が早くもできる挑発行の失敗するだけでなく静的型付き言語で捕まえることができるコンパイルす。ものよりはる場合であっても常にtrue)がhotly議論し、地域のこれらの日かかわらず、長い時間)

真の問題から 静的タイピング可能な場合には、動的型の場合:末の冷戦プログラミング言語 によるErik Meijerのピーター-Draytonマイクロソフトリサーチ:

提唱者の静的タイピング論 の静的タイピング などの早期 プロミス(例:防止 追加の整数をboolean) より良い文書の形で タイプ署名などを取り入れ 数と引数の型の場合 解決の名前)は、機会 のためのコンパイラの最適化など交換仮想通話が直通 通話時は、正確なタイプの 受信機は静的), 増加ランタイムの効率化などない すべての値が必要となり、動的な タイプ)は、よりよいデザインの時間 開発経験(例えばを知ること タイプの受信機では、IDEで 現在のドロップダウンメニューのすべて 適用します。静的タイピング ほう思わせてくれる 最も楽観的な見通しを持ってい型のプログラムは間違った".この確かに音 印象的なので、かなり真空 ます。静的な型チェックをは コンパイル時に抽象化の 実行時の動作をプログラム があり、したがって、それは必ずしも部分的 音や不完全なものです。すること プログラムも用意してい ない物性を追跡による タイプチェッカーとなることができること プログラムがなければなりません 間違いなテンプレートをお使いください。の インパルスのための静的タイピング以 部分もに原因タイプ システムを複雑化した エキゾチックなどに見られるように概念 などの"ファントムタイプ"[11] "り、将来設計をより具体的に描くタイプ"[10].このような うマラソンボール チェーンに足を triumphantly叫びとほぼ でも行 後初のマイルなどがあります。

活動的型付き 言語と主張する静的タイピングが も硬い、柔らかい 動的言語として に最適なプロトタイピングシステム 変更または未知の要件 やると、他のシステム この変更unpredictably(データ アプリケーション統合).もちろん、 動的型付き言語 に不可欠な取り扱真 プログラム動的挙動など 方法の遮断、動的荷 モバイルコード実行時の反射など。の母親のすべての論文 スクリプティング[16]、ジョンOusterhout主張 その静的入力システム プログラミング言語コードの以下 再利用可能な、デフォルト値が設定されてあるかないかを問わない。安全 以下の表現より動的に 入力スクリプト言語。この 引数がparroted文字通りの多く 実施主体者の動的な型付き スクリプト言語。したがって、 この誤りに落下する 同じカテゴリーとしてと主張しているの 本宣言的プログラミング 排除します。としてジョン ヒューズは[8]では、論理的 不可能性を語り 力を省略特徴です。を守ることを遅らせるすべて タイプチェックを実行で ものがダチョウと戦術 この誤差は引っ掛けたり、強く引っ張った としての開発プロセスとして 可能です。

他のヒント

静的タイプシステムを解消の一部に誤りがあり静的検査のプログラムなしで走行することを証明の健全性にある。何らかのシステムに追いつくことができますの誤ります。例えば、C#を排除することができnullをポインタが例外が適切に使用すると、Javaではない。Twelfはタイプシステムを実際に ることを保証証明終了, 力"の 停止問題.

しかし、タイプシステムとの相性もバッチリです。●を排除するために、特定のクラスの誤差をも拒否する完全に有効なプログラムに違反する。このTwelfんと解決の停止の問題で回避でを投入することにより、多数の完全に有効な証明るが終了数が奇数です。同様に、Javaの型システムを拒否Clojureの PersistentVector 実装により使用不均一配列.でランタイム時において、その型システムなる保証もするものではない。

そのため、タイプシステム"を提供するエスケープ"へのオーバーライドは、静的ます。ほとんどの言語のどれかの形式になります。鋳造、一部(C#、ウ)の全モードを実行しているときは、"安全でない".

主観的としない静的な文字を入力す正しく実装され(ヒント: ない Java、静的タイプシステムの大きな助ける誤差を排除する前にクラッシュの生産体制を確立しました。動的型付き言語が必要となることが多くりユニット試験、面倒な最ます。また、静的型付き言語である特徴であるいずれかで安全なダイナミックタイプシステム(暗黙的に変換 春えます。すべての要件および主観的な味わいです。いなりに次のEclipse Rubyのように表記する試みをバックアップスクリプトの組立やパッチカーネルを使用Java.

あの人においては"x タイピングは10倍以上の生産性 y タイピング"を吹き出させるだけです。動的入力が"感じる"スピードも早くなる場合があができなくなるという地だという催の応用 .同様に、静的タイピングのようなものにぴったりのセーフティーネットのものより複雑な汎用タイプの定義Java送開scurrying眼ユーザー.でもタイプシステム、生産性がない銀の弾です。●

【注意事項】気にしない性能を比較する場合は静的動的な文字を入力す現代JITsのようなV8とTraceMonkey来は危険なほど近い静的な言語です。また、このJava実際に収集落の本質的に動的な中間言葉をヒントとなるのは、ほとんどの場合、入力できないのではないで大きな実績-キラーと一部の人に出ることができなければ、このままです。

でも、両方とも非常に気に誤解され、また全く違います。 な相互排他的.

静種類を制限の文法の言語です。静的型langauges厳格にあった仕上がりはもちろん、お好きな文脈自由です。シンプルな植物ホルモンであることになり不便な表現言語sanely文脈自由文法な取り扱い、そのデータとしてとらえ、ビットベクトル.静的タイプシステムの一部の文法の言語の場合、彼らは単に制限で以上のコンテキストの自由文法、文法チェックが起こりうる二つの上を通過すると、ソースします。静種類に応じて数学的概念の型理論、理論の数学だけに制限の適法性も表現です。うどちらともいえない 3 + [4,7] に例を紹介しこの種の理論です。

静的な型はこのような方法'エラーを防止しながら理論的な限定の文法を学びます。実際、+、3、間隔をおいて通常のセットを理論的に定義した場合は削除し、タイプシステム 3 + [4,7]しかも定義された結果ことになる。'実行時の型間違いを理論的には存在しない、タイプシステムの実用化を防止する業務 人間 うです。作業はいまだにシフトや操作のビットのコースです。

チリをキャッチするタイプシステムができな決定がな業務が発生するのはいない場合でできるようになる。として、パターンを可能にする設定の全てのプログラムにされる方は是非ご参加くださいは必要なく、安全性に優れてい種類の誤り、なできるだけでは二つのことをやろうとしてい

1:ことを証明するタイプの誤差が発生するプログラム
2:であることを証明するかに発生するプログラム

このように思に反す。そCまたはJavaチェッカータイプなので拒否プログラムとしてungrammatical、でと同じものを見ることができない'タイプエラー'の場合 できない 成功する2.できないことを証明ではないが発生するというのはありませんが発生するのれんができないことを証明します。でもつことになるかもしれないとするプログラムを持たないタイプエラーで拒否されたものだからこそできないが明確に示したようにコンパイラです。簡単な例が if(1) a = 3; else a = "string";, 確実なので常にtrueになり、他の支店ませんで実行されるプログラムは、タイプエラーは発生します。ができないことを証明られる場合は一般的で拒否されます。この脆弱性を多くの静的型付き言語の保護に対する自分だけの限も保護される場合に必要なのです。

でも、逆に人気ともあり静的型付き言語が原則1.彼らは単に拒否するすべてのプログラムのかを証明できるものですおそれのあるタイプの誤り、すべてのプログラムができます。いきいきプログラムタイプ誤差としてとても良い例で入力されているラケットでハイブリッドの間に動的-静的文字を入力すというの両方の長所があります。

もう一つの利点の静的タイピングは種類が知られてコンパイル時に、このようにコンパイラを使用できます。まJavaい "string" + "string" または 3 + 3, 両 + トークンをテキストの終了を表す、全く異なる運用基準、コンパイラは知っている種類から選べます。

現在させていただくことになりましたも議論の余地はここにも負い 動タイピング'が存在しない.

音も問題がtrueの場合、動的型付き言語では、理論的観点から untyped.あるいは静的型付き言語でひとつだけのタイプです。又は簡単に言うと、言語も文法的に生成される文脈自由文法。

にしたらどうかと私は思いのか。これはあらゆる操作を定義し、毎operantうに"実行時の型エラー'ね!ですから理論的な例は、 サイド効果.を行う場合は print("string") れる印刷文字列を操作しなが length(3), 旧副書 string は標準出力に出力し、後者で error: function 'length' expects array as argument., そうです。があり、理論的観点からしなければならないと思うか、動的型付き言語です。その untyped

すべての権利は、明らかな利点'を動的に入力'の言語表現力、タイプシステムそのものであり、制限の表現力。一般的に言語とシステムの実際して定義された結果のためのすべての業務に使用できない場合にはシステムだけでは無視され、結果となるのは意味のあることでしょう。多くの言語がチューリングの完全適用後のタイプのシステム。

を明らかな不利な点は、この業務で起こりうる成果であるナンセンスです。防この動的型付き言語は通常、再定義事業のより製作がナンセンスされ、再定義では、副作用の書き込みエラーが停止のプログラムです。ではありません'エラー'のすべての言語仕様の通常の意味、これはどの行動の言語印刷文字列から理論的な視点です。タイプシステムこのプログラマを理由についてのコードを確認することはできません。または実際に、理由で 起こでも手軽にデバッグ、この'エラー'の全てが特定の物件です。有効な、単一の残りの動的タイピングがほとんどの言語が守に対する部門によるゼロになります。この動的な文字を打つことはありません種類がありません種類がゼロである異なるタイプ以外のすべてのその他。人通話"タイプ'は別のデータの長さの配列で、最初の文字の文字列になります。多くの動的型付き言語でもできるしくい "error: the first character of this string should be a 'z'".

もう一つは、動的型付き言語のタイプをご用意実行時には、通常確認できるまで決定するからです。もちろん、理論でよくアクセスの最初のcharの配列を見るのです。実際、自動的にC、使用タイプのような長い長intの最初の8ビットのいる店舗の"種類"の書き機能に従ってチェックインで行はfloatます。お持ちの静的型言語の一つのタイプ、または動的言語です。

で実践されて、静的型付き言語に用いられる一般的な文脈での商用ソフトウェアは動的型付き言語が使用される文脈の解決の問題と自動化の一部です。書コードを静的型付き言語では、長年のは面倒なのでできないものを知っているかに大丈夫なの型システムの保護に対する自分自身のための誤差だけます。多くのコーダーなもの"といったシステムでも、コードの静的言語のとおりに動作し、その型システムはさせないものだったんです間違っているのは、それができないことを証明で行くことはありませんが間違っている。

先にもお話しましたとおり、'静的入力にすることができる。場合は2,guiltyまで実績のある罪のない.一部の言語になるタイプシステムからのタイプ理論では全ての利用ルール1:無邪気なまでに実績のある罪にもつながる最適なりました。いつもキラケットすることをお勧めします。

させていただきます。たのが馬鹿馬鹿しく、極端な例では、私の現在の実装言語からは"型"本当に最初の文字配列の、データ、データの'タイプ','タイプ'ることが、タイプ、データの基準をしています。種類は有限で囲静的にも新しい発生する可能性のあるベランタイム情報です。

恐らく最大の"利益"の動的タイピングの浅い学習曲線.がないタイプシステムを学びない非自明な文法コーナーの場合にどのように。この動的タイピングアクセスを多くすることで、より多くの皆実現するための多くの人が誰のための洗練された静的タイプシステムにあります。その結果、動的型は、ひとつの文脈の教育などスキーム/PythonでのMITドメイン特化言語のための非プログラマーなど Mathematica).動的言語においても引っかけたり、ニッチにおいては競争力のない(例:ことになります。

最も簡潔に動的に入力言語(例えばPerl、APL、J、K、 Mathematica は特定のドメインとときをより簡潔に、最も簡潔に汎用の静的型言語(例えば のニッチいたします。

主なデメリットの動的タイピング:

  • 実行時のタイプ。

  • できる非常に難しいも事実上不可能の実現と同じレベルの正確さを必要と格段の差があります。

  • なコンパイラで認証された。

  • 貧しい性能(通常は実行時にもコンパイル時代わりに、例えばスターリンのスキーム)の予測性能による依存性が高度に最適化.

個人的には、できるようになった。動的言語にもなっていると思ったかもしれない40'ポールのプロとしての場合には他にはない能です。

からArtimaの タイピング:強い前弱い静前動的 記事:

強力タイピング防止混合操作と一致しない。るためにミックスの種類、必ず明示的な変換

弱いタイピングをすることになりますのでできるミックスの種類な明示的な変換

のパスカルコスタンツァの紙 動的な対静的タイピング—パターンに基づく分析 (PDF)が明後日が入試なのである場合、静的タイピングでエラーが発生しやすいよ動文字を入力す一部の静的型付き言語を強制したり手動でのエミタイピングのための"右にある。この議論で ラムダの極.

もよります。が多くの特典が適切なダイナミック型システムなどの強力な入力.私の意見に流動的な種類の言語が高速化されました。動的言語が拘束されていないクラス属性およびコンパイラに思うコードです。まあちょっと自由になるのです。また、動的言語、通常では表現、結果以下のコードである。ものでエラーがも重大な問題があり、よりユニット試験ります。で試作動langメンテナンスがなの悪夢です。

のゲインの上の静的入力システムはIDEの支援を確実に静的解析装置のコードです。きに対する安心感が定着しておりコード毎にコードで変化します。メンテナンスは平和のケーキなどのツールです。

多くのもの静的-動的ます。私にとって主な違いは動的言語の変数がない固定タイプその代わりに、種類と数値です。このことにより、正確なコードが実行される不確定までを行います。

初期は簡単な実装でこの性能をドラッグが現代JITs得tantalizinglyりのきの最適化を静的コンパイラでコンパイル.(フリンジの場合でもよいします。

すべての権利ツール。に関する情報は見つかりませんでより良い100%の時間を。両方のシステムを作ったのは、人間として欠陥が存在する。申し訳ございません、あなたの今の吸着をつくる。

私のように動的に入力で取得し出しもあり、実行時エラーでクリープがなかったプランです。場としての静的タイピングが修正上記の誤りが、運転初心者(入力言語プログラマーってキャストとの間に一定のchar、文字列になります。

静的タイピング: の言語のJavaなど、スカラ静的入力.

の変数を定義することおよび初期化される前に使用されています。

めます。int x;x=10;

システム。ます。println(x);

動的入力: Perlでは、動的型言語です。

変数が必要ないことに初期化される前に使用されています。

y=10;この変数にコード

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top