タグ付けされた質問 「type-safety」

20
静的型付けはトレードオフの価値がありますか?
主にタイプセーフがないPythonでコーディングを開始し、次にC#とJavaに移行しました。Pythonでの作業が少し速くなり、頭痛が少なくなることがわかりましたが、C#およびJavaアプリの複雑度ははるかに高いため、Pythonに本当のストレステストを与えたことはありません。 JavaとC#のキャンプは、タイプセーフティが適切に設定されていないように聞こえます。ほとんどの人は、あらゆる種類の恐ろしいバグに遭遇し、その価値以上の問題を抱えています。 これは言語の比較ではないため、コンパイル済みと解釈済みなどの問題に対処しないでください。型の安全性は、開発の速度と柔軟性に打撃を与える価値がありますか?どうして? 動的型付けのほうが速いという意見の例を望んでいた人たちに: 「開発中に動的に型指定された言語を使用します。これにより、フィードバック、ターンアラウンドタイム、および開発速度が速くなります。」- http://blog.jayway.com/2010/04/14/static-typing-is-the-root-of-all-evil/

3
C ++で強く型付けされたtypedef
私は、コンパイル段階で特定の種類のバグをキャッチするために、強く型付けされたtypedefを宣言する方法を考えていました。多くの場合、intをいくつかのタイプのIDにtypedefするか、位置または速度を指定するベクトルを入力します。 typedef int EntityID; typedef int ModelID; typedef Vector3 Position; typedef Vector3 Velocity; これにより、コードの意図をより明確にすることができますが、長い夜のコーディングの後、さまざまな種類のIDを比較したり、速度に位置を追加したりするなど、愚かな間違いを犯す可能性があります。 EntityID eID; ModelID mID; if ( eID == mID ) // <- Compiler sees nothing wrong { /*bug*/ } Position p; Velocity v; Position newP = p + v; // bug, meant p + v*s but …
49 c++  c++11  type-safety 

8
型システムの安全上の利点は何ですか?
JavaScriptを:良い部品ダグラス・クロックフォードによると、彼は彼の継承の章に言及し、 古典的な継承のもう1つの利点は、型システムの仕様が含まれることです。これにより、プログラマは明示的なキャスト操作を記述する必要がなくなります。これは、キャスト時に型システムの安全性の利点が失われるため、非常に良いことです。 それではまず、実際に安全とは何ですか?データ破損、ハッカー、システムの誤動作などに対する保護 型システムの安全上の利点は何ですか?これらの安全性の利点を提供できるように、型システムの違いは何ですか?


3
XMLタイプが安全なのはなぜですか?
なぜ彼らはXMLが型の安全性を提供すると言っているのか、そしてそれはXML自体でどのように表現されているのか? (たとえば)JSONとはどう違いますか(私が理解しているように)、タイプセーフではありませんか?
30 xml  type-safety 

2
haskellで「ディメンションを型にベイク」することは可能ですか?
ベクトルと行列を扱うライブラリを書きたいとします。ディメンションを型にベイクして、互換性のないディメンションの操作がコンパイル時にエラーを生成することは可能ですか? たとえば、ドット積の署名を次のようにしたい dotprod :: Num a, VecDim d => Vector a d -> Vector a d -> a ここで、d型には単一の整数値(これらのベクターの次元を表す)が含まれます。 これは、各整数に対して個別の型を(手で)定義し、それらをで呼ばれる型クラスにグループ化することで実現できると思いますVecDim。そのような型を「生成」するメカニズムはありますか? または、おそらく同じことを達成するためのより良い/簡単な方法はありますか?

5
C ++のすべてにオブジェクト(プリミティブ型ではなく)を使用するのは理にかなっていますか?
私が取り組んでいる最近のプロジェクトでは、次のような多くの関数を使用する必要がありました。 static bool getGPS(double plane_latitude, double plane_longitude, double plane_altitude, double plane_roll, double plane_pitch, double plane_heading, double gimbal_roll, double gimbal_pitch, double gimbal_yaw, int target_x, int target_y, double zoom, int image_width_pixels, int image_height_pixels, double & Target_Latitude, double & Target_Longitude, double & Target_Height); だから私はこのように見えるようにそれをリファクタリングしたい: static GPSCoordinate getGPS(GPSCoordinate plane, Angle3D planeAngle, Angle3D gimbalAngle, PixelCoordinate …

3
Google's Goはタイプセーフな言語ですか?
このページhttp://golang.org/doc/go_faq.htmlの書き込み: Goには静的な型がありますが、言語は典型的なオブジェクト指向言語よりも型を軽く感じさせようとします だから私の質問は、ジェネリック(C#など)で安全に入力するか、緩やかに入力する(javascriptなど)か、オプション(Vb.Netのオプションstrictなど)で安全に入力することです

3
静的タイプチェックを使用してビジネスエラーから保護する
私は静的型チェックの大ファンです。これは、次のような愚かな間違いを犯さないようにします。 // java code Adult a = new Adult(); a.setAge("Roger"); //static type checker would complain a.setName(42); //and here too しかし、それはあなたがこのような愚かな間違いを犯すことを妨げません: Adult a = new Adult(); // obviously you've mixed up these fields, but type checker won't complain a.setAge(150); // nobody's ever lived this old a.setWeight(42); // a 42lb adult would …

2
Scalaコンパイラーがシールされていないクラス/トレイトに対してパターンマッチング警告を出せないのはなぜですか?
非シールtraitまたはabstract classScalaを使用してからパターンマッチングを使用する場合、コンパイラーはこの特定のパターンマッチのコンパイル時に、このトレイト/クラスの可能な実装が何であるかを知りませんか?だから、もしそうなら、可能性のあるすべての依存関係/インポートをチェックすることによって、使用できるタイプを知っているのでtrait/ abstract classがシールされていなくても、パターンマッチの警告を出せないでしょうか? たとえば、私がに対してOption[A]パターンマッチングを行っているSome[A]が、に対してNoneは行わない場合、Optionはシールされているため、コンパイラは文句を言うでしょう。 コンパイラがそれを認識/解決できない場合、なぜ彼はそれができないのですか?そして、コンパイラーが(理論的に)それを実行できる場合、それがScalaで使用されない理由は何ですか?そのような動作をサポートする他の言語はありますか?

1
PHPでクラスを実装するためのメソッドシグネチャの変更
PHPのGenericsの欠如に対して、静的コード検査で型の一貫性を検出できる適切な回避策はありますか? サブクラスを作成する抽象クラスがあり、メソッドの1つが1つの型のパラメーターの取得から、そのパラメーターのサブクラスであるパラメーターの取得に変更されるように強制します。 abstract class AbstractProcessor { abstract function processItem(Item $item); } class WoodProcessor extends AbstractProcessor { function processItem(WoodItem $item){} } これは、許可されていないメソッドシグネチャを変更するため、PHPでは許可されていません。Javaスタイルのジェネリックスを使用すると、次のようなことができます。 abstract class AbstractProcessor<T> { abstract function processItem(T $item); } class WoodProcessor extends AbstractProcessor<WoodItem> { function processItem(WoodItem $item); } しかし、PHPはこれらをサポートしていません。 この問題のためのグーグル、人々はinstanceof実行時にエラーをチェックするために使用することをお勧めします例えば class WoodProcessor extends AbstractProcessor { function processItem(Item $item){ if …

5
Cでデータのタイプをprintf()に通知する必要があるのはなぜですか?
このCコードを考えてみましょう: #include <stdio.h> main() { int x=5; printf("x is "); printf("%d",5); } これで、私たちが書いたときに整数であるint x=5;ことをコンピューターに伝えましたx。コンピュータはそれxが整数であることを覚えておく必要があります。しかし、xin の値を出力するときは、整数であるprintf()ことをコンピューターに再度通知する必要xがあります。何故ですか? なぜコンピュータはそれxが整数だったことを忘れるのですか?
8 c  io  type-safety 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.