なんでPHPって嫌われているんですか?
あれが出来ない、これが出来ないって言われること多いと思いますが、実際、出来ることがほとんどのような気がします。
Ruby on Railsがもてはやされていますが、PHPのフレームワークはRuby on Railsの影響を受けているものも多いですし、Ruby on RailsじゃなくてYiiとかのPHPフレームワークでも良いのかなと。
PHPで出来ることがほとんどというのは事実です。さらに言えば、ほとんどではなく「全て」でしょう。事実facebookもPHPをC++に変換して動作させているように、複雑なプログラムを書けるかどうかはプログラマの腕に依存します。
しかしながら同様にPHPにできることは他の全ての言語でも可能です。PHPというのはプロダクトを作成する手段であって目的ではありません。なぜPHPを採用するのか。おそらくそれはウェブとの親和性が高いゆえに導入コストが低いことに起因してるのでしょう。ですから他言語に精通している者がいるのならばPHPを特別選択する理由はあまりないのです。
PHPが嫌われがちというのは一部の風潮であって、全ての人がそう言っているわけではありません。ですが、私個人の意見を言わせて頂くとPHPのプログラミングはRuby(Rails)よりも生産性が低く、ストレスを感じがちです。
具体的にはPHPの中括弧のネスト、セミコン、ダラーマークがRubyでは必要なく、書く分にも読む分にもストレスレスです。さらにinjectのような標準モジュールが強力で、9割型の処理に対して標準機能が備わっているのでそれを利用するだけで大抵の機能を実装することができます。またRuby自体の特性である強いオブジェクト指向とRailsのMVCが非常にマッチしていて、モデルのメソッドを簡単にカスタマイズできるほか、自作メソッドの追加やmoduleのインクルードによってMVCを非常にスムーズに機能します。(例えばCakePHPではモデル処理が配列で返ってくるのでカスタマイズが難しい)その他、配列を「[1,2,3] + [4,5]」というように簡単に結合できてしまうなど、Rubyがプログラマにとってストレスレスなプログラムを目指していることも要因です。
さらにRailsはRubyを代表するフレームワークであるため、ノウハウが蓄積しておりStack Overflowやgithubを覗けば大抵の問題は解決します。ライブラリもgemとして大量に存在しており、インストールもシステム側で隠蔽されるのでアプリケーションが肥大させずに様々な機能を利用できるのも魅力的です。
ただこれはあくまで私個人の意見なので、トピ主さんはそう感じない可能性が大いにあります。百聞は一見に如かずなので、まずは触ってみて興味が喚起されれば幸いです。
PHPerだけど、このレスを読むとRuby on Rails触ってみたくなるから不思議。感情的にDisられた経験しかなかったんだなあ...。
railsとかは大変興味がありますしぜひ使えるようになりたいと思ってるPHPerですが、手続き型から入った身となるとrubyのオブジェクト指向は硬すぎたりするんですよ・・・あとphpの前はcからプログラミングの勉強を始めたので癖でセミコロン入力しちゃったりとか(エディタによっちゃプラグインとかで解決できるけど...個人的にはオブジェクト指向の部分が難しいところかなと思ってます。
コメ主さま、参考になるご意見ありがとうございます!!
>具体的にはPHPの中括弧のネスト、セミコン、ダラーマークがRubyでは必要なく、書く分にも読む分にもストレスレスです。
何気にその辺はストレスを感じず自分の場合は書けたり読めたりするので大丈夫かもしれません。
>injectのような標準モジュールが強力で、9割型の処理に対して標準機能が備わっているのでそれを利用するだけで大抵の機能を実装することができます。
調べてみたのですが何やら難しそうでした。。。使えるようになると便利なのでしょうね。
>またRuby自体の特性である強いオブジェクト指向とRailsのMVCが非常にマッチ
PHPはPHP5からオブジェクト指向を取り入れたものの、最初からそうであった訳ではないですもんね。Rubyの場合は純粋にオブジェクト指向言語。いいですよね〜。
>モデルのメソッドを簡単にカスタマイズできるほか、自作メソッドの追加やmoduleのインクルードによってMVCを非常にスムーズに機能します。(例えばCakePHPではモデル処理が配列で返ってくるのでカスタマイズが難しい)
CakePHPは使ったことが無いですが、モデル処理というのは主にDBへのリクエストから戻って来るのが配列で帰って来るということでしょうか?
Active Recordを使う場合は戻ってくるのはオブジェクトですかね。
>配列を「[1,2,3] + [4,5]」というように簡単に結合できてしまうなど、Rubyがプログラマにとってストレスレスなプログラムを目指していることも要因です。
1..10みたいなとか確かにわかりやすいですよね。その配列結合も楽チンでいいですね。
>さらにRailsはRubyを代表するフレームワークであるため、ノウハウが蓄積しておりStack Overflowやgithubを覗けば大抵の問題は解決します。
PHPの場合はフレームワークが乱立しているので、ノウハウも分散されてしまいますからね〜。。。その点、pythonやrubyなんかはフレームワークの数も限定されますし、ノウハウも集中しやすいというメリットがありますね。
>ライブラリもgemとして大量に存在しており、インストールもシステム側で隠蔽されるのでアプリケーションが肥大させずに様々な機能を利用できるのも魅力的です。
gemというのはPHPで言うところのpearであったりとか、PHPの各フレームワーク毎に運営元やユーザーから提供されているライブラリという感じでしょうか。この辺もrubyの場合は主力なフレームワークが絞られるのでライブラリの蓄積も集中していくというメリットがあるのでしょうね。
>まずは触ってみて興味が喚起されれば幸いです。
一応、勉強はしてみたのですがいろんな書き方が出来るし、変数なのか関数なのかわかりづらいし、可読性が心配になりました。そのため、Webのサーバーサイドに限ってはPHPでいいやってなってしまったんですよね。
>PHPerですが、手続き型から入った身となるとrubyのオブジェクト指向は硬すぎたりするんですよ・・・
javascriptも全てがオブジェクトのオブジェクト指向ですよ!PHPもPHP5からオブジェクト指向の概念導入されてますし。
>あとphpの前はcからプログラミングの勉強を始めたので癖でセミコロン入力しちゃったりとか
rubyもセミコロン入れてもエラーにはならないみたいです。その辺はオプションのようでした。
あとメソッド内でreturn付けなくても、値が変えるとかも、return付けても問題ないみたいな。
確かにPHPで大抵のことはできちゃいます。ただし多少の出来無いこともある。これに関しては多言語などで柔軟に対応すれば問題ない。よくPHPerが嫌われる理由としてはphp以外の言語で使わないとかよく言われ明日がその辺に関してはよくわかりません。少なくとも私はそんなこと全く思わないので・・・rubyたrailsは確かに生産性が高いです。しかし、それは今までにphp含む様々な言語によって蓄積されたノウハウを元に開発されたものであり当然生産性などは上がるものです。ただ単にそれだからやれ乗り換えろだのいうのは賛成しかねますし、その生産性が高いrailsを意識してphpのフレームワークも設計製作改良がされているという事実を知っておくべきや思います。ただし、使ってみたら?とか言われた時に拒まずに少しでも触ってみようという期外は大事だと思います。ちゃんと新しい技術などを取り入れる風潮が身についていないとたとえphpに便利なフレームワークがあったとしても使おうとしなくなるからです。ただしチームで開発とかになると環境は統一行うべきなのでそれなりにphp以外の技術にも触れておくのは重要です。(別に言語じゃなくてのインフラ構築とかPMとして能力が高いとかでもいいんですよ。ただしPMはとても重要
※これはあくまで私の主観ですので
あとphp適当に書いてると長いコードになった場合すごく読みにくくなるのでちゃんとコーディングルールを決めて開発する大切さを教えてくれます。※業務中とかに絶対試しちゃダメよ
ありがとうございます!!
>ただし多少の出来無いこともある。
例えば、mixinとかはphpではサポートされてないですね。
PHPでも5.4からは traits がありますね。mixin と同じ物ではありませんが。
>traits
おー、初めて知りました。調べてみたところ継承関係をむすばずに再利用できるってかいてあったので、mixinっぽいものになってますね!
generatorとかもあるんですね。phpって。
確かYahoo!も独自言語での開発をやめてPHPに乗り換えたんじゃなかったっけ…。
PHPなんだかんだで強いですよね。
みんな、肝心な事を言わないね。PHPはHTMLとの親和性が高いから広く利用されているんであってガチプログラマなら、HTMLやCSSなどのデザイン面を考慮しないから良いイメージを持ってない(興味ない)ってだけでしょ
他のプログラミング言語もHTMLベースのテンプレートがありますし、hamlのような簡略化されたものも広く存在していますが、PHPだけどうしてHTMLとの親和性が高いとえるのでしょうか?
htmlを出力するんじゃなくて、htmlに埋め込めるからファイル一元化、そのまま動くよってことだよね。
HTMLに直接PHPをかけるっていうことですね!
他の言語ではテンプレートエンジンかまさないでHTMLに出力出来ないんですね。ん〜、言われなければ気付かなかった。
自分はテンプレートエンジン使わずに直接、PHPで出力しちゃうので、PHPの恩恵を受けていたのですね。
ただ、直接埋め込むことによって、小規模の物以外ではビジネスロジックとプレゼンテーションロジックがごっちゃになりやすい、という欠点にもなっています。
そうですね、ビジネスロジックの部分をHTMLにPHPで書いてしまうと、スパゲッティーコードになってしまいますね。
あくまで、PHPをHTMLに埋め込むにしても、プレゼンテーションに関わるところだけに留めるのが宜しいのかなと。つまりテンプレートエンジンが担当しているような範囲に限定した使い方ということで。
自己レスです。
PHPはRubyやJavascriptのように辿ると、全てのクラスの親となるような基底クラスが無いというのも場合によっては不便なのかもしれませんね。
Evan Priestley 氏がこんな事を言っていましたよ。
"どのプログラミング言語を使うかってのは、多くの人が考えるほど重要ではないと思う。ぼくの経験上、一番PHPをバカにし、言語の重要性をうそぶく連中は、大体自分たちが提唱する言語でもロクな仕事ができないことが多い。)"
他の言語と比べて(素人でも)入りやすい → 素人によってひどいコードが量産される → PHPerひでぇ! → PHPがよくないんだよ
こういう流れでは?
たいがいどのサーバーでも動くPHPはウェブ限定だったら最強だと思うんだが。自分のサーバーだったらRubyでもいいんだが他人のサーバーだと権限の都合でPHPかPerlぐらいしか選択肢がない。
みんなの回答 8 件
PHPで出来ることがほとんどというのは事実です。さらに言えば、ほとんどではなく「全て」でしょう。事実facebookもPHPをC++に変換して動作させているように、複雑なプログラムを書けるかどうかはプログラマの腕に依存します。
しかしながら同様にPHPにできることは他の全ての言語でも可能です。PHPというのはプロダクトを作成する手段であって目的ではありません。
なぜPHPを採用するのか。おそらくそれはウェブとの親和性が高いゆえに導入コストが低いことに起因してるのでしょう。ですから他言語に精通している者がいるのならばPHPを特別選択する理由はあまりないのです。
PHPが嫌われがちというのは一部の風潮であって、全ての人がそう言っているわけではありません。ですが、私個人の意見を言わせて頂くとPHPのプログラミングはRuby(Rails)よりも生産性が低く、ストレスを感じがちです。
具体的にはPHPの中括弧のネスト、セミコン、ダラーマークがRubyでは必要なく、書く分にも読む分にもストレスレスです。
さらにinjectのような標準モジュールが強力で、9割型の処理に対して標準機能が備わっているのでそれを利用するだけで大抵の機能を実装することができます。
またRuby自体の特性である強いオブジェクト指向とRailsのMVCが非常にマッチしていて、モデルのメソッドを簡単にカスタマイズできるほか、自作メソッドの追加やmoduleのインクルードによってMVCを非常にスムーズに機能します。(例えばCakePHPではモデル処理が配列で返ってくるのでカスタマイズが難しい)
その他、配列を「[1,2,3] + [4,5]」というように簡単に結合できてしまうなど、Rubyがプログラマにとってストレスレスなプログラムを目指していることも要因です。
さらにRailsはRubyを代表するフレームワークであるため、ノウハウが蓄積しておりStack Overflowやgithubを覗けば大抵の問題は解決します。
ライブラリもgemとして大量に存在しており、インストールもシステム側で隠蔽されるのでアプリケーションが肥大させずに様々な機能を利用できるのも魅力的です。
ただこれはあくまで私個人の意見なので、トピ主さんはそう感じない可能性が大いにあります。
百聞は一見に如かずなので、まずは触ってみて興味が喚起されれば幸いです。
確かにPHPで大抵のことはできちゃいます。
ただし多少の出来無いこともある。これに関しては多言語などで柔軟に対応すれば問題ない。
よくPHPerが嫌われる理由としてはphp以外の言語で使わないとかよく言われ明日がその辺に関してはよくわかりません。少なくとも私はそんなこと全く思わないので・・・
rubyたrailsは確かに生産性が高いです。
しかし、それは今までにphp含む様々な言語によって蓄積されたノウハウを元に開発されたものであり当然生産性などは上がるものです。
ただ単にそれだからやれ乗り換えろだのいうのは賛成しかねますし、その生産性が高いrailsを意識してphpのフレームワークも設計製作改良がされているという事実を知っておくべきや思います。
ただし、使ってみたら?とか言われた時に拒まずに少しでも触ってみようという期外は大事だと思います。
ちゃんと新しい技術などを取り入れる風潮が身についていないとたとえphpに便利なフレームワークがあったとしても使おうとしなくなるからです。
ただしチームで開発とかになると環境は統一行うべきなのでそれなりにphp以外の技術にも触れておくのは重要です。(別に言語じゃなくてのインフラ構築とかPMとして能力が高いとかでもいいんですよ。ただしPMはとても重要
※これはあくまで私の主観ですので
確かYahoo!も独自言語での開発をやめてPHPに乗り換えたんじゃなかったっけ…。
みんな、肝心な事を言わないね。
PHPはHTMLとの親和性が高いから広く利用されているんであって
ガチプログラマなら、HTMLやCSSなどのデザイン面を考慮しないから
良いイメージを持ってない(興味ない)ってだけでしょ
自己レスです。
PHPはRubyやJavascriptのように辿ると、全てのクラスの親となるような基底クラスが無いというのも場合によっては不便なのかもしれませんね。
Evan Priestley 氏がこんな事を言っていましたよ。
"どのプログラミング言語を使うかってのは、多くの人が考えるほど重要ではないと思う。ぼくの経験上、一番PHPをバカにし、言語の重要性をうそぶく連中は、大体自分たちが提唱する言語でもロクな仕事ができないことが多い。)"
Evan Priestley 氏がどうやってプログラミングを学んだかを教えてください | Knoh
http://knoh.jp/answers/d65c7a82他の言語と比べて(素人でも)入りやすい → 素人によってひどいコードが量産される → PHPerひでぇ! → PHPがよくないんだよ
こういう流れでは?
たいがいどのサーバーでも動くPHPはウェブ限定だったら最強だと思うんだが。
自分のサーバーだったらRubyでもいいんだが他人のサーバーだと権限の都合でPHPかPerlぐらいしか選択肢がない。
関連するトピックス