タグ付けされた質問 「dynamic-languages」

8
米国政府が安全なプロジェクトに動的言語を許可しないのはなぜですか?
現在、米軍のプロジェクト(低セキュリティレベル、非戦闘人事タイプのデータ)に取り組んでいる人々を知っています。 プロジェクトコードの初期状態がレビューのために軍に提出され、彼らは何らかのセキュリティアナライザーツールを介してプログラムを実行しました。コード内の既知のセキュリティ問題のレポートと、最終製品の配信前に実装する必要がある変更が必要なレポートを返しました。 解決する必要がある項目の1つは、Rubyが動的言語であるために作成されたプロジェクトの一部を削除することでした。 動的言語を安全な設定で使用できないようにする背景/理由は何ですか?これは、政府が新しい技術を採用するのが遅いのですか?または、動的言語は静的言語(ala C ++またはJava)と比較して追加のセキュリティリスクをもたらしますか?

11
動的言語用のIDE-どこまで入手できますか?
動的言語が提供すべき開発の速度が、IDEが静的な同等物で提供する補完やその他の資産の欠如によって著しく損なわれるのは、イライラすることです。 入力するだけではありません-生産性が向上し、エディターに統合されていないドキュメントを常に参照することなく、APIを閲覧することで得られる楽しさです。 これまでのところ、IDEと動的言語のすべての組み合わせ-公平であるとは言えませんが、-を試しました。 バギー スロー 無知/熱狂的(これまでに可能なすべての完了を示す) または単にEclipse + Javaほど完全ではありません。 動的コード分析は簡単な作業ではないことを認識しています。しかし、不思議に思わずにはいられません- このコードは非常にわかりにくいのでしょうか? だから私の質問は: 特定のIDE(またはオールインワンセットアップ)が動的言語の完全に優れたサポートを達成したことがありますか、それとも「未解決」の問題ですか?

4
多くのアヒル型動的プログラミング言語が、プロトタイプベースのOOPではなくクラスベースのアプローチを使用するのはなぜですか?
非常に多くの動的プログラミング言語にはダックタイピングの機能があり、クラスやインスタンスのメソッドをいつでも開いて変更できるため(RubyやPythonなど)、... 質問1)動的言語のクラスの必要性は何ですか?プロトタイプ言語ではなくオブジェクトを使用するのではなく、クラスを何らかの「テンプレート」として使用するように言語が設計されているのはなぜですか? また、JavaScriptはプロトタイプベースですが、CoffeeScript(JavaScriptの拡張バージョン)はクラスベースの方法を選択します。また、Lua(プロトタイプベース)とMoonScript(クラスベース)でも同じです。さらに、ES 6にはクラスがあります。 質問2)特にプロトタイプベースの言語を改善しようとする場合、クラスベースに変更する必要があることを示唆していますか?そうでない場合、なぜそのように設計されているのですか?

5
Liskov Substitution Principleは、IntrospectionまたはDuck Typingと互換性がありませんか?
アヒル型言語で通常行われているように、オブジェクトを自分自身で検査できる言語では、リスコフ置換原理を遵守できないことを正しく理解できますか? 例えば、Rubyで、クラスの場合B、クラスから継承Aし、すべてのオブジェクトのためxのA、x.class返すために起こっているAが、場合xの目的はB、x.class返却するつもりはありませんA。 LSPの声明は次のとおりです。 ましょうQ(x)はオブジェクトに関するプロパティ証明可能であるxは型のT。次いで、Q(y)は、オブジェクトのために証明可能であるべきであるY型のS Sは、のサブタイプであるT。 たとえば、Rubyでは、 class T; end class S < T; end プロパティq(x) =で見られるように、この形式のLSPに違反していますx.class.name == 'T' 添加。答えが「はい」(イントロスペクションとLSPの互換性がない)の場合、私の他の質問は次のようになります。性質。 更新。参考のために、ウェブで見つけたLSPの別の定式化を以下に示します。 基本クラスへのポインターまたは参照を使用する関数は、知らないうちに派生クラスのオブジェクトを使用できる必要があります。 そしてもう一つ: SがTの宣言されたサブタイプである場合、タイプSのオブジェクトは、タイプTのオブジェクトとして扱われる場合、タイプTのオブジェクトとして動作するはずです。 最後のものには次の注釈が付いています。 LSPはすべて、オブジェクトの予期される動作に関するものであることに注意してください。オブジェクトの予想される動作が明確である場合にのみ、LSPを追跡できます。 これは元のものよりも弱いようで、観察できるかもしれませんが、それが形式化されること、特に予想される動作を誰が決めるかを説明したいと思います。 LSPはプログラミング言語のクラスのペアのプロパティではなく、クラスのペアと特定のプロパティのセットのプロパティであり、祖先クラスによって満たされていますか?実際には、これは、LSPを尊重するサブクラス(子孫クラス)を構築するために、祖先クラスの考えられるすべての使用法を知っている必要があることを意味しますか?LSPによると、先祖クラスは任意の子孫クラスに置き換えられるはずですよね? 更新。 私はすでに答えを受け入れましたが、質問を説明するためにRubyからもう1つの具体例を追加したいと思います。Rubyでは、クラスはClassクラスの子孫であるという意味で、各クラスはモジュールですModule。しかしながら: class C; end C.is_a?(Module) # => true C.class # => Class Class.superclass # => Module module M; end M.class # => …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.