1

先日、Linus Torwalds によるかなり古い usenet の投稿に出くわしました。それは、より現代的なものではなくプレーンな C を Git に使用するという彼の選択を擁護する、悪名高い「あなたはブル****でいっぱいです」という投稿です。

特に、この投稿は、私が働いている場所で積み重ねられた膨大な量の抽象化レイヤーについて考えさせられました。私の環境は Windows .Net 環境です。私は C# と .Net 環境が好きだと言わざるを得ません。ほとんどのことが簡単になります。

現在、私は C のような Unix テクノロジと多数のスクリプト言語で構成された非常に異なるバックグラウンドを持っています。また、私にとって、OOP はただ 1 つのプログラミング パラダイムにすぎず、常に最高のプログラミング パラダイムであるとは限りません。 「あらゆる問題は、追加の抽象化レベルで解決できる」教会ですが、私は「シンプルに保つ」派です。異なる文化に触れることから生じる問題に対しては、非常に異なる精神的アプローチがあると思います。

非常に単純な例として、ここで行った最初のプロジェクトでは、アプリケーションの構成が必要でした。コロンで区切られたキーと値のペアを行ごとに 1 つずつ含む、プログラムのルート ディレクトリに配置される txt ファイルを読み込んで解析する 10 行のクラスを作成しました。出来た。

最後に、構成の問題へのアプローチを標準化するために、起動時に他の xml への参照を含む xml をロードするサービスを呼び出す各構成済みプログラムを実行するすべてのマシンにライブラリを配置する必要があります。アプリケーションごとに、構成自体が含まれています。

現在、それは拡張可能であり、洗練された再利用可能な抽象化、プロバイダー、およびすべてで構成されていますが、いつか実際にその一部を再利用して、それを構成するのに時間がかかった場合、必要なコードを作成できると思います最初から、または古いコードをコピー/ペーストして変更します。

それについてどう思いますか。問題を扱っている興味深い参考文献を指摘していただけますか?

ありがとう

4

3 に答える 3

1

簡単な答え: プログラミング言語は、データ構造とそれらを組み合わせる方法を提供します。最初はこれらを直接使用し、抽象化しないでください。多数の使用サイトが制御できない可能性があるために壊れるリスクが高い、維持する表現不変条件があることがわかった場合は、抽象化を検討してください。

これを実装するには、まず関数を提供し、呼び出しサイトを変換して、表現を隠さずに使用できるようにします。関数表現が十分であると確信した場合にのみ、データ表現を非表示にします。この時点で、保護されている不変条件を文書化してください。

これの「極端なプログラミング」バージョン: プログラムを壊すテスト ケースができるまで抽象化しないでください。不変条件が破られる可能性があると思われる場合は、それを破るケースを最初に書きます。

于 2011-12-26T00:26:29.440 に答える
0

抽象化により、ソフトウェアの構築とその組み立て方の理解が容易になりますが、抽象化レイヤーによってある種の複雑さが生じるため、パフォーマンスとセキュリティに関する特定の問題を完全に理解することが難しくなります。

トーバルズの立場はばかげているわけではありませんが、彼は過激派です。

于 2010-02-17T15:15:14.677 に答える
0

同様の質問があります: https://stackoverflow.com/questions/1992279/abstraction-in-todays-languages-excited-or-sad

私は@Steve Emmersonに同意します-「Coders at Work」は、この問題について優れた視点を提供します。

于 2010-02-17T15:15:21.383 に答える