next up previous contents index
: エディタを利用してプログラムを書く (Windows 編) : Asir の操作 : Asirgui (Windows 版)   目次   索引

エディタを利用してプログラムを書く (unix 編)

入力をファイルに書いておいて, load して実行することができる. 2 章 で説明するエディタ emacs および Risa/Asir を同時に起動しておく (図 1.1 を見よ).

図 1.1: Asirと emacs
\scalebox{0.3}{\includegraphics{Figures/asiremacs.ps}}
このように二つソフトを立ち上げておいた状態で, 下の 1, 2, 3 を繰り返すのが一般的なプログラムの開発方法である.
  1. エディタ emacs でファイルを編集,
  2. emacs で変更したら, 変更内容をファイルに セーブ.
  3. Risa/Asir 側で load して使う.
このような方法は C や Java のプログラムを書く場合や, TeX で文書作成 する場合など, いろいろな場面で有効である.

エディタ emacs のつかいかたについては 2 章で解説しているので, 適宜参照するとよい. Emacs は長い歴史をもつ強力なスクリーンエディタである. Emacs Lisp と呼ばれるマクロ言語をもち, エディタの機能を変更していくことが 可能である. さらに emacs のなかから メールを読み書きしたり, プログラムのコンパイル, デバッグをすることも可能であり, 多くのプログラマに愛用されてきた. なお emacs と双壁をなしてプログラマに人気のあるエディタ として vi もある. シンプルでプログラミングにとり 大事な機能しかもたない軽快な vi 愛用者も多い.

とにもかくにも, Emacs を覚えておくといろいろな場面で便利なので ここでは emacs を使って説明しよう.

入力例 1.3   エディタ emacs を立ち上げる. emacs hoge.rr & と入力するとファイル hoge.rr を編集できる. なお, すでに emacs が起動していたら, ファイル hoge.rr をコマンド CTRL + x CTRL + f hoge.rr で開くと (open すると), ファイル hoge.rr を編集できる.
 
bash-2.03$ emacs hoge.rr & RETURN
 
Emacs で次を入力する.
2*(3+5^4);
deval(sin(3.14));
fctr(x^6-1);
end$
 
入力がおわったら, コマンド CTRL + x CTRL + s で ファイルをセーブ. 次に Asir の方で, load して読み込み実行.
 
bash-2.03$ asir RETURN
Asir の起動メッセージ
[0] load("./hoge.rr"); RETURN
 
出力結果:

1
1256
0.00159265
[[1,1],[x-1,1],[x+1,1],[x^2+x+1,1],[x^2-x+1,1]]
[4]

出力の最初の 1load が成功しましたよ, といってる 1 である.

さて, emacs を立ち上げるとき & をつけて起動していることに 気がついたであろうか?

UNIX は, もともと複数の人が同時に一つのコンピュータを使えるように設計 された OS である. 「同時」といっても, CPU が一つしかない場合には, ある 瞬間に実行されているのは一つのプログラムだが, UNIX は, 一つのプログラ ム(プロセス)に非常に短い時間 (例えば 10ミリ秒)しか割り当てず, 時間が来 ると強制的にそのプロセスを停止させ, 他のプロセスをスタートさせる. これ を繰り返すことにより, あたかも多くのプロセスが同時に動いているように見 えるのである. 言い換えれば UNIX は, アクティブなプロセスを待ち行列とし て管理している.

さて, 端末エミュレータも一つのプロセスであり, その中でユーザからの入力 を待っているシェルも一つのプロセスである. シェルは他のプログラムを実行 するのが仕事であるが,

bash-2.03$ emacs RETURN
とすると, emacs は起動するものの, シェルのプロンプトは表示されない. 何人かの人が経験したように, この状態で端末エミュレータに文字を入力 しても, 文字がオウム返しされるだけで何も起こらない. 実はこの状態では シェルは emacs の終了を待っている. これを, 「emacs を フォアグラウンドで実行している」という. これに対し,
bash-2.03$ emacs & RETURN
と実行すると,
[1] 60582 &
というようなメッセージを出してすぐにプロンプトが出る. これは, 呼び出したシェルと呼び出された emacs 双方がアクティブな プロセスとなっていることを意味する. この場合 「emcas を バックグラウンドで実行している」という.

フォアグラウンドからバックグラウンドへの移行も可能である. 何かのプロセスをフォアグラウンド実行しているシェルに, CTRL + z を入力すると, 実行されているプロセスが一旦停止し, シェルのプロンプトが 出る. このとき bg を実行するとプロセスはバックグラウンドに移行する.

 
CTRL + z  
[1]+     Stopped emacs
bash-2.03$ bg RETURN
[1]+     Stopped emacs &
bash-2.03$  


next up previous contents index
: エディタを利用してプログラムを書く (Windows 編) : Asir の操作 : Asirgui (Windows 版)   目次   索引
Nobuki Takayama 平成15年9月12日