パスカルで、漢字を扱うとなると、なかなか大変で、それが2バイト文字であることに留意しなくてはなりません。例えば、高田直樹という文字列から一文字づつ切り出すという場合、その文字列から2バイトづつ切り出す必要があり、それが一つづれるとばけ字になってしまいす。だから、今仮に「高田直樹NaokiTakada」という文字列から一文字づつ切り出したいと思ったとします。この場合、漢字の間は2つ、英字になると一つという操作が必要です。
ところがPythonでは、この文字列をある変数に入れておいても、それを自動的に一文字づつの箱みたいなものに収納してくれるという仕組みになっているようなのです。
だから、例えば、一文字づつの切り出しは、つぎのようにできます。左の5行のコードを見てください。京都市Kyoutoという文字列をaddressという変数に入れておき、ここの頭から一文字づつ切り出して、 別に作ったjuushoという空の変数に入れ、それを書き出す。さらに一文字切り出して、積んで、また書き出す。これを文字列の最後まで繰り返す。そういうたった 5行のコードです。
4行目の「uusyo += i は、切り出した一文字を積み足すという意味なのですが パスカルではこう書きます。 juusho = juusho + i ; 。
こんなことをしてぼくが遊んでいるマシンは、一年ほど前に買い替えたMacBookPro13インチという高性能のラップトップマシンです。京都のアップルストアには在庫がなく、香港からやってきた2TのSSTを積んだマシンで、生きている間にこの容量が満たされることはあり得ないと思われるものでした。
OSにはCatalinaと呼ばれるMacOSX10が載っていました。
昨年の11月ごろだったと思うのですが、このOSが変わりました。大いに雰囲気の違ったもので、名前も違う感じになりました。
OS10は、最初から動物の名前ばかり使っていましたが、10.9から山の名前や島の名前になり、OS10の最後10.15はCatalinaという島の名前でした。
それで、今度の新OSは、OS11で名前はBig Sur。これも地名のようです。
Big Surになって、あのMac独特の起動音が鳴らなくなりました。起動した時の画面はかなり独特で、印象的でした。
フタを開けると音もなく自動的に立ち上がるBig Sirを、Catalinaの島の景色もよかったなぁと、いささかの違和感を抱きながら、でも結構気に入った感じで使っていたのです。そして、Pythonを始めることになったわけです。
ぼくがパソコンでプログラミングを勉強し始めた頃は、例えばパスカル言語のソースは8インチのフロッピーディスクに入ったものしかありませんでした。これを動かすディスクユニットだけでもとんでもない高値でした。ソースのフロッピーも安くはなかったけれど、そういう特殊なソフトやゲームのフロッピーを委託貸出するお店があって、そこで借りて違法コピーをするわけです。ゲームソフトにはコピーコピープロテクトがかかっています。お店ではそれが外せれば、複製して売れるわけですから、このプロテクト外しに賞金をかけていました。ぼくは、あれは確か「トマトの国のサラダ姫」という人気ゲームだったと記憶していますが、賞金をもらって嬉しかったのを覚えています。
ほんとに世の中変わりました。パイソンのソースはネットで無料で手に入ります。例えばパイソンのソースはインターネット上のサイトに行ってダウンロードすればいい。ネット上にはいくつものレッスンサイトがあって、いつでも見れます。そんなこんなで、パイソンのコードを書いて動かして、あんまり寝ないままそれを繰り返し悦に行っているうちに、パイソンでは四角は描けても、円は描けないし、ポップアップウィンドウも作れないことに気づいたのです。
そういうことをやろうとすると、エラーが出ます。
このバグの原因は、OSにあるのかパイソンにあるのかあるいは両方か。色々考えらるのですが、ぼくはOS11にあると確信していました。なぜなら、同じコードがWindows10では問題なく走ったからです。
なんとかならないがと考え色々やって見たのです。やることは山ほどあります。バグの出るのは、Tkinterという内部モジュールとCircleという外部モジュールをimportした時であることが分かりました。寝ないままやっていると、驚くことが起こりました。驚きました。走ったのです。一つ二つと試しましたが、あのエラーメッセージは出ません。ヤッターとぼくは叫んでいました。
ところが、次の瞬間、あのエラーが出ました。そしてもう二度と走らなかったのです。
なぜなんや。ここで、勝手にムキになるというぼくの悪い癖が出ました。
それから、2日間、「なんでやねん、ちゃんと走ったのにどうなったんや、ほんまに」と呟きながら、無意味な試行を繰り返していたのです。
二日目の夜中、突然画面右上隅に小さなウィンドウがポップアップしました。「アップデートがあります。今すぐ再起動してインストールしますか?夜間に行いますか?」今は夜間とちゃうんかと思ったのですが、このメッセージはアメリカからで、あっちは昼なんやと納得しました。
よっしゃぁ。バグは取れてるかもしれん。ぼくは急いでインストールにかかったのです。40分以上かかりました。
終わって元の画面になりました。改めて再起動してみました。
ヴォワ〜ン。あの懐かしマックの音が鳴りました。
ええーっ、前に戻ったんや。
バグは取れたんだろうか。ぼくはパイソンを立ち上げ、問題のプログラムを走らせたのです。下のボタンを押してください。
この図形を描いているのはこのプログラムです。spindleがhexagonを呼びながら、角度を変え、長さを変えながら、線を描いて行くという再帰的プログラムで、スピードに乗っているので、まるで水流の渦のようです。
これも同じようなプログラムのようですが、turtleというモジュールを使っています。
前進距離と角度を指定して線を描かせます。
Turtleというのは、初期のマックにも乗っていたように思います。画面中央に亀が現れ、foward 10で前に10ゆっくり線を書きながら進みます。left turnで右を向く。
教育的言語だと言われていました。
今では、CPUが早いので、ものすごい速さで描いてゆき、樹のような図形になりました。
80年代の後半ごろ、コンピュータの世界では、オブジェクト指向が叫ばれていました。ぼくも、毎週末には研究会を開いていて、そこにはコンピュータプログラミングのプロが何人も参加していました。研究課題はもちろんオブジェクト指向プログラミングです。これはObject Oriented Programinngで頭文字をとってウープ(OOP)と呼ばれていました。
まだWindowsが現れる前の話です。アメリカやイギリスで開かれたセッションにも参加したものでした。いまになって、極めて近代的で、洗練された、OOPの塊のようなPythonに接して、そんな昔のことを懐かしく思い出しました。
昨夜、またバージョンアップの連絡があって、Big Surは11.2.1になりました。驚いたことに、またpythonのソフトが走らなくなったのです。
動き始めのOSとして、あちこちからの不具合の対応に追われ、あっちを治すとこっちに不具合が発生という状況でたいへんなんだろうと推測しています。まああんまり気にせずにPythonで遊んでやろうと考えているところです。