抽象化はコンピュータープログラミングの重要な概念であり、フレームワークはプログラマーがこれを達成するのに役立ちます。これは良いことです。私たちの多くがアセンブリ言語で複雑なシステムを開発したいとは思わないでしょう!問題は、プログラマが抽象化レイヤーが何をマスクしているかについてほとんど知らないときに起こると思います。言い換えれば、あなたがそれと直接対話したりインターフェースしたりしていなくても、内部で何が起こっているのかをある程度知る必要があります。
私は、90年代半ばにCとCGIを使用して最初の動的なWebサイトのいくつかを開発したことを覚えています(当時、Webサイトの大半はまだ静的なHTMLでした)。成熟したサーバー側のスクリプト言語(PHPやASPなど)もライブラリもほとんどなかったため、すべてのページでHTTP応答ストリーム全体をサーバーに書き込む必要がありました。GETおよびPOSTパラメーターを解析するには、独自のライブラリを作成する必要がありました。それは退屈で、遅く、勤勉で非常にエラーが発生しやすいものでした。ちょっと見逃さないで!
ただし、ASP.NET Webフォームのようなフレームワークは、Webのステートレスな性質全体を抽象化し、多くの新しいWeb開発者が実際に内部で何が起こっているのかについての手掛かりがほとんどない点まで感じます。これは、開発者がHTTPレベルで何が行われているかを理解せずに「ドラッグアンドドロップ」の方法論を使用してコンポーネントを一緒に配管しているため、パフォーマンスが不十分な非効率的なコードにつながります。
したがって、高レベルのソフトウェアを開発するにはフレームワークが不可欠であると考えていますが、抽象化されているものをある程度理解している開発者を免れません。はい、フレームワークはあなたを愚かにさせることができますが、それはあなたがそれらを理解し損ねた場合のみです。