問題タブ [static-typing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - なぜ C# は静的に型付けされるのですか?
私は C# を学ぼうとしている PHP Web プログラマーです。
変数を作成するときに C# でデータ型を指定する必要がある理由を知りたいです。
クラスインスタンスの前にデータ型を知る必要があるのはなぜですか?
refactoring - 静的/強いタイピングとリファクタリング
静的/強く型付けされたプログラミング言語で最も貴重なことは、リファクタリングに役立つことだと思います。APIを変更すると、コンパイラはその変更が何を壊したかを教えてくれます。
ランタイム/弱い型の言語でコードを書くことは想像できますが、コンパイラの助けなしにリファクタリングを想像することはできません。また、リファクタリングなしで数万行のコードを書くことも想像できません。
これは本当ですか?
sql - sqlite のマニフェスト タイピングが役立つのはいつですか?
sqlite は、作成者が「マニフェスト タイピング」と呼ぶものを使用します。これは基本的に、sqlite が動的に型付けされることを意味します。必要に応じて、varchar 値を「int」列に格納できます。
これは興味深い設計上の決定ですが、sqlite を使用するときは常に、標準の RDMS のように使用し、型を静的であるかのように扱ってきました。実際、他のシステムでデータベースを設計するときに、動的に型指定された列を望んだことは一度もありません。
では、この機能はいつ役立つのでしょうか? 静的に型付けされた列と同じように簡単に実行できなかった実際の使用方法を見つけた人はいますか?
f# - F# と演算子のオーバーロード: (>) と (^)
では、なぜ F# で > 演算子と ^ 演算子をオーバーロードできるのに、使用できないのか説明してもらえますか?
F# コードをライブラリとしてコンパイルし、VB からそれらの演算子を使用すると、それらはすべて機能します。C# からこれらの演算子を使用すると、op_Concatenate 以外はすべて機能します (期待どおり)。しかし、F# はそれらのいくつかを無視するだけでなく、静的型チェッカーはその計画をユーザーに通知することさえしません。
コードサンプルを編集
c# - 型を変数に割り当て、汎用静的クラスで変数を使用する
私は、型を取る汎用静的クラスを使用して C# Web サービスで作業しています。なぜこれがコンパイルされないのか疑問に思っていました:
次のエラーが発生します。
型または名前空間名 'type1' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)
type1
そして、コードの 2 行目にカーソルを合わせると、ReSharper に「タイプまたは名前空間名が必要です」と表示されます。まあ、タイプですtype1
!型の変数ですType
! 私がそうしてもうまくいきません:
私は自分の型をいくつかの異なる変数に割り当て、毎回Type
入力するのではなく、それらをさまざまな汎用静的クラスのテストに使用することを望んでいました。MySnazzyType
任意のアイデア、または私はやることにこだわっています:
編集:明確にするために、ジェネリッククラスでMySnazzyType
はなく、ジェネリッククラスから継承しません。ここで唯一のジェネリック クラスはConnectionPool_Accessor
.
Pavel のコメント「本質的に、あなたの問題は C# が静的に型付けされた言語であるということです」のおかげで、私は Ruby が私を甘やかしてきたことを今知っています。;)
python - Python 3 と静的型付け
私は Python 3 の開発にあまり注意を払っていませんでしたが、興味深い新しい構文の変更に気付いただけでした。具体的には、この SO 回答関数パラメーターの注釈から:
これについて何も知らなかったので、Python で静的型付けを実装するために使用できるのではないかと思いました。
いくつかの検索の後、 PEP 3107で言及されているものや、「Adding Optional Static Typing to Python」 (およびパート 2 )など、Python での (完全にオプションの) 静的型付けに関して多くの議論があったようです。
..しかし、これがどこまで進んだかはわかりません。パラメータ注釈を使用した静的型付けの実装はありますか? パラメータ化された型のアイデアのいずれかが Python 3 に組み込まれましたか?
language-design - 動的タイピングが解釈された言語に関連付けられることが多いのはなぜですか?
簡単な質問: 私は C++/Java のようなコンパイル済み言語や Python/Javascript のようなインタープリター型言語で (専門的にも個人的にも) 多くのプログラミングを行っています。個人的には、静的に型付けされた言語でプログラミングすると、ほとんどの場合、コードがより堅牢になることがわかりました。ただし、私が遭遇するほとんどすべてのインタープリター言語は、動的型付け (PHP、Perl、Python など) を使用しています。コンパイルされた言語が (ほとんどの場合) 静的型付けを使用する理由はわかっていますが、解釈された言語設計で静的型付けを嫌う理由がわかりません。
急激な切断はなぜですか?それはインタープリター言語の性質の一部ですか?おっと?
programming-languages - 静的型付け言語と動的型付け言語の違いは何ですか?
新しいプログラミング言語は動的に型付けされるとよく耳にしますが、言語が動的に型付けされるのか静的に型付けされるのかというと、実際にはどういう意味ですか?
programming-languages - 静的型付けはマクロをどのように制限しますか?
私はポール・グラハムの「百年言語」の記事を読んでいました。
http://www.paulgraham.com/hundred.html
そこで彼は、静的型付けが「真のマクロを排除する」と主張しています。
たとえば、静的型付けは真のマクロを排除しているように見えるという事実にもかかわらず、型は無尽蔵の研究論文の源であるように思われます。
これはどのように本当ですか?書類はどこにありますか?Google で検索してみましたが、成功しませんでした。