タグ付けされた質問 「static-typing」

6
段階的な入力:「静的型システムを持つほとんどすべての言語には動的型システムもあります」
Aleks Bromfieldによるこの主張は次のように述べています。 静的型システムを持つほとんどすべての言語には、動的型システムもあります。C以外に、私は例外を考えることはできません これは有効な主張ですか?実行時のReflectionクラスまたはLoadingクラスを使用すると、Javaがこのようになりますが、この「漸進型付け」の考え方を多数の言語に拡張できますか?

3
ソフトウェアの品質に対する異なる言語の影響に関する経験的な研究はありますか?
関数型プログラミング言語の支持者は、関数型プログラミングによってコードについて推論するのが容易になると断言しています。静的に型付けされた言語を好む人は、コンパイラが型システムの複雑さを補うのに十分なエラーをキャッチすると言います。しかし、これらのトピックで読んだものはすべて、経験的データではなく、合理的な議論に基づいています。 プログラミング言語のさまざまなカテゴリが欠陥率またはその他の品質指標にどのような影響を与えるかについて、実証的な研究はありますか? (この質問に対する答えは、少なくとも動的と静的の議論については、そのような研究はないことを示しているようです)

3
静的分析の型に代わるものはありますか?
プログラミング言語での静的型付けは、コンパイル時に特定の保証を強制するのに役立ちますが、型はこの仕事のための唯一のツールですか?不変条件を指定する他の方法はありますか? たとえば、言語または環境は、配列の長さ、または関数への入力間の関係に関する保証を実施するのに役立ちます。型システム以外では、このようなことは聞いたことがありません。 関連することは、静的分析を行うための非宣言的な方法があるかどうかです(ほとんどの場合、型は宣言的です)。

2
構造タイピングの(不)利点
私はちょうどダニエル・シュピーワクによるこの講演を見ました。そこで彼は、Scalaのans Javaの名目上の型付けと比較した構造型付けの利点について話しています。この違いの1つの例は、次のJavaコードです public interface Foo { public int length(); } public interface Bar { public int length(); } Foo f = ...; Bar b = f; もちろんその間タイプの互換性ため、コンパイルされないだろうFooとは、Bar名前によって決定されます。 一方、構造型システムでは、両方の型が等しいか互換性があると宣言できるため、とりわけ、チェックされたアヒルの型付けが可能になります。 今、私は構造型システムの利点のほとんどを理解していると思いますが、次のような例から型安全性を無効にしないのではないかと思います class Foo { class Bar { /* ... */ } def takeBar(b: Bar) = { /* ... */ } def getBar: …

2
Optional / Maybe型は動的言語で役立ちますか?
Optional静的に型付けされた言語では明らかな方法で有用ですが、動的言語でも有用かどうか疑問に思っています。通常、あなたに言って何のコンパイラは「ねえ、あなたはこれを使用し、ありませんOptional<String>とStringあなたはまだ実行時にミスを発見する必要がありますので、」。私は静的な型付けの背景を持っており、私の観点からOptionalは、動的言語の型の利点を見ることができません。

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 …

9
Webサイトの動的型と静的型の言語[非公開]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 このステートメントは、静的に型付けされた言語がWebサイトに理想的ではないことを示唆しています。 ウェブサイトの構築とは対照的です。Webページをレンダリングするとき、多くの場合、Webページで相互作用する非常に多くのコンポーネントがあります。ここにはボタンがあり、そこには小さなウィジェットがあり、ウェブページにはそれらの数十があり、ウェブサイトにはすべて動的な数十または数百のウェブページがあります。そのような非常に大きな表面積を持つシステムでは、静的に型付けされた言語を使用することは実際には非常に柔軟性がありません。おそらく、Scalaでプログラムを作成し、それを使用してWebページをレンダリングするのは、ボタンやその他のものをインタラクティブにプッシュしたいときに苦痛になるでしょう。システム全体で一貫性が必要な場合、たとえば、システム全体でボタンを移動できるようにするためだけに型チェックを行う必要がある場合、それは非常に柔軟性に欠けると考えます。 ソース:http : //www.infoq.com/interviews/kallen-scala-twitter これは正しいです?なぜですか?

5
動的言語はアジャイル開発にとって不利ですか?
私が読んだアジャイル開発から、コードをダイアグラムにリファクタリングまたはリバースエンジニアリングすることがよくあります。もちろんそれ以上のものがありますが、これら2つの方法に依存するプラクティスを考慮すると、動的に型付けされた言語は不利になりますか? 静的に型付けされた言語は、リファクタリングとリバースエンジニアリングをはるかに容易にするようです。 動的に型付けされた言語では不可能ではないにしても、リファクタリングまたは(自動化された)リバースエンジニアリングは困難ですか?現実のプロジェクトは、アジャイル手法のための動的に型付けされた言語の使用について何を教えていますか?

6
静的型付けは、より大きなプロジェクトでどのように役立ちますか?
スクリプトプログラミング言語のサイトのメインページで好奇心をかきながら、次の文章に出会いました。 システムが大きくなりすぎて頭に残ることができない場合は、静的型を追加できます。 これにより、静的なコンパイル言語(Javaなど)と動的なインタープリタード言語(主に使用頻度が高いためPythonが主流ですが、ほとんどのスクリプト言語間で共有される「問題」)の間の多くの宗教戦争で、静的な不満の1つでした。動的に型付けされた言語に対する型付き言語のファンは、「いつか、関数の戻り値の型を忘れ、それを調べなければならず、静的に型付けされた言語ではすべてであるため、より大きなプロジェクトにうまくスケーリングできない」明示的に宣言されています。」 このような発言は理解できませんでした。正直に言うと、関数の戻り値の型を宣言したとしても、コードの多くの行を記述した後はそれを忘れることができ、その関数の検索関数を使用して宣言されている行に戻る必要があります。それをチェックするあなたのテキストエディタ。 さらにとして、関数がで宣言されているとしてtype funcname()...、知っwhitout typeあなただけ知っているので、あなたは関数が呼び出された各ラインを超える検索する必要がありますfuncnameしばらくPythonで、あなたのように、coudだけを検索def funcnameまたはfunction funcnameだけで、一度たまたま宣言。 さらに、REPLでは、関数の戻り値の型をさまざまな入力でテストするのは簡単ですが、静的に型付けされた言語では、コード行を追加し、宣言された型を知るためにすべてを再コンパイルする必要があります。 では、静的型付け言語の強みではない関数の戻り値の型を知る以外に、静的型付けは大規模なプロジェクトでどのように役立つのでしょうか。

5
静的および動的に型付けされた言語を、さまざまなタイプのジョブのさまざまなツールと見なすことはできますか?
はい、同様の質問がされていますが、常に「どちらが良いか」を見つけることを目的としています。 私は主にJavaScriptの開発者として思いついたので、静的型付け言語での記述に関する広範な経験がないので、私は尋ねています。 これにもかかわらず、低レベルのコードでの要求の厳しい操作を処理するためのCの学習には間違いなく価値があります(これは、コンパイラーレベルで静的と動的の関係があると思います)。特定のプロジェクトコンテキスト(特定の種類の動的なデータ集約型操作など)があるかどうかです。パフォーマンス以外にも、JavaやC#を使用するよりもPythonを使用するほうが理にかなっています。

13
Webページ上のJavaScriptの静的に型付けされた代替は実用的でしょうか?
動的型付けと静的型付けの好みは主に好みの問題であり、さまざまな状況でさまざまな人々がそれらを多かれ少なかれ適しています。 私の質問は、クライアント側のWebページ拡張などのために、JavaScriptの静的型付けの代替を技術的に可能にすることは可能でしょうか?

6
プロトタイピングに適しているのは、静的に型付けされた言語ですか、それとも動的に型付けされた言語ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 新しいシステムの設計を行うとき、静的に型付けされた言語(Haskellなど)または動的に型付けされた言語(Rubyなど)から始める方が良いですか? 私が考えることができる引数: 静的言語を使用すると、プログラムが行うことの仕様とスコープをすばやく作成できます。動的な言語を使用すると、実用的なデモをすばやく作成して、レビューのために顧客に提示できます。 動的言語を使用すると、設計を変更するときにデータ構造を再配置したりコードをリファクタリングしたりする必要がなくなることがよくあります。静的言語を使用すると、実装前に型を定義して、コードを非常に小さく維持できます。 静的言語では、プログラムが何をするかを事前に理解する必要があります。動的言語を使用すると、コードの記述を開始して、デザインを有機的に成長させることができます。ポール・グラハムがハッカーと画家で言っているように: プログラミング言語は、プログラムを考えるためのものであり、すでに考えたプログラムを表現するためのものではありません。 静的言語を使用すると、コンパイラーは多くのタイプのバグを識別するのに役立ちます。動的言語を使用すると、バグのテストと発見をより早く開始できます。 静的型付けと動的型付けには、プロトタイピングに関する限り、長所と短所があります。ただし、どちらも同じように有効なアプローチを好むようです。あなたの経験に基づいて、どちらが最終的に優れていますか? ノート 自然言語でのプロトタイピング 考慮すべき言語の3番目のタイプ:自然言語。コードでプロトタイプを作成する代わりに、書面でプロトタイプを作成できます。その後、顧客はドキュメントを読んでデザインを批判することができますが、実際のデモをいじることはできません。適切に記述されていれば、ドキュメントはどの言語でも簡単に実装できます。警告: ドキュメンテーションは読むのが面倒で、見ることができないと要約するのが難しいかもしれません。私は、顧客がテキスト(および画像)の壁を読むのではなく、機能するものを試してみたいと思います。 タイプ定義ではなく英語でアプリケーションのプロトタイプを作成することは、より冗長で具体的ではありません。 Haskellのタイプは説明的です 型は、C ++やJavaなどの多くの静的言語よりも、Haskellで特に説明的であることに注意してください。たとえば、Haskellに次の型シグネチャを持つ関数があるとします。 foo :: forall a. [a] -> a 任意のタイプについて、タイプaの項目のリストを取り、タイプaの値を返す関数a。 関数の名前を知らなくても、私は次のことを知っています。 Haskellは純粋に機能しているため、入出力を実行したり、値を変更したりすることはありません(unsafePerformIOを誤って使用しない限り)。 任意の型をサポートする必要があるため、アイテムを整数などとして扱うことはできません。 それは持っている(つまり、あるいは例外をスローしたり無限ループに入る)入力リストを使用します。そうでなければ、それはどこaから型の値を取得しますか? したがって、この関数が実行できる唯一のこと(失敗以外)は、入力リストから項目を抽出して返すことです。どのアイテムを使用するかはまだわかりませんが、[a] -> a他のすべてについて教えてくれます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.