或阿呆のブログ

Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。最近はスロット放浪記やってます。。

PerlとPythonどちらが勉強になるか?!

■[Perl][Python]PerlPython学び易さ比較。

以前書いた、PerlPythonの学び易さ比較が意外と見られているので、違う観点で書こうと思った。

PerlPython学び易さ比較を書いた意図

以前書いたのは、PerlPythonを学ぶにはどっちがハードルが低いかというところであって、どちらが使えるとかそういう意味はまったく無い。

PerlPythonどちらが勉強になるか?!の意図

今回思ったのは、PerlPythonどちらが勉強になるか?!という点。

結論

結論から言うと、今回はPerl

考察

Perlはいろいろな言語の良いところを取り入れているし、スタイルも様々。それらを覚えてしまえば、意外と他の言語と似たような書き方が出来る。Pythonの場合は、スタイルが統一され過ぎて、広がりが無い。使い易いと言えば使い易いんだけどね・・・。例えば、ビルドツールにCmakeっていうのがあって、意外と難しい。これをはじめて使う人が二人いたとして、Perlしか使えない人とPythonしか使えない人だとして、その場合どちらが覚えが早いかと言えば、Perlしか使えない人じゃなかろうか。あまり良いたとえじゃないけど・・・。

それから、Unix/LinuxCUIツールも、Perl使っている人なら、とっつきやすいんじゃなかろうか。記号が多くて、シンタックスがけっこう複雑だったりすると、はじめは戸惑う。その辺の雑多な感じとかは、Perlをやっていると免疫がついていることかと思う。

そういや、Perl信者と思われる方の1人に、dankogaiさんがいるが、興味深いことをおっしゃっていた。

一つ言えるのは、私は学びたい、のではなく、学び続けたい、ということだ。

感動した。以前私が主張したのは、学びたい人にとってどっちがとっつきやすいかということだけ。学び続けたいということは、学ぶことがたくさんあるという意味。Pythonも学べることが多いわけだけど、Perlにはこの点では敵わないかなぁと思う。Perlの機能拡張はPythonの比ではない。CPAN探せばいくらでも面白いモジュール転がっているし(しかもソースまで転がっている)、Perl6という次の大きな題材がある。Pythonは、基本的には覚えることは少ない。設計自体がミニマムだから。

Pythonの産みの親は高度な数学の教育を受けている合理主義者であるということと、Perlの産みの親は自然言語言語学者であるということも関連しているのかもしれない。プログラミング言語は使い易くするような工夫があることは当然だという前提で(PerlPythonもそれはクリアしている)、合理的でコンパクトなものを学びたい人にはPythonが向いていて、モノ書きみたいに言葉を選んで自分の世界観を確立したり、十人十色の味のあるソースコードを味わいたい人にはPerlが向いているんじゃないかな。

俺はPythonが好きだけど。。。ぼそっ・・・。

書籍紹介

せっかくだから、産みの親が書いた書籍を紹介しよう。

Perl

プログラミングPerl〈VOLUME1〉

プログラミングPerl〈VOLUME1〉

プログラミングPerl〈VOLUME2〉

プログラミングPerl〈VOLUME2〉

見るからに分厚い書籍。しかも二別冊。合計すると1000ページ超える。いかにも覚えることが多そうで、こんなの覚えられるか?と思うけど、Volume1に第1章にPerl概説ってういのがあって、p.50に「世の中知らないことがあってもへっちゃらさ」というタイトルの項目がある。Perl概説を読んだら、Perlの免許皆伝と言う意味合いのことが書いてある。自然言語は、言語のすべてを知らなくても、自分なりに知っていることを組み合わせて会話出来るでしょう?だから、すべてを覚える必要はないっていうこと。そして、自分に必要なものを覚えて言って、自分が使うサブセットを増やして行けばいいというスタンスなんだろう。

Perlのスローガンは、

"There's More Than One Way To Do It." 「やり方はひとつじゃない」

なんだけど、すべての解決法のやり方を知っている必要はなし、解決法も1つしか知らなくてもいい。使えればいいんだ。ただし、1つのやり方を強制するようなことはしないし、多様性を推奨するという点はスローガンそのままだ。

Python

Pythonチュートリアル 第2版

Pythonチュートリアル 第2版

いかにもGuidoらしい。ものすごくコンパクト。基本的なコンセプトと、言語の実装が書かれている。あまり評価は良くないようだけど。必要なことにだらだらと繰り返したり、アメリカンジョークを加えて微妙なテイストになりやすく、分厚くなる傾向があるオライリーの本にしては、ものすごくあっさりしている。これだけ覚えればPythonでガリガリプログラム書けるかというと、そうでもないけど、Pythonインストールしてインタラクティブシェルでガチャガチャ動かしていれば、最低限の使い方は、すぐにマスター出来るだろう。コアな知識は別としてね。

Guidoの言葉ではないけど、The Zen of PythonっていうのがPythonの哲学を上手く表していると思うので、紹介する。和訳は今のところ省略させてください。

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

それでもやっぱり、、、

俺はPythonが好きだけど・・・。ぼそ・・・。(2回目)