PHPがいかに駄目言語であるかをちゃんと説明
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/11/15(金) 20:57:08.46他の言語と比較しながら、具体的にちゃんと説明してください!
0562デフォルトの名無しさん
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:1YpY4EUA0616デフォルトの名無しさん
2014/05/31(土) 11:59:32.10ID:YgxuCMdP0617デフォルトの名無しさん
2014/06/06(金) 02:56:12.95ID:UgiouvQd0618デフォルトの名無しさん
2014/06/22(日) 23:28:23.75ID:I40vD2Orすごく重いのですが、仕様ですか?
0619デフォルトの名無しさん
2014/06/22(日) 23:40:50.98ID:dgCxS7ofだしてください。
話はそれからです。
0620デフォルトの名無しさん
2014/06/23(月) 01:47:44.99ID:x59p+xZhPHPがJAVAより遅いのは仕様です
PHPで単にオブジェクト思考にしたら遅くなったのだとしたら、あなたの能力の問題です
0621デフォルトの名無しさん
2014/06/23(月) 11:36:05.41ID:2cPnnJRdPHPが遅いというより、Javaが速いんだと思う。
ベンチマークによるけど概ねこんな感じ
Javaなどのコンパイラ系は速くて、スクリプト言語は軒並み遅い
http://d.hatena.ne.jp/kwatch/20100430/1272585083
> これを見れば、最速な言語は C/C++ であり、Java や Haskell や OCaml といった
> 静的な言語は軒並み上位に登場する。これに対し、Ruby や Python や
> PHP といったスクリプトは全部下のほう (つまり遅い)。
http://maplesystems.co.jp/blog/all/programming/2015/
> Java > C >>>> PHP > Python >> Ruby
http://akiniwa.hatenablog.jp/entry/2013/09/28/142947
> 結果をまとめると
>
> 言語 実行時間
> c 0.2741[s]
> java 1.7661[s]
> perl 11.9690[s]
> ruby 7.8373[s]
> python 12.2507[s]
http://www.akazah.com/lang-run/
> Cは当然一番早いがJavaはほとんど変わらない。
> Scalaは少し遅いけれど、その次のLuaとは一桁違う。
> ここまでコンパイル系。
> スクリプト系ではLuaが一番。
> その次のJRubyとはほぼ互角。
> PHPも案外早くて、Rubyがその次。
> Perlはとても遅い・・・。
0622デフォルトの名無しさん
2014/06/25(水) 10:00:19.03ID:uLaDf7W/> http://maplesystems.co.jp/blog/all/programming/2015/
> > Java > C >>>> PHP > Python >> Ruby
の部分、Cの速度は、gcc に最適化オプションをつけずにコンパイルした
255 msの場合で、最適化オプション -o をつけると 58ms となり、
Java の181ms よりも 3.12 倍も高速になる、とのことだよ。
0623デフォルトの名無しさん
2014/06/25(水) 10:05:02.39ID:uLaDf7W/メモリ確保が入ってくるととたんに性能が落ちる。
経験的には、同じ容量を確保した場合、C/C++ の 100倍〜1000倍
程度メモリを食うらしい。
さらに、Garbage Collection が不定期に実行されるので
スクロール中にガタガタと止まったりする。
無駄に多くメモリを消費するのも、GC の頻度が高くなる最大の原因
になってもいる。
Javaアプリの起動が遅いのは、アプリの初期化時にメモリ確保を一気に行うときに時間がかかって
居ることが主な原因。
0624デフォルトの名無しさん
2014/06/25(水) 10:38:23.32ID:uLaDf7W/>経験的には、同じ容量を確保した場合、C/C++ の 100倍〜1000倍
>程度メモリを食うらしい。
ここは嘘だった。実際は、Javaの参照(ポインタ)は、C/C++よりも
ずっと容量を食うらしく、参照によってリンクを張った構造を
作ると C/C++ のポインタで同様の事を行った場合に比べて、
100〜1000倍のメモリ容量を食う。
0625デフォルトの名無しさん
2014/06/25(水) 16:53:28.76ID:uLaDf7W/よう。
・参照の変数の内部表現に必要なバイト数がC/C++のポインタに比べて
大きい。ただし、大きいといっても、これだけで100〜1000倍にも
なる理由の説明にはなりそうにはない。
・C/C++ では、オブジェクトを構造体やクラスの中に参照やポインタ
を解さずにそのまま埋め込むことが出来たが、Javaでは必ず参照
となるため、必ずヒープ(ストア)領域から new する必要があり、
これが、複数のメンバを持つ一般的な構造体では意外と大量の
メモリを食ってしまう可能性。 これについても、C/C++の経験
では、「大した増加にはならない」と予想されるが・・・。
0626デフォルトの名無しさん
2014/06/26(木) 07:46:08.82ID:H9MJZ09s・クラス・オブジェクトのサイズがとても大きい可能性。
例えば、intのメンバ変数1つだけを持つC/C++の構造体のサイズは4バイト
だが、Javaのクラスで同様のものを作ると、4バイト+100バイト程度に
なっているのかもしれない。追加された「100バイト」の原因として
考えられるのは、Java のあらゆるクラスのルート・クラスの「Object」
のサイズ + クラスの継承時に付く何らかのデータやパディング。
0627デフォルトの名無しさん
2014/06/26(木) 07:56:39.75ID:lRUtVmtM0628デフォルトの名無しさん
2014/06/28(土) 17:01:39.43ID:A3rASK73あとは文字列操作をメソッド化してほしい
0629デフォルトの名無しさん
2014/07/01(火) 21:05:42.50ID:GeIQQ2aO0630デフォルトの名無しさん
2014/07/02(水) 16:21:25.63ID:fvFaAf5b誰に言ってるの?
0631デフォルトの名無しさん
2014/07/02(水) 16:41:49.10ID:UOkv1KGW今では、JavaのGCは一度にやらず、
10msごとに小刻みに行う
また、使うメモリの量が増えると、
GCにかかる時間も増える
0632デフォルトの名無しさん
2014/07/05(土) 10:04:44.86ID:e1V2szvr経験的には、Javaは、C/C++ の 100〜1000倍のメモリを食う。
これは、Swingなどの動的ライブラリの大きさが大きいというだけではなく、
アプリ独自のデータに対しての話。C++なら300Kバイトもかかるかかからないか
のような場合でも、Javaでは、150MBくらい消費した。
つまり、500倍程度。
0633デフォルトの名無しさん
2014/07/05(土) 11:38:22.81ID:mAp+Ajil0634デフォルトの名無しさん
2014/07/05(土) 12:19:36.06ID:atmyUkOz他の言語を叩くやつって何か抜けてる奴が多い
0635デフォルトの名無しさん
2014/07/05(土) 16:54:43.41ID:e1V2szvr話の流れじゃん。
頭が固い人には創造的結果は出来ないよ。
0636デフォルトの名無しさん
2014/07/05(土) 16:58:20.65ID:e1V2szvr嘘だと思うなら実測してみなよ。
0637デフォルトの名無しさん
2014/07/05(土) 17:48:34.11ID:DUJJhZn/それは嘘だと思います。
実測データ出せますか?
0638デフォルトの名無しさん
2014/07/05(土) 18:19:52.16ID:e1V2szvrうーん。絶対間違い無い、と確信できるほどの厳密な調査はして無い。
しかし、
・見た目の上では自作アプリは設計通りの動作をしていること。
今議題にあがっているデータは見た目でデータ構造が一目瞭然
になるような物で、間違っていれば分かると思えること。
・メモリ使用量を見ると(たしか)150MB 程度で、それが原因で GC
が高頻度で起きており、JVMのメモリ量を変更することで大幅な
GC頻度の減少が見られた事。
・もし、同じことを C/C++ でやれば、ほぼ 200KB 程度であると予測
出来るし、使用容量の見積もりはそれほど難しくないように思えた
事。もし多めに見積もっても、1MB は超えないであろうと思える。
0639デフォルトの名無しさん
2014/07/05(土) 18:30:06.21ID:lG7Vks4tタスクマネージャならなんの値をメモリって言ってる?
ランタイムが大きい分メモリを消費するのは当たり前なんだが
0640デフォルトの名無しさん
2014/07/05(土) 18:40:42.15ID:e1V2szvrそのとき色々確認したが、大量のメモリを使っていることは確実に
思えた。
0641デフォルトの名無しさん
2014/07/05(土) 18:45:33.74ID:e1V2szvrなぜなら、オブジェクトの作成を、画面で見えている部分だけに
限定するように修正してみたら大幅に使用量が改善したから。
もしC++だったら、そのような工夫をしなくても余裕だったのが、
プログラムの手間や複雑さが増大してしまったが。
0642デフォルトの名無しさん
2014/07/05(土) 18:49:46.37ID:pJl1PMF00643デフォルトの名無しさん
2014/07/05(土) 19:00:25.28ID:e1V2szvr嘘をついているつもりは無い。
もしかして、試したこと無いで言ってる?
Javaで実際的なアプリを作った経験が有る人は少数派だろうけど、
自分はその「少数派」に当たるかも。
そもそもやってみたことが無い人が多い中で、自分はやってみた
結果で話しているよ。
0644デフォルトの名無しさん
2014/07/05(土) 19:12:35.24ID:5Xg0uObF0645デフォルトの名無しさん
2014/07/05(土) 19:30:12.00ID:DUJJhZn/一つのオブジェクトあたりの
メモリ使用量は変わらないんだよな。
0646デフォルトの名無しさん
2014/07/05(土) 19:34:53.19ID:3zLRhjeWを読んでみた?
0647デフォルトの名無しさん
2014/07/05(土) 19:37:24.83ID:1SwtShn+0648デフォルトの名無しさん
2014/07/05(土) 19:51:45.11ID:3zLRhjeWなぜ、そんな了見が狭いの?
0649デフォルトの名無しさん
2014/07/05(土) 20:30:06.08ID:pJl1PMF0試したことなく適当こいてるのはお前だろ
0650デフォルトの名無しさん
2014/07/05(土) 20:31:59.12ID:3zLRhjeWいや、実際的なアプリ製作での実体験に基づいているよ。
0651デフォルトの名無しさん
2014/07/05(土) 20:33:00.76ID:3zLRhjeWこんなんで訴訟なんて起こされても困るし。
0652デフォルトの名無しさん
2014/07/05(土) 20:39:10.12ID:pJl1PMF0平気で嘘を吐いても良心が痛まない人って居るよね
0653デフォルトの名無しさん
2014/07/05(土) 20:42:31.51ID:zqYTQuxN0654デフォルトの名無しさん
2014/07/05(土) 21:57:34.45ID:lG7Vks4t単に作りが悪くてメモリリークしてるとか、GCの効率を妨害してるとか、そういうことを検証しないで経験とかで言われてもね
> 考えられるのは、Java のあらゆるクラスのルート・クラスの「Object」
> のサイズ + クラスの継承時に付く何らかのデータやパディング。
Objectのサイズってなに?仮装関数テーブルとか?それがインスタンスごと複製されちゃうのか?
0655デフォルトの名無しさん
2014/07/05(土) 22:38:24.14ID:rZ0JUFAI> Javaで実際的なアプリを作った経験が有る人は少数派だろうけど、
> 自分はその「少数派」に当たるかも。
とか言ってる時点でお察し。
Javaで実用アプリ書くなんて珍しくもなんともないだろ。こいつの視野が狭いことが予想されるし、どうして150MBも食うのかもろくに分析してないんだろうな。
てかC++で書いて計測したわけじゃなくてC++の方は予測なんだろ?
もしかして、試したこと無いで言ってる?w
0656デフォルトの名無しさん
2014/07/06(日) 00:30:25.23ID:QUzsj6VpJavaのオブジェクトは.classやらhashCodeやらのヘッダ情報で必ず8バイト食うので、
メモリ使用量で不利になるとの情報あり。これだからプリミティブ型とかでみみっちい事しなきゃならない。
しかし結局オートボクシングのおかげで無駄にオブジェクトが生成されるわけだが
Javaオブジェクトのメモリ構造
http://www.codeinstructions.com/2008/12/java-objects-memory-structure.html
0657デフォルトの名無しさん
2014/07/06(日) 04:16:12.79ID:XAawtdmz0658デフォルトの名無しさん
2014/07/06(日) 07:41:01.36ID:dl4OC7T3>Objectのサイズってなに?仮装関数テーブルとか?それがインスタンスごと複製されちゃうのか?
Java は、どんなクラスも、基本基底クラスなるものがあって、それが
「Object」クラス。例えば、自前で
class CMyData {
int x;
}
というクラスを作ったとしても、CMyData は、Object クラスを継承して
しまう。なので、少なくとも、
sizeof(CMyData) >= sizeof(Object) + sizeof(int)
となる。
0659デフォルトの名無しさん
2014/07/06(日) 07:48:52.93ID:dl4OC7T3まあ、一般プログラマの「予想」と、オイラの「予想」の予測精度の高さ
は違うんだけど、それは匿名掲示板では伝えることが出来ないから、
なんとでも言えてしまうよ。
0660デフォルトの名無しさん
2014/07/06(日) 07:57:56.20ID:dl4OC7T3intメンバだけを持つクラスでも、暗黙のHEADERの8バイトの他に、
Objectがnewされて、その参照が追加される。
しかも、boolean (1bit)には、8バイトアラインが付き、8バイトも消費
される。byteも4byteアラインが付く。
これだけでも、C++より遥かにメモリ容量を食っている事が分かる。
実際はもっと凄いことになっているよ。
0661デフォルトの名無しさん
2014/07/06(日) 08:20:21.04ID:dl4OC7T3>単に作りが悪くてメモリリークしてるとか、GCの効率を妨害してるとか、
>そういうことを検証しないで経験とかで言われてもね
オイラは、実際に、最高レベルのプログラマだと評価が有る。
めったなことでは間違わないよ。
■ このスレッドは過去ログ倉庫に格納されています