「phpは悪い言語です」というパラダイムを破る方法は?[閉まっている]


19

PHPは悪い言語ではありません(または、少なくとも一部の人が示唆するほど悪くはありません)。PHPがオブジェクト指向であることさえ知らない教師がいたのです。私たちがPHP開発者であると言うとすぐに私たちを信用しないクライアントがいて、DjangoやRoRなどのシックな言語やフレームワーク、またはJavaやASP.NETなどの「エンタープライズで堅実な」言語を使用していないことに疑問を呈しています。

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

PHPには、リフレクション、インターフェイスなどの高度なオブジェクト指向機能があります。もちろん、PHPはtraitを介してネイティブかつクリーンに水平再利用をサポートします。

PHPに悪い評判を与えるが、同時にPHPコミュニティに力を与える悪いプログラマーとスクリプトキディがあります。PHPの処理は非常に簡単であるため、多くの場合、間違った方法で物事を行うことができますが、なぜ言語?。

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

(ホイップクリームを含む無料のCookieは、その場で誰か(クライアントまたはその他)を説得するという経験的証拠がある人に提供します)

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

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


9
まず第一に、プログラマーに対するすさまじい反PHPコメントをすべて報告してください。モデレーターの中には本当に削除するのが大好きなPHP開発者が少なくとも1人います
...-yannis

23
良いPHPコードを書く
チャールズスプレーベリー

42
ただ、ノート、私は本当に嫌い PHPの人々は、引数「FBは、PHPのビルドがある」をもたらすとき。つまり、大規模な分散型Hadoopのようなシステムと実際のものテンプレートに使用されるC. PHPにされている終ら部分に組み込まれて、BSですおよびUI、「FBはPHP上に構築されている」と言うのは十分ではありません
...-TC1

10
「...あっ、それはここにいくつかの素晴らしいUIのタッチを持っている原因と、はい、しかし、この場合には、「FBは、PHP上に構築されている」という私見をStackOverflowのは、CSSとJavaScriptで構築されているというようなものです@NB
TC1

13
PHPコードを維持したくないので、私はあなたを雇いません。PHPは、PerlやJavaScript、その他の急いでいる言語のような機能を獲得していますが、そのコアは急いで設計されており、変更することはできません。おそらく、いくつかのDjangoとRoRとGrailsの学習を検討し、言語にとらわれないようにする必要があります。
ジョブ

回答:


40

私が持っている唯一の答えはこれです:すべてが最悪です。

関数型プログラミングまたは手続き型プログラミングと比べて、OOPが優れている(クイック検索で明らかになる)ことに対する多くの議論を見つけることができます。あなたはPHPのオブジェクト指向サポートがそれを守ることを示しているようです。

Googleの空欄はひどいもので、何でも結果が見つかります。 Pythonは吸うルビーは吸うRailsは吸うPHPはダメJavaは吸う

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

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

PHPは私が個人的に最もよく知っている言語です。死ぬまで守ります。私はストレートのPHPコードまで、PHPフレームワークと協力し、PHP、Pythonの、していると、すべてのWeb開発のためのルビー(さらにJavaの)。一方が他方より特に優れているとは言えません。さらに重要なのは、開発者とアルゴリズムです。私は、多くの言語で驚くほど優れた完全にひどいコードを見てきました(特にPHPを使用しているので、特にPHPを使用しています)。


さてあなたの質問のために:それはあなたが誰に対処しているかに依存します

ビジネスマン

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

プログラマー

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


8
「優れた開発者なら誰でも、言語に関係なく、フロントエンドとバックエンドのすばらしいアプリケーションを作成できるはずです」-Malbolgeで試した後、それを繰り返してください。
マイケルボルグ

5
優れたプログラマーは、自分の知らない言語で優れたコードを書くことができるとは思いません。まあまあですが、良くありません。それは、あらゆる言語で適切なコードを作成するには、ライブラリと言語自体に関する十分な知識が必要だからです。
svick

4
同意しません; 優れた開発者は、優れたアプリケーションを作成するために必要な知識を習得できなければなりません。ライブラリと構文に関する十分な知識は重要ですが、それは優れた開発者が簡単に理解できるものです。はるかに難しいのは、たとえ言語がMalbolgeであっても、アルゴリズムと概念(そしておそらく忍耐力)です。または、私は素晴らしい開発者を考えています。
爆発の丸薬

7
success of an application has nothing to do with its code<-はい。しかし、人々は「PHPは悪い言語だ」と言っているとき、「PHPで書かれたアプリケーションが悪い」という意味ではなく、「PHPで書かれたアプリケーションはコードスパゲッティのために作業が面白くないことが多い」という意味です。確かに、PHPで書かれた素晴らしいアプリケーションがあります。しかし、この答えは、プログラマーがPHPを「悪い」と呼ぶときの意味を扱っているとは思いません。
ビリーONeal

2
@BillyONeal言語が「良い」か「悪い」かについてのメトリックは何ですか?アプリケーションは、すべてのもの...についての誰も心配コード。Linus Torvalds氏は、C ++がどれほどひどいものであるかについて暴言を述べました-プログラマーの中には悪いコードを書いているため、何かが悪いと言えます。
爆発薬

20

PHPには歴史があります。ほんの少し前だったのは今ではずっと良くなっていますが、多くの悪い習慣やパターンが奨励され、回避するのが困難な時がありました。ひどい動きをしているひどいPHPコードの全世代があり、新しいプログラマーが古いコードを読んで学んでいる限り、彼らは悪い振る舞いを学んでいます。PHPは今や黒幕の評判に値しないかもしれませんが、それでも確かにそれを獲得しました。

PHPを守るための最善の策は、現在の最新技術と誰もが知っている歴史とを慎重に距離を置いて区別することです。PHPはひどい言語ではないと言うことができますが、何年も業界にいる人と話をしていると、彼らの記憶はそうではないことを伝えます。

PHPチームがミスからどのように学び、言語を改善したかを見せてください。魔法の引用と登録グローバルの時代は終わりました。グローバルなすべてのパラダイム、セーフモード、およびmysql_escape_stringはなくなりました。実際のPHPプログラマーは常に名前空間とパラメーター化されたクエリを使用し、非推奨の機能を避け、常にライブラリコードをドキュメントルート外に置くことを説明します。

PHPが変更され、PHPプログラマーが変更されました。これが、PHPが今日のすばらしいプラットフォームである理由です。また、顧客がプレインストールすることがわかっている唯一のプラットフォームです。すごく大きい。

補足として、既存のCMSエンジンとフレームワークをPHPの大きな勝利として引用しないことをお勧めします。4日前のWebsenseセキュリティ調査のように、最近のWebサイト感染の94%がJoomlaやWordpressなどのソフトウェアを実行しているPHP Webサイトに対するものであることを指摘するリスクがあります。それはあなたが見たいと思うような会社ではありません。代わりにあなたのコードがされることを指摘方法すべてが他のものよりも安全。


1
+1-しかし-しかし、コードが複数の専門家によるコードピアレビューよりも「はるかに安全」であると主張することは、セキュリティの経験が半分ほどある人に多くの水を実際に保持することにはなりません。誰もがセキュリティのバグを書いています。コツは、悪者の一歩先を修正することです。
ビリーONeal

@BillyONealうん。最後の段落は、少し奇妙に感じて、セキュリティに対するアプローチを本当に再考させることを意図しています。PHPとPHP以外のWebアプリのセキュリティについて多くの調査を行いましたが、レポートはPHPに対して非常に歪んでいます。それはPHPが悪いと言っているわけではありませんが、セキュリティは本当の関心事です。
タイラー

1
「また、それはあなたの顧客がプレインストールすることを知っている唯一のプラットフォームです」この声明は私には全く間違っているようです。 PHPはプリインストールされています。ただし、これまで使用したすべてのLinuxディストリビューションには、Python 2.xが付属しています。いくつかの一般的なユーティリティがそれに依存していると思われます。
ThorSummoner

9

PHPはWebのCOBOLです。どちらの言語も尊重されませんが、多くの人がシステムを作成してシステムを構築し、それらをネイティブシステム(つまり、それぞれウェブと商業ビジネス)のほとんどすべての主要なコンピューターシステムに大量に存在させます。どちらの言語も、他のより人気のある言語の実践者によって軽lookedされており、それは主にツールをより良く学び改善したプログラマーによって実践された古くて時代遅れの習慣に基づいています。

PHPは非常に幸運であり、COBOLの生活を送る必要があります。 COBOLはFORTRAN以外の何よりも長い間存在しており、すぐに消えることはありません。日常的に使用されているCOBOLプログラムは、保守している人よりも古いものがたくさんあります。それは「新しい辛さ」ではないかもしれませんが、それと連動して稼げるお金は常にあるでしょう。


4

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

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

他の人の議論に何らかの理由があることを知っていることを示すと、あなたの視点はより強くなります。


2

どうして?

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

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


4
だから、答えは個人的にそれを無視し、それを無視することです。これは文化的な問題です。私はむしろそれに対処し、無知を撃退するために私の議論をより良く、より簡潔にすることを試みます。
-dukeofgaming

3
真空状態では、ここでのあなたのアドバイスに同意しますが、PHPは防御できません。私はいつものMark Zuckerbergが成功したかに驚嘆にもかかわらず、 PHPのawfulnessの:codinghorror.com/blog/2008/05/...
ジム・G.

1

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


1

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

ここで答えの組み合わせをお勧めします。

  1. 以下のようtylerlは言った、あなたは、現代のPHPが有意に良好、それは古いいとこだよりであることを示さなければなりません。の淫らさはなくなったcreate_functionincludeどこにでも手動で電話をかけるジャングルはなくなりました。
  2. PHPに障害があることを認めます。すべてのプログラミング言語に欠陥があります。そうでなければ、多くの真面目なプログラマーは、あなたの「ファンボイ」としての反応を完全に無視します。
  3. 他のプログラミング言語では難しいPHPで簡単なことを人々に示します。プログラミング言語は、いくつかのタスクを簡単にするように設計されており、必然的に他のタスクを難しくします。C?メモリ操作とビットハックは非常に簡単で、言語は非常にシンプルですが、大規模なアプリケーションの保守は困難です。Java?がなくfree、すべてが「オブジェクト指向」ですが、ランタイムが大きく、オブジェクト指向が制限される可能性があります。C ++?言語でプリミティブ型(intなど)とまったく同じように動作する型を作成できますが、それは非常に複雑です。PHP?プログラミングの知識がなくても簡単に開始できますが、その結果、インターネット上に大量のガベージコードが投稿されます。
  4. PHPの言語以外の利点を認識してください。PHPにはまだ、いろんなことがあります...作業するのが面倒です。しかし、設定もデプロイも簡単で、多くの追加ライブラリなしで「プラグイン」できる素晴らしいライブラリのセットが付属しています。

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


1
-1:なぜPHPを守ろうとしているのですか?それは吸う:codinghorror.com/blog/2008/05/...
ジム・G.

1
@JimG .: OPから依頼されたためです。私はここで悪魔の擁護者を演じています。私は自分でPHPを扱うことを本当に軽んじています。しかし、システムが動作するのが面倒だからといって、そのシステムについて良いことがないわけではありません。主要なf *** upsからでも学ぶことができます。:)
ビリー・オンアール

@BillyONealなぜあなたはそれを使うのが嫌いですか?自分で物事を決める。
ジョニー

@ジョニー:ほとんどの場合、大規模なシステムの構築には適していないスクリプト言語にすぎません。スクリプト言語は、ラピッドプロトタイピング、展開の容易さを実現するのに最適で、大規模な標準ライブラリが同梱されています。しかし、それらを使用して大規模なシステムを構築すると、コンパイル時のチェックと制約を実施できないため、メンテナンスが困難になります。PHPを柔軟にし、スクリプトシナリオに適したものにする(たとえば、変数を型指定しない)ことにより、コンポーネントを使用する数人以上のユーザーでシステムを構築するのが難しくなります。
ビリーONeal

@ジョニー:明確にするために-PHPで大規模なシステムを構築することは不可能だと言っているのではない-FacebookとCo.はそれが非常に可能であることを証明している。コンパイル時の構文とセマンティクスのチェックを向上させる言語を使用する場合よりも困難になるだけです。
ビリーONeal
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.