特定のフレームワークまたはアプリケーションの説明を「Pythonic」、特定の人物を「Perlハッカー」、または「真のRubyコード」など、「Way」への参照が常にありますが、「PHPハッカー」はどこにあるのでしょうか。 「PHP-ic」アプリケーション、「真のPHPスタイル」?
これは私に考えさせました-PHPは明確なスタイルさえ持っていますか?PHPが他のスタイルに簡単に「変更可能」であると言っても、妥当な言語であれば同じことが言えるので、カウントされません。
どんな入力でも大歓迎です。
特定のフレームワークまたはアプリケーションの説明を「Pythonic」、特定の人物を「Perlハッカー」、または「真のRubyコード」など、「Way」への参照が常にありますが、「PHPハッカー」はどこにあるのでしょうか。 「PHP-ic」アプリケーション、「真のPHPスタイル」?
これは私に考えさせました-PHPは明確なスタイルさえ持っていますか?PHPが他のスタイルに簡単に「変更可能」であると言っても、妥当な言語であれば同じことが言えるので、カウントされません。
どんな入力でも大歓迎です。
回答:
他の多くのプログラミング言語とは異なり、PHPには統一された考えや一連のコアアイデアはありません。それは、非常に実用的なperlスクリプトのセットとして始まり、正式な設計プロセスをほとんど必要とせずに、必要に応じて機能が追加されました。その結果、言語は非常に便利で完全ですが、それだけでは一貫性がありません。言語が非常に人気があるため、事態はさらに悪化します。新しい機能が導入されるとすぐに、誰もがそれを使用し始めるので、それは実質的に堅実です。いくつかの設計上のミスは、このように連結されており、およびPHPのチームは本当に苦労の人々が彼らから離れて歩いてきてい- register_globalsとmagic_quotes一度に良いアイデアのように思えますが横行判明物事のちょうど2つの例です。
別の要因は、PHPを中心に育った文化です。PHPの人気が高まり始めたとき、PHPの一般的な使用例は、サーバー側の機能の小さなスニペットを静的HTMLドキュメントに追加することでした。ターゲットオーディエンスの大部分は、PHPを使用して静的なWebサイトに少し動的なものを追加する趣味家やプログラマーではありませんでした。結果として生じる文化は非常に実用的であり、「適切な方法」を確立することにあまり関心がありません。非常に洗練されたPHPを作成することは可能ですが、ユーザーコミュニティの大部分は、機能するかぎり、PHPにあまり関心を持ちません。
対照的に、python、ruby、Lisp、C#、Haskellなどの言語には当初から哲学があり、コミュニティは一般にそれを採用しており、言語はそれに沿ったものになっています。(興味がある場合import thisは、インタラクティブなPythonセッションを入力してください)。哲学を持つことは、言語を使用および拡張するためのガイドラインがあることを意味し、それはより均質なコミュニティにつながります-哲学に同意しない場合は、離れて歩いて自分に適したものを見つける可能性が高くなります。 ; 結果として生じるコミュニティは、あらゆる種類のものについてコンセンサスに達する可能性が高くなります。
とはいえ、PHPには長所と短所があり、エッジケースが曖昧です。他の言語と同じように、慣用的なPHPコードを書くということは、長所を利用し、弱点や曖昧さを避けることを意味します。
私が人々がPHPウェイと言うとき、それには負の重みが付いていると思います、それは私たちが多機能ショップ(Python、C#、Ruby)で使用した用語です。gotoのリーク、ファイルハンドルのリーク、SQLインジェクションの脆弱性、非常に深いネストされたループ、3000行の関数など、「そこにあるだけで実行する」など、「 PHP-way '。ピアレビューで、コードが非常に「PHPの方法」であると誰かが私に言った場合、私は深く気分を害するでしょう。
これによりいくつかの問題が発生することを感謝します。そのため、優れたPHPコードを生成することで知られている人々がいて、PHPがいくつかの主要な本番サイトで使用されていることを認めます。私は、群衆が最もよく考えて見ていることを言っているだけであり、意見は少数派ではなく多数派の行為によって運ばれます。
「phpの方法」がある場合は、「それを実行するだけです!」
phpには、クラス、モジュールの名前空間、イントロスペクションなどのすべての最新のOO構成と、通常はPythonなどのより魅力的な言語に関連付けられている動的プログラミングのすべての機能があります。それらが単にその目的のために使用されることはめったにありません。あるいは、PHPプログラマーが実装の「純粋さ」にこだわっているのを見ます。
なぜこのような文化の違いがあるのかはわかりませんが、そこにはあります。
そこには多くの恐怖があり、おそらくこれは、多くの「php」コードが「My First Webapp」または「My First Program」でさえあることを反映しているのかもしれません。
個人的には、専門的に記述されたphpコードの読み取りと理解は非常に簡単です。一般に、JavaアプリがすべてのFactoryクラスとXMLファイルのロジックの半分よりもはるかに読みやすいです。
PHPのアイデアは実用的だと思います。それぞれの場合でそれが何を意味するかを定義することは困難ですが、たとえば、何かを行うには1つのHTMLフォームと5行のコードが必要な場合、20のクラスを持つMVCフレームワークをそこに配置しないでください。また、逆に、2,000万人が使用するアプリケーションを開発する場合は、そこにフレームワークを配置し、ロジック、プレゼンテーション、フロー制御を個別に用意します。しかし、ここではPHPについて特別なことは何もないため、満足のいく答えにはならないかもしれません。
PHPスタイルは1つだけだとは思いません。私は個人的に、すべての言語ユーザーに適合する1つのスタイルがあるという概念は、言語の使用分野が非常に制限されている場合にのみ意味があると思います。これは、PHPには当てはまりません。
特定のアプリケーションにはスタイルがあります。たとえば、Zend Frameworkを見ると、定義済みのインターフェースや制御されたAPIなどを備えたOOコードがあり、使い慣れた設計パターンをすぐに認識できます。一方、Drupalのような、より手続き的なアプローチを取るアプリケーションがあります。
「本当のPHPスタイル」はあまり得られないと私は理解していますが、それはおそらくそのようなものがないためです。ベストプラクティスなどがありますが、それはあなたが探しているものではありません。
別の答え!今回はプログラミングの「文化」についての観察です。
PHPは、Javascript(ECMAscript to pedants!)と同じ位置にあります。2002年頃でした。少人数のエキスパートプログラマーがその卓越性を高く評価しましたが、一般的な意見は、それがバナーのスクロールとユーザーの迷惑行為にのみ役立つ貧弱であいまいなスクリプト言語であるというものでした。ポップアップ付き。
その後、AJAXが登場し、突然、全世界がJavascriptのパワーとエレガンスに畏敬の念を抱きました。
実際、JavaScriptほどエレガントではありませんが、phpはその言語の多くの能力と単純さを共有しており、大規模システム用にphpをプログラムするための「正しい」方法については総意が一致しています。
専門分野でのphpの優れた点のもう1つの指標は、最も深刻なアプリケーションのフレームワークがないことです。非常に経験豊富なプログラマーの多くは、メガフレームワークを使用せずに「php」をそのまま使用できるので満足しています。フレームワークやその他の支援の急増は、Java、Pythonなどが正しく理解していないこと、およびこれらの言語を使用するプログラマーが非常に不幸であり、Webアプリケーションの作成方法について確信がないことを示しています。しかし、読めないXML構成、今月のテンプレート方言、または独自のORM方言を読まずに、純粋な単純なphpコードを使用して複雑なWebサイトを正常に実装する方法を見ると、間違った結論を導きます-phpはIntegerFactoryクラス、依存関係の注入などがないので、残念です。
実際、これらすべてのものはphpで簡単に実装され、必要に応じてよく使用されます-実装は通常phpの数行であり、大規模で同じことをすることに慣れているプログラマーには認識されませんライブラリと複雑なAPI。
phpはシンプルです。「シンプル」は、ソフトウェアに与えることができる最高の補完であり、達成するのが最も困難です。