プログラム言語
- プログラム言語の意義
- (低水準) 機械語 アセンブリ言語 プログラム言語 (高水準)
- 操作系 と 言語処理系
- プログラム言語の役割
- 人間から計算機へ、動作の具体的な指示の手段
- 人間が計算機にやらせたいことを具体的に考える際の思考媒体
- 計算機にやらせようとしていることの具体的な説明の手段
- 人間相互の間で算法(Algorithm)についての知見を伝達する手段
- 算法についての知見ないしは計算機の動かし方を随時に引き出して活用できるように蓄積
しておく媒体
- 計算機教育の媒体
- 利用者にとってのプログラム
- 信頼性
- 柔軟性
- 応答時間
- 安全性(セキュリティ .. security)
- 経済性
処理方式の違い .. 一括処理方式(batch processing)
と 対話処理方式 (interactive processing)
foreground と background. Time shearing
- プログラム言語についての視点
- 利用可能性、入手可能性 (金、install 能力)
- 実現可能性(implementation)
- 計算機資源消費効率
- 人間向き(高水準)、機械向き(低水準) ... 機械向き高水準言語
- 表現力、書きやすさ、読みやすさ、冗長性、注釈機能
- 学びやすさ、教えやすさ
- 言語の重さ、区分の良好性(modulability)、直交性(orthogonality)
- 区分間の連絡法(interface)
- 誤りやすさ、副作用、プログラムの正しさの検証
- 保守、修正のしやすさ
- 移植性、機種依存
- 汎用言語、特殊目的言語
- 適応性、柔軟性、拡張性
- 算法言語、実時間言語
- 順次処理言語、並行処理言語
- (実行)文中心の言語、式(の評価)中心の言語
- 手続き(procedure)型言語、関数(function)型言語
- 言語処理系の機能
言語処理系とは、原プログラムの入力によって,
そのプログラムに述べられた指示に従った計算や入出力を
実行するための,総括的なシステム。
原言語(L1)から目的言語(L2)への翻訳系(T)。T自体が書かれている言語
をL0とするとき、このL0を宿主言語(host language)と呼ぶ。

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

- 実行形態
- 直接実行形態 ... 機械語による実行可能プログラム

- 通訳形態 ... 通訳系インタープリタ, interpreter を介した実行

翻訳系は直接実行できる機械語プログラムを出力するのが普通であるが、中には機械語に
近い中間言語(擬似コード)を出力し、通訳形態で実行するものもある。
- 処理系の階層
コンパイラ、アセンブラ、ローダ、リンカ
追補:いろいろなインタープリタ
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'