プログラム言語

  1. プログラム言語の意義
  2. プログラム言語の役割
  3. 利用者にとってのプログラム 処理方式の違い .. 一括処理方式(batch processing) と 対話処理方式 (interactive processing)
    foreground と background. Time shearing
  4. プログラム言語についての視点
  5. 言語処理系の機能
    言語処理系とは、原プログラムの入力によって, そのプログラムに述べられた指示に従った計算や入出力を 実行するための,総括的なシステム。
    原言語(L1)から目的言語(L2)への翻訳系(T)。T自体が書かれている言語 をL0とするとき、このL0を宿主言語(host language)と呼ぶ。
    図:翻訳系

    翻訳が実行されるためには翻訳系 T 自体が計算機 M の上で実行される必要がある。 この意味で T/L0は、機械語 M で書かれている T/M でなければならない。 原言語による原プログラム P/L1は、この翻訳系の入力であり、出力は 目的言語 L2 で記述される目的プログラム P/L2である。

  6. 実行形態 翻訳系は直接実行できる機械語プログラムを出力するのが普通であるが、中には機械語に 近い中間言語(擬似コード)を出力し、通訳形態で実行するものもある。
  7. 処理系の階層 コンパイラ、アセンブラ、ローダ、リンカ

追補:いろいろなインタープリタ

C や Pascal は由緒正しいコンパイラー言語であり,正規の授業で 扱われているので,身の回りにあるインタープリタの使い方を とりあげてみたい.

C シェル

/bin/csh である.いつもこれを使っているということは finger で調べることができる.Cシェルはコマンドラインからの命令を 読み取って実行するだけでなく,ファイルに記述されたコマンド を実行する機能もある.

例えば次のような dir という名前のファイルを作って,実行ビット を立てておくと,dir というコマンドで ls -l が実行できる.

#!/bin/csh
ls -l $*
$* のような特殊な記号の使い方は man csh などで調べて欲しい.

次の mojisuu というコマンドは,引数に書いた文字を数えてくれる.

#!/bin/csh
foreach i ($*)
  /bin/echo "$i\t\c"
  /bin/echo "$i\c" | wc -c
end
このように,繰り返しもできる.

シェルの仲間

Bourne シェル (/bin/sh),Bourne Again シェル (bash), (tcsh),Korn シェル (/bin/ksh),PERL など.

これらのうち,bash, perl などはパソコン(Win95/98) でも 使えるので試してみるとよい.

awk 行単位のデータ処理

Awk は一行ごとに決められた処理をする.
% ls -l | awk '{ sum += $5} END {print sum}'
と入れるとそのディレクトリにあるファイルのサイズの総和が出る. あるいは,入力した数字の総和を求めるには,sum.awk を以下のように 作って,
#!/bin/awk -f
    { sum += $1 }
END { print sum }
実行ビットを立てて,sum.awk というコマンドを実行する.一行にひとつ ずつ数を入れて最後に ^D を入れるとそこまでの総和が出てくる.

sed 文字操作

Sed は「エディタ」のコマンドをプログラミング可能にしたものである. 次のコマンドは abc という文字列を xyz に置き換える.
% sed -e 's/abc/xyz/g'