第一章 プログラム言語の概要 胡 振江 ([email protected]) 1.1 プログラミング言語の意義 プログラムとは 計算の手順を記したもの 計算機 計算手順を計算機内に蓄えていることが特徴 計算機内の命令列にしたがう計算の遂行 機械語 00000010101111001010 00000010111111001000 00000011001110101000 計算機理解できる言語 機械語の命令の種類は機械ごとに異なる 個々の命令は8から64ビット程度のビット列 人間(プログラマ)にとってわかりにくい アセンブリ語 PushVar "a" PushVar "b" PushVar "c" Bopr Times Bopr Plus 人間が理解しやすい形式 記憶コード(mnemonic code)による命令表記 プログラム上での位置を示す名札(label)の導入 機械語命令を並べるプログラミング 高水準言語 a+b*c 計算機の能力に応じた命令を用いるのではない、 問題に合わせて設計される コンパイラ(compiler): 高水準言語を機械語に翻訳するプログラム (高水準言語の一つの文は数個の機械語に対応) プログラミング言語の意義 高水準言語を用いる立場は 人間のほうが計算機よりも貴重であるという観点 プログラマがプログラミングに費やす時間を削減 プログラミング言語はアルゴリズムの形式的記 述の道具 計算機で問題を処理する手順の表現手段 アルゴリズム構築時の思考の道具 算法言語 1.2 プログラミング言語の種類 プログラミング言語の特徴 プログラミング言語の選択 プログラミング言語の取扱い 構文論(syntax) 記号をどのように並べるのか 意味論(semantics) 記号の並びの表わす意味はなにか 語用論(pragmatics) 利用者が記号をどのように使うか 意味上で同等な機能が 異なる構文で表現されることも 水準による分類 低水準言語: 高水準言語: 計算機に近い機械語・アセンブリ語 計算機のレジスタ、メモリ、入出力装置などを参照 プログラムにハードウェアの特性は現われない コンパイラによるレジスタ割当て、メモリ割付け 機械向き高水準言語: 高水準言語の特徴をもちハードウェア機能の指定可 能 用途による分類 汎用言語(general purpose language) 特殊目的言語(special purpose language) 狭い分野を対象とした言語 算法言語(algorithmic language) 多くの分野で使われることを目的とした言語 アルゴリズムの記述による処理を目標とした言語 実時間言語(real time language) 事象の発生に応じた動作を記述するための言語 プロセス制御言語(process control language) 計算モデルによる分類 計算モデル(computation model) プログラムやデータの処理過程の抽象化 分類 命令型言語(imperative language) 関数型言語(functional language) 論理型言語(logic programming language) 対象指向型言語(object oriented language) 命令型言語 特徴 記憶域の状態変化が計算の効果 状態変化を指定する命令主体の言語 function factorial(n:integer):integer; var fac:integer; begin fac:=1; while n> 0 do begin fac:=fac*n; n:=n-1 end; factorial:= fac end; 関数型言語 特徴 数学の関数の適用によるアルゴリズムの表現 入力と出力との関係のみを記述したもの factorial n | n==0 = 1 | otherwise = n*factorial(n-1) 状態なし 論理型言語 特徴 命題を証明する推論過程を計算とみなす 推論規則を適用する基本操作 単一化(ユニフィケーション, unification) 逆戻り(バックトラッキング, backtracking) オブジェクト指向言語 特徴 計算過程の対象(object)を個体としてとらえる 対象間のメッセージ(message)によって計算 が進行 プログラミング言語の プログラミング 言語を記述する言語:超言語 言語の概念の記述に用いる超言語には・・・ 数学的な取扱いが重要 証明の手段が必要 プログラミング言語を超言語として・・・ 超言語の概念が数学的に確立されていること 抽象的な機能の説明に具体性をもたせられる 超言語の処理系によってその機能を確認する 関数型言語 Haskell 第一章のまとめ プログラミング言語は プログラミング言語の分類の基準 計算機に対する処理を指示するためのもの アルゴリズムを形式的に記述するためのもの 言語の水準 用途 計算モデル プログラミング言語のプログラミング 言語の定義を与えるには超言語が必要 プログラミング言語による言語プログラミング
© Copyright 2024 ExpyDoc