PHPがいかに駄目言語であるかをちゃんと説明
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/11/15(金) 20:57:08.46他の言語と比較しながら、具体的にちゃんと説明してください!
0449デフォルトの名無しさん
2014/02/08(土) 05:04:08.08これは知らんかったわ
class A {
static function f() {}
}
$obj = new A;
$obj->f(); // A::f()と同じ
0450デフォルトの名無しさん
2014/02/08(土) 08:46:05.22deprecated
0451デフォルトの名無しさん
2014/02/08(土) 08:54:10.675.5.3だとならんよ
0452デフォルトの名無しさん
2014/02/08(土) 10:25:56.27変なふうに書いてもとりあえず動く
それが良いケースもあるが
0453デフォルトの名無しさん
2014/02/08(土) 13:04:07.53PHPのstaticメソッドというのは、
C++のstaticメソッドに似せて作られているものだから。
0454デフォルトの名無しさん
2014/02/08(土) 13:07:06.84Perlでも同じだよ。
クラス=パッケージだから
インスタンスからでもクラスメソッドが呼べる。
正確にはどちらでも呼べるが
アローを使った場合とそうでない場合で
メソッド側で(thisに相当する)$selfが違ってくる
0455デフォルトの名無しさん
2014/02/08(土) 13:50:27.49なんのことを言ってるのかね?
0456デフォルトの名無しさん
2014/02/08(土) 14:08:02.39クラスメソッドとして使うことを想定されてるメソッドもあるというだけで
0457デフォルトの名無しさん
2014/02/08(土) 14:11:30.56そのパッケージとblessしたリファレンスを
インスタンス代わりにしてるだけだしなあ
0458デフォルトの名無しさん
2014/02/09(日) 18:11:14.41PHPだとarray_mapのコールバックにnullを渡せばzipになるから簡単
0459デフォルトの名無しさん
2014/02/10(月) 09:40:40.04俺はプログラマーになれません。
0460デフォルトの名無しさん
2014/02/10(月) 09:59:43.78関数名覚えてても引数の順番いつも忘れる俺
0461デフォルトの名無しさん
2014/02/10(月) 10:10:29.97すべて「引数」と「戻り値」でやるっていう旧世代のやり方だから
0462デフォルトの名無しさん
2014/02/10(月) 10:32:53.18まだObjective-CやC♯真面目にやってたほうがまし
0463デフォルトの名無しさん
2014/02/10(月) 11:05:44.941から書くことなんて無いだろ?
お前は1から書きたいのか?
無駄な努力だよ。
0464デフォルトの名無しさん
2014/02/10(月) 11:33:52.82ゴミだろ
それって1の場所が変わっただけで
周りがみんなその場所から始めるならそこが1だよ
0465デフォルトの名無しさん
2014/02/10(月) 11:35:54.32何言ってるかいみわからんwww
それにしてもまあ、一から書かなくていいメリットを
ディスるバカが居るなんてなぁw
俺は一から書くしかない言語が優れてると思ってるんだ!
ですか?www
0466デフォルトの名無しさん
2014/02/10(月) 12:46:19.160467デフォルトの名無しさん
2014/02/10(月) 13:07:50.63金になりそうなのに
0468デフォルトの名無しさん
2014/02/10(月) 13:14:16.230469デフォルトの名無しさん
2014/02/10(月) 13:33:26.46ウェブじゃなくて、モバイルのネイティブアプリで展開するケースが増えてる
ウェブもよほど凝ったサイト以外はWordPressで作った方が早い
0470デフォルトの名無しさん
2014/02/10(月) 14:21:55.33なんかもう最近はCSS(というかCompass)書くのが一番だるい
HTMLもPHPも書かん
PHP書くのはCakeくらい
0471デフォルトの名無しさん
2014/02/10(月) 15:46:02.070472デフォルトの名無しさん
2014/02/10(月) 15:53:47.710473デフォルトの名無しさん
2014/02/10(月) 16:40:03.86最近ほっとんどJSだと思うけど
0474デフォルトの名無しさん
2014/02/10(月) 20:05:39.43え?まさかsass使ってないの?
0475デフォルトの名無しさん
2014/02/10(月) 20:23:35.31Compassって書いてあるよ
0476デフォルトの名無しさん
2014/02/10(月) 20:43:26.97書くものじゃないんだが?
0477デフォルトの名無しさん
2014/02/10(月) 21:48:31.49いるよねーこういう屁理屈いう奴
0478デフォルトの名無しさん
2014/02/10(月) 22:10:01.060479デフォルトの名無しさん
2014/02/10(月) 22:41:14.520480デフォルトの名無しさん
2014/02/10(月) 22:59:21.71期待と言っておきながら、>>479自身でレスするのかよw
0481デフォルトの名無しさん
2014/02/11(火) 06:51:31.090482デフォルトの名無しさん
2014/02/11(火) 09:07:04.490483デフォルトの名無しさん
2014/02/11(火) 10:51:45.310484デフォルトの名無しさん
2014/02/11(火) 10:55:48.890485デフォルトの名無しさん
2014/02/11(火) 12:14:42.73なんでこんな時間に書き込みできるわけ?
普通の人なら学校や会社があるはずなんだけど
このこと知った親は悲しむぞ?
現実見ようぜ
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
■ このスレッドは過去ログ倉庫に格納されています