もしも大規模なシェルスクリプトを書いたことがあるなら、多分こんな感覚 を知っているだろう。 もう一つ機能を加えたいのに、もう既にとても遅く、とても大きく、とても複 雑になってしまっている。 あるいは、C からしかアクセスできないシステムコールか何かの関数をその 機能が必要としている。 手もとにあるその問題は、可変長の文字列か (ファイル名のソート済みリスト のような) 何かのデータ型を必要としているため、シェルでは簡単なのに C での実装は大仕事になったり、あるいは C にあまり慣れていなかったりで、 スクリプトを C で書き直していたのでは深刻すぎて引き合わない。
もう一つの場合として、いくつかの C ライブラリを使って作業しなくてはな らないが、通常の C の書込み/コンパイル/テスト/再コンパイルのサイクルで は時間がかかりすぎるのかもしれない。 ソフトウェアをもっと素早く開発する必要があるという事だ。 あるいはことによると拡張言語を使うことのできるプログラムを書いているが、 一つの言語を設計し、そのインタープリタを書いてデバッグし、そして それをアプリケーションと結びつける、ということまではやりたくないかもし れない。
そんな場合、Python がふさわしい言語かもしれない。 Python は簡単に使えるが、本物のプログラミング言語 (real programming language) であり、大規模プログラムのためにシェルよりもずっと多くの構造 とサポートを提供している。他方、Python はまた C よりもずっと多くのエラー 検査を提供し、そして、超高水準言語 (very-high-level language) として、C で効率良く実装しようとすると何日もかかってしまう柔軟な な配列や辞書などの高水準データ型を組み込んでいる。その一般性の高いデー タ型のおかげで Python は Awk あるいは Perl と比べてさえ ずっと広い問題領域に適用可能だが、それでもなお多くのことがそれらの言語 と少なくとも同じくらいに簡単だ。
Python はプログラムを、別の Python プログラムで再利用できるように、モ ジュールに分割することを可能にしている。Python には大規模な標準モジュー ルのコレクションが付いて来る。これを自分のプログラムの基礎として -- または Python でのプログラミングの学習を始めるための例題として -- 利用することができる。ファイル I/O、システムコール、ソケット、さらに は Tk のような グラフィカルユーザインターフェース(GUI) ツールキットへ のインタフェース等を用意する組込みモジュールもある。
Python はインタープリタによる言語だ。コンパイルもリンクも不要なので、 かなりの時間をプログラム開発のあいだ節約できる。 インタープリタは対話的に使用できるので、たやすく言語の機能を試したり、 使い捨てプログラムを書いたり、 ボトムアップにプログラムを開発している途中で関数をテストしたりできる。 インタープリタはまた手頃な卓上計算機にもなる。
Python はとてもコンパクトで読みやすいプログラムを書くことを可能にしている。 Python で書かれたプログラムは、 等価な C や C++ のプログラムよりも典型的にはかなり短い。 なぜなら、
Python は拡張可能 (extensible) だ。 つまり、もし C でプログラムを作る方法を知っているならば、インタープリ タに新しい組込みの関数やモジュールを追加して、重要な演算を最大の速度で 実行したり、バイナリ形式でしか入手できない (ベンダ固有のグラフィクス ライブラリなどの) ライブラリに Python プログラムをリンクさせることが 簡単だ。 その気になれば、C で書かれたアプリケーションの中に Python インタープリ タをリンクして、Python をアプリケーションの拡張言語ないしコマンド言語 として使うこともできる。
なお、この言語の名前は BBC のショー ``Monty Python's Flying Circus'' に ちなんだもので、不快な爬虫類とは無関係だ。 Monty Python のスキットをドキュメンテーションの中で引用することは 差し支えないどころではない。それは推奨されている!
Python に興奮して、もっと詳しく調べてみたくなったことだろう。言語を習 う最良の方法はそれを使うことだから、ここではそうすることを勧める。
次の章ではインタープリタを使う操作手順を説明する。 これはかなりお約束な情報だが、あとで示される例を試してみるためには欠かせない。
チュートリアルの残りでは Python の言語とシステムのさまざまな機能を例を 通して紹介する。簡単な式と文とデータ型から始め、関数とモジュールを経て、 最後に例外や利用者定義クラスのような高度な概念に触れる。
See About this document... for information on suggesting changes.