トップページtech
981コメント306KB

PHPがいかに駄目言語であるかをちゃんと説明

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/11/15(金) 20:57:08.46
age推奨で

他の言語と比較しながら、具体的にちゃんと説明してください!
0286デフォルトの名無しさん2014/01/19(日) 16:44:53.74
普段はor好きな言語は別にあるが、仕事の関係上PHPを使っているor使っていた人とか
0287デフォルトの名無しさん2014/01/19(日) 20:48:58.13
PHP使ってる人は欠点も知りたいだろうから一度はこのスレを開くかもね
二度目はなさげ
言語煽りスレ立ててる人は隔離スレにしたいんだろう
0288デフォルトの名無しさん2014/01/19(日) 22:52:55.36
古いPHPの話が多いから、古い人が多そう
0289デフォルトの名無しさん2014/01/20(月) 00:12:58.35
>>285
c/c++プログラマどころか、Javaプログラマにもc#プログラマすら成れなかったヤツだっている
Rubyの方がプログラム言語としてイケていても、Web開発にベストな選択肢だとは思えない
0290デフォルトの名無しさん2014/01/20(月) 03:26:19.69
PHPで長々とひどいソースコード書いて
おそらく多大な時間をかけたんだろう、Rubyとかなら5分もいかないようなものを「○○作れたー^^」とかいって
ブログ書いてる奴が多い
PHP自体でマシなアルゴリズムや記法を提供してやればマシになるのかなと思って
ちょっとPHPの言語仕様見直したけど、それも不可能だと悟った
彼らはなんなのアレ。マジアレ何。それで良いのかと問いかけたい。
ほんの一週間でいいからRubyやらPythonでまともな書き方を覚えたら
考えも変わってくれるとは思うんだけど

前提を疑えよな
その$とか->とか意味のない記号で埋め尽くされてるソースを見て
何かを感じれば他の言語を試すだろ普通は
プログラミングのような「誰がやっても同じようなもの」に対して
時間をかけて丁寧に一字一句かいていくとか、固執とかはいらないんだよ、

もっとササッとかいて、見やすい、速い、動く、  これだけで良い
こだわりを持って時間かけて何かやりたいならそれは間違いなくプログラミングでやるような事じゃないから
効率の悪いソースコードはリファクタリングでソースファイルごと削除される
PHPで書いてるソース全部がそれだからね
0291デフォルトの名無しさん2014/01/20(月) 03:38:55.74
SessionやCookie、暗号化みたいなものが、どこにあるのか分からない言語や
サーバーの設定に分厚いミドルウェアが必要な言語はちょっと...
0292デフォルトの名無しさん2014/01/20(月) 03:45:24.10
for-loopとイテレータのどちらが速いかみたいなことで年中考えこむのがRuby
PHPで書くのがはやいし、よほどバカでも間違いようがない
0293デフォルトの名無しさん2014/01/20(月) 04:12:11.67
>>290
>> $, ->
これ、PHPというより、Perlをdisってるよね。
問題はそこじゃないと思うけど
0294デフォルトの名無しさん2014/01/20(月) 04:15:03.60
>>292
今のRubyは君が思ってよりも速いよ。イテレータ(今は総じてブロックということが多いけど)で問題無い
0295デフォルトの名無しさん2014/01/20(月) 04:45:57.25
>>293
Perl使ってるの?なんで?
0296デフォルトの名無しさん2014/01/20(月) 05:52:52.35
Perlてもう時代遅れなん?色々焦ってPHP関連買いあさってある程度書けるようになって今度はちょこちょこC♯とObjective-C関連買い漁って猛勉強中
疲れてきました・・・
0297デフォルトの名無しさん2014/01/20(月) 06:22:20.63
なんか言っても無駄だろうけど学習順序が違うんだよ?
上辺だけ覚えてもたいして意味がない

本気でPCやプログラミング理解したいならハードウェア、OS、デバイスドライバ、コンパイラとか
そっからまず、ソースコードがどんな風になってるか、OSがどのように起動して何を読み込んで、Windowsはどういう設計になっているか
一通りを学ぶと
C#だのObjective-Cだのその程度のものを覚えるのに1日もかからなくなるんだけど

初心者はそこら辺の深部の勉強めんどくさいやりたくないーって何かを甘えてて、
手っ取り早く上辺技術の学習だけで済ませようとするから
いつまでたっても学習コストが下がらないし、覚えたところで初級〜中級レベルの事しかできない

ちゃんと低レイヤーから一通り理解してれば、新しい技術や言語の学習なんて躓くような場所じゃないんだぜ、な。
0298デフォルトの名無しさん2014/01/20(月) 06:43:50.42
なるほど!まずは俺は自作パソコンの基盤から勉強する必要がありそうだなw
0299デフォルトの名無しさん2014/01/20(月) 07:48:51.93
>>297
C#、Objective-Cごとき1日で覚えられるという奴のことなど聞くに値しない
0300デフォルトの名無しさん2014/01/20(月) 08:20:54.67
>>290
典型的な駄目なRubyistとはお前のこと
0301デフォルトの名無しさん2014/01/20(月) 08:21:33.75
>>296
あれこれ齧るより、一つの言語で、プログラミングの技量を上げた方がいいよ。
言語の差より、プログラマの技量の差の方が大きいから。
0302デフォルトの名無しさん2014/01/20(月) 08:26:07.69
プログラミングの技量あげるなら、PHPはやめとけ。rubyもな。
0303デフォルトの名無しさん2014/01/20(月) 08:29:36.08
rubyは1.9、2.0ではやくなったね
メモリ管理はまだまだだし、web経由で計測をするとイマイチだけどな
0304デフォルトの名無しさん2014/01/20(月) 08:54:18.97
>>299
1時間って言っとけばいいの?

劇的に構文が進化して新しい概念詰め込んだ言語ならともかく
既存の概念の書き方ちょっと変えた程度の言語はリファレンスにさっと目を通して終わりだろ
その程度が出来るようにならないなら一流とは程遠い
0305デフォルトの名無しさん2014/01/20(月) 09:46:12.57
>>297
別におかしなことは言ってないが
聞いてためになる話でもない
すべってる
0306デフォルトの名無しさん2014/01/20(月) 10:55:01.07
ゴミ
0307デフォルトの名無しさん2014/01/20(月) 13:06:49.03
ンーwwwwwwwwwwwwww
0308デフォルトの名無しさん2014/01/20(月) 13:43:15.49
MS Windows についてある程度、深く理解するためには、
C++ などの言語の知識があったほうが良いよ。

C++ でなくても、C の関数呼び出しの際に、構造体へのポインタを渡すなどのやりかたを知っていないと、
公開されている API すら満足に理解できないだろう。

そういったことが理解できずに、MS Windows がどのような設計になっているかなどを把握しようとしても、
ごく上っ面をなでてみた程度の理解しかできない。

逆に言えば、高級言語についてのその程度の知識もなければ、
それらの OS について、満足な理解は得られないのだから、このあたりは鶏と卵の話に他ならないよ。

古典的な Unix 系の OS なら、C の知識だけで、かなりのところまでは理解できるようになるが、
それらの OS と、C の知識を習得しただけの人間なら、
そこからさらに C#, ObjectiveC などを理解するには、1日や、1時間はちょっと吹かしすぎだ。

まあすべては、理解というのを、どの程度の理解と定義するかで上記の話は違ってくるが。
0309デフォルトの名無しさん2014/01/20(月) 13:49:18.26
学習速度ってIQだからね
0310デフォルトの名無しさん2014/01/20(月) 14:10:17.87
一瞬見た図形をいくつ正確に記憶していられるかのIQテストがあるだろ
新しいプログラミング言語の言語仕様を覚えるなんてのは、
それの30分とか1時間のバージョンのIQテストのようなもの

一回その「短時間記憶領域」に記憶したら
その後でC#やObjective-Cを今後も使うっていうならそのまま頭の中で反復記憶して「長時間記憶していられる領域」にも記憶させる
逆にいえばC#なんかは既に昔にそれやってて、多分30分〜1時間くらいで覚えてた
世の中にはそういうのもいるからセンスない奴がこっちに来ると悲惨な目に合う
0311デフォルトの名無しさん2014/01/20(月) 14:19:07.06
Java 以降の、Virtual Machine 系の言語は、GUI などのユーザインターフェイス層や、
仮想的なネットワーク層などの、あらゆるものを取り込んで、
OS の上に、もう一つの OS を構築したようなものになっているし、
Windows などの OS のほうも、GUI などのユーザインターフェイス層まで OS が取り込んで面倒をみるようになっているから、

どちらかをすみからすみまで学べば、もう一方の概念を理解する助けにもなるが、
これは上層が下層に食い込み、下層も上層に食い込んで、
境界線が溶けちまったって話のように思える。

このあたりもまあ、下層と上層をどのように定義するかって話だが。
0312デフォルトの名無しさん2014/01/20(月) 16:38:51.26
やっぱタイプセーフな言語の方がいい
そうでない言語はどんぐりの背比べ
0313デフォルトの名無しさん2014/01/20(月) 17:11:58.58
そもそも才能のない人が平均的なプログラマになるキャリア戦略なんてものが、
LAMPスタックでのPHPerから、下のレイヤに向かっていくしか思い浮かばない
0314デフォルトの名無しさん2014/01/20(月) 17:24:56.29
デスクトップアプリケーションは途方もない工数をかけてc++で作るだろうし、
Javaは、Javaで出来た分厚いJava世界を作っているし、
世界の互換性なんて大体は神話のようなものだから、
技術的資料を可能な限り読まなくて済むPHPとcがベストな選択肢だって思っている
0315デフォルトの名無しさん2014/01/22(水) 05:58:06.71
仕事で初めて使ったんだけどオーバーロード使えないのかよ
代替手段あるんだろうけどオーバーに使えないって
0316デフォルトの名無しさん2014/01/22(水) 07:57:39.86
トレイト
0317デフォルトの名無しさん2014/01/22(水) 15:28:55.78
オーバーロードって、普通メソッドオーバーロードとか演算子オーバーロードって思うよな
PHPはその辺がトチ狂ってる
0318デフォルトの名無しさん2014/01/22(水) 15:34:52.51
10年くらいRejectされ続けてるね
説得性のあるリクエストを出せば実装されるかもよ?
0319デフォルトの名無しさん2014/01/22(水) 16:04:46.00
PHPにはInterfaceもタイプヒントもある。
しかし動的型の言語でオーバーロードはいらねーよバカといわれるのが普通。
PythonにもRubyにもない。
0320デフォルトの名無しさん2014/01/22(水) 16:36:08.15
演算子オーバーロードはRubyにはあるけども
あれのせいでRubyの学習曲線歪ませてるぐらい入れない方が良いもの

メソッドオーバーロードはLLにいらねーな
0321デフォルトの名無しさん2014/01/22(水) 16:37:06.06
>>319
オーバーロードとは少し違うけど名前付きコンストラクタが自然に書けない
ファクトリでラップするのもダルいし
PHP以外のスクリプトでは割と「普通」に使えるんだけどな
0322デフォルトの名無しさん2014/01/22(水) 16:38:07.63
PHPにオーバーロードはある
あるが一般的に言うオーバーロードではない
0323デフォルトの名無しさん2014/01/22(水) 16:40:40.55
マジックメソッドはなんだかな
0324デフォルトの名無しさん2014/01/22(水) 16:42:10.98
>>319
タイプヒントはオブジェクトの振る舞いを定義するものじゃなくてデバグ用だな
いきなりNoMethodErrorがでて初心者が「ファッ!?」となることがなくなる
0325デフォルトの名無しさん2014/01/22(水) 17:02:38.15
>>321
名前付きコンストラクタというのを知らなかったんでググってみたんだけど、これじゃ駄目なの?

class Game
{
  public function __construct($game_type)
  {
    $this->game_type = $game_type;
  }

  static function createSinglePlayerGame()
  {
    return new Game(0);
  }

  static function createMultiPlayerGame()
  {
    return new Game(1);
  }
}
0326デフォルトの名無しさん2014/01/22(水) 18:27:51.60
static function createSinglePlayerGame() {
$c = get_called_class();
return new $c(1);
}
のほうがいいかな
けっきょくは__construct()を可変引数にしてごにょる
0327デフォルトの名無しさん2014/01/22(水) 18:34:24.82
あ、あとGameのコンストラクタはprotectedで
まあクライアントスクリプトのすっきり感の違いかな?
0328デフォルトの名無しさん2014/01/23(木) 01:51:40.84
マジックメソッドはコンパイル時に解決されてるから理解しやすいのが利点だな
黒魔術的なことをしなくてもいい
ただメタプログラミングが簡単じゃないとtraitがいまいち活きない気もする
0329デフォルトの名無しさん2014/01/23(木) 05:40:43.36
プリミティブ型でもタイプヒンティング出来るようになるって言うのはどうなったんだろう
大分前にそういう話を聞いたんだが
トレイトとかネームスペースとかジェネレーターとかはどうでも良いけど、本格的なタイプヒンティングは欲しい機能だ
0330デフォルトの名無しさん2014/01/25(土) 13:04:04.62
phpは些細なことでもネットで情報共有する文化があるから良い
フレームワークも色んな種類があるし進化も淘汰も速い
Javaは言語仕様はシンプルだけど最低限の機能以外本当に何もない言語
その上コミュニティが閉鎖的だから、オレオレutilとかオレオレfwが横行してる
やっぱ初心者はphpやった方がいいよ
0331デフォルトの名無しさん2014/01/25(土) 17:10:19.10
PHP初心者ですけど皆さんどんなエディタ使ってるんですか?
0332デフォルトの名無しさん2014/01/25(土) 18:10:13.70
>>330
Symfony2,laravelとCakePHP、Zendぐらいしか選択肢ないだろ
0333デフォルトの名無しさん2014/01/25(土) 19:58:27.24
Cから入るよりPHPから入るほうが幾分かマシではあるけどrubyから入るのが一番良い
PHPだとforeachとかwhileとか旧世代の文法でロジック組まなきゃいけなくなる
0334デフォルトの名無しさん2014/01/25(土) 20:03:50.66
旧世代っていうけど、Linuxはその旧世代の
更に前のC言語で作られているんだぜ?
0335デフォルトの名無しさん2014/01/25(土) 20:37:28.61
マ板ならRubyでもいいがム板ならHaskellを推す
0336デフォルトの名無しさん2014/01/25(土) 22:04:05.58
>>334
死ねゴミ
0337デフォルトの名無しさん2014/01/25(土) 22:06:22.27
> PHPだとforeachとかwhileとか旧世代の文法でロジック組まなきゃいけなくなる
C言語にはforeachすらないからなぁ。
0338デフォルトの名無しさん2014/01/25(土) 22:16:25.41
そもそも、なんでいきなりLinuxの話になるんだよ知的障害か・・・
0339デフォルトの名無しさん2014/01/25(土) 22:17:49.77
Linuxの話じゃなくて、C言語の話だろ。
0340デフォルトの名無しさん2014/01/25(土) 23:04:15.01
githubとRoRのおかげで、人類は衰退しました
0341デフォルトの名無しさん2014/01/25(土) 23:11:36.72
2007年以前のム板って、本当のプログラマが居たはずなんだけどね
0342デフォルトの名無しさん2014/01/25(土) 23:15:28.33
LinuxやC抜きでPHPの話するって、本物のバカだろ
0343デフォルトの名無しさん2014/01/25(土) 23:29:07.35
これが現実。PythonやRubyなんてPHPの敵ですらない
ScalaなんてRuby以下の闇の力
ttp://redmonk.com/sogrady/2014/01/22/language-rankings-1-14/
0344デフォルトの名無しさん2014/01/26(日) 00:00:23.51
Haskellが意外に高い位置にいて驚いた
0345デフォルトの名無しさん2014/01/26(日) 00:36:19.98
>>341
今でもいないことは無い
けどもう技術交換するに値しない場所だから雑談メインになっている
0346デフォルトの名無しさん2014/01/26(日) 02:28:56.20
もう配列配列配列でやるからphpでいいよ…
配列があれば幸せだ
0347デフォルトの名無しさん2014/01/26(日) 02:38:28.61
この感覚!?CakePHPerか?
0348デフォルトの名無しさん2014/01/26(日) 02:46:49.72
>>346
PHPの配列は、順序付き連想配列だよ。
ハッシュ+順序と考えたほうが正確。
0349デフォルトの名無しさん2014/01/26(日) 03:43:38.01
なんでPHPerってPHP覚えた?だけで力尽きるの

PHPしか出来ない、覚えられないって人はまずプログラミング側に来るべき人じゃないと本気で思う
0350デフォルトの名無しさん2014/01/26(日) 03:52:56.36
力尽きた人なんていないだろw
0351デフォルトの名無しさん2014/01/26(日) 04:02:02.88
>>349
PHPだけで構文解析器ぐらいまで書けるし、
サーバーやデータベースについてでも学んだ方が有益だから
0352デフォルトの名無しさん2014/01/26(日) 04:06:02.34
foreachで困るほどでもないからな
C#のLinqは優れてると思うが、あれは型指定出来てVSで補完が利くから便利なんであって、スクリプト言語とは方向性が違う
0353デフォルトの名無しさん2014/01/26(日) 04:09:41.68
ORMのある時代にLinqって役に立つのか?
0354デフォルトの名無しさん2014/01/26(日) 04:19:29.70
PHPerたちには.netやjavaよりQtの方が魅力的に映っているはず
0355デフォルトの名無しさん2014/01/26(日) 04:54:16.58
Qtはマルチプラットフォームでありながら
ネイティブで動いてユーザーインターフェースに
HTML、CSS、JavaScriptを使うんだよな。
PHPというよりもウェブ系全体に魅力的。
0356デフォルトの名無しさん2014/01/26(日) 06:11:34.29
>>349
各言語で具体的になにができたら「出来る」っていえるか教えてくれ
わからないことはわからないまま実行せずに、その都度マニュアルみたら覚える必要なくない?
むしろ「はぁあ!? なんでエラーやねん!ちゃんとやってるやろ糞機械が!バグってるわ」と喚く輩に対し
「プログラムは書いた通りにしか動かない。エラー文読めばいい」と返せるであろう俺らは喧嘩せずに解りあうべき
プログラミングで大切なことは癇癪起こさずマニュアル読む姿勢だと俺は思うんだが
0357デフォルトの名無しさん2014/01/26(日) 07:24:20.91
C++だとエラー文読むのは憂鬱になってくる
0358デフォルトの名無しさん2014/01/26(日) 07:55:18.71
>>356
プログラミング、しかもPHP程度で癇癪って発想がまずわけわからない・・・
お前はむいてないわ やめとけほんと
来る世界間違えてる
0359デフォルトの名無しさん2014/01/26(日) 08:02:16.72
>>356
> プログラミングで大切なことは癇癪起こさずマニュアル読む姿勢だと俺は思うんだが

挫けるぜ。これがPHPだ
http://www.php.net/manual/en/function.stats-absolute-deviation.php
0360デフォルトの名無しさん2014/01/26(日) 09:15:27.96
ペチパーの諸君よ とりあえずruby「も」やっとけよ
言語仕様1日かけて読めば、ペチパーってバカにされる理由が分かる
別にそれを知った上でPHP使うとかは止めないし、
ただ洗練された言語構文を知らないままに、全然何もシンタックスシュガーの入ってないPHPが
当たり前の状態だと思ってる状態が良くないんだ
0361デフォルトの名無しさん2014/01/26(日) 09:33:18.36
>>360
rubyもpyも書けと言われたら書けるけど
rubyの方はend end endに耐えられなくなった

perlは出来んことはないと思うけど言語仕様もライブラリも全然知らんままw
0362デフォルトの名無しさん2014/01/26(日) 09:51:53.61
>>361
end end end って、割と起きないと思うけどな
まあそもそも、それで耐えられん理由もよー分からんが
0363デフォルトの名無しさん2014/01/26(日) 09:58:30.21
>>362
いや、実際黙って耐えるけどさw
}}}で済むのに面倒だなーと
0364デフォルトの名無しさん2014/01/26(日) 10:04:16.86
>>363
環境によっては自動で補完されるよ、俺は自分で書く方が好きだけれども
まあ、LISP系のコーディング規約みたく、1行に閉じ括弧纏めたいって話なら流石に仕方ないが
0365デフォルトの名無しさん2014/01/26(日) 11:01:52.02
>>360
>言語仕様1日かけて読めば、ペチパーってバカにされる理由が分かる

こういうふうに抽象的に煽るだけで具体例を書かない人は何erであってもエンジニアとしてバカにされます
0366デフォルトの名無しさん2014/01/26(日) 14:14:40.30
>>353
慌ててネットで検索してクエリ式でLinq使ってるのみたんだろうけど、LinqとORMは関係ないから
0367デフォルトの名無しさん2014/01/26(日) 14:32:38.79
Linq楽だけど遅いぞ
スクリプト言語ならともかくWindowsアプリ開発しようっていうC#であれは許容されるのか?
あっちの文化はよく分からんけど、性能が必要ならVC++使えって住み分けなのかね?
0368デフォルトの名無しさん2014/01/26(日) 15:42:20.77
そもそもWindowsじゃアプリに性能とかあんま求められてないよ
何故かハードウェアのほうの性能あげればいい、ってのがまかり通っちゃう世界だし
0369デフォルトの名無しさん2014/01/26(日) 15:57:44.40
というかWindows関係なくね?

それって、同じコストをかけるのであれば、開発時間を長くするか
性能が高いハードウェアを買うかって話でしょ?
極端に言えば、アセンブラで書くか高級言語で書くかって話。

ハードウェアの性能を上げれば、アプリのすべての部分の性能が上がる。
でもアプリの性能をあげようと思っても、局所的にしか上がらないし
結果もすぐには見えてこないよね?
0370デフォルトの名無しさん2014/01/26(日) 16:00:39.22
死ねゴミゴミゴミゴミwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0371デフォルトの名無しさん2014/01/26(日) 17:06:40.06
>>360
「やっとく」って何?
何かつくれってこと?
0372デフォルトの名無しさん2014/01/26(日) 23:58:46.38
Linqは遅延実行されるから多くの場合パフォーマンス的に有利
0373デフォルトの名無しさん2014/01/27(月) 00:15:56.14
    ,   ― ノ)
  γ γ‾   \
  |  / 从从) )   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ヽ | | l  l |〃 < さくら恥ずかしぃよぉ〜
  `从ハ ‾ ーノ)   \________
    |ヽ `  \
    | ペ ノ  ノ\
    | // /'   )
    ( ノ ヾ / y  /
    ‘  / / /
      / イ (
     /  / | )
    ( /  /  /
    ‘uノ (__/∴∵
      ∵∴∵∴∵
        ∵∴∵
        ー--- '‾ ー─--'‾
0374デフォルトの名無しさん2014/01/27(月) 03:33:10.29
>>368
おまえが性能を求められるソフトウェアを書くような機会の与えられない三流以下なんだろ
0375デフォルトの名無しさん2014/01/27(月) 03:35:23.36
>>360
なんでわざわざPHPを使ってるかぐらい考えろ。死ね屑。
0376デフォルトの名無しさん2014/01/27(月) 14:37:24.39
考えるまでもなくPHPしか使えないからだ。死ね屑。
0377デフォルトの名無しさん2014/01/27(月) 17:40:07.53
ペチパー発狂
0378デフォルトの名無しさん2014/01/27(月) 18:42:30.53
PHPが駄目なのではない
PHPerが駄目なのだ
0379デフォルトの名無しさん2014/01/27(月) 19:27:10.85
PHPを笑うものはPHPに泣く
0380デフォルトの名無しさん2014/01/27(月) 19:32:21.31
スケーラブルに開発できる言語って実はPHPとcじゃないのか
0381デフォルトの名無しさん2014/01/27(月) 21:20:02.34
PHPをHTMLテンプレート言語だと思ってるやつ、いまだに腐るほどいるしな
実際はすでにサーバーサイド言語入りしてる
0382デフォルトの名無しさん2014/01/28(火) 00:05:45.99
>>381
結局、Webには変わらんから板違いなんだけどね
0383デフォルトの名無しさん2014/01/28(火) 02:07:51.25
CLI操作できるんだしこっちだよ
0384デフォルトの名無しさん2014/01/29(水) 08:33:09.30
結構スレが延びてて驚いたぞ

意外にも欠点がほとんど出てないな

LLの欠点のほうが多く出てるな
0385デフォルトの名無しさん2014/01/29(水) 08:45:40.15
よくできたPHPerは他から叩かれる欠点を(それが偏見で欠点でなくても)よく理解した上で活用してるからな
Rubyに比べてよく訓練されてる
■ このスレッドは過去ログ倉庫に格納されています