トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS   ログイン


python-logo.gif

このページの参照数 6155 回

現在のPythonの最新バージョン・・・2.5(New! 2006.09.19)

リンク(徐々に増やします)

日本語のサイト

一般サイト

初心者用サイト

リンク

英語サイト

Pythonってどんな言語?

「プログラミング未経験の方」向けの説明

Pythonは数あるプログラミング言語の中で、入門者に優しく、奥の深い言語です。Pythonだけではできないこともたくさんありますが、習得したPython言語が不要になる日はまずこないでしょう。
なお、有名なマーフィーの法則に「教育用にも使えるものは、教育用にしか使えない」というものがありますが、このPython言語に関して言えば、その法則にはあてはまりません(実際、教育用としても実用としても使われているのですから)
欠点といえば、実行速度の遅さと、日本での知名度の低さ、でしょうか。
ともかく、「はじめてプログラミングを習ってみたい」なら、Pythonがお勧めです。

「他言語を経験された方」向けの説明

Pythonは、プログラミングの概念をすでにある程度理解された方にとっては、ものの2、3時間で習得できるお手軽な言語です。もしかしたら、前言語には無かった新しい視点が得られるかもしれません。

「マニアを自認する方」向け

ここでは、Pythonという言語をある程度見聞きして知っている方について、ややコアなPythonの話題を掲げます。

※注意:この項目の特徴に関しては、使用の際、十分注意が必要です。さらに、この項目に挙げられた特徴を使用せずとも、通常のプログラミングにはほとんど支障がありません。

Rubyユーザの方へ

オブジェクト指向スクリプト言語Ruby」に書かれている項目のうち、「文字列などの基本データ型はインスタンスではない」「本物のガーベージコレクタは無い」の2項目は消しておいて下さい。

現在(ver.2.2以降)Pythonの全てのデータは文字通りオブジェクト(インスタンス)であり、そのクラスを拡張することも、インスタンスから参照することも可能です(当たり前ですが、これはCで実装されていますので、Cコードで拡張クラスも書ける筈ですが、未確認です)。

[同書の著者で Ruby の設計者でもある まつもと氏が日記で同種の誤認識の修正に興味を持たれているようですから、この機に一気にたたみかけてはいかがでしょう?>Python ユーザーのかた --sumim]

[理解さえしてもらえれば、良いと思います。依然として他の部分の特徴はかなり違いますし。--機械伯爵]

あとは実行速度ですが、これは多分今でもRubyより遅いでしょう・・・(Pythonにも色々秘密兵器がありますが、まぁそれはおいといて)。

処理系の遅さについては、Perlの項では「なんとかなる」とご本人もおっしゃてることですし☆ 

さらにいえば、前述のとおりイテレータも完備されておりますし(当時はRubyにあってPythonにはなかった)お望みならLispっぽくlambdaも使えます。

よりPerlっぽく書く(ダイレクトに正規表現やヒヤドキュメントを書くような)ならやはりRubyですが、特にPerlに思い入れもなく、SmalltalkよりC++のファジーなオブジェクト指向が好みならば、Pythonのほうがおすすめです(主観ですが(笑))

(RubyはLispっぽく、PythonはHaskellっぽいそうな。外見だけかもしれないけど)

Pythonのオブジェクト的メタファ

完全なオブジェクト指向言語であるSmalltalk(Squeakなど参照)から見ると、Pythonのオブジェクトというのは、かなり珍妙に見えるかもしれない。

object message

と書くとき、Smalltalkでは、messageという単項メッセージをobjectに送った、という話だけで済む。

ところが、Pythonで同様に

object.method()

と書くと、話は非常にややこしくなる。まず、二通りの考え方が生まれる。

'object.method'を一つの名前とし、このオブジェクトに()という単項メッセージを送る。

'object'というオブジェクトに引数methodの二項メッセージ'.'を送り、その返り値である'object.method'に単項メッセージ()を送る。

つまり、methodがあくまでメッセージ(演算子)でなくオブジェクト(値)であることが、Pythonの解釈をややこしくしている。

おまけ