さまざまな言語仕様について熱く語る闘技場
1 :nobodyさん :2008/12/08(月) 13:15:56 ID:???.net ROUND 1開始!
150 :nobodyさん :2008/12/28(日) 22:55:23 ID:???.net つうかググればすぐ言及するページは見つかる。やっぱりcopy on write だ。 Big arrays in PHP http://brian.moonspot.net/2007/02/28/big-arrays-in-php/ > If the array is static then you don't really have to assign it by > reference, since in PHP 5 all (non-object) variables are > copy-on-write. So as long as you don't change the value then a copy > isn't made. php.netにはどこに書いてあるのか分からん。バグレポートばかり引っかかる。
151 :nobodyさん :2008/12/28(日) 23:10:01 ID:???.net この辺の挙動はパフォーマンスに重大な影響を与えるのに、公式ドキュメント には記述が見つからん。たぶん書いてないんだろう。 ライブラリの記述はそこそこだが言語仕様の記述は貧弱。こういうのがPHPの一 番直してほしいところだな。
152 :nobodyさん :2008/12/29(月) 14:19:27 ID:???.net >>148 落ち着け。145は別の話だ。 そっちの話は143が説明できないようだが。
153 :nobodyさん :2009/01/02(金) 03:08:35 ID:???.net Amazon.co.jp: はじめてのPHP言語プログラミング入門: 大垣 靖男: 本 http://www.amazon.co.jp/dp/4774122866 どうやらこの本がおすすめらしい。 PHPの言語仕様についてきちんと扱った本だという。
154 :nobodyさん :2009/01/02(金) 03:27:16 ID:???.net 何時の本だよ 言語仕様そんならマニュアルで十分
155 :nobodyさん :2009/01/02(金) 04:21:47 ID:???.net 大垣氏の名前は覚えておいて損はないよ。
156 :nobodyさん :2009/01/02(金) 04:29:37 ID:???.net なんで?
157 :nobodyさん :2009/01/02(金) 12:56:51 ID:???.net 印税欲しいから。
158 :nobodyさん :2009/01/02(金) 16:53:02 ID:???.net ,j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;; {;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; ヾ;;;ハ ノ .::!lリ;;r゙ 在日の方々はかわいそうな強制連行の被害者 `Z;i 〈.,_..,. ノ;;;;;;;;> ,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f そんなふうに考えていた時期が 〜''戈ヽ `二´ r'´:::. `! 俺にもありました
159 :nobodyさん :2009/01/11(日) 18:25:25 ID:???.net 最近、個人的に面白いと思った言語仕様があるのだが、ここに書いてる時間が ないし、書いても長くてウザがられそうなので、クイズにしてみる。 「PHP言語仕様・力試しクイズ」 $ php -r '$a=array(); $a["a"]= $a; var_dump($a);' $ php -r '$a=array(); $a["a"]=&$a; var_dump($a);' $ php -r '$a=new stdClass; $a->a= $a; var_dump($a);' $ php -r '$a=new stdClass; $a->a=&$a; var_dump($a);' (以下は PHP5(以上)でしか動かない) $ php -r '$a=new stdClass; $a->a= clone $a; var_dump($a);' $ php -r '$a=new ArrayObject(array()); $a["a"]= $a; var_dump($a);' $ php -r '$a=new ArrayObject(array()); $a["a"]=&$a; var_dump($a);' $ php -r '$a=new ArrayObject(array()); $a["a"]= clone $a; var_dump($a);' Q1 これらのコードが、PHP4とPHP5で、それぞれどのような表示をするか、試して みよう。自信のある人は試す前に予想してみよう。 Q2 >>144 のリンク先の記事 http://www.phppro.jp/news/304 が正しいかどうか、 問題があるとしたらどこか、考えてみよう。
160 :nobodyさん :2009/01/14(水) 17:15:05 ID:???.net >>153 作者乙
161 :nobodyさん :2009/01/14(水) 18:06:09 ID:???.net 大垣センセがこんなとこくるわけないだろw
162 :nobodyさん :2009/01/14(水) 18:38:30 ID:???.net >>161 おお、やっと大垣さんの名前を知っている人が来たか。 よかったら>>159 の問題を見てってくれ。 誰にもやってもらえなくてさびしい。
163 :nobodyさん :2009/01/14(水) 18:53:26 ID:???.net つうか、PHPのリファレンスって、要するにインスタンスに別名をつけることで、 仕組み自体はきわめて単純なものなんだよな。他言語で一般に言われるリファ レンスと似ても似つかないだけで(俺だったら「エイリアス」とか命名したと 思う)。 わかりにくいのは、なんでPHPはこんな、他言語にはない奇妙な仕組みを必要と するかだ。PHPのリファレンスはいつ、どのようなときに必要なのか。それを理 解するには、PHPの変数と各種インスタンスの挙動を理解する必要がある。 >>159 のクイズは、まさにその辺の問題を扱っている。まあちょっと再帰を絡ま せてしまったんで分かりにくくなってしまったが、再帰は枝葉で、本題にした いのはそっちだ。
164 :nobodyさん :2009/01/14(水) 18:59:55 ID:???.net >>162 その問題、最初に出現したときに解いて、全問正解だったよ。 でもそんなこと書いたって意味ないから書かなかっただけ。 いろんなところにコピペしなくていいよ。
165 :nobodyさん :2009/01/14(水) 19:05:36 ID:???.net 参照でおもしろいのは、引数を参照で受け取る関数で、 それがオブジェクトであることを期待してるのに、NULLだった場合とかに、 関数の中で何もしないのに、var_dumpすると再帰になるようなスクリプトで 別のメモリ領域にズレが生じるとか。
166 :nobodyさん :2009/01/14(水) 19:09:11 ID:???.net >>164 ちょっと待て。これどこかにコピペされてんの? 俺はここと、くだ質スレ79にしか書き込んでないぞ。 まあそんなことはどうでもいいか。 全問正解とはすごいな。俺自身、Q1の最後から2番目は、自分でも動かしてみな いと分からんかった。 どうやって勉強した?PHPマニュアルだけでは>>159 は分からんと思うが。 参考にさせてほしい。 あとQ2の答えを、手短でいいから書いてみてくれないか?
167 :nobodyさん :2009/01/14(水) 19:13:09 ID:???.net 君見苦しいぞ
168 :nobodyさん :2009/01/14(水) 19:13:20 ID:???.net >>165 > 関数の中で何もしないのに、var_dumpすると再帰になるようなスクリプトで すまんがここの意味が分からん。 なんかコードの実例で示してもらえんか?
169 :nobodyさん :2009/01/14(水) 19:17:29 ID:???.net >>167 意味不明。
170 :nobodyさん :2009/01/14(水) 19:42:19 ID:???.net >>166 参照代入を行った場合のrefcountが違う
171 :nobodyさん :2009/01/14(水) 22:04:23 ID:???.net 見苦しい人がちょっといたほうが盛り上がるよ
172 :nobodyさん :2009/01/14(水) 22:17:55 ID:???.net 盛り下がっちゃったわけだが
173 :nobodyさん :2009/01/17(土) 07:18:25 ID:???.net >>159 Q2の答えまだ〜?
174 :nobodyさん :2009/02/08(日) 20:48:24 ID:???.net 緊急浮上あげ
175 :nobodyさん :2009/02/09(月) 02:15:47 ID:???.net 俺も大垣先生の本は分かりやすいと思った。 PHP6が出たら、改訂版の投入をお願いします!>< 図書館で借りて読むけどw
176 :nobodyさん :2009/02/09(月) 11:41:42 ID:???.net 本人乙
177 :nobodyさん :2009/02/09(月) 14:13:32 ID:???.net echo と print の厳密な違いを教えてください
178 :nobodyさん :2009/02/09(月) 14:46:33 ID:???.net void zend_do_print(znode *result, znode *arg TSRMLS_DC) { zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC); opline->result.op_type = IS_TMP_VAR; opline->result.u.var = get_temporary_variable(CG(active_op_array)); opline->opcode = ZEND_PRINT; opline->op1 = *arg; SET_UNUSED(opline->op2); *result = opline->result; } void zend_do_echo(znode *arg TSRMLS_DC) { zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC); opline->opcode = ZEND_ECHO; opline->op1 = *arg; SET_UNUSED(opline->op2); }
179 :nobodyさん :2009/02/09(月) 20:41:25 ID:???.net >>177 echo は、(カンマ)で区切って、連続で引数をぶちこめる。 printはできない。
180 :nobodyさん :2009/02/09(月) 20:49:46 ID:???.net そうなるとprintなんて必要ないよな 配布スクリプトなんか覗くとprint使ってるやつがいるので不思議でたまらない
181 :nobodyさん :2009/02/09(月) 21:10:42 ID:???.net printは成功すると1を返す。 echoは何も返さない。
182 :nobodyさん :2009/02/09(月) 23:30:44 ID:???.net $a=1; $a ? echo 'aaa' : echo 'bbb'; //error $a ? print 'aaa' : print 'bbb'; //ok
183 :nobodyさん :2009/02/10(火) 05:47:16 ID:???.net 三項演算子の場合普通式の先頭から書かないか?
184 :nobodyさん :2009/02/10(火) 06:33:49 ID:???.net 一例ってことで
185 :nobodyさん :2009/03/18(水) 11:34:00 ID:???.net システムハンガリアンって評判悪いじゃん。 たしかにC++みたいに型が違う値を代入しようとしたら 速攻でエラー吐くコンパイラにかけるんなら意味ないかと思うけど、 PHPみたいに元の型が何であろうが無視して新しい型にしてくれちゃう言語は、 ひるがえって『単なる型名を変数名につける』ってのが有効じゃないかと思うんだ。 PHPにおいてはアプリケーションハンガリアンよりシステムハンガリアンのほうがいい気がしてる。 ハンガリアンに限らず、PHPの柔軟すぎる型変換に適した命名規約を考えてくれ。
186 :nobodyさん :2009/03/18(水) 11:34:45 ID:???.net そもそも、ハンガリアンが嫌われているのは 変数に実際に入れる型がいろいろ変わるからなわけだが。 >>185 はバグ回避のために違う型を入れないようにするためと いっているのだと思うが、間違った型を入れるとか言う以前に ソフトウェアの性質上、型は変わるものなんだよ。 (変数に最初に想定していた型以外のものを入れることになる) 時代の流れとともに16bit変数は32bit変数に変わるし、 32bitポインタは64bitポインタに変わるし、 オブジェクト指向言語なら、型は継承され新しい型になる。 PHPのような柔軟な言語だからこそ、なおさらハンガリアンは必要ない。 それにハンガリアン(変数の頭に型を入れる)を使うまでもなく 変数名そのものが型をあらわしている。flagならtrue/falseだし、priceなら数値だろう。
187 :nobodyさん :2009/03/18(水) 11:35:28 ID:???.net >>185 flagがビットフラグ(整数)だったり priceが税計算機能つきのItemPriceクラスのオブジェクトだったらどうすんの?
188 :nobodyさん :2009/03/18(水) 11:35:53 ID:???.net 常識の範囲内ならどうでもいい。 つまりは、priceがlongからItemPriceに変わるというように 型が変わることがあるってこった。 それは避けられないからハンガリアンはよくない。
189 :nobodyさん :2009/03/18(水) 11:36:32 ID:???.net クラスでゲッターやセッター使ってれば タイプヒンティングも使えるし、型よりも値の範囲を絞って 例外を飛ばせるから全く問題ない。 一度処理に入ったら長い処理が行われるのではなくて 1回毎のシンプルな処理をセッションやクッキー使ってどうにか 継続させるのがWebアプリだから、ユーザー側のデータは 1回毎に改変が無いか毎回チェックする事になるし、型があってもなくても関係ない。
190 :nobodyさん :2009/03/18(水) 23:00:28 ID:???.net 終了 以後こちらへ システムハンガリアンってPHPでは有効じゃね? http://pc11.2ch.net/test/read.cgi/php/1237179147/
191 :nobodyさん :2009/03/19(木) 09:49:02 ID:???.net >>190 議論はここでおk 無駄なスレは使わなくておk
192 :◇N.OaZ1nFN2 :2009/11/03(火) 12:55:24 ID:???.net テスト
193 :nobodyさん :2011/04/22(金) 23:18:04.56 ID:itzBhGqM.net Mono最強伝説 http://ja.wikipedia.org/wiki/XSP_(Web%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC)
194 :nobodyさん :2011/05/13(金) 03:48:00.01 ID:???.net システムハンガリアン病だわ・・・ HTMLでさえも<span id="spanHoge">とか<input type="text" name="txtHoge">とか しないと気が済まない_| ̄|○
195 :nobodyさん :2011/05/13(金) 03:59:57.23 ID:???.net それハンガリアンの意義から逸脱してるよなw
196 :nobodyさん :2011/05/13(金) 23:21:15.36 ID:nIBGPhUJ.net そう? 意義とは?
197 :nobodyさん :2011/05/13(金) 23:30:39.71 ID:???.net 俺が立てたクソスレがまだあるとは思わなかった
198 :電脳プリオン :2013/01/27(日) 14:40:51.42 ID:???.net ?PLT(12080) ROUND2はなさそうだな
199 :nobodyさん :2017/12/30(土) 14:35:43.67 ID:YhlYw6jg.net 誰でも簡単にネットで稼げる方法など 参考までに、 ⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。 グーグル検索⇒『半藤のブブイウイウレレ』 L32JIAVAJE
51 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★
本文 スレッドタイトル 投稿者