web-dev-qa-db-ja.com

「phpは悪い言語です」というパラダイムを破る方法は?

PHPは悪い言語ではありません(少なくとも、一部の人が示唆するほど悪くはありません)。私も知らない先生がいましたPHP彼らが言うまでオブジェクト指向でした。私たちがそうであると私たちが言うときすぐに私たちを信用しないクライアントがいましたPHP = DjangoまたはRoR、またはJavaおよびASP.NETなどの "エンタープライズおよびソリッド"言語などのシックな言語およびフレームワークを使用しないことについて、開発者および私たちに質問してください。

FacebookはPHP上に構築されています。 JoomlaやDrupalなど、企業や政府で使用されているように、Webを強化する多くの堅実なプロジェクトがあります。私が見た中で最高のアーキテクチャのいくつかを備えたフレームワークとライブラリがあります。言語(Symfony 2、Doctrine)PHPには、私が見た中で最高のドキュメントと専門家の大きなコミュニティがあります。

PHPは高度なOOリフレクション、インターフェースなどの機能はもちろんのこと、PHPが traits を介してネイティブかつクリーンに水平方向の再利用をサポートするようになりました。

PHPに悪い評判を与えるが、同時にPHPコミュニティに力を与える。行われたことPHP多くの場合、間違った方法で物事を行うことができますが、なぜ言語のせいですか?.

さて、これを実際の答えのある質問に要約すると:眉をひそめられず、偏見を一挙に避けて、名誉を守るために、何が良い、しっかりした、短くて甘い議論になるでしょうか。あなたはPHP開発者ですか?と言います。

(ホイップクリームを添えた無料のCookieは、その場で誰か(クライアントまたはその他)を説得した経験的な証拠を持つ人々に提供されます)

PS:私たちは Symfony を使用し、コードは美しく、保守可能になります

P.P.S .: FacebookisはPHPで記述され、HipHopを介してC++にコンパイルされ、Hadoopにデプロイされます。ここ: http://arstechnica.com/business/2012/04/exclusive-a-behind-the-scenes-look-at-facebook-release-engineering/1/

19
dukeofgaming

私の唯一の答えはこれです。

OOPが関数型プログラミングまたは手続き型プログラミングと比較して、どれが良いか(クイック検索で明らかになる)に対する多くの引数を見つけることができます。 PHPのOOサポートがそれを守ることを示しているようです。

グーグル空白はうんざりだし、何でも結果が見つかる。 Pythonは吸うルビーは吸うRailsは吸うPHPは最低Java sucks

あなたは本当に何が悪いのか知りたいですか?プログラマー。プログラマーは吸う。優れた開発者であれば、言語に関係なく、フロントエンドandバックエンド-に慣れていない場合でも、素晴らしいアプリケーションを作成できるはずです。 (つまり、優れたプログラマーは、あらゆる言語を効果的に学習して操作できる必要があります)。

また、アプリケーションの成功はそのコードとは関係がないことにも注意してください。 Facebookのコードはひどいものだと聞いたことがありますが、それは効果的です。同じことがおそらくウィキメディアにも当てはまります(ウィキペディアはPHP上に構築されており、非常に人気のあるWebサイトでもあります)。本当に重要なのは結果です!

PHPは私が個人的に最も精通している言語です。私はそれを死ぬまで守ります。私はPHPフレームワーク、まっすぐなPHPコード、およびPHP、python、and Ruby(さらにはJava)をすべて使用してきましたWeb開発用。特に優れているとは言えません。さらに重要なのは、開発者とアルゴリズムです。私は多くの言語で驚くほど良い、完全にひどいコードを見てきました(特にPHPは非常に多くの経験があるためです)。


今あなたの質問のために:それはあなたが扱っている人に依存します

ビジネスマン

彼らは主に結果と費用対効果を気にしています。非常に成功したFacebook、Wikipedia、およびWordpressがPHPを使用しているという事実は、それが成功したアプリケーションを構築するための効果的な言語であることを彼らに納得させるのに十分すぎるはずです。

プログラマー

あなたのコードがそれ自体を語らせてください。開発者がPHPは何らかの点で劣っていると言った場合、効果的だと思われるPHPコードをいくつか示します。プリンの証拠は食べることです。

40
Explosion Pills

PHPの歴史はひどいものです。ほんの少し前のことですが、多くの悪い習慣やパターンが奨励され、回避するのが非常に長い時期がありました。恐ろしいPHPコードの生成がまだそこにあり、新しいプログラマーが古いコードを読んで学んでいる限り、彼らは悪い振る舞いを学んでいます。PHPはブラックエンドの評判に値しないかもしれませんが、それでも確かにそれを獲得しました。

PHPを守るための最善の策は、誰もが知っている歴史と現在の最先端技術を注意深く距離を置いて区別することです。PHP isnひどい言葉ではありませんが、業界で何年も働いている人と話していると、彼らの記憶がそうでないことを教えてくれます。

PHPチームがミスから学び、言語をより良いものに変更した方法を示します。過ぎ去った魔法の引用の時代であり、グローバルを登録します。グローバルはすべてのパラダイムであり、安全です-実際のPHPプログラマーは常に名前空間とパラメーター化されたクエリを使用し、非推奨の関数を避け、ライブラリコードを常にドキュメントルートの外に置くことを説明します。

PHPが変更され、PHPプログラマーが変更されました。そのため、PHPは、今日のすばらしいプラットフォームです。 、それはあなたの顧客がプレインストールすることを知っている唯一のプラットフォームです。それは巨大です。

余談ですが、私は既存のCMSエンジンとフレームワークをPHPの大きな勝利として挙げることはお勧めしません。あなたは彼らが 4日間のWebsenseのセキュリティ調査 前のようなものを指摘するリスクを負います。最近のWebサイト感染の94%がPHP Joomlaのようなソフトウェアを実行しているWebサイトそれはあなたが見たいと思っている種類の会社ではありません。代わりにあなたのコードが他のすべてのものよりwayより安全であることを指摘してください。

20
tylerl

PHPはWebのCOBOLです。どちらの言語も尊敬されませんが、多くの人々は自分たちで書かれたシステムを構築および保守し、ネイティブのほとんどすべての主要なコンピューターシステムに存在しています。世界(ie、それぞれウェブおよび商業ビジネス)。両方の言語は、他のより人気のある言語の実務家によって軽視されており、主にプログラマーが実践してきた古くて時代遅れの習慣に基づいています。

PHPはとても幸運であり、COBOLの人生を生きているはずです。 COBOLはFORTRAN以外の何よりも古くからあり、すぐになくなることはありません。日常的に使用しているCOBOLプログラムには、それらを保守している人よりも古いものがたくさんあります。それは「新しい熱さ」ではないかもしれませんが、それとともに働いて稼ぐお金は常にあります。

9
Ross Patterson

コインの裏側を理解し、PHPの不足を認識することも役立つと思います。 PHPはテンプレート言語から大きく進歩しましたが、改善できる点はまだたくさんあります。PHPがまだ欠けている点がいくつかあります: Unicode、関数型機能、標準ライブラリの構成、arrayなど。

私が提案するのは、PHP長所と短所について建設的な議論をするために、これをすべて認めるのは良いことです。「はい、私はPHP標準ライブラリはあまり整理されていませんが、今日作成された場合、名前空間とオブジェクト指向のAPIを利用できます。「はい、デフォルトの配列は、辞書と配列の構造を混合することで少し混乱することを知っています。しかしより良いコレクションが必要な場合は、SPLを利用できます。」.

他の人の議論には何らかの理由があることを知っているとあなたの見方はより強くなるでしょう。

4
Andrea

どうして?

あなたが自分を守る必要があると感じさせる人(キャリア、配偶者、消費習慣など)は、自分の時間を浪費しています。時間をかけて自分を守ることは、単に間違った種類の人々をユーモアにさらしているだけです。今、あなたは自分の時間だけでなく、自分の時間も無駄にしています。

これらの人々をあなたの人生から切り離してください-あなたは彼らなしでより良いです。

2
J.K.

PHPとその開発者の価値を人々に納得させるためにバストアウトできる短くて甘いワンライナーはありませんが、質問をする前に非常に説得力のある議論を書きました。

1
CFL_Jeff

「PHPは悪い言語である」に対処するには、問題の個人がそれを悪い言語だと考える理由を理解する必要があります。多分(s)彼はPHPで書かれた悪いプロジェクトに取り組んだでしょう。たぶん、彼は変数の前に$を付けるのが好きではないのかもしれません。多分彼ら自身が言語を使おうとし、維持不可能な混乱を書いたのでしょう。 PHPは、他の言語や他のプラットフォームでは意味をなさないため、他のプログラミング言語を使用しているプログラマーの多くは、PHPを見て混乱します。たとえば、PHPでは、配列は「宇宙のダクトテープ」であり、他のプログラミング言語ではそのようなことはばかげているでしょうが、ほとんどすべてを実行するために使用されます。

ここで答えの組み合わせを提案します。

  1. tylerl が言ったように、あなたはモダンPHPが古いいとこよりもはるかに優れていることを示す必要があります。ゴーンはcreate_functionの卑劣さです。ゴーンはジャングルですどこでも手動でincludeを呼び出す方法。
  2. PHPに障害があることを確認します。どのプログラミング言語にも欠点があります。そうでなければ、多くの真面目なプログラマーはあなたの応答を「ファンボイ」であると完全に無視します。
  3. 他のプログラミング言語では困難なPHPで簡単なことを人々に示します。プログラミング言語は、いくつかのタスクを簡単にするように設計されているため、必然的に他のタスクが困難になります。C?メモリ操作とビットハックは本当に簡単で、言語は本当にシンプルですが、大きなアプリケーションを維持するのは難しいです。Java?freeがなく、すべてが「OOっぽい」ですが、ランタイムは大きく、OOは制限される可能性があります。C++?言語のプリミティブ型(たとえばint)とまったく同じように動作する型を作成できますが、それにはかなりの複雑さが伴います。PHP?プログラミングをしなくても簡単に始めることができます知識、しかしその結果、インターネット上に投稿された大量のゴミコードがあります。
  4. PHPの言語以外の利点を認めます。 PHPには、いまだに...扱いにくい言語として多くのものが存在します。しかし、設定も配備も簡単で、多くの追加作業なしで「プラグイン」できる優れたライブラリの大規模なセットが付属しています。

すべての言語のための場所があります。目の前の問題に合うように言語を選択し、それが属していない場所に優先言語を押し付けようとしないでください。

1
Billy ONeal