作者: 機械伯爵
日時: 2009/4/11(10:31)
 現在、Pythonの文法に関する文章を書いています。
 Pythonについては、入門書は食傷気味なので、とりあえずは必要ないでしょう
が、ふと気づくと文法をまとめた文書が無いんですよね、これが。
 標準マニュアル群の中の『Language Reference』がコレに相当するんですが、
どっちかといえば『言語定義』に近く、ユーザが気軽に見て確認するには、ちと
重い(BNFとか普通に書いてあるし)のです。
 また、機械処理的な観点から書いてある部分が多く、例えば括弧も'='も、同
じ「デリミタ」、『None』も『def』も同じ『予約語/キーワード』で括ってあ
って、プログラムをする立場から使おうとすると、非常に見づらい構造になって
います。
 勿論、入門書を見て『用途』を引けば、大体のところはわかるのですが、『構
造』の観点から書いた本(たとえば『みんPy(第1版)』も『初Py』もそうですけ
ど)は、入門書としての立場なら妥当でしょうが、文法書としては、構造の分析
が甘いのではないかな、と思うのです(無論、この2書は『入門書』なので、そ
れで正しいのです)
 例えば、私が文法を構造的に見るとするなら、まず最初に『基本構文』『制御
構文』『定義文』『宣言文、その他』に分けます。
 基本構文では式文(式のみで構成された文)と代入文を扱います。
 制御構文では、if文、try文、for文、except文、with文を扱います。
 定義文では、関数定義とクラス定義を扱います。
 宣言文に分類されるのはimport文、global文、nonlocal文などで、落穂拾いと
してassert文やdel文なども扱います。
 この括りは何を示すかといえば、要するにそれぞれの『共通項』をくくりだす
ことです。
 基本文型は、最終的に式文が手続き/副作用型、代入文が関数型になるだけで、
基本的な構造は同じです。
 制御構文では、tryやwithは特殊ですが、forやwhileはifの拡張として話せま
す(Pythonのfor文while文にはelse節すら書ける)し、tryはifの特殊な形として
話せます。
 定義については、関数定義もクラス定義も共通点が多いので、共通項をくくっ
た上で違いを書いたほうがより理解が深まります。
 もちろん、こうやって書いた文章は、最初にPythonを学ぶには不適切です。
 しかし、使い始めたPythonの書き方を見直す時になれば(そして習得の早い
Pythonですから、その時は意外と早いのではないかと思います)便利ではないか
な、と思います。
 Pythonの魅力は、豊富なライブラリや拡張もさることながら、その文法にもあ
ると言われます。
 入門書ではない、新しい視点での文法書が、私は必要だと思うのですが、いか
がでしょう?

 /機械伯爵/実は自分の整理のために書き出したのだけど/