PHP
ナビゲーションに移動
検索に移動
〜 PHP について、PHP設計者 Rasmus Lerdorf
〜 PHP について、PHP設計者 Rasmus Lerdorf
僕はホンモノのプログラマではありませんから。ホンモノのプログラマは、「動いてるように見えるけど、メモリリークだらけじゃないか。直す必要があるかもね」なんて言うでしょ? 僕なら、10リクエストごとにApacheを再起動しますね。
〜 PHP について、PHP設計者 Rasmus Lerdorf
プログラミングを好む人がいるのは知ってますが、全く理解できないですね。
〜 PHP について、PHP設計者 Rasmus Lerdorf
PHP(英語:Print my HomePage)とは、プログラミング初心者がホームページを自動生成する訓練をするために作られたテンプレートエンジプログラミング言語[要出典]である。
概要[編集]
PHPはホームページ(ホムペ)をプリントすることに特化した言語である。ホムペ専用言語であるためにそのプリント速度は速く、通常の3倍の速度が出るという。多くのプロ㌘ミング初心者たちが、その疾風のような姿に魅了され、PHPの世界に足を踏み込んでいく。
ところがこれは仮の姿にすぎない。実はPHPの言語仕様は非常に難解であり、一度ハマるとデバッグに他言語の30倍の労力がかかるという恐ろしい言語である。これはプログラミング初心者を鍛え上げる意図がある。
とはいえ、使いこなせれば通常の3倍のプリント速度が出る高性能さも合わせ持つのである。そのため、もとは初心者向けの学習用言語ではあったが、その後、Lisp、Algol、LuaJIT、Algol、Erlang、Rust、Verilog VHDLなどのクソのような言語に痺れを切らした上級ホムペエンジニアたちによっても、PHPは愛用されている(プログラミングに自信が無い人は絶対にマネしないでください)。
仕様[編集]
以下はすべて仕様であって、断じてバグではない。バグではないといったらバグではない。バグではない。
- 「超弱い動的型付け」を採用しており、データを勝手に変換・解釈してくれる。
そのせいで、誤動作しても原因がつかめない。 - "3" 5は8である。(便利)
- "0x0A" == "10" は真である。(便利すぎる)
- 標準ライブラリの関数に一貫性がない。(例:str_replace, strlen, parse_str...)(例:in_array は第一引数が探索対象、strpos は第二引数が探索対象)。(脳トレ)
- バージョンどころかリビジョンを変えただけで関数の振る舞いが違うことがある。(アハ体験)
- 異常な文字コードもあたたかく受けいれてくれる。(優しくて寛容)
- 変数$aにオブジェクトが格納されているときに「$b=$a;」とすると、複製がコピーされる。ちなみにオブジェクトの参照(リファレンス)を代入したいときは「$b=&$a;」とする。
- 「.」は文字列連結演算子であり、オブジェクトのメンバ参照には「->」を使用する。
- 例外処理機構があるのに、ほとんどの関数はエラー時に例外を投げない。(ぶっちゃけ例外ってうざいよなぁ)
- 細かい話↓
- php.iniのpost_max_sizeを2048Mにすると、エラーも出さずに何もpostされなくなる。
- sort関数の振る舞いは相当おかしいらしい。おかしすぎて筆者も説明しきれない。
- PHP5.0 の fgetcsv() の振る舞いはロケールの設定に依存する。
- strpos('abcd', 'a') は 0 を返すが、0 は偽である。
関連項目 [編集]
Print("動的型付け") : | LISP - JavaScript - VBScript - PHP - perl - Ruby - Python |
---|---|
Print(str("静的型付け")) : | BASIC - COBOL - C言語 - C - C# - D言語 - swift - HSP |
<p>マークアップ言語</p> : | HTML - CSS - MediaWiki |
難解プログラミング言語 : | Brainfuck - Grass - HQ9 - lazy K - Pxem - 古代C言語 |
その他の言語 : | 手動 - 肉体言語 - DNA - Scratch |
構文等 : | Hello World - goto文 - 入れ子 - 再帰 - ヌル - クワイン |
UnBooks : | JavaScript入門 - 図解・今すぐわかるCSS |
関連項目 : | エクストリーム・プログラミング - 完全に理解した - フローチャート - オブジェクト指向 - プログラマー |