2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

さまざまな言語仕様について熱く語る闘技場

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
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★