井元です。
ご無沙汰しております。久しぶりの記事作成となりました。
ここ最近、弊社では勉強会を兼ねた小さな発表会を社員各人が毎週行うことになりまして、発表会で使ったネタをまとめて記事にして連載していこうかと思い筆をとった次第です。
Pygameやフレームワークの紹介等がやりかけのままで大変申し訳ないのですが、原点に立ち戻りたいという思いもあり、発表会で題材として使用しているO’REILLY社から出版されている「初めてのPython第2版」の各章を一章ずつ順に独自にまとめて紹介していこうと思います。
今回は「初めてのPython第2版」の第一章「PythonについてのQ&A」を元に「私のPythonについてのQ&A」をご紹介して行きたいと思います。
Q1.Pythonの特徴はなんですか?
最初はやはり、この言語についての特徴をご紹介しなければならないでしょう。
興味を持ってもらうには、ここを知って貰うのが一番です。
- インデント制御による構文
インデントという視覚的に見えるもので構文を制御している
→その為、可読性が高くなり、誰が書いても統一されたコードを書くことが出来る - 生産性の高さ
オブジェクト指向プログラムである為、コードの再利用がしやすい
コードを書けば即実行させることが出来る
→対話型のインターフェースでソースコードの結果をその場で得られる
→改変した部分のテスト等の結果を直ぐに試すことが出来る - 動的な型付け
オブジェクトの型がプログラムの実行時に自動的に決められる - 自動メモリ管理
オブジェクトへのメモリの割り当て、オブジェクトが利用されなくなった場合のメモリ割り当ての解除(ガーベージコレクタ)を自動的に行う - ポータビリティ
Windows、MacOS、Linux、UNIXなど殆どのプラットフォームでソースコードの修正無しで動作させることが出来る - 他の言語との連携が容易
PythonからC/C++のライブラリを呼び出すことが出来る
PythonのコードからJavaAPIをシームレスに利用出来る
→Jythonと呼ばれるJavaで作られたPythonを使うことで実現 - 豊富なライブラリ
正規表現、数値計算、ソケット通信、XML解析、はては音響合成処理など多彩なライブラリが提供されている
以上がPythonの特徴です。
動的な型付けや対話的なインタープリタによる即時実効性等、フットワークの軽い言語でありかつ、C/C++やJava等の多言語との親和性も高い為プロトタイピングにも向いているし、豊富なライブラリを活用すれば単体でも威力が発揮できるという魅力的な言語ということがお分かり頂けるかと思います。
Q2.Pythonが苦手なことはなんですか?
さて、やはりいい事ばかりではないのが現実の厳しいところであり、万物完璧な物がないということはもちろんPythonにもあてはまります。
ということで、Pythonの欠点について知って頂こうかと思います。
- 処理速度が遅い
バイトコードと呼ばれる中間形式にコンパイルされたソースコードをインタープリタ方式で実行する為、遅い
以上の一点に尽きます。
あまり多くないのでホッとしますが、クリティカルな部分でもあります。
しかし、どんなことに利用するプログラムを書くかでこの問題はあまり気にならないものにもなり得るかと思いますし、Psycoを利用してコンパイルしたバイトコードを一部最適化して利用するなどの改善策もあります。
Q3.Pythonは何故インデントによる構文を採用しているのですか?
なぜ、インデントで構文を制御するのか?
Pythonのソースコードを見たことがある人なら一度は思ったことでしょう。
括弧で表したり、BEGIN/ENDなどの制御文字があった方が明示的で分かりやすいと思う人もいるかと思います。
しかし、実はこのインデントによる構文制御はとても有用なものなのです。
- 視覚的なブロック構造がそのまま論理的構造として解釈される
これは、見た目と実際のプログラム動作とをあわせることで、視覚的にソースコードが理解出来ることになる
その為、可読性向上に貢献する - 誰が書いても同じ構造のソースコードになる
インデントを強制されることにより、誰が書いても同じ構造となる
その為、特にチームなどでプログラムを行う際にスタイルの違いによる勘違いや不統一が防止できる
他人の書いたソースが読みやすい
プログラムスタイルが強制される為、統一性のあるソースコードになります。
しかし、ある程度スタイルを束縛される為、その点で非難されることがあるのも事実です。
でも、統一性があり可読性の高いソースコードは多くの場面で歓迎されていることもまた事実です。
Q4.PythonはWeb系開発でしか使えないのですか?
Pythonの使用用途は幅広いです。
Webアプリケーションの開発はもちろん、グルー言語としての特性を生かしてソフトウェア製品のテストツールやプロトタイピングに利用されていたり、拡張用スクリプト言語として搭載されていたりと活用されている場所はいくらでも存在します。
Q5.Pythonが活躍している所はありますか?
もちろんあります。
例えば、下記の企業ではPythonを利用しています。
* Google
* Yahoo
* Microsoft
また、NASAでも利用されています。
というわけで、Pythonは色々な所で活躍しています。
Q6.Pythonは他の言語と比較するとどうですか?
特に、CやJavaといった言語ではなく、Perl・PHP・Rubyという活躍する分野のかぶっている言語で比較してみたいと思います。
- Perlと比較して
ライブラリの豊富さはPerlの方に分がある
あと、実行速度はPerlの方が速い
しかし、リストの操作性やソースコードの可読性などの言語自身の機能ではPythonの方が高機能
何より読みやすい - PHPと比較して
実行速度はPHPの方が勝っている
同じオブジェクト指向言語であり、言語レベルでの機能はほぼ互角
しかし、Pythonの方が対話型インターフェイスでソースを即時実行出来たり、豊富なライブラリが揃っている
その為、開発効率ではこちらに分がある
さらに、インデントによる構文制御の為、ソースコードに統一性を強制的に持たせることが出来る - Rubyと比較して
機能的にはほとんど互角
使用用途や応用範囲もほとんど互角
違いがあるとすれば、Pythonは海外で人気が高く、Rubyは国内で人気が高いということと、
インデントによる構文制御でプログラムスタイルを制限しているか、していないかの違いくらい
ちょっと乱暴ではありますが、比較すると上記のようになります。
特にRubyとは浅からぬ因縁があるようで、殆どの活用用途がかぶっています。
ライバルといって差し支えない言語でしょう。
最後に
さて、今回のPythonのご紹介は如何だったでしょうか?
この記事をみてPythonに興味を抱いて頂けたなら幸いです。
今後もこの記事連載を通して、Pythonをさらに紹介して行きたいと思います。
参考文献
初めてのPython第2版-Mark Lutz, David Ascher著、夏目 大訳、出版社O’REILLY