ある程度、彼には一理あります。従来の c/unix 開発は、多かれ少なかれ全体を理解できるほど単純なプラットフォームで機能します。最新のプラットフォームは桁違いに複雑であり、すべてのレイヤーがどのように相互作用するかを理解することははるかに難しく、多くの場合実行不可能です。
漏れやすい抽象化の法則は、主に、フレームワークが根底にある複雑さを適切に管理できない場合に適用されます。フレームワークを判断する方法のいくつかは、その透明性 (舞台裏で何が起こっているかを理解しやすいこと) と、その機能の制限のためにカスタムの回避策にドロップアウトする能力です。
フレームワークが舞台裏で多くの複雑な魔法を実行すると、診断とトラブルシューティングが非常に難しくなり、フレームワークの基盤となるアーキテクチャに不釣り合いに多くの専門知識が必要になることがよくあります。これは、フレームワークによる生産性の向上が、コードのトレーニングとデバッグの余分な労力に吸収されることを意味します。また、フレームワークを学習して自信を持って使用することも困難になります。これは、C プログラミングの友人が慣れていることです。
フレームワークがその制限を回避するのを妨げる場合、それは開発の障害になります。これが頻繁に発生すると、問題を回避するために、コード ベースが封じ込められるか、ますます大規模で乱雑なハッキングによって汚染されます。これは、安定性とデバッグの問題にもつながります。
これらの欠陥のあるフレームワークの例はたくさんあります。MFC は、Win32 の根底にある複雑さを隠蔽できなかったことで非常に有名でした。また、後で手動で変更する必要がある乱雑なコードを生成するウィザードを多用し、そもそもコード ジェネレーターを持つ目的を無効にしました。初期の Java GUI ツールキット (AWT および Swing の初期バージョン) は、開発者がアプリケーションのネイティブなルック アンド フィールを実装するのを妨げていたため、デスクトップ アプリケーションにほとんど取り込まれませんでした。SWT が構築されたのは、Swing のこれらの制限が少なからずあったためです。
しかし、現在 Java は少し成熟しており、その初期の問題のほとんどは最新のフレームワークで修正されていると言えます。J2EE は依然として大規模で複雑なシステムであり、ブラウザで重要なユーザー インターフェイスを開発することもかなりの労力を要します。このプラットフォームに習熟するのは大変な作業です。しかし、それは人間の機知を超えているわけではありません。