Python プログラミング - Python でエンタープライズ レベルのソフトウェアを開発するためのルール/アドバイス?

StackOverflow https://stackoverflow.com/questions/672781

質問

私はやや上級の C++/Java 開発者で、最近 Python に興味を持ち始めました。その動的な型付けと効率的なコーディング スタイルをとても楽しんでいます。私は現在、プログラミングの謎解きやスクリプト作成など、小規模なプログラミングのニーズに Python を使用していますが、エンタープライズ品質のプロジェクトで Python をうまく使用した人がいるかどうか気になります。(OOP やある種のデザイン パターンなどの最新のプログラミング概念を使用することが望ましい)

もしそうなら説明していただけますか なぜ あなたはPythonを選択しました (具体的には) そして私たちにいくつかを与えてください レッスン このプロジェクトから学びましたか?(プロジェクトでの Python の使用と Java などを自由に比較してください)

役に立ちましたか?

解決

私は Python を使用して複雑な保険引受アプリケーションを開発しています。

当社のアプリケーション ソフトウェアは基本的に、企業が購読できる形式で当社の保険数理モデルを再パッケージ化しています。このビジネスは、当社のアクチュアリーとその深い思考に基づいています。私たちは、比較的固定された賢いアルゴリズムをパッケージ化しているわけではありません。私たちはウェブサービスを通じて顧客に保険数理の頭脳をレンタルしています。

  1. 保険計理人は、保険金請求につながるさまざまな要因についてより深い洞察を得るにつれて、自由に変更を加えられる必要があります。

    • 静的言語 (Java、C++、C#) は、データ モデルへの早期のロックインにつながります。

    • Python を使用すると、非常に柔軟なデータ モデルを実現できます。多大な開発コストや複雑さを伴うことなく、要素や情報ソースを自由に追加、変更、削除できます。ダックタイピングを使用すると、多くのやり直しをせずに新しい作品を導入できます。

  2. 私たちのソフトウェアは(パッケージではなく)サービスであるため、終わりのない統合の問題があります。

    • 静的言語には複雑なマッピング コンポーネントが必要です。多くの場合、顧客メッセージから絶えず変化する内部構造への、ある種の構成可能な XML ベースのマッピング。

    • Python を使用すると、マッピングを単純な Python クラス定義として持つことができ、それを調整、テストして本番環境に導入するだけです。このモジュールには制限はありません。これは第一級の Python コードです。

  3. 私たちは大規模で長期にわたる概念実証を行う必要があります。これらには、さまざまなデータ フィードとカスタマイズされた機能を使用した多数の「what-if」シナリオが含まれます。

    • 静的言語では、さらに別のデモ、つまり顧客が提供した別のファイルから現在のバージョンの保険数理モデルへのマッピングを作成するには、多くの慎重な計画と思考が必要です。

    • Python では計画がはるかに少なくて済みます。ダック タイピング (および Django) を使用すると、ほとんど苦痛なくデモを完成させることができます。データ マッピングは単純な Python クラス定義です。私たちの保険数理モデルは、ほぼ一定の流動状態にあります。

  4. 当社のビジネスモデルにはある程度の交渉が必要です。私たちは情報プロバイダーとかなり複雑な契約を結んでいます。これらは保険数理モデルほど頻繁には変更されませんが、ここでの変更にはカスタマイズが必要です。

    • 静的言語は契約に関する仮定に縛られ、取引を交渉するビジネスマンの頭のおかしい問題に対処するためにかなり複雑な設計 (または回避策) を必要とします。

    • Python では、広範なテスト スイートを使用し、さまざまな契約条件が私たちに降り注ぐにつれて多くのリファクタリングを行います。

    毎週、「Xのようなプロビジョニングを処理できますか?」などの質問があります。私たちの標準的な答えは「絶対に」です。その後、私たちを確実にするために1時間のリファクタリングが続きます できた そのような形で取引が成立した場合には対処してください。

  5. 私たちは主に RESTful Web サービスです。Django は、すぐにこれの多くを実行します。私たちのセキュリティ モデルは Django が提供するものよりも少し厳格であるため、いくつかの拡張機能を作成する必要がありました。

    • 静的言語にはソースを出荷する必要はありません。セキュリティ モデルが気に入らない場合は、ベンダーに $$$ を支払います。

    • 動的言語はソースとして出荷する必要があります。私たちの場合、時間をかけて Django のソースを注意深く読み、セキュリティ モデルが Django の残りの部分ときれいに適合していることを確認します。しません 必要 HIPAA 準拠ですが、とにかくそれを組み込んでいます。

  6. 当社は情報プロバイダーのWebサービスを利用しています。urllib2 はこれをうまくやってくれます。インターフェイスのプロトタイプを迅速に作成できます。

    • 静的言語では、API があり、記述して実行し、それが機能することを望みます。開発サイクルは、編集、コンパイル、ビルド、実行、クラッシュ、ログの確認です。これは、インターフェイスをスパイクし、プロトコル、資格情報、構成が正しいことを確認するためだけです。

    • インタラクティブな Python でインターフェイスを実行します。インタラクティブに実行しているため、応答をすぐに調べることができます。開発サイクルは実行、編集に短縮されます。午後には Web サービス API を急増させることができます。

他のヒント

私は世界最大手の銀行の 1 つで分散コンピューティング フレームワークとして Python を使用してきました。それが選ばれた理由は次のとおりです。

  • 新しい機能の開発と展開には、非常に高速な処理が必要でした。
  • C および C++ と簡単に統合できる必要がありました。
  • コードの一部は、ソフトウェア開発ではなく、数学的モデリングを専門分野とする人々によって書かれることになっていました。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top