4

重複の可能性:
動的言語への愛とは何ですか

私は ac#/java のバックグラウンド、つまり強く型付けされた OOP 言語の出身です。

私は Python に非常に興味がありますが、動的言語の利点についてもう少し学ぶ必要があります。

それは本当に私にどのような力を与えますか?(Web アプリケーション)。

誰かが私ができるいくつかの利点とクールなトリックの概要を説明できますか?

4

5 に答える 5

5

私は動的型付け言語を「クールなトリックを許可する」とは考えていません(実際にはそうですが、本番ソフトウェアで「クールな」トリックを使用することは実際には適切ではありません。テストやデバッグなどに役立ちますが、本番環境でのシンプルなルールのために、優れた高速なものをデプロイすることになります)。

むしろ、私はそのような言語を「邪魔にならない」と考えています。特に、何度も何度も冗長に指定することを強制することによって私を遅くしないでください。すべての静的に型付けされた言語「邪魔になる」わけではありません-Haskellのような堅実で論理的に正しい型システムを備えた優れた言語は、コンパイラに型を推測させます(ただし、冗長性が必要場合は、冗長に指定することもできます...またはもっと要点、コンパイラが実際にコードから推測できるものよりも厳しい制約が必要な場合)。ただし、Javaでは(そして、かなり最近のキーワードを使用する場合を除いて、C#ではそれほどではありませんがvar)冗長性がルールであり、それが生産性に影響を与えます。

タイプチェックのように、 Python用のサードパーティのチェックシステムによって妥協案が提示される可能性があります。私自身は使用していませんが、静的タイプチェックが多くの価値をもたらすと本当に考えている人がそれに満足している可能性があります。最近のPythonバージョンには、関数の引数と戻り値に注釈を付けるための構文(Pythonコンパイラは受け入れますが何もしません)もあります-その目的は、拡張されたパッケージをtypecheck拡張して、適切な言語とより自然にマージできるようにすることです(まだそうは思いtypecheckませんが)。

編集

私がここに書いたように、そして私は引用します:

ヴァンロイとハリディの説明が大好きです。彼らの本の104-106 、私は彼らの結論に同意するかもしれないし、同意しないかもしれませんが(基本的に本質的な違いは小さいです-彼らは静的型付けなしと静的型付けのある相互運用可能な言語としてそれぞれOzとAliceを指しています)、すべての点彼らが作るのは良いことです。最も重要なことは、動的型付けが実際のモジュール性(静的型付けでは難しい、型の規律はモジュールの境界を越えて実施する必要があるため)、および「いくつかのプログラミングパラダイムを統合する計算モデルでの探索的計算」を可能にする方法だと思います。

「動的型付けが推奨されます」、「プログラムが可能な限り柔軟でなければならない場合」と彼らは結論付けています。アジャイルマニフェストを読んで、ほとんどの現実世界のアプリケーションプログラミングで最大限の柔軟性が重要である理由を理解することをお勧めします。したがって、より学術的なサークルではなく、現実の世界で、Dr。VanRoyとDr.Hadidiが動的型付けを行う理由を理解することをお勧めします。一般的には望ましいことであり、違いを生むほど小さな問題ではありません。それでも、私が見た他のほとんどの本よりも、長所と短所の3つの優れた議論のページを捧げることで、少なくとも問題に対する認識が高まっています。ほとんどの本は、いずれかの方法で優先順位を明確に描写し、実行しています。 、したがって、議論がそれほどバランスが取れていることはめったにありません;)。

于 2010-06-26T22:55:50.530 に答える
2

このPython と Java の比較を読むのは楽しかったです。

Web に関連して、Djangoで簡単な例を実行して、それがどのように機能するかを確認することをお勧めします。

于 2010-06-26T20:59:01.673 に答える
1

Python (すべての動的言語と同様) は、実行時まで属性検索を延期します。これにより、ポリモーフィズムとインターフェースの考え方を打ち破り、ダックタイピングの力を活用することができます。これにより、祖先やそれが実装すると主張するものについて心配する必要はなく、機能するように見えるだけの型を使用できます。.

于 2010-06-26T22:22:58.980 に答える
0

Python は強く型付けされ、オブジェクト指向であり、違いは Python動的であるということです。

Python クラスでは、他のすべてのオブジェクトと同様にオブジェクトであり、他のすべてのオブジェクトと同様に、実行時に作成および変更できます。これは基本的に、実行時にモジュール、メタクラス、クラス、属性/メソッド、および関数を作成および変更できることを意味します。基本クラスを既存のクラスやその他のいくつかのものに追加できます。

于 2010-06-26T21:12:34.890 に答える
0

Python 自体について話すことはできませんが、先週 Powershell で PSObject クラスをいじっていました。これにより、メンバーやメソッドなどを動的に追加できます。C++\C# のバックグラウンドから来て、これは魔法のように思えました。これらのコンストラクトを組み込むために再コンパイルして、私が行っていたワークフローをより良くしました。

于 2010-06-26T20:59:23.940 に答える