整数型変数iに0を代入する。「i:」を改行せずに表示する。関数star(i)を呼び出す。star(i)となる。今回の仕様は関数定義は、「関数〜を定義する。」をキーワードに行う。〜には、関数名と引数をPythonと同じように書く。関数呼び出しは、戻り値がない場合は、「関数〜を呼び出す。〜には上と同様の関数名と引数を指定する。関数の戻り値を使う場合には、「関数〜を呼び出して、その結果を変数〜に代入する。これはそもそも代入文のままなので、関数とは関係なしに機能する。関数から戻り値を返すには、「〜を返す。〜から日本語を削除したものにreturnを前置きした文に変換する。上にも言ったように、ローカル変数を使えるようにするのは次回回し。[wython]最近、so-netのブログがよく落ちるので、更新がとびとびになってしまっています。世の中でwythonがどの程度言及されているかを調べるために、Googleで検索をしてみたら、40数件ヒットした。話題になっていないことがわかった。かなりのものは意識的に言及しているのではなく、検索結果を自動的に表示しているようなページだった。そのこと自体は、そもそも実装もなしてやっていることだったので、仕方のないことだと思うのだが、こういうブログで半年以上、ばらばらに書いてきたことが裏目に出て、言及されている場合も、古い記事の方が引っかかっている場合があった。細かい仕様などは、ああでもない、こうでもない、と書いてきたので、その時々に揺れがある。本当は、オフィシャルなページを作ってそこできちんと最新情報のみを管理した方がいいのだろう。いうことは何日か前に書いた。現実にオフィシャルページを作るとなると、それなりに準備がいるので、すぐにアップするわけにはいかず、ふたたび、このブログで少しずつ思いついたことを書いていくことにする。これが貯まればいつかはオフィシャルページに結実することを願って。やって日本語プログラミング言語をあれこれ検索していみると、その中に、日本語プログラミングの歴史と現状についてプレゼンをしている資料があった。発表時期は2005年6月4日だが、wythonは2005年1月の時点での参照であった。ここで、wythonは第2.5世代のプログラミング言語に位置付けられ、さらに「日本語プログラミングコンテストに刺激されたり、それ以降の日本語プログラミング言語ブームに刺激されて登場したと思われる。市場シェアはまだない。」とコメントされていた。これは、wythonのみについての言及ではなく、第2.5世代のプログラミング言語、すなわち、昨年の夏に行われた「日本語プログラミングコンテスト」以降に発表されものについての総評だが、少なくともwythonについては当てはまらない。wythonは僕のプログラミング関係演習で、どうしたら初心者にプログラミングの肝を教えられるかを考えているうちに思いついたものだった。何とか分かってもらおうと日本語でプログラムの一行一行に説明を書いていくと、かなりの学生が分かるようになっていった。それなら、最初から欧文でプログラムを勉強するのではなく、日本語でプログラミングの本質的要素について理解した上で、それを欧文のブログらミング言語に移し替えていけば、理解が進むのではないか、という発想である。wythonは完全に初心者向けの教育用言語に特化している。他の日本語プログラミング言語は、ほとんどのものが初心者からベテランまで使え、少ないコーディングでいろいろできる便利な命令を備え、ビジュアルな開発環境もついているし、ビジュアルなプログラムも驚くほど簡単にできる、ということを標榜している。wythonにはそのいずれも備わっていない。開発環境は何もないので、エディタで作る。プログラムはコマンドラインで動かす。命令は、そのうち多少増やしはするが、動詞に類するものは非常に少ない。グラフィカルなプログラムは作れないし、そういう命令や関数もない。ベテランが使うものでもない。これらは決して欠点でも不足点でもない。最初からそんなことは考えていないのである。いやむしろ、ある意味ではwythonは極めて高機能な言語だと言ってもいい。それは自然に、スムーズにPythonに以降でき、あるいはPythonのコードと混ぜて使うことが出来る。wythonの発展した形はPythonであるとすれば、その機能は極めて豊富ということになる。他の言語が全てWindowsに特化しているのに対し、wythonはPythonで実装されているので、Pythonがインストールしてあるところならどこでも使える。これは利点であって欠点には決してならない。「プログラム」の本質的構成要素を学ぶためのものであり、しかもPythonに移行することを前提にしているので、Pythonのプログラムと一行単位でほぼ対応がつけられる。純粋にPythonで書くならば、Python流のコンパクトな書き方をすることができるが、そういう部分は逆にPythonの独特の部分であり、プログラミング一般の勉強には適さない。冗長であっても、wythonで書いたプログラムは、たとえwythonの処理系がなくても、そのままPythonに容易に書き直すことができる。そもそも最初の助走を除いて日本語で最後までプログラミングを続けることには無理がある。できるかもしれないが、それは他のものとかなり異質な概念と用語と仕様の中に閉じこもることになり、それがいろいろな言語を使うことを妨げることになってしまう。wythonは、たとえ実装されていない部分があっても、それで書くことによって、Pythonプログラミングの日本語によるコメント、あるいは擬似コードとして使うこともできる。現在wythonには正規表現は実装されていないが、それをwython風に書くことは容易である。それをPythonの書き直すのも、機械の手を借りることなく、簡単にできる。なってくるとwython自体は、プログラミング言語だが、処理系にそのものさえ不要な言語だと言うことになる。その意味ではPythonのベテランでも、使い道があると言える。いう考え方で作られた言語は、少なくとも日本語プログラミング言語の中には存在しないように思う。その意味でwythonは画期的な言語ではないだろうか。(もうちょっとしっかりドキュメントができていればだが。[wython]リストないしは配列を日本語で表現するのは、難しい。全体としてのリストならば、リスト[これ、これ、これ}でいいけれども、添字でその一つ一つの項目を指定する仕方は、どうしても冗長になってしまう。次のようなものを考えてみた。]をリスト型変数citiesに代入する。citiesの3番目の項目を表示する。citiesの0番目に「横浜」を代入する。citiesに「北九州」を追加する。整数型変数nにcitiesの個数を代入する。(citiesのi番目の項目)を改行せずに表示する。「city、」と改行せずに表示する。(city),printとなる。ここでは、「番目」というキーワードを、リストの項目の指示に用いた。「〜番目の項目」でも「〜番目の文字」でも、「〜番目の要素」でも、さらには「〜番目」だけでもよい。その他、いくつかの動詞や、forによる繰り返し構文も追加した。ここで、今回追加した言語仕様をまとめておこう。[]は全角[]でもよく、項目を区切るコンマは、全角の「、」や「,」でもよい。リストはリスト型の変数に代入する。リストの項目は「〜番目」というキーワードで指示する。最小と代入が可能なのは、wythonの機能ではなく、Pythonの機能である。〜番目から〜番目という範囲指定はまだサポートしていない。リストに対するメソッドappendを「〜に〜を追加する。」というキーワードで実装した。リストや文字列などの長さを測るlen()関数を「〜の個数」あるいは「〜の長さ」というキーワードで実装。list構文を、「リストlistの各項目を〜型変数itemに代入しながら、」(もちろん、listとitemという変数名は自由に付けられる。listのリテラルは駄目。)というキーワードで実装。%を使った書式つき文字列は、サポートしているというよりは、文字列部分の「」を除いて、全てローマ字なので、そのまま式として認識されているだけ。逆に言うと、Pythonの関数なども、そのまま書いておけば、大抵は使えると思う。いう仕様や実装方法について、各回にバラバラに書いていると、その都度、変更があったりした場合に分かりづらくなるので、そろそろ最新の情報をまとめたページを作って、きちんとまとめておいた方がよさそうだ。変更があったら、そのページを更新するようにして。次は、関数の実装をしよう。これはローカル変数をうまく処理したり、関数名を日本語でどうするか、など解決しなければならない問題があるので、少し時間がかかりそう。[wython]日本語スクリプト言語wythonの実装を続ける。今日は、繰り返しを処理できるようにした。wythonはPythonのラッパーなので、繰り返しには、while文とfor文がある。このうち、for文は特に日本語でどう表現したらいいか分からないので、後回しにして、簡単にできるwhile文と、forを使ううちでも、ある数からある数まで数える、range()を使う場合を取り上げる。整数型変数sumに0を代入する。整数型変数nに0を代入する。nが10以下の間、sumにnを足す。