PHPがいかに駄目言語であるかをちゃんと説明
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/11/15(金) 20:57:08.46他の言語と比較しながら、具体的にちゃんと説明してください!
0486デフォルトの名無しさん
2014/02/11(火) 12:52:17.01http://netyougo.com/wara/10154.html
「怒らないでマジレスしてほしいんだけど」とは、2chにおける有名なコピペである。
以下の様な書き込み。
怒らないでマジレスしてほしいんだけど
なんでこんな時間に書き込みできるわけ?
普通の人なら学校や会社があるはずなんだけど
このこと知った親は悲しむぞ?
現実見ようぜ
こんな時間に書き込んでいる人物について批判をしているが、この書き込みを行っているユーザーも同様ということに気がついていない、というもの。
0487デフォルトの名無しさん
2014/02/11(火) 13:52:31.09なんだこのゴミ氏ねゴミ
0488デフォルトの名無しさん
2014/02/11(火) 15:09:49.18気持ち悪
0489デフォルトの名無しさん
2014/02/11(火) 15:18:42.23ジャ・・ジャ・・ジャ・・ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwwwwww
0490デフォルトの名無しさん
2014/02/11(火) 16:38:05.140491デフォルトの名無しさん
2014/02/11(火) 16:39:13.140492デフォルトの名無しさん
2014/02/11(火) 16:40:32.40死ねよコミュ障
0493デフォルトの名無しさん
2014/02/11(火) 16:59:03.85c++でポリモーフィズムやテンプレート使うと継承や仮想関数について理解する必要できるけど、
組込開発やUnix方面では殆どcで書くしかないから、cの作法について熟知してる方がマシだし
Pythonだと毎度ながら変数への代入を間違えて、つまらないデバッグに時間を取られてしまう
PHPの場合、Haskellが型チェックすることで効率が良くなるようなコードなんて書きそうにない
仕事でcとPHPを軸にして趣味でHaskell製アプリを書くと、とても幸せになれそう
0494デフォルトの名無しさん
2014/02/11(火) 17:17:16.02うん、理屈ではそうなんだけど、
実際やってみると、開発時間的には大差ないよ。
0495デフォルトの名無しさん
2014/02/11(火) 17:26:57.57嘘つけ
0496デフォルトの名無しさん
2014/02/11(火) 17:32:00.66開発時間が半分になる言語があったら
開発費用も半分になるんだ。
開発時間も開発費用も半分でいいですから
○○言語でやらせてください!
といえるかい?
0497デフォルトの名無しさん
2014/02/11(火) 17:35:19.03その例えって、すごくバカで、開発者側からしか見てないよね?
競合がc++で書いて2倍の工数を掛けるなら、短納期で安い方に顧客が移るだろ
0498デフォルトの名無しさん
2014/02/11(火) 17:36:24.970499デフォルトの名無しさん
2014/02/11(火) 17:37:13.870500デフォルトの名無しさん
2014/02/11(火) 17:37:57.270501デフォルトの名無しさん
2014/02/11(火) 17:38:24.15> 短納期で安い方に顧客が移るだろ
それがPHPだったりするんですよね。
0502デフォルトの名無しさん
2014/02/11(火) 17:38:57.38裁量労働か無料で仕事するんじゃないか?
0503デフォルトの名無しさん
2014/02/11(火) 17:40:42.91短い時間、安い金額で仕事をしないといけないわけで。
0504デフォルトの名無しさん
2014/02/11(火) 17:46:56.61パーサー書いたりコード解析などの将来性まで含めたら、
どちらが費用対効果高いか分かるでしょ
0505デフォルトの名無しさん
2014/02/11(火) 17:47:26.27Yes な言語なら開発者はヘボでもいい
No な言語ならプロジェクト内で発生する課題一つ一つを自力で解決できるレベルの開発者が必要になる
この差はでかい
0506デフォルトの名無しさん
2014/02/11(火) 17:50:04.03将来のことは分からないから無駄な投機はしない
ってかぶっちゃけパーサとかコード解析とかならHaskellよりOcamlの方が使いやすい
その程度の用途にHaskellはぶっ飛びすぎ
0507デフォルトの名無しさん
2014/02/11(火) 17:50:09.810508デフォルトの名無しさん
2014/02/11(火) 17:53:30.08Ocamlって、パッと見たときに型が分からないんだけど
これって、Objectが状態遷移を表現してるの?
0509デフォルトの名無しさん
2014/02/11(火) 18:16:17.510510デフォルトの名無しさん
2014/02/11(火) 18:49:00.740511デフォルトの名無しさん
2014/02/11(火) 19:45:48.68WEB のサーバー側しか書けないじゃん >PHP
# 組み込み門は無理
# バックエンドの計算主体系は無理
# 遅いし
# コンパイラ屑だし
0512デフォルトの名無しさん
2014/02/11(火) 20:32:47.710513デフォルトの名無しさん
2014/02/11(火) 21:49:37.00なんかもうc++でいーじゃん
0514デフォルトの名無しさん
2014/02/11(火) 21:59:36.37型推論で記述が省略されているか、.mliファイルに記述されている
0515デフォルトの名無しさん
2014/02/11(火) 23:08:28.49同じ駄目さが他の多くの言語にもあるし、PHPがずば抜けて糞とは言えない
PHPユーザーにプログラミング初心者が多すぎて糞コードが量産されているから悪いイメージがあるだけだと思う
OOP十分理解していれば他のLL(特にruby,js,perl)より相当読みやすいコード書けるよ
0516デフォルトの名無しさん
2014/02/11(火) 23:42:59.53言語が良くできてるかどうかじゃないと思うよ
obj-cなんか起源からして建て増し住宅の末路な糞設計のくせしてちゃんと回ってるからな
ARCとかblocks拡張とか魔改造で振り回しくさって酷いもんだよ。Appleの改変の歴史知らずに古いコードをコピペしても、もはや謎のエラーしか出ない
一方、文法などが美しいのではと聞かれたら、八割がたの経験者が鼻で笑うだろう
あの変態さがクセになってる奴もいるのだけど。c/c++とsmalltalk同居させてARCの罠を掻い潜ってトールフリーな連携できたときの達成感といったらもうそれこそ黒魔術うっひょーだよほんと
脱線した
要するに、phpは世間がいうほど悪くない程度の糞
0517デフォルトの名無しさん
2014/02/11(火) 23:49:11.18他人のコードをリファクタリングするのも容易
スクリプト言語とは決定的な差がある
0518デフォルトの名無しさん
2014/02/12(水) 00:00:21.55じっくりと設計に時間をかけて、拡張性を持たせて、
仕様変更もないようにすれば
リファクタリングが必要になることはない。
0519デフォルトの名無しさん
2014/02/12(水) 00:09:24.180520デフォルトの名無しさん
2014/02/12(水) 00:29:15.97OOPに関してPHPが読みやすいということはないっしょ。そもそもPHPって満足にOOPできないし。OOPの機能は充実してるけど、基本的な値に対してOOPを使えないのが致命的。
str.lengthと書きたいのに、strlen($str)と書かないといけないし。(マルチバイト考慮するならmb_strlen($str)になるのがさらに糞)
OOPを理解していることで他のLLより読みやすいコード理屈はない。(良いプログラマが書くなら対してかわらん)
PHPの場合読みやすさ云々より、くそプログラマを呼び寄せやすいという体質が一番の問題。しかもそれはイメージではなく本当のこと。
0521デフォルトの名無しさん
2014/02/12(水) 00:36:52.45Obj-CのARCとBlocksを引き合いに出すのはちがうとおもうぞ。
両方共必要だから追加された仕様なわけで。ARCはiOS用に、BlocksはGCDのために。(そもそもBlocksはObj-Cではなく、Cのコンパイラ仕様)
対してPHPの場合、例えばトレイトなんてなんのために追加されたのかわからない。
クラスさえ満足に扱えていないし、そもそもinterfaceがあるのにトレイトとか取って付けた感しかない。
>要するに、phpは世間がいうほど悪くない程度の糞
これは同意。ただ、ただクソプログラマの傍若無人さを助長してしまうのは何とかしてほしい。
0522デフォルトの名無しさん
2014/02/12(水) 00:50:51.83なんでPHPはインターフェイスや抽象クラス導入したんだろう
PerlやPythonやRubyは多重継承やミックスインが以前から出来た
スクリプト言語のくくりで言えば、もっと早くトレイトは導入すべきで、インターフェイスはなくても良かった
0523デフォルトの名無しさん
2014/02/12(水) 01:02:02.085系初期はとりあえずJava真似ときました感があるし
0524デフォルトの名無しさん
2014/02/12(水) 01:11:46.35rubyのObjectクラスみたいに元々あるクラスの設計が酷すぎて、それに依存するもの全てがキモくなるとかがあるからラッパー書いた方がまだ綺麗と思った
0525デフォルトの名無しさん
2014/02/12(水) 01:14:52.91前者はis aがすぐ崩れる
0526デフォルトの名無しさん
2014/02/12(水) 01:22:22.47まるっと非推奨にしてくれたら見た目の印象も綺麗になるのかな
でもexplodeって関数名なんかはある意味発明だと思うw
0527デフォルトの名無しさん
2014/02/12(水) 01:56:13.97RubyのObjectがどう酷いのかよくわからんが、ラッパーだって設計が変われば新しいラッパーができて、じゃあどっち使えばいいんだよ!古い方の使ってたコードはそのまま放置?ってなるからたいして変わらないと思うけど。
0528デフォルトの名無しさん
2014/02/12(水) 02:02:10.43> 例えばトレイトなんてなんのために追加されたのかわからない。
> クラスさえ満足に扱えていないし、
君のレベルはまだまだ低い。がんばろう。
0529デフォルトの名無しさん
2014/02/12(水) 02:22:42.48とりあえず現時点で一番糞なのは話題にものぼらなくなったPerlだと思う
なんだあいつ
0530デフォルトの名無しさん
2014/02/12(水) 02:24:21.770531デフォルトの名無しさん
2014/02/12(水) 02:28:55.87「学生時代にアイドルだったxxxちゃんって今どうしてるのかな……いや、別にどうでもいいけど」的な位置づけ
mixiで現役だっけ?
0532デフォルトの名無しさん
2014/02/12(水) 02:54:07.94何のために追加されたかわからないという言い方は不適切だったな。
利点は分かるが、一度JavaのようなOOPスタイルにしたのに、トレイトを追加とか節操がないなと思った。
他の言語はもっと慎重だからさ。
特にPHPの開発者はついて行けないと思うんだよな。クラスも満足にってのはそういう意味ね
0533デフォルトの名無しさん
2014/02/12(水) 03:28:32.44オブジェクトとしてクラス定義を操作できるようになるまでは、わざわざ使わないかなー
0534デフォルトの名無しさん
2014/02/12(水) 03:59:57.07いや、お前がトレイトわかってないだけだよ。
トレイトと継承やインターフェースは全く別の概念。
ダイアログを継承して、ボタン付きダイアログを作るだろ?
この時、ボタン付きダイアログは、ダイアログの多く機能をそのまま備えており
ダイアログに+αしたもの。これが継承。
インターフェースというのはあるクラスが、どんなクラスとして使えるかって定めたもの
めちゃくちゃな例だが、ボタン付きダイアログにシューティングゲームの自機戦闘機インターフェースを
持たせれば、ボタン付きダイアログを自機戦闘機としても使える。
外部から見た時にあるクラスがどんな性質を持っているか、という時にインターフェースを使う。
そしてトレイトはたとえるならば装備だ。レーザーとかミサイルとかな。
自機戦闘機にレーザーを装備できる。だが自機戦闘機はレーザーを継承しているわけじゃないし
レーザーインターフェースを持ったわけじゃない。(別に外部からインターフェースを知りたいわけじゃない)
単に、自機戦闘機がレーザーを使いたいからそれを装備した。
これは継承ともインターフェースとも違う。
0535デフォルトの名無しさん
2014/02/12(水) 04:31:48.97それは知ってる。
でもそれを理解して使い分けられる人は少ないよ。
PHPのトレイトは本来の意味を忠実に実装してる分、返って理解されにくいと思う。あと、型とトレイトが分かれてるのもかったるいし、説明しにくい。
それよりはinterfaceが実装を持てるぐらいの方が良かったなと思う。(Java8はこれを選んだけど)
0536デフォルトの名無しさん
2014/02/12(水) 05:08:02.37トイレと便座や便器は全く別の概念。
トイレットペーパーを継承して、香り付きトイレットペーパーを作るだろ?
この時、香り付きトイレットペーパーは、トイレットペーパーの多く機能をそのまま備えており
トイレットペーパー+αしたもの。これが継承。
0537デフォルトの名無しさん
2014/02/12(水) 05:23:57.50その説明だと、トレイトってよりは、コンポジットだな。
鳥(親クラス)にトレイト(飛べる)つけて、スズメ(具象クラス)とかみたいな例がいいかと。
さらに言うと、合成についても説明がいるが、端折ったのか?
0538デフォルトの名無しさん
2014/02/12(水) 05:26:28.690539デフォルトの名無しさん
2014/02/12(水) 05:40:12.85割り切って、トレイトオンリーってなら、Rubyのようにダックタイピングにするか、Scalaのように型としての機能も持たせればよかった。
だから、実用性がなんか微妙なんだよな。ある意味PHPらしくない
結局、インターフェイス入れたのが間違いな気がする。タイプヒントとか使ってるのあまり見たことないし
0540デフォルトの名無しさん
2014/02/12(水) 06:54:00.18現場的に言えば、そういうのはコードの読みやすさと関係ないのでどっちでもいい
str.length と書いても strlen($str) と書いてもどちらでも理解できる
そういうところに拘るのは宗教
0541デフォルトの名無しさん
2014/02/12(水) 07:11:42.14「oop理解してたら他のLLよりphpが読みやすい」とか言うから、文字列すらオブジェクトじゃないのに関係ないだろ、と返しただけで、メソッドと関数どっちが読みやすいなんて論じてないよ。
ま 、strlen他文字列関数には読みやすさ以外にダメな点たくさんあるけどね。
0542デフォルトの名無しさん
2014/02/12(水) 07:20:19.38ああ、なるほど。
Perl, PHP, Python, Ruby の中だと OOP を意識した設計がなされているのは Ruby だけで他 3 言語はどっこいどっこい
という主張なら同意する
0543デフォルトの名無しさん
2014/02/12(水) 07:43:14.16文字列だけに限らず、OOPの機能が一切存在しないといえなければ、関係ないとはいえないが…
0544デフォルトの名無しさん
2014/02/12(水) 07:53:21.91彼らが読み易いと言うコードは読み難い
0545デフォルトの名無しさん
2014/02/12(水) 07:55:21.200546デフォルトの名無しさん
2014/02/12(水) 07:57:05.33一般人はソースコードなんて読めないんだが?
それが技術ってもんだろう?
どっちが読みやすいかは両方知っている人でないと
判断できない。
片方しか知らない人がいう「読みにくい」は
まさに一般人がソースコードを読めないのと同じこと。
技術力がついてから読みやすいかどうかの話題に参加してね。
0547デフォルトの名無しさん
2014/02/12(水) 07:57:57.810548デフォルトの名無しさん
2014/02/12(水) 08:00:25.40そうだ悪口を言おう、
お前は闇プログラマ。(よし勝った!) ←馬鹿じゃね?w
0549デフォルトの名無しさん
2014/02/12(水) 08:04:54.95リファクタリングとパフォーマンスチューニングとコードゴルフの区別がつかない技術者が実際多すぎて、しかもそういう人間に限ってヲタク的な知識をひけらかしてチヤホヤされるから本当に闇
0550デフォルトの名無しさん
2014/02/12(水) 08:06:21.53スレ上げてまで、なにお前の話してるんだよw
0551デフォルトの名無しさん
2014/02/12(水) 08:07:24.69ここでうっぷん晴らしてるんだろ?
0552デフォルトの名無しさん
2014/02/12(水) 08:37:15.600553デフォルトの名無しさん
2014/02/12(水) 08:58:10.590554デフォルトの名無しさん
2014/02/12(水) 12:21:05.390555デフォルトの名無しさん
2014/02/12(水) 13:37:02.050556デフォルトの名無しさん
2014/02/12(水) 15:12:48.42この2言語、一人で書くにはかなり生産性高いグッド
人に読ませるには読みにくくてバッド
選民主義って言われるのもよくわかる
0557デフォルトの名無しさん
2014/02/12(水) 15:18:50.08民として選ばれなかったんですね?
0558デフォルトの名無しさん
2014/02/12(水) 15:34:19.180559デフォルトの名無しさん
2014/02/12(水) 16:05:42.97日本語は盲目に生まれついたのと同じレベルの不幸
0560デフォルトの名無しさん
2014/02/12(水) 19:23:52.810561デフォルトの名無しさん
2014/02/12(水) 20:18:02.700562デフォルトの名無しさん
2014/02/12(水) 20:29:24.92宣言必須に出来るだけだっけ?
0563デフォルトの名無しさん
2014/02/13(木) 00:27:14.58こういうことであってる?
これだと無名関数の呼び出しは性的コールじゃないから、別ケースだと思う。
どういう挙動がいいかは分からん。
class X {
static function f() {
static::g();
return function() { static::g(); };
}
static function g() {
print("X");
}
}
class Y extends X {
static function g() {
print("Y");
}
}
$cg = X::f();
$cg();
$dg = Y::f();
$dg();
// 5.3 => fatal
// 5.4 => XXYX
0564536
2014/02/13(木) 00:59:03.57class X {
static function f() {
static::g();
$g = function() { static::g(); };
$g();
}
static function g() {
print("X");
}
}
class Y extends X {
static function g() {
print("Y");
}
}
X::f();
Y::f();
0565デフォルトの名無しさん
2014/02/13(木) 07:00:21.08ワンライナーや個人的スクリプトでない限りそうするのがマナーだね
0566デフォルトの名無しさん
2014/02/13(木) 18:21:01.82マニュアルではそのオブジェクトのクラスと同じになるって書いてあるから
仕様通りならClosureのクラスメソッドがコールされることになってしまうような
とまあ戯言はおいといて、5.4の方向性でいくとフツーのClosureはYに、
Static closureはスコープエラーか何かになるべきじゃないかな
つーかどんだけstatic使いまわすのかと
0567デフォルトの名無しさん
2014/02/13(木) 22:42:59.450568デフォルトの名無しさん
2014/02/14(金) 00:10:47.39クロージャはクラス内で使うと、暗黙にクラスのメンバのように扱われるようになったから
「クロージャが宣言されてるオブジェクトのクラスと同じ」になると解釈できる
staticなクロージャも$thisをuseしてないだけで同様じゃねーか?
かつ、クロージャはレキシカルであると期待されてるから、後で評価しても定義された
時点のクラスを返すのは不自然ではない
クロージャを基準に考えると遅延静的束縛の方が無意味
0569デフォルトの名無しさん
2014/02/15(土) 03:22:15.76というか任意のインスタンスにバインドできる
ようはjsの関数だ
無名関数としてだけ使うこともできるし、クロージャとして使うこともできるし、
プロトタイプベースの関数オブジェクトのようにも使えるキメラ的な何か
0570デフォルトの名無しさん
2014/02/15(土) 23:06:51.450571デフォルトの名無しさん
2014/02/16(日) 00:07:02.700572デフォルトの名無しさん
2014/02/17(月) 10:59:23.430573デフォルトの名無しさん
2014/02/18(火) 23:48:09.410574デフォルトの名無しさん
2014/02/19(水) 00:03:11.39少なくともナイスだとかマーベラスとかではない
ありゃ標準化の奴らが現場の空気読まずコンプリートとかクリンリネスあたりで優れようとしてるからたち悪いんだと思う
言語仕様に賭ける情熱は高いと思うよ
0575デフォルトの名無しさん
2014/02/25(火) 19:23:38.05PHPはWeb用のクライアント言語としてはナンバーワンだ
Pythonなんかめんどくさいの何のって
PHPは楽で本当に良い
ただし、問題は文字コード周り
コレのおかげでPython使わないといけなくなってる
0576デフォルトの名無しさん
2014/02/25(火) 19:31:27.23文字コードの問題を詳しく
0577デフォルトの名無しさん
2014/02/25(火) 22:19:05.090578デフォルトの名無しさん
2014/02/26(水) 04:52:11.53後は、趣味でHaskellでも叩いてるのが幸せ。
0579デフォルトの名無しさん
2014/02/26(水) 08:31:01.25実用で使われてるプロジェクトとかあんのかな
0580デフォルトの名無しさん
2014/02/26(水) 10:08:56.31ベーシックやフォートランやコボルやアセンブラが得意な人はそれがいいわけで。
PHPが得意な人には良い言語で、苦手ならそうでないだけ。
どれでもそう。
0581デフォルトの名無しさん
2014/02/26(水) 10:19:42.76証券の高速売買とかで使われてるよ
0582デフォルトの名無しさん
2014/02/26(水) 13:29:22.05市販アプリケーションレベルでしか考えてない俺が無知でした
0583デフォルトの名無しさん
2014/02/26(水) 14:33:40.76JavaScriptでHaskellやC言語のインタプリタ作れば遅い。
0584デフォルトの名無しさん
2014/02/26(水) 14:50:21.670585デフォルトの名無しさん
2014/03/05(水) 01:26:31.101.phpのフレームワークよりはpythonのフレームワークの方が速いから。
2.webでもpythonを使っていたい。
こんな理由を想像してみました。
実際の意見が知りたいです。
0586デフォルトの名無しさん
2014/03/05(水) 01:59:40.37■ このスレッドは過去ログ倉庫に格納されています