PHPがいかに駄目言語であるかをちゃんと説明
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/11/15(金) 20:57:08.46他の言語と比較しながら、具体的にちゃんと説明してください!
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.370587デフォルトの名無しさん
2014/03/05(水) 02:11:35.95データマイニング用のツールを使いたい
PHPでサーバー側のプログラムを書きたくない
0588デフォルトの名無しさん
2014/03/05(水) 02:13:17.05Gnuplotか何か別の言語でも、.を文字連結に使っていたよ
0589デフォルトの名無しさん
2014/03/05(水) 11:31:53.581はない
pythonのが堅牢だからでないか?
0590デフォルトの名無しさん
2014/03/06(木) 11:13:17.41それPerl由来ですし
0591デフォルトの名無しさん
2014/03/06(木) 19:16:37.740592デフォルトの名無しさん
2014/03/06(木) 20:46:44.01"5" - 2 // 3
"5" + 2 // "52"
こんなJavaScriptは嫌いだ
0593デフォルトの名無しさん
2014/03/09(日) 14:45:49.46よろしくお願いします
プログラム板 強制ID制導入に関する投票スレ
http://kohada.2ch.net/test/read.cgi/vote/1394290844/
0594デフォルトの名無しさん
2014/03/10(月) 02:52:49.63乙
0595デフォルトの名無しさん
2014/03/10(月) 15:41:25.96http://kohada.2ch.net/test/read.cgi/php/1390166591/497
>saltが判明していれば、saltが無いのと同じ。
のレベルなこと
こうやって、だめなサイトが構築され、だめなブログ記事が書かれ、だめな知識が継承されていく
もう伝統芸
0596デフォルトの名無しさん
2014/03/10(月) 17:23:44.72他スレの一部を転載するな
ブルートフォースアタックに関しての話だろ、あってるよ
0597デフォルトの名無しさん
2014/03/11(火) 08:28:13.570598デフォルトの名無しさん
2014/03/11(火) 09:02:01.60元をはっきりさせた上で使うのは、引用っていうんやで
0599デフォルトの名無しさん
2014/03/11(火) 21:25:39.06単にコンドームは薄い方が気持ち良いってだけ?
0600デフォルトの名無しさん
2014/03/12(水) 01:47:49.84ID:4zZOK386フレームワークというコンドームに求められるのは薄さより安心感的なものなんだろうな
俺俺フレームワークなんてまるで外出しテクを競う愚行というところか
0601デフォルトの名無しさん
2014/03/12(水) 05:09:22.10ID:3SicOySt0602デフォルトの名無しさん
2014/03/12(水) 05:10:20.73ID:3SicOySt0603デフォルトの名無しさん
2014/03/13(木) 01:10:38.13ID:1g7vjGnB上級者になるためのコラムとは、さすがPHPerクォリティ
http://resocia.jp/column/368/
0604デフォルトの名無しさん
2014/03/13(木) 01:35:34.90ID:AIWZ4REO「これを読めばあなたも上級者!」なら同じ感想だけどさ
言及弱くて、よくて「そもそもSPLとかさー」、とかの談義が始まりゃマシ程度のレスだな
ミスリード狙いっぽく読めるのがなんかどうもな
0605デフォルトの名無しさん
2014/03/13(木) 09:11:21.29ID:LTbtGzLp結局ひねくれて見えるんだよな、この手の記事
0606デフォルトの名無しさん
2014/03/13(木) 10:24:05.81ID:1g7vjGnBそこのコラムのもう一人の執筆者の肩書きが
PHP技術者認定機構 理事長
Rails技術者認定試験運営委員会 委員長
同じ穴か
0607デフォルトの名無しさん
2014/03/13(木) 18:45:09.88ID:qaG+7LaQPythonやRubyを仕事で使うのを諦めた層は、そんな糞コラム読まないだろ
田舎零細企業でAccessやExcelを弄ってる40歳以上を想定してるはず
0608デフォルトの名無しさん
2014/03/25(火) 09:02:21.24ID:UiDCLV+E0609デフォルトの名無しさん
2014/03/31(月) 17:25:09.15ID:WQVzru6Sあれテストがない?と思ったらStaticまみれワロタ
0610デフォルトの名無しさん
2014/04/09(水) 12:21:49.63ID:5hcMVv4L視認しやすさは絶対外に書いたほうだと思うんだけどいろんなプログラムのソース見てると
$header = <<< HTML 〜みたいなことして最期にechoしてるのが結構あったので気になった
実際どっちがいいの?
0611デフォルトの名無しさん
2014/04/09(水) 18:03:12.55ID:sLXa1YUE0612デフォルトの名無しさん
2014/04/12(土) 16:17:32.58ID:RuY08Pck目的のスレがかえってPHPが優れている言語である
ことを証明してしまった。
糸冬
0613デフォルトの名無しさん
2014/04/15(火) 09:10:13.92ID:LUmefa1Wperl 死んでる
ruby, py ハハッ それどうすんのさ
php 最強
0614デフォルトの名無しさん
2014/04/20(日) 22:28:50.63ID:6zjHScacpearライブラリーのコードアシストを出すには何か設定が必要なんですか?
それともドキュメント見ながらメソッド打たなきゃいけないんですか?
OSはwin8です。
0615デフォルトの名無しさん
2014/05/31(土) 09:21:39.25ID:1YpY4EUA■ このスレッドは過去ログ倉庫に格納されています