seminar:プログラミング実習
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| seminar:プログラミング実習 [2020/08/20 17:15] – [awk] kimi | seminar:プログラミング実習 [2023/03/01 15:09] (現在) – [実用データ処理] kimi | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====== プログラミング実習 ====== | ====== プログラミング実習 ====== | ||
| + | ===== 実用データ処理 ===== | ||
| + | データを処理する際のちょっとしたテクニック | ||
| + | <note tip> | ||
| + | **Keep It Simple Stupid.**\\ 頭文字をとってKISSの原則と呼ばれるが、複雑で高機能なプログラムを作るよりも、単純な機能だけをもったプログラムを組み合わせて使うことを考えよ。そのためには、後述する基本的なunixコマンド、リダイレクト、スクリプト言語の一行プログラムの柔軟な使用法を習得する必要がある。 | ||
| + | 特に効果的な概念は「[[スクリプト(主にシェルスクリプト)を作るスクリプト]]」という発想である。ぜひ、身に着けてほしい。 | ||
| + | </ | ||
| + | スクリプトで有効に使えるTips | ||
| + | * unixコマンド | ||
| + | * grep | ||
| + | * sort | ||
| + | * uniq | ||
| + | |||
| + | * リダイレクション | ||
| + | |||
| + | * One Liner | ||
| + | * sed | ||
| + | * awk | ||
| + | * perl | ||
| + | * ruby | ||
| + | * python | ||
| + | |||
| + | |||
| + | |||
| + | <note tip> | ||
| + | ** You Ain't Gonna Need It.** 頭文字をとってYAGNIと呼ばれるが、なんかよさげな機能を思いついても、実際に必要となるまでは実装してはいけない。できるだけ単機能で例外がないのが望ましい。 | ||
| + | </ | ||
| + | |||
| + | ===== 自分用のコマンドを作る ===== | ||
| + | |||
| + | <code sh> | ||
| + | $ mkdir ~/bin | ||
| + | $ cd bin | ||
| + | (ファイルgetatomsをつくる) | ||
| + | $ ls -l getatoms | ||
| + | -rw-r--r-- | ||
| + | $ chmod a+x getatoms | ||
| + | $ ls -l getatoms | ||
| + | -rwxr-xr-x | ||
| + | $ cd | ||
| + | $ getatoms | ||
| + | usage: getatoms [-r R1 R2 R3] input_nc_file output_xyz_file | ||
| + | </ | ||
| + | |||
| + | ===== リダイレクト ===== | ||
| + | プログラム「moge_exec」に、ファイル「hoge_in.data」から入力を読み込んで、出力をファイル「hage_out.data」に書き込むには | ||
| + | <code sh> | ||
| + | $ ./moge_exec < hoge_in.data > hage_out.data | ||
| + | </ | ||
| + | または | ||
| + | <code sh> | ||
| + | $ cat hoge_in.data | ./moge_exec > hage_out.data | ||
| + | </ | ||
| + | とする。 | ||
| ===== シェルスクリプト ===== | ===== シェルスクリプト ===== | ||
| 行 55: | 行 108: | ||
| - | ===== 各種プログラミング言語 ===== | ||
| - | * [[シェルスクリプト]] | ||
| - | * [[awk]] | ||
| - | * [[python]] | ||
| - | * [[Fortran 90]] | ||
| - | |||
| - | ====== 実用データ処理 ====== | ||
| - | データを処理する際のちょっとしたテクニック | ||
| - | <note tip> | ||
| - | **Stay Simple, Stupid!**\\ 複雑で高機能なプログラムを作るよりも、単純な機能だけをもったプログラムを組み合わせて使うことを考えよ。そのためには、後述する基本的なunixコマンド、リダイレクト、スクリプト言語の一行プログラムの柔軟な使用法を習得する必要がある。 | ||
| - | 特に効果的な概念は「[[スクリプト(主にシェルスクリプト)を作るスクリプト]]」という発想である。ぜひ、身に着けてほしい。 | ||
| - | </ | ||
| - | スクリプトで有効に使えるTips | ||
| - | * unixコマンド | + | ===== Pythonガイド ===== |
| - | * grep | + | ASEを用いてDacapoによる計算を行うためには、若干のPythonの知識が必要です。 Pythonはオブジェクト指向の汎用言語で覚えておくと非常に便利なものです。 インタープリタとして実装されているため速度面ではcやFORTRANに比べて不利ですが、非常に柔軟な拡張性を持っており、各種モジュールを読み込むことによりVTKを使った描画から、RasMolやGnuPlotの自動実行までも行うことができます。 変数宣言がいらないこと、インタープリタでその場で試しながらプログラムを書いたりデバッグしたりできること、簡単な手順でグラフィックスを扱うことができることなどを考え合わせると、現代版BASICといった趣もあります。 |
| - | * sort | + | |
| - | * uniq | + | |
| - | * リダイレクション | ||
| - | * One Liner | + | * [[: |
| - | * sed | + | * ファイル名は'' |
| - | * awk | + | * ターミナルで< |
| - | * perl | + | $ python ○○○○.py </ |
| - | * ruby | + | * VTKやRasMol, |
| - | | + | $ python |
| + | </ | ||
| - | ===== リダイレクト | + | ==== Pythonで「コマンド」をつくるときの雛形 |
| - | プログラム「moge_exec」に、ファイル「hoge_in.data」から入力を読み込んで、出力をファイル「hage_out.data」に書き込むには | + | <code python> |
| - | <code sh> | + | # |
| - | $ ./moge_exec < hoge_in.data > hage_out.data | + | from optparse import OptionParser |
| + | |||
| + | cmd = OptionParser(usage | ||
| + | |||
| + | cmd.add_option(' | ||
| + | help = ' | ||
| + | |||
| + | cmd.add_option(' | ||
| + | help = ' | ||
| + | | ||
| + | |||
| + | (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 | ||
| </ | </ | ||
| - | または | ||
| - | <code sh> | ||
| - | $ cat hoge_in.data | ./moge_exec > hage_out.data | ||
| - | </ | ||
| - | とする。 | ||
| - | ===== Pythonガイド ===== | ||
| - | * [[python実用スクリプト]] | ||
| + | ---- | ||
| + | |||
| + | 詳細は[[: | ||
| ===== FORTRAN簡単ガイド ===== | ===== FORTRAN簡単ガイド ===== | ||
seminar/プログラミング実習.1597911314.txt.gz · 最終更新: (外部編集)