読者です 読者をやめる 読者になる 読者になる

ゆーすけべー日記

はてなBlogってどーなの!?

PHPの小文字から始まる関数が4405個もあってびっくりした件

#perl-casual@freenode で話題になって、 PHPの関数の 機能をPerlで実現するにはどうすればいいのかの対になったリファレンスが欲しいよねー ということになりました。junichiroさんによると需要があるみたいです。 詳しくはYappoさんが書いてくれると思います。 そんで(ちょっとした僕の発言のおかげでWikiHubに迷惑をかけてごめんなさいな感じなのですがすいません><)、 PHPのリファレンスサイトにのってる関数っていったいどんなのがあるんだ!というのを くまなく調べることをしてみました。 あんまPHPよくわかってないのですが、クラスから派生してるっぽい関数は除きつつ、 小文字から始まる関数名の数を公式サイトから数えてみると、 なんと「4405」個もあったよ!

以下がそれを調べるために使えるPerlの簡単なスクレイパースクリプトです。

use Web::Scraper;
use URI;
my $url = 'http://php.net/manual/ja/indexes.php';
my $scraper = scraper {
    process 'dd.indexentry', 'functions[]' => 'TEXT';
};
my $res = $scraper->scrape(URI->new($url));
my @fs = grep { $_ =~ /^[^A-Z]/ } @{$res->{functions}};
print $#fs . "\n";

perldoc perlfuncでPerlの標準関数を調べると数が220個ほど。 ちょっと何を「標準」と呼んだらいいのかPHPの場合わかりかねますが、 リファレンスサイトに載ってるその数と比べるとだいぶー違いますね。 まぁ、Perlの場合は標準でついてくるモジュールの関数を使ったりしますから、 一概に比較はできませんが、言語の違いってのを改めて感じました。

ちょw、この関数使わないだろw

みたいなのもPHPにはあったりしますが、Perlの場合はそれをCPANモジュールで解決してるわけであって、 組み込みの関数でやるかモジュールインスコしてやるかはそれぞれ利点や不都合な点あるわけで... ただ、Perlの場合は配列を操作する関数であっても、 どちらかというといくつかの関数を組み合わせて目的を達成するのに比べて、 PHPの場合はそれぞれがひとつずつ関数になっている感じは受けました。 僕はやっぱり柔軟なPerlのやり方の方(思想)が好きなーと思います。 自分は、確か、Perlより、PHPの方を最初に触りました。 問題を解決する関数がすぐに見つかればPHPは初心者にとって簡単という印象ですが、 わかってると、少し考えればいかようにも解決ができるPerlの方がいいなという具合です(思想的にね)。 よりスマートなやり方を好めばList::Utilモジュールを使うというような解決策もありますし。

いやーでもこんなたくさんあるとは知らなんだです。 まぁ、使う人が気持ちいい言語を使えばいいと思いましたね!