20 ChatGPT へのプログラムの書き換え依頼 (C → Python)

(しばらく工事中。)

講義で有限要素法の説明をしていて、サンプル・プログラムを提示しようとしていて、 困ったことが起きた。 これまでとは学生の Mac の環境が変わっていて、 これまで動いていたプログラムが動かない。 三角形要素分割の図を描く、 計算データを元に等高線を描く、 という凝ったことは何もしていないCプログラムであるが、 描画であるから、グラフィックス・ライブラリィを使っていて、 それが不足している。

具体的には、GLSC3D というライブラリィがない。 「GLSC3D ひさしぶりのインストール」 に書いたように
curl -O http://www3.u-toyama.ac.jp/akiyama/Software/Script_on_mac.zip
unzip Script_on_mac.zip
cd Script_on_mac
./1_Install_macports_mac
./2_Install_dependency_library_mac
./3_Test_GLSC3D_on_mac
./4_Install_GLSC3D_on_your_mac
でインストールできるのだけど、1_Install_macports_mac の段階で、 MacPorts の更新が始まって、かなり時間がかかることがある。 講義で実演中にこれに陥って、ネットワーク接続遅いので、 「また来週」となった。 自分の準備不足ではあるけれど、 3次元グラフィックスを使わない学生にこれを勧めるのはまずい、と思った。


一時は、古い GLSC を使うことも考えた。 「Apple Silicon Mac のGLSCをFortranで使えるように修正する (解決?) - ChatGPTとの付き合い方を考える」 に書いたように
curl -O  http://www602.math.ryukoku.ac.jp/~nakano/software/math/glsc-3.5.a.tar.Z
curl -O  https://m-katsurada.sakura.ne.jp/daishin/glsc-3.5+a.patch
curl -O  https://m-katsurada.sakura.ne.jp/program/graphics/glsc-3.5+mk.patch20240718
tar xzf glsc-3.5.a.tar.Z
cd glsc-3.5.a
patch -p1 < ../glsc-3.5+a.patch
patch -p1 < ../glsc-3.5+mk.patch20240718

curl -O http://nalab.mind.meiji.ac.jp/~mk/misc/20250328/g_sformat_v3.c
mv libs/src/g_sformat.c libs/src/g_sformat.c.org
cp -p g_sformat_v3.c libs/src/g_sformat.c
make
sudo make install
とすればインストール完了。こちらは短い時間で済む。

でも、今さら GLSC を使うことを勧めるのも変かな。 やろうとしていることは、ごく単純なことなので、 Python でやるようにプログラムを書き換えるのは難しくないはず。

学生にやらせてみようかな、と一瞬考えたけれど、

ChatGPTとの付き合い方を考える
で我にかえる。

Cプログラム、入力データ、結果として表示される図のPNG画像、 以上3点セットを2組 ChatGPT に渡して、プログラムの書き換えをお願いしたところ、 ほどほどの考慮時間で Python プログラムを作ってくれた。

chmod +x disp-glsc.py contour-glsc.py 

./disp-glsc.py input.dat
cat input.dat | ./disp-glsc.py

./contour-glsc.py result.dat
cat result.dat | ./contour-glsc.py

とりあえず動くみたいだ。時間に余裕が出来たら、中身のチェックをしよう。

考えてみたら、もう GLSC 使わないので、スクリプトの名前を disp-matplotlib.py とかにするのかしら。 長いな。やることを名前にして、 disp-mesh.py とか、contour-何とか にするのかな。 あ、disp-contour.py か。


プログラムの来し方を思い起こす。 元々は、 UNIX ワークステーションで使っていた plot ライブラリィ互換で、 X11 を使って描画するライブラリィを自作して、 それで描画していたのだっけ。 plot については、もうネットで検索してもなかなか出て来ない。 The GNU Graphics Utilities (なるほどユタ大学か) に片鱗が見られる。

三角形網目上で与えられた数値データの等高線描画プログラムは、 ネットで見つけた解説を参考にしたのだっけ (最初は森先生の本を参考にして書いていたのだけど、途中で乗り換えた)。 何だったかな、URL をメモし損ねた。 解説の著者にお礼のメールもしたのだけど。

それから、GLSC を使うようになって、GLSC で描画するように書き直したのだった。 それを少し前に GLSC3D を使うように書き直していた。

それで今回は、C言語から Python+matplotlib にした、というか、してもらった。 Python+matplotlib はある種のスタンダードなので、 これからしばらくはもつだろう。


おりしもローマ教皇が AI を批判する書簡 (回勅って言うの?よく分からない) を発表した。


有限要素法による計算プログラムなんて、 AI に書いてと言えば、作ってくれそうな状況で、 アルゴリズムの結構細かいところを解説をしている講義をしていて、 そこで使うツールを、AI にお願いする。 別におかしいとは思わないけれど、不思議な感じもする。

研究室に残っていた紙テープに保存されていたプログラムを解析したら、 ずっと以前に書かれたプログラムを新しい環境で動くよう書き換えたものらしいと分かった、 とかいう話を学生の頃に本で読んだ。 古いプログラムを使い回すというのは COBOL プログラムでなくても、 よくある話なわけだが、 古いプログラムの書き換えを出来る人は少なくなっているし、 残っていてもマンパワー注げない。 だから AI にやってもらう、となりがちなのだろう。 果たしてこの先どうなるのでしょう。 ある時代の情報を与えて、 その時代の人間が出来たことを AI にやってもらう、 のが普通になったりするのか。 情報をきちんと残すのが大事という話になるのかな。

curl -O https://m-katsurada.sakura.ne.jp/ana2026/fem-mac-20260528.tar.gz
tar xzf fem-mac-20260528.tar.gz
cd fem-mac-20260528
ls
make
make test1
make test2
make test3



桂田 祐史