目次

プログラミング言語概論

プログラム言語の分類

コンピュータ上で動作するプログラムは、 プログラム言語で書かれており、処理する 内容に依って使い分けられる。

汎用プログラム言語

第四世代言語

第四世代言語
4th generation language(4GL)

高水準言語(第3世代言語)よりさらに抽 象度の高い命令をもつプログラム言語

  1. 高生産性、習得が容易
  2. データベース機能を標準的にサポート
  3. 環境からの独立性
  4. 非手続き型

4GLの指す内容は文脈によって異なるので 注意が必要

スクリプト言語

エンドユーザ向き言語 小規模で簡単な処理に向く

代表的なスクリプト言語
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 <code> 0011_printf00010 1101_getc000111 1011_scanf11100 <code> ライブラリ (Library) libc.a

リンク(連係編集)

プログラム作成手順

  1. 原始プログラム(Source program)の作成
  2. 原始プログラムをコンパイルし、目的プログラム(Object module)に変換
  3. 目的プログラムを連係編集(link)し、実行可能プログラム(Executable module/Load(able) moduleに変換
  4. 実行可能プログラムをメモリ上にロードし実行する

概要

プログラムの作成から実行まで 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 ビット列

プログラム作成用語集

原始プログラム
source program/source code/source file
プログラム言語によって記述されたもの
目的プログラム
object module/object code/object file
コンパイラによって変換されたものアドレスなどが未定義のため実行不可
実行可能プログラム
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
高可搬性オブジェクト指向インタープリタ