さまざまな言語仕様について熱く語る闘技場
おいおい > echoが文字を出力する それは何の結論なんだよ 例1 echoは文字を出力する 例2 echoは配列をarrayと出力する 例3 echoはカンマで区切って出力できる 例4 if (echo("hoge")) print("hoge");はパースエラー PHPに文句あるなら、言う相手は開発元のZendだろ? ここでグダグダ言っても、Zendには声が届かない。 …と思ったが、参考になりました^^ zendって開発元だったの? スポンサーじゃなかったっけ? perlってオープンソースなの? perlがオープンソースだから PHPをカンタンに作れたの? まぁ、PerlがPHPやJSPのようにHTMLソースのインラインで実行できたら、 まぁ、もっと初心者を取り込めたかもしれないねぇ。 まぁ、CPANの仕組みをもう少し落ち着いて考えたらよかったかもねぇ。 まぁ、そうならなくてよかったと思ってるPerlerは多いかもしれないけど、 まぁ、・・・ なんか詳しい人が多そうなので、聞いてみたいことがある。 PHPって、存在しないプロパティに値を代入すると、その場でプロパティが生ま れるよね? php -r '$hoge = new stdClass; $hoge->fuga = "ふがふが\n"; echo $hoge->fuga;' => ふがふが これってPHPマニュアルのどこに書いてあるの? オーバーロードの説明は読んだ。__set()の説明はあったけど、__set()の中身 が何もないデフォルトの場合の挙動の説明は見つけられなかった。 おかげでずっと、新しいプロパティが生まれていることに気づかなかった。 >>70 くだ質にはちょっと前に同じ質問がされてたんだよ。しかし回答はなかった。 たぶんPHPマニュアルには載ってないんだろう。 この辺の挙動を知っておかないとオーバーロードは理解できないのに、PHPマニュ アルには載ってないんだとしたら、詳しい人たちはどうやってこれを知って理 解したのか聞きたいんだよ。 ちなみにPHPマニュアルのページ下のコメント欄みたいなところには載ってた。 しかしあそこはホントに玉石混交で、あそこにだけ載ってても意味ないだろ。 >>72 今見てみたら、前スレの470だった。 http://pc11.2ch.net/test/read.cgi/php/1226517332/470 いろいろやり取りしてたけど、結局PHPマニュアルの当該URLは出てない。 >>74 違うってよ。俺は__set()がユーザによって定義されてない、素のオブジェクト の挙動の話をしてんの。>>69 のコード読んでよ。これはPHP4でも動くんだよ。 そのリンク先のは、 > $obj->a = 1; > echo $obj->a . "\n\n"; とかやってるけど、これは全部PHP5以降の __set()と__get()が呼ばれてるだろ。 >>76 おお、ありがとう。しかしこれ微妙に違うんじゃね? これは 1.「未定義の変数をクラスとして扱うとstdClassのインスタンスになる」 ことの説明であって、 2.「任意のインスタンスは、未定義のプロパティをセットできる」 ことの説明じゃないだろ? もちろん2.を前提として1.が説明されているわけだけど、2.そのものの説明は どっかにないの? つうか、このオブジェクトの挙動について、元々知ってた人はどのくらいいる? いるとしたら、どうやって知った? これをPHPマニュアル読んで知った人って、一人でもいる? おお!勉強になります!もっとやれ!!!…いや、みんなで考えよう(・∀・) 憶測: PHPの由来はHTML文書中で簡単に<?php echo $hoge;?>するのが目的だったので、 変数は宣言せず、最初に代入等がおおなわれた時に作成される。 というのが基本仕様で、昔のマニュアルでは見かけたことがある。 これは、現在のマニュアルの「変数」のページにも PHPでは変数を初期化する必要はないが、という控えめな表現で触れてある。 PHP4で導入されたクラス・オブジェクトでもそのことは変わらず、 メンバー変数の宣言はできるものの、実際のところ、代入によって 変数が育成されるという仕様に変更はなかった。 PHP5になって、public,protected,privateの区別を宣言できるようになったが、 宣言がない、もしくはvarで宣言された場合、PHP4互換となる。 また、PHP5ではクラス用のマジックメソッドが用意された。 これにより、宣言していないメンバー変数に対してオブジェクトからアクセスすると、 メンバー変数が作られるという"仕様"が結果的に発生する。 しかし、制御したい場合は__setでreturn null;なり例外を発生させることで、 宣言していないメンバー変数を使わせないというシステム仕様は実現できるので、 特に不自由することはない。 おもしろいのは、前者の仕様で運用すると、同じクラスから発生したオブジェクトなのに、 なのに、メンバー変数一覧に差異が生じ、get_object_varsでクエリを自動育成などを やろうとすると、不具合の原因になるが、それは仕様の乱用と考えるのが妥当か。 ながーい、憶測ですんまそん。 >PHPの由来はHTML文書中で簡単に<?php echo $hoge;?>するのが目的だったので、 >変数は宣言せず、最初に代入等がおおなわれた時に作成される。 <?php echo $hoge;?>これのどこが代入なんだ? >>83 > <?php echo $hoge;?>これのどこが代入なんだ? どこに、それが代入だって書いてある? 変数宣言必須なコンパイラ環境でのリテラシーを持たないやつには、 インタプリタ環境での変数動的割り当てによる収穫について理解するのは難しい。 みんなが使ってみたプログラミング言語は? じゃあ、俺から。 C→Perl→Java→PHP→SQL→JavaScript→Excel VBA 次は、ActionScriptを勉強したいです。 >>87 ひどい順番だなw SQLを使わずにJavaでなにやってんだかw 何一つ習得できなかったとかいう落ちはやめてくれよな JS使えてればASなんて勉強するまでもない。 >>88 プログラムは、「データ」とデータの「処理」から成り立っている。 一応SQLでも、処理(条件分岐とか)が書けるんだよね。 cf.日経ソフトウエア 2008年 03月号 p.55 分類/基礎となる計算モデル/事例 手続き型言語/チューリングマシン/C, Java 問い合わせ言語(非手続き型言語)/関係モデル/SQL 関数型言語(非手続き型言語)/ラムダ計算/Lisp, Haskell 論理型言語(非手続き型言語)/一階述語言語/Prolog こういう知識って、学校の授業で勉強する場合は、計算科学やソフトウェア工学という科目で習うのかな? そんなんプログラミングするなら中学生にだって基礎知識だろ >>89 Javaはオブジェクト指向の教材として役立ちました! …しょぼいアプレットが作れます>< ActionScript → Flash、Flex、AIRでWEBアプリを作る 広がる妄想(アイデア)が実現できれば、手段(プログラム言語)は何でもいいんだけど^^ 今の高校は「情報」という授業があるらしいね。 http://www.mext.go.jp/a_menu/shotou/zyouhou/main18_a2.htm =このスレのネタみたいに、関数がどうとか熱く語り合っているのかな? 量子コンピューターの設計とか、プログラミング言語をデザインするとか、 スーパーハッカーみたいな中学生ばかりだったら、技術立国日本の未来は明るいwww Simple is best. 簡単にできることを複雑にやる必要はない。 =WEBアプリなら、既存の資産を活かしてPerl、PHPで十分 C、アセンブラのおかげで、ハードの仕組みが理解できるようになった。 Javaのおかげで、オブジェクト指向の話が理解できるようになった。 WEBプログラミングのおかげで、サーバー、ネットワークの話が理解できるようになった。 <今後の課題> 1.デザインパターンのマスター 2.LISPやScheme等の関数型言語をマスター 3.将来実用化されるであろう量子コンピューターについて予習しておく WEBアプリが自由自在に作れるようになったら、小遣い稼ぎのPHPは卒業だな!(・∀・) 量子コンピューターってプログラミング言語っていうレイヤーじゃないよな? おれはPHPのかたわら、Haskellで遊んでみたけど、目から鱗。 PHPコードも洗練されてくるからおもしろい。 マスターとか言ってる奴がまともな技術と知識を持ってたためしがない 俺が最初に覚えた言語はHTML。 その中でも、<body>に関しちゃ、ネイティブ?って言われることがある このまま糞スレ化→dat落ちさせるのは惜しいな。 PHPの言語仕様について話し合える場所は少ない。 安心していいよ、このスレは残る 消えるのはお前だけだから HTMLは高級言語って話は聞いたことあるけどCSSって言語? echoとprintは文字を出力することは同じなのに なんで二つも同じことができるんですか? CSSも、関数やらロジックを実装するようになってきたからなぁ。 叙事詩的定義もなにか新しいプログラミング言語のように感じる >>111 CSSの関数ってのはググったら見つかったけど、 例)CSS//関数 http://suika.fam.cx/ ~wakaba/wiki/sw/n/CSS++%E9%96%A2%E6%95%B0 > 叙事詩的定義 ってのはぜんぜん見つからない。"epic(al) definition" でも該当なし。 詳細プリーズ。 短文煽りは不快なだけで何も生み出さないからやめようぜ。 そのうち Kusakabe (void) みたいになっちまうぞ。 >>113-114 はストレスたまっててここで発散したいんです! >>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マニュアルは全体的にそんな印象。 >>118 さすがに張本人は分かってなきゃ作れないだろ。 単にユーザへの説明の仕方の問題だと思う。 英語ができたらなあ。自然言語を書くのはは難しい...。 プログラミングと英語はほとんど同じような気が・・・ そうかあ?自然言語は理詰めで書けないじゃないか。 文法だけ覚えても engrish.com に載るような英文しか書けない。 PG言語も文法だけ覚えてもサンプルに載ってるような英文しか書けない。 if (i = no money) {you are ogottekureru me}else{you are keti} 俺は英語ができると思ったことはないな。 一応、片言で会話したり、英語のドキュメントも 英文サイトは普通に読めるから不自由はしないけど、 英語で恋愛はできんw いや今話してるのは メーリングリストに投稿するとか その程度のレベルの話だから。 お、そうか、>>120 からの流れね。数レス前も読まずに書いて寸摩損 どうやってMLに入会するのかもわからない 普通に申請するだけじゃだめみたいね 英語がわからないから入会方法がわからないって捉えられないとかゆとりですか? OK! well, let's talk in English here. このスレを見ている人はこんなスレも見ています。(ver 0.20) pixiv自前イラスト向上スレ part7 [CG] 【ショタ】3次専ショタスレ 10【女装・美少年】 [Download] ... what are you interested in ? (^^; 俺はセンターで9割近くは取ったが、いまだに英語ができる気がしない。 All your base are belong to us - Wikipedia http://ja.wikipedia.org/wiki/All_your_base_are_belong_to_us これも解説を読まなきゃ分からんかった。 英語のオンラインゲームできれば 「英語できる」と認定していいと思う I try to write the comment on program code from yesterday. It's cooooool!!! ;-p 「phpできます!」なんて自信たっぷりに言われた時の恥ずかしさ - ドグマを探しに http://d.hatena.ne.jp/crenlif/20081114/1226660315 > PHPのあれが駄目とかじゃなく、もし神様(何の?)が、今までのは無かった > ことにしてPHPをどこでも3ヶ所直していいよっていったらどうするかっての > を聞いてみたいです。 具体的な内容はリンク先を参照。この辺ほんとに直らんものかなあ。 別の話。 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 $bの値を書き換えた後、実行時間が2倍近くになってるだろ。 違う? じゃあどうして $b の一部を書き換えると、実行時間がこんなに延びんの? あ、環境書いてなかった。 ~ $ 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 つうかググればすぐ言及するページは見つかる。やっぱり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にはどこに書いてあるのか分からん。バグレポートばかり引っかかる。 この辺の挙動はパフォーマンスに重大な影響を与えるのに、公式ドキュメント には記述が見つからん。たぶん書いてないんだろう。 ライブラリの記述はそこそこだが言語仕様の記述は貧弱。こういうのがPHPの一 番直してほしいところだな。 >>148 落ち着け。145は別の話だ。 そっちの話は143が説明できないようだが。 Amazon.co.jp: はじめてのPHP言語プログラミング入門: 大垣 靖男: 本 http://www.amazon.co.jp/dp/4774122866 どうやらこの本がおすすめらしい。 PHPの言語仕様についてきちんと扱った本だという。 ,j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;; {;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; ヾ;;;ハ ノ .::!lリ;;r゙ 在日の方々はかわいそうな強制連行の被害者 `Z;i 〈.,_..,. ノ;;;;;;;;> ,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f そんなふうに考えていた時期が 〜''戈ヽ `二´ r'´:::. `! 俺にもありました 最近、個人的に面白いと思った言語仕様があるのだが、ここに書いてる時間が ないし、書いても長くてウザがられそうなので、クイズにしてみる。 「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 が正しいかどうか、 問題があるとしたらどこか、考えてみよう。 read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる