この文書の現在のバージョンと選択したバージョンの差分を表示します。
計算機言語:lecture1 2009/01/23 11:32 | — 現在 | ||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ====== プログラミング言語概論 ====== | ||
- | ===== プログラム言語の分類 ===== | ||
- | |||
- | * 汎用プログラム言語 | ||
- | * 第四世代言語 | ||
- | * スクリプト言語 | ||
- | * 特殊問題向き言語 | ||
- | |||
- | コンピュータ上で動作するプログラムは、 | ||
- | プログラム言語で書かれており、処理する | ||
- | 内容に依って使い分けられる。 | ||
- | |||
- | ===== 汎用プログラム言語 ===== | ||
- | |||
- | * 低水準言語 | ||
- | * 機械語 | ||
- | * アセンブリ言語(アセンブラ) | ||
- | * 高水準言語 | ||
- | * 手続き型言語 | ||
- | * 非手続き型言語 | ||
- | * 構造化言語 | ||
- | * オブジェクト指向型言語 | ||
- | ===== 第四世代言語 ===== | ||
- | ; 第四世代言語 | ||
- | : 4th generation language(4GL) | ||
- | |||
- | 高水準言語(第3世代言語)よりさらに抽 | ||
- | 象度の高い命令をもつプログラム言語 | ||
- | |||
- | - 高生産性、習得が容易 | ||
- | - データベース機能を標準的にサポート | ||
- | - 環境からの独立性 | ||
- | - 非手続き型 | ||
- | 4GLの指す内容は文脈によって異なるので | ||
- | 注意が必要 | ||
- | |||
- | ===== スクリプト言語 ===== | ||
- | エンドユーザ向き言語 | ||
- | 小規模で簡単な処理に向く | ||
- | * 表計算のマクロ言語 | ||
- | * Webのサービスプログラム(cgi)に利用 | ||
- | ; 代表的なスクリプト言語 | ||
- | : perl, ruby, python (独立汎用型) | ||
- | :awk, sed (目的別unix系プログラム) | ||
- | :sh, csh (バッチ処理型インタープリタ) | ||
- | |||
- | ===== 特殊問題向き言語 ===== | ||
- | |||
- | ; シミュレーション言語 | ||
- | : GPSS, DYNAMO | ||
- | ; 数値制御用言語 | ||
- | : APT | ||
- | ; 土木建築用言語 | ||
- | : COGO, STRESS | ||
- | ; 統計処理用言語 | ||
- | : SAS | ||
- | |||
- | ===== 言語処理プログラム ===== | ||
- | |||
- | 機械語 | ||
- | 通常唯一の命令列 | ||
- | 通常0/1の2進数で表現される | ||
- | 人間に理解し易いように16進数が使われ | ||
- | ることもある | ||
- | プログラム | ||
- | 言語 | ||
- | 機械語 | ||
- | 言語処理プログラム | ||
- | 機械語 | ||
- | ON OFF ON OFF OFF OFF ON ON | ||
- | SW | ||
- | LED | ||
- | 実験用マイクロコンピュータボードで | ||
- | 入力SWに対応するLEDを点灯する | ||
- | ただし、入力SWのポート番号は11111001(F9) | ||
- | 出力LEDのポート番号は11111000(F8)とする | ||
- | 1101101111111001 | ||
- | 1101001111111000 | ||
- | DB F9 | ||
- | D3 F8 | ||
- | 低水準言語 | ||
- | 機械語 | ||
- | アセンブリ言語 | ||
- | 人間に解りにくい | ||
- | 特定のハードウェアに依存する | ||
- | プログラムを小さくすることができる | ||
- | プログラムを高速に実行することができる | ||
- | アセンブリ言語 | ||
- | ON OFF ON OFF OFF OFF ON ON | ||
- | SW | ||
- | LED | ||
- | 機械語と一対一に対応 | ||
- | 入力SWのポート番号は(F9)、出力LEDのポート番号は(F8)、 | ||
- | プロセッサはZ80 | ||
- | IN A,(??) → DB ?? | ||
- | OUT (??),A → D3 ?? | ||
- | IN A,(F9) DB F9 | ||
- | OUT (F8),A D3 F8 | ||
- | アセンブリ | ||
- | 言語 | ||
- | 機械語 | ||
- | アセンブラ | ||
- | 高水準言語 | ||
- | 人間の言語表現に近い構造をもつ | ||
- | 記述に、汎用性・可搬性がある | ||
- | 特定のハードウェアに依存しない | ||
- | 現在の主流 | ||
- | COBOL, Fortran, c, pascal, c++, java | ||
- | lisp, prolog, SQL | ||
- | 高水準言語 | ||
- | ON OFF ON OFF OFF OFF ON ON | ||
- | SW | ||
- | LED | ||
- | c言語 | ||
- | unsigned int a; | ||
- | a = get_SW_status(); | ||
- | set_LED_on(a); | ||
- | Fortran | ||
- | INTEGER A | ||
- | READ (9, *) A | ||
- | WRITE (8, *) A | ||
- | 入出力関数は専用ライブラリで | ||
- | 用意されなければならない | ||
- | 入出力装置番号8/9はシステム | ||
- | により定義されていなければな | ||
- | らない | ||
- | コンパイラとインタープリタ | ||
- | コンパイラ(翻訳型) | ||
- | 高水準言語で書かれたプログラムを機械語 | ||
- | に一括翻訳した後、実行する | ||
- | 高速、エラーを取り除くのが難しい | ||
- | インタープリタ(解釈型) | ||
- | 高水準言語で書かれたプログラムを一行づ | ||
- | つ機械語に解釈し逐次実行する | ||
- | 低速、扱い易い | ||
- | プログラムの作成から実行まで | ||
- | #include <stdio.h> | ||
- | int main(void) { | ||
- | printf("Hello\n"); } | ||
- | 原始プログラム | ||
- | (Source program) | ||
- | testc.c | ||
- | 00101Hello11000 | ||
- | 101_main0011001 | ||
- | 10101_printf0001 | ||
- | 目的プログラム | ||
- | (Object module) | ||
- | testc.o | ||
- | 001010101110001 | ||
- | 010011001100110 | ||
- | 101010111100001 | ||
- | 実行可能プログラム | ||
- | (Executable module) | ||
- | a.out | ||
- | 0011_printf00010 | ||
- | 1101_getc000111 | ||
- | 1011_scanf11100 | ||
- | ライブラリ | ||
- | (Library) | ||
- | libc.a | ||
- | コンパイラ | ||
- | リンカ | ||
- | コンパイル | ||
- | リンク(連係編集) | ||
- | プログラム作成手順 | ||
- | 概要 | ||
- | ・原始プログラム(Source program)の作成 | ||
- | ・原始プログラムをコンパイルし目的プロ | ||
- | グラム(Object module)に変換 | ||
- | ・目的プログラムを連係編集(link)し、実行 | ||
- | 可能プログラム(Executable module/ | ||
- | Load(able) moduleに変換 | ||
- | ・実行可能プログラムをメモリ上にロード | ||
- | し実行する | ||
- | プログラムの作成から実行まで | ||
- | hello.c | ||
- | int main(){ | ||
- | printf("Hello,world\n"); | ||
- | } | ||
- | hello.o | ||
- | 0110010100_main_000 | ||
- | 110001100110_printf | ||
- | _0 | ||
- | a.out | ||
- | 0110010100001110000 | ||
- | 1100011001100101010 | ||
- | 10 | ||
- | コンパイラ | ||
- | リンカ | ||
- | Source program | ||
- | Object module | ||
- | Loadable module | ||
- | プログラム(モジュール)の保存 | ||
- | ファイル | ||
- | T97E121 | ||
- | T97E121 | ||
- | T97E121 | ||
- | 85 | ||
- | 48 | ||
- | 72 | ||
- | A | ||
- | D | ||
- | B | ||
- | フィールド | ||
- | レコード | ||
- | 011000 | ||
- | 011110 | ||
- | 110100 | ||
- | ビット列 | ||
- | プログラム作成用語集(1) | ||
- | 原始プログラム | ||
- | source program/source code/source file | ||
- | プログラム言語によって記述されたもの | ||
- | 目的プログラム | ||
- | object module/object code/object file | ||
- | コンパイラによって変換されたもの | ||
- | アドレスなどが未定義のため実行不可 | ||
- | プログラム作成用語集(2) | ||
- | 実行可能プログラム | ||
- | executable file/load module/command | ||
- | プログラムの実行に必要なサブルーチンや | ||
- | 関数などを含めた計算機で実行可能なもの | ||
- | リンク(連係編集) | ||
- | 目的プログラムのサブルーチン、関数のア | ||
- | ドレス定義を行いライブラリなどと結合さ | ||
- | せて実行可能プログラムを作成する | ||
- | リンケージエディタ(リンカ)によって行う | ||
- | コンパイル | ||
- | 概要 | ||
- | 原始プログラムを機械語に翻訳する作業 | ||
- | 処理過程 | ||
- | (1) 字句解析 | ||
- | (2) 構文解析 | ||
- | (3) 意味解析 | ||
- | (4) 最適化 | ||
- | (5) コード生成 | ||
- | アプリケーションの種類 | ||
- | GUI アプリケーション | ||
- | (GUI: Graphical User Interface) | ||
- | 高水準言語からOSの提供するAPIを呼び出 | ||
- | すことにより作成する | ||
- | コンソールアプリケーション | ||
- | OSの提供する標準入出力を使用して作成 | ||
- | し、CUIから利用する | ||
- | (CUI: Character User Interface) | ||
- | 主なプログラム言語 | ||
- | Fortran | ||
- | 最初の高水準言語、科学技術計算に向く | ||
- | COBOL | ||
- | 主に事務処理用に用いられる | ||
- | c言語 | ||
- | unixの標準開発環境、汎用性が高い | ||
- | Pascal | ||
- | プログラミング教育用 | ||
- | 主なプログラム言語 | ||
- | c++ | ||
- | c言語にオブジェクト指向の機能を付加 | ||
- | LISP | ||
- | 関数型言語、人工知能やリスト処理用 | ||
- | Smalltalk | ||
- | 最初のオブジェクト指向言語 | ||
- | Java | ||
- | 高可搬性オブジェクト指向インタープリタ |