探検


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

2008/12/08(月) 13:15:56ID:???
ROUND 1開始!
2008/12/10(水) 23:51:08ID:???
で、システム上はこうよ
try {
ReflectionFunction::export("array");
} catch(Exception $e) {
echo $e->getMessage();
}
2008/12/10(水) 23:52:01ID:???
ま、function_existsで調べればtrue falseで返してくれるわけだけど。
2008/12/10(水) 23:54:32ID:???
>>51
高木さんじゃなくて、大垣さんのほうが確実
2008/12/11(木) 00:02:45ID:???
ドキュメントもバグレポート出せば変わるから、
変わったその日から名実ともに関数じゃなくなるだろうね。

しかし、このルーズさというか曖昧さがPHPのいいところ
関数でも式でもないっていったって、言語構造っていったって、
if (include("test.php"))のreturnの扱いとか、特殊としか言いようがない。
2008/12/11(木) 09:50:56ID:???
めんどくさいから海外のMLとに投稿したり開発元にメールして聞いてみたらいいんじゃないの
2008/12/11(木) 10:07:48ID:???
そろそろ結論でたでしょ。
・言語解析上は、array()はT_ARRAYであって、T_FUNCTIONではない。
・一般に関数とは、引数が与えられて一定の結果を返すものという意味では関数
・ドキュメント上では関数に分類されているが、T_FUNCTIONではないという注釈がつく
・パーサートークンの中には式(≒関数)として評価されるものがいくつかある。
・中でもarrayは関数的性質が強い。(副作用が少なく線形写像的)
・よって、ドキュメント上の表記に差異がある。

結論は各自が導きだせばよい
例1)array()は言語解析上は関数ではないが、一般論的には関数に分類される。
例2)array()は広義では関数だが、厳密には関数ではない。
例3)PHPの話をするなら言語解析だけで十分なので関数ではない。
などなど。
事情を分かった上であれば、害はない。
2008/12/11(木) 17:25:38ID:???
答えでてないじゃんあんたは例えだしてるだけでしょ
2008/12/11(木) 17:45:58ID:???
お、そうかい?
> 結論は各自が導きだせばよい

結論 = f(事情);
fの定義によって結論が変わるというのがこの現象のすべてで
その例を出せば十分だろう。
2008/12/11(木) 18:23:36ID:???
echoが文字を出力するという結論に代わりがないように
arrayもだせよ
2008/12/11(木) 18:32:01ID:???
おいおい

> echoが文字を出力する

それは何の結論なんだよ
2008/12/11(木) 18:34:06ID:???
例1 echoは文字を出力する
例2 echoは配列をarrayと出力する
例3 echoはカンマで区切って出力できる
例4 if (echo("hoge")) print("hoge");はパースエラー
2008/12/11(木) 18:35:48ID:???
echo ってカンマ使えたの?
2008/12/11(木) 20:23:19ID:???
PHPに文句あるなら、言う相手は開発元のZendだろ?
ここでグダグダ言っても、Zendには声が届かない。

…と思ったが、参考になりました^^
2008/12/11(木) 20:52:34ID:???
zendって開発元だったの?
スポンサーじゃなかったっけ?
2008/12/11(木) 21:02:47ID:???
perlってオープンソースなの?
perlがオープンソースだから
PHPをカンタンに作れたの?
2008/12/11(木) 21:12:13ID:???
phpはCからできてますお
2008/12/12(金) 06:06:09ID:???
まぁ、PerlがPHPやJSPのようにHTMLソースのインラインで実行できたら、
まぁ、もっと初心者を取り込めたかもしれないねぇ。
まぁ、CPANの仕組みをもう少し落ち着いて考えたらよかったかもねぇ。
まぁ、そうならなくてよかったと思ってるPerlerは多いかもしれないけど、
まぁ、・・・
2008/12/12(金) 11:23:10ID:???
なんか詳しい人が多そうなので、聞いてみたいことがある。
PHPって、存在しないプロパティに値を代入すると、その場でプロパティが生ま
れるよね?

php -r '$hoge = new stdClass; $hoge->fuga = "ふがふが\n"; echo $hoge->fuga;'
=> ふがふが

これってPHPマニュアルのどこに書いてあるの?
オーバーロードの説明は読んだ。__set()の説明はあったけど、__set()の中身
が何もないデフォルトの場合の挙動の説明は見つけられなかった。
おかげでずっと、新しいプロパティが生まれていることに気づかなかった。
2008/12/12(金) 14:04:46ID:???
>>69
質問はくだ質へ
2008/12/12(金) 14:39:12ID:???
>>70
くだ質にはちょっと前に同じ質問がされてたんだよ。しかし回答はなかった。
たぶんPHPマニュアルには載ってないんだろう。

この辺の挙動を知っておかないとオーバーロードは理解できないのに、PHPマニュ
アルには載ってないんだとしたら、詳しい人たちはどうやってこれを知って理
解したのか聞きたいんだよ。

ちなみにPHPマニュアルのページ下のコメント欄みたいなところには載ってた。
しかしあそこはホントに玉石混交で、あそこにだけ載ってても意味ないだろ。
2008/12/12(金) 14:47:03ID:???
>>71
ちょっと前の同じ質問ってどれ?
2008/12/12(金) 14:53:17ID:???
>>72
今見てみたら、前スレの470だった。
http://pc11.2ch.net/test/read.cgi/php/1226517332/470
いろいろやり取りしてたけど、結局PHPマニュアルの当該URLは出てない。
2008/12/12(金) 15:00:03ID:???
ふむ。これじゃない?
http://jp.php.net/manual/ja/language.oop5.overloading.php
2008/12/12(金) 15:15:12ID:???
>>74
違うってよ。俺は__set()がユーザによって定義されてない、素のオブジェクト
の挙動の話をしてんの。>>69のコード読んでよ。これはPHP4でも動くんだよ。

そのリンク先のは、
> $obj->a = 1;
> echo $obj->a . "\n\n";
とかやってるけど、これは全部PHP5以降の __set()と__get()が呼ばれてるだろ。
2008/12/12(金) 15:27:30ID:???
ほらよ
http://jp.php.net/manual/ja/language.variables.php
2008/12/12(金) 15:44:48ID:???
>>76
おお、ありがとう。しかしこれ微妙に違うんじゃね?

これは
1.「未定義の変数をクラスとして扱うとstdClassのインスタンスになる」
ことの説明であって、

2.「任意のインスタンスは、未定義のプロパティをセットできる」
ことの説明じゃないだろ?

もちろん2.を前提として1.が説明されているわけだけど、2.そのものの説明は
どっかにないの?
2008/12/12(金) 15:46:13ID:???
屁理屈こねるやつだな
2008/12/12(金) 15:52:28ID:???
実際違うんだから仕方がない。
2008/12/12(金) 16:25:40ID:???
つうか、このオブジェクトの挙動について、元々知ってた人はどのくらいいる?
いるとしたら、どうやって知った?
これをPHPマニュアル読んで知った人って、一人でもいる?
2008/12/13(土) 00:40:30ID:???
おお!勉強になります!もっとやれ!!!…いや、みんなで考えよう(・∀・)
2008/12/13(土) 06:10:54ID:???
憶測:
PHPの由来はHTML文書中で簡単に<?php echo $hoge;?>するのが目的だったので、
変数は宣言せず、最初に代入等がおおなわれた時に作成される。
というのが基本仕様で、昔のマニュアルでは見かけたことがある。
これは、現在のマニュアルの「変数」のページにも
PHPでは変数を初期化する必要はないが、という控えめな表現で触れてある。

PHP4で導入されたクラス・オブジェクトでもそのことは変わらず、
メンバー変数の宣言はできるものの、実際のところ、代入によって
変数が育成されるという仕様に変更はなかった。

PHP5になって、public,protected,privateの区別を宣言できるようになったが、
宣言がない、もしくはvarで宣言された場合、PHP4互換となる。
また、PHP5ではクラス用のマジックメソッドが用意された。

これにより、宣言していないメンバー変数に対してオブジェクトからアクセスすると、
メンバー変数が作られるという"仕様"が結果的に発生する。
しかし、制御したい場合は__setでreturn null;なり例外を発生させることで、
宣言していないメンバー変数を使わせないというシステム仕様は実現できるので、
特に不自由することはない。

おもしろいのは、前者の仕様で運用すると、同じクラスから発生したオブジェクトなのに、
なのに、メンバー変数一覧に差異が生じ、get_object_varsでクエリを自動育成などを
やろうとすると、不具合の原因になるが、それは仕様の乱用と考えるのが妥当か。

ながーい、憶測ですんまそん。
2008/12/13(土) 09:49:00ID:???
>PHPの由来はHTML文書中で簡単に<?php echo $hoge;?>するのが目的だったので、
>変数は宣言せず、最初に代入等がおおなわれた時に作成される。
<?php echo $hoge;?>これのどこが代入なんだ?
2008/12/13(土) 11:53:59ID:???
>>83
> <?php echo $hoge;?>これのどこが代入なんだ?

どこに、それが代入だって書いてある?
2008/12/13(土) 11:55:05ID:???
なんだこいつ
2008/12/13(土) 15:53:42ID:???
変数宣言必須なコンパイラ環境でのリテラシーを持たないやつには、
インタプリタ環境での変数動的割り当てによる収穫について理解するのは難しい。
2008/12/14(日) 02:27:01ID:???
みんなが使ってみたプログラミング言語は?

じゃあ、俺から。
C→Perl→Java→PHP→SQL→JavaScript→Excel VBA

次は、ActionScriptを勉強したいです。
2008/12/14(日) 02:36:26ID:???
SQLってプログラミング言語なんだ
2008/12/14(日) 05:58:30ID:???
>>87
ひどい順番だなw
SQLを使わずにJavaでなにやってんだかw
何一つ習得できなかったとかいう落ちはやめてくれよな
JS使えてればASなんて勉強するまでもない。
2008/12/14(日) 11:49:11ID:???
>>88
プログラムは、「データ」とデータの「処理」から成り立っている。
一応SQLでも、処理(条件分岐とか)が書けるんだよね。

cf.日経ソフトウエア 2008年 03月号 p.55
分類/基礎となる計算モデル/事例
手続き型言語/チューリングマシン/C, Java
問い合わせ言語(非手続き型言語)/関係モデル/SQL
関数型言語(非手続き型言語)/ラムダ計算/Lisp, Haskell
論理型言語(非手続き型言語)/一階述語言語/Prolog

こういう知識って、学校の授業で勉強する場合は、計算科学やソフトウェア工学という科目で習うのかな?
2008/12/14(日) 11:58:38ID:???
そんなんプログラミングするなら中学生にだって基礎知識だろ
2008/12/14(日) 12:11:59ID:???
>>89
Javaはオブジェクト指向の教材として役立ちました!
…しょぼいアプレットが作れます><

ActionScript → Flash、Flex、AIRでWEBアプリを作る
広がる妄想(アイデア)が実現できれば、手段(プログラム言語)は何でもいいんだけど^^
2008/12/14(日) 12:18:50ID:???
じゃphpで十分じゃん
2008/12/14(日) 12:21:13ID:???
今の高校は「情報」という授業があるらしいね。
http://www.mext.go.jp/a_menu/shotou/zyouhou/main18_a2.htm
=このスレのネタみたいに、関数がどうとか熱く語り合っているのかな?

量子コンピューターの設計とか、プログラミング言語をデザインするとか、
スーパーハッカーみたいな中学生ばかりだったら、技術立国日本の未来は明るいwww
2008/12/14(日) 12:22:27ID:???
お前あほか。おっさん乙。
2008/12/14(日) 12:29:48ID:???
Simple is best.
簡単にできることを複雑にやる必要はない。

=WEBアプリなら、既存の資産を活かしてPerl、PHPで十分
2008/12/14(日) 12:40:36ID:???
C、アセンブラのおかげで、ハードの仕組みが理解できるようになった。
Javaのおかげで、オブジェクト指向の話が理解できるようになった。
WEBプログラミングのおかげで、サーバー、ネットワークの話が理解できるようになった。

<今後の課題>
1.デザインパターンのマスター
2.LISPやScheme等の関数型言語をマスター
3.将来実用化されるであろう量子コンピューターについて予習しておく

WEBアプリが自由自在に作れるようになったら、小遣い稼ぎのPHPは卒業だな!(・∀・)
2008/12/14(日) 12:54:56ID:???
量子コンピューターってプログラミング言語っていうレイヤーじゃないよな?

おれはPHPのかたわら、Haskellで遊んでみたけど、目から鱗。
PHPコードも洗練されてくるからおもしろい。
2008/12/14(日) 13:19:12ID:???
マスターとか言ってる奴がまともな技術と知識を持ってたためしがない
100nobodyさん
垢版 |
2008/12/14(日) 17:24:38ID:???
他人の自分語りほどウザイものはないよね〜
101nobodyさん
垢版 |
2008/12/14(日) 22:02:13ID:???
俺が最初に覚えた言語はHTML。
その中でも、<body>に関しちゃ、ネイティブ?って言われることがある
102nobodyさん
垢版 |
2008/12/14(日) 23:56:30ID:???
C>html>>>越えられない壁>>>php
103nobodyさん
垢版 |
2008/12/15(月) 17:36:09ID:???
このまま糞スレ化→dat落ちさせるのは惜しいな。
PHPの言語仕様について話し合える場所は少ない。
104nobodyさん
垢版 |
2008/12/15(月) 17:42:21ID:???
安心していいよ、このスレは残る
消えるのはお前だけだから
105nobodyさん
垢版 |
2008/12/16(火) 22:48:52ID:???
HTMLは高級言語って話は聞いたことあるけどCSSって言語?
106nobodyさん
垢版 |
2008/12/16(火) 22:52:43ID:9RkOzYwl
echoとprintは文字を出力することは同じなのに
なんで二つも同じことができるんですか?
107nobodyさん
垢版 |
2008/12/16(火) 22:58:39ID:???
PHPスレのテンプレ
108nobodyさん
垢版 |
2008/12/16(火) 23:02:16ID:???
テンプレの回答は求めてないですよ
109nobodyさん
垢版 |
2008/12/16(火) 23:10:00ID:???
じゃ何を求めてんの?
110nobodyさん
垢版 |
2008/12/16(火) 23:19:35ID:???
力…!!!
111nobodyさん
垢版 |
2008/12/19(金) 21:04:10ID:???
CSSも、関数やらロジックを実装するようになってきたからなぁ。
叙事詩的定義もなにか新しいプログラミング言語のように感じる
112nobodyさん
垢版 |
2008/12/19(金) 21:38:10ID:???
>>111
CSSの関数ってのはググったら見つかったけど、
例)CSS//関数
http://suika.fam.cx/~wakaba/wiki/sw/n/CSS++%E9%96%A2%E6%95%B0

> 叙事詩的定義
ってのはぜんぜん見つからない。"epic(al) definition" でも該当なし。
詳細プリーズ。
113nobodyさん
垢版 |
2008/12/19(金) 22:09:17ID:???
形容しただけだろ
日本語能力だいじょうぶか?
114nobodyさん
垢版 |
2008/12/19(金) 22:39:27ID:???
で、形容するとどういう意味になるんだい?
115nobodyさん
垢版 |
2008/12/19(金) 22:45:24ID:???
短文煽りは不快なだけで何も生み出さないからやめようぜ。
そのうち Kusakabe (void) みたいになっちまうぞ。
116nobodyさん
垢版 |
2008/12/19(金) 23:04:19ID:???
>>113-114はストレスたまっててここで発散したいんです!
117nobodyさん
垢版 |
2008/12/19(金) 23:06:25ID:???
>>106 に遅レス。

なんで echo と print の二つがあるかというと、まあ以下の文書に解説がある
わけだけど、

FAQTs - Knowledge Base - View Entry - What is the difference between echo and print?
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40

どうも読んでてまだるっこしい。

2番目とか、
「echo は文(statement)、printは式(expression)」
こう書いたら、ずっとスッキリすると思うんだが。

そういう専門用語を使いたくないのかもしれないが、statement やexpression
程度の簡単な概念すら避けて説明するのは間違っていると思う。

これは外部リンクだけど、PHPマニュアルは全体的にそんな印象。
118nobodyさん
垢版 |
2008/12/19(金) 23:08:40ID:???
作った張本人たちもアバウトってことですね
119nobodyさん
垢版 |
2008/12/19(金) 23:16:45ID:???
>>118
さすがに張本人は分かってなきゃ作れないだろ。
単にユーザへの説明の仕方の問題だと思う。
120nobodyさん
垢版 |
2008/12/20(土) 10:04:15ID:???
本家のMLに参加して質問するのが近道ですね
121nobodyさん
垢版 |
2008/12/20(土) 12:44:45ID:???
英語ができたらなあ。自然言語を書くのはは難しい...。
122nobodyさん
垢版 |
2008/12/20(土) 12:46:50ID:???
プログラミングと英語はほとんど同じような気が・・・
123nobodyさん
垢版 |
2008/12/20(土) 12:55:36ID:???



J
124nobodyさん
垢版 |
2008/12/20(土) 12:56:40ID:???
そうかあ?自然言語は理詰めで書けないじゃないか。
文法だけ覚えても engrish.com に載るような英文しか書けない。
125nobodyさん
垢版 |
2008/12/20(土) 13:28:24ID:???
PG言語も文法だけ覚えてもサンプルに載ってるような英文しか書けない。
126nobodyさん
垢版 |
2008/12/20(土) 13:33:18ID:???
if (i = no money) {you are ogottekureru me}else{you are keti}
127nobodyさん
垢版 |
2008/12/20(土) 15:55:32ID:???
まさか英語ができないやつとかいるの?
128nobodyさん
垢版 |
2008/12/20(土) 15:56:26ID:???
お前だけだろ
129nobodyさん
垢版 |
2008/12/20(土) 16:21:45ID:???
俺は英語ができると思ったことはないな。
一応、片言で会話したり、英語のドキュメントも
英文サイトは普通に読めるから不自由はしないけど、
英語で恋愛はできんw
130nobodyさん
垢版 |
2008/12/20(土) 16:27:31ID:???
いや今話してるのは
メーリングリストに投稿するとか
その程度のレベルの話だから。
131nobodyさん
垢版 |
2008/12/20(土) 16:28:39ID:???
お、そうか、>>120からの流れね。数レス前も読まずに書いて寸摩損
132nobodyさん
垢版 |
2008/12/20(土) 16:45:53ID:???
どうやってMLに入会するのかもわからない
普通に申請するだけじゃだめみたいね
133nobodyさん
垢版 |
2008/12/20(土) 16:58:17ID:???
入会の仕方書いてあるでしょ。
「英語」で(藁
134nobodyさん
垢版 |
2008/12/20(土) 18:00:46ID:???
英語がわからないから入会方法がわからないって捉えられないとかゆとりですか?
135nobodyさん
垢版 |
2008/12/21(日) 00:33:12ID:???
OK! well, let's talk in English here.
136nobodyさん
垢版 |
2008/12/21(日) 00:34:49ID:???
このスレを見ている人はこんなスレも見ています。(ver 0.20)
pixiv自前イラスト向上スレ part7 [CG]
【ショタ】3次専ショタスレ 10【女装・美少年】 [Download]

... what are you interested in ? (^^;
137nobodyさん
垢版 |
2008/12/21(日) 05:34:29ID:???
なんで学生時代に英語勉強しなかったの?
138nobodyさん
垢版 |
2008/12/21(日) 05:54:32ID:???
俺はセンターで9割近くは取ったが、いまだに英語ができる気がしない。

All your base are belong to us - Wikipedia
http://ja.wikipedia.org/wiki/All_your_base_are_belong_to_us
これも解説を読まなきゃ分からんかった。
139nobodyさん
垢版 |
2008/12/21(日) 05:58:34ID:???
英語のオンラインゲームできれば
「英語できる」と認定していいと思う
140nobodyさん
垢版 |
2008/12/22(月) 01:06:32ID:???
I try to write the comment on program code from yesterday.
It's cooooool!!! ;-p
141nobodyさん
垢版 |
2008/12/28(日) 21:22:18ID:???
「phpできます!」なんて自信たっぷりに言われた時の恥ずかしさ - ドグマを探しに
http://d.hatena.ne.jp/crenlif/20081114/1226660315

> PHPのあれが駄目とかじゃなく、もし神様(何の?)が、今までのは無かった
> ことにしてPHPをどこでも3ヶ所直していいよっていったらどうするかっての
> を聞いてみたいです。

具体的な内容はリンク先を参照。この辺ほんとに直らんものかなあ。
142nobodyさん
垢版 |
2008/12/28(日) 21:25:58ID:???
結局関数名と記法の話?
143nobodyさん
垢版 |
2008/12/28(日) 21:43:51ID:???
>>142
違うだろ。
144nobodyさん
垢版 |
2008/12/28(日) 22:07:40ID:???
別の話。

PHPでの内部変数の扱われ方 - PHP5のオブジェクトコピーでありがちな勘違い - PHPプロ!ニュース
http://www.phppro.jp/news/304

コピーオンライト - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%94%E3%83%BC%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%88

arrayはオブジェクトじゃないのでコピーオンライトは行われないかと思ったが、
実行時間を見ると、どうやらちゃんとコピーオンライトしているらしい。

~ $ time php -r '$a=range(0, 100000);'
0.069 secs
~ $ time php -r '$a=range(0, 100000); $b=$a;'
0.068 secs
~ $ time php -r '$a=range(0, 100000); $b=$a; $b[100]=0;'
0.117 secs
145nobodyさん
垢版 |
2008/12/28(日) 22:13:34ID:???
>>143
どうして?
146nobodyさん
垢版 |
2008/12/28(日) 22:17:57ID:???
$bの値を書き換えた後、実行時間が2倍近くになってるだろ。
147nobodyさん
垢版 |
2008/12/28(日) 22:35:05ID:???
>>146
>>143
148nobodyさん
垢版 |
2008/12/28(日) 22:44:54ID:???
違う?
じゃあどうして $b の一部を書き換えると、実行時間がこんなに延びんの?
149nobodyさん
垢版 |
2008/12/28(日) 22:45:55ID:???
あ、環境書いてなかった。

~ $ php --version
PHP 5.2.6 (cli) (built: Sep 13 2008 11:13:29)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
150nobodyさん
垢版 |
2008/12/28(日) 22:55:23ID:???
つうかググればすぐ言及するページは見つかる。やっぱり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にはどこに書いてあるのか分からん。バグレポートばかり引っかかる。
151nobodyさん
垢版 |
2008/12/28(日) 23:10:01ID:???
この辺の挙動はパフォーマンスに重大な影響を与えるのに、公式ドキュメント
には記述が見つからん。たぶん書いてないんだろう。

ライブラリの記述はそこそこだが言語仕様の記述は貧弱。こういうのがPHPの一
番直してほしいところだな。
レスを投稿する


ニューススポーツなんでも実況