上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.-- -- l スポンサー広告 l top
最近スクリプト言語を1つ学ぼうと思いたちました。

スクリプト言語といえばPerl,PHP,Ruby,Pythonなどがあります。

Perlは一時期はやりましたがあまりの可読性の低さから最近はさほど聞きませんし、
PHPはヤフーに採用されhtmlやDBとの親和性がすごく高いのですがそれゆえにPHPを含むHTMLは読み解くのが難解であるといわれています。

そこで今回はRubyかPythonに絞って、どちらか1つを選んで勉強したいと思います。
とはいえネットで「Python Ruby」とすればPythonVSRubyの比較が多数行われている。

しかしどの記事も決定打に欠けるし、そもそも配列の確保がコンマ何秒早いとかメモリ関連の処理が一手間少ないとかそんなもん比較されてもわたしゃほとんど興味ない。大体バージョン上がれば改善されたりもするだろうし。

事実どちらがすぐれているかなどという比較なんて不毛だという記事がWikipediaにも書かれているし、私自身全く持ってその通りだと思う。

結局はどちらもスクリプト言語なのだからC言語をはじめとしたコンパイラ言語より動作は遅いだろうし、どちらもライブラリを読み込むかたちで機能を膨らませていくかたちをとっているし、プラットフォームはC,JAVA,.NETなど主要なものはどちらもカバーしているし、RubyにはRuby on RailsがあるといえばPythonにはDjango,Turbo Gearsなどがあるというのだからかわらないだろう。

じゃぁどのように言語を決めようか。1つは教えてgooにいい具合の比較が載っていたので引用しよう。

Perl, Ruby, Pythonどれを使えば良いか


Perl
メリット:
三者の中で最も古くから使われているものなので、
1. UNIXベースのシステムならまず間違いなく入っていることが期待できる。
(一部の商用システムを除く)
2. サンプルおよびモジュールがたくさんあるので
参考にできたり楽ができたりする
3. 多分三つの中で一番処理速度が早い
4. 参考書も一番出版されている(玉石混交ですが)

デメリット:
1. 気をつけないと三ヶ月先の自分でも読めないスクリプトになってしまいがち
2. 歴史があることの裏返しで、ネット上にある情報の中には
あまりにも古いものが残っていたりして
混乱することがあるかもしれない
3. 日本語テキストを扱うときのエンコーディング周りの
ルールが複雑でわかりにくい

Python:
メリット:
1. Perlほどではないが、Linuxをつかったディストリビューションの
パッケージ管理に使われるなどしているので
割と広く使われ始めている
2. Googleの公式言語(のひとつ)だぜぇと自慢できる(かもしれない)
3. Perlに比べると技巧的な記述がしづらいがそれによって読むのにはあまり苦労しないですむ
4. 公式マニュアルの日本語訳は質量ともに
素晴らしい

デメリット
1. 日本語でかかれた本がまだ少ない(5冊くらい?)
2. ネット上でも日本語での情報は三者の中では多分一番少ない
3. ShiftJISやeuc-jpのテキストを処理するときに
一回Unicode化しなければいけないのでちょっと面倒
(でもこれはPerlも同じ)

Ruby
メリット
1. ShiftJISやeuc-jpのテキストを扱うには一番障害がない
2. ネット上の日本語での情報がそれなりにある
3.Perlには負けるかもしれないが書籍も結構出ている

デメリット
1. インタプリタの処理速度が三者の中では多分一番遅い
2. ガーベジコレクタ絡みのバグにあたるとちょっとしんどい
3. Unicodeを(UTF-8以外で)扱うのはちょっと厳しい(不可能ではない)



Rubyは日本語のサイトや書籍が本当に多い。
開発環境の組み方から親切丁寧に書かれたサイトが多い。
また日本人が開発者であることも影響して日本語(いわゆる2バイト文字)の扱いがスムーズである

Pythonは世界的シェアで見るとこちらの方がユーザーが多く、またPythonを使ったアプリも多数存在する。
だが本当に日本語の書籍が少ない(x_x)
英語のサイトや洋書だと結構あるのだが、かなり大きな本屋に行ってもマジで日本語のPythonの本は5冊ぐらいしかなくて、思わず定員さんに「これだけですか?」って聞いてしまいました。
その横にRubyの書籍が棚半分ぐらいあったというのに…
さらに日本語に関してUnicode関係で一癖ある
Unicodeと聞いたこともない人は避けた方が無難かもしれない

ということで、英語が嫌いじゃない人はPythonを、日本語じゃなきゃやだ!Unicodeって何じゃ!?って言う人はRubyをオススメします。

今日はもう1つの観点からPython、Rubyを考えたい。それは設計思想と文法からだ。

Rubyの設計思想はRuby哲学に見られるように、

○ストレスなくプログラミングを楽しむこと
○多様性は善
○ただし言語仕様的に非推奨の記述方法は淘汰されるように

である。
「多様性は善」といいながら非推奨の記述方法を遠巻きに排していくやりかたがものすごく日本人チックだな~と思ってしまった(いい意味でも、悪い意味でも)w

一般にRubyは行数が少なく見た目がきれいと呼ばれている。
また文法的に見ても徹底したオブジェクト指向、秀逸な配列の管理、ブロックなどを利用した繰り返し処理など可読性が上がる方法が多数含まれている。
基本的な処理が他の言語と比べて少ない行数で、しかも見た目もきれいにすむため結果として可読性と行数が少ないという二点を両立させているところが賢いと思った。

Pythonに関してだが、

○言語自身の機能は小さく
○同一の仕事をするプログラムは、だいたいどれも同じようなコードに
○プログラムの文章化の徹底

特に二番目の思想は色濃く文法に反映されていて、繰り返し文に括弧はない。
タブでインデントすることでその文章がどの繰り返し文に属しているかすぐ理解することができ、可読性をあげる。
データは全て参照型とされ、オブジェクト指向型言語になっている。
Javaのようにどの変数にnewが必要で、どの変数に直接値を代入するか考えなくてもよい。
また非技術者向けも容易に携われるように工夫がされている。(と言うかそもそも教育向け)


私個人としてはそこそこ英語も出来るので問題ないし、他人のC言語やC++で苦しめられた口なので、コードが似通っていてプログラムの文章化が徹底されているPythonの方があっているような気がするので、Pythonを勉強してみたいと思う。
2008.06.08 Sun l 雑記 l コメント (3) トラックバック (0) l top

コメント

No title
Pythonは確かにForやWhileにbreakが組み込まれていて、elseとかといっしょに使うっていうイメージがありますね。
おっしゃる通りネストから2,3個のループを一気に飛ばして出れないから不便ですね。
まあでもラベル張ってGOTOでぶっ飛んでスパゲティーコードを書くやつを防ぐっていう意味では、システム的に読みにくいコードを欠かせないという点ではPythonの“There's only one way to do it”の考え方に沿っているのかも
2012.01.13 Fri l omine3. URL l 編集
No title
Pythonはネストしてるループを脱出するのにbreakが使えず
エラーをthrow(raise)して抜けるというのがどうも好きになれない。
2011.12.16 Fri l 通りすがりの旅人. URL l 編集
No title
おれは良い意味で良い。
おれは良い意味で良い。
おまえ悪い意味で悪すぎ。
2011.07.06 Wed l  . URL l 編集

コメントの投稿












トラックバック

トラックバック URL
http://omine3.blog119.fc2.com/tb.php/59-5a0a6f31
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。