目次

プログラミング実習

実用データ処理

データを処理する際のちょっとしたテクニック

Keep It Simple Stupid.
頭文字をとってKISSの原則と呼ばれるが、複雑で高機能なプログラムを作るよりも、単純な機能だけをもったプログラムを組み合わせて使うことを考えよ。そのためには、後述する基本的なunixコマンド、リダイレクト、スクリプト言語の一行プログラムの柔軟な使用法を習得する必要がある。 特に効果的な概念は「スクリプト(主にシェルスクリプト)を作るスクリプト」という発想である。ぜひ、身に着けてほしい。

スクリプトで有効に使えるTips

You Ain't Gonna Need It. 頭文字をとってYAGNIと呼ばれるが、なんかよさげな機能を思いついても、実際に必要となるまでは実装してはいけない。できるだけ単機能で例外がないのが望ましい。

自分用のコマンドを作る

$ mkdir ~/bin
$ cd bin
(ファイルgetatomsをつくる)
$ ls -l getatoms
-rw-r--r--    1 kimi     sstlab       1350 Apr 17 16:38 getatoms
$ chmod a+x getatoms 
$ ls -l getatoms
-rwxr-xr-x    1 kimi     sstlab       1350 Apr 17 16:38 getatoms
$ cd
$ getatoms
usage: getatoms [-r R1 R2 R3] input_nc_file output_xyz_file

リダイレクト

プログラム「moge_exec」に、ファイル「hoge_in.data」から入力を読み込んで、出力をファイル「hage_out.data」に書き込むには

$ ./moge_exec < hoge_in.data > hage_out.data 

または

$ cat hoge_in.data | ./moge_exec > hage_out.data 

とする。

シェルスクリプト

自動的に実行したいUNIXコマンドを単に羅列したファイルを用意しておき、逐次自動実行することができる。簡単な制御構造も備えているし、ちょっと おまじないをすることによって、自前のunixコマンドのようにも使うことができる。

シェルプログラミング

 $ sh ○○○○.sh △△△△ 

と入力することにより実行される。スクリプト中で、△△△△という文字列は$@で参照できる。

$ cat hogehoge.sh
 #!/bin/sh
 なんとかかんとか

$ chmod +x hogehoge.sh
$ ./hogehoge.sh

awk

ファイル名は○○○○.awkにする。

ターミナルで

 $ awk -f ○○○○.awk △△△△ 

と入力することにより△△△△という名前のファイルを処理する。

$ awk -f hogehoge.awk datafile.data

で実行できるawk fileの最初に

#!/usr/bin/awk -f

を書いておくと、

$ chmod +x hogehoge.awk

とすることによって、あたかも独立したコマンドのように

$ ./hogehoge.awk datafile.data で、実行することができる。

awk実習

Pythonガイド

ASEを用いてDacapoによる計算を行うためには、若干のPythonの知識が必要です。 Pythonはオブジェクト指向の汎用言語で覚えておくと非常に便利なものです。 インタープリタとして実装されているため速度面ではcやFORTRANに比べて不利ですが、非常に柔軟な拡張性を持っており、各種モジュールを読み込むことによりVTKを使った描画から、RasMolやGnuPlotの自動実行までも行うことができます。 変数宣言がいらないこと、インタープリタでその場で試しながらプログラムを書いたりデバッグしたりできること、簡単な手順でグラフィックスを扱うことができることなどを考え合わせると、現代版BASICといった趣もあります。

Pythonで「コマンド」をつくるときの雛形

#!/usr/bin/env python
from optparse import OptionParser
 
cmd = OptionParser(usage = '%prog [-t] [-p X Y Z] input_file output_file')
 
cmd.add_option('-t', '--toggle', action = "store_true", default = False,
               help = 'ON/OFFを与えるだけのオプション')
 
cmd.add_option('-p', '--position', type = 'int', nargs = 3,
               help = 'オプションとして3個の整数X Y Zを与える',
               metavar = 'X Y Z')
 
(opt, argv) = cmd.parse_args()
 
if len(argv) != 2:
    cmd.print_help()
    raise SystemExit
 
input_file = argv[0]
output_file = argv[1]
option_on_off = opt.toggle
option_xyz = opt.position

詳細は即席ヘビ使い講座を参照のこと。

FORTRAN簡単ガイド