情報処理

第 1 回 2000 年 4 月 12 日

1 Introduction

この講義では、コンピュータについての概論, 特に UNIX の仕組みやその操作 (電子メールなど), 応用 (ホームページ作成) を解説し, コンピュータ言語として C 言語について簡単に説明します.

この講義を受講する学生は必ず「情報処理演習」を受講してください. そうでなけば身につきません.

2 コンピュータで何をするのか

その名に従うと, コンピュータは計算をする機械ということになります. 実際コンピュータを開発した理由は, 複雑な計算の自動化（特に軍事目的）でした. また, その様な目的に多く用いられているのも事実です.

しかし時代が進むにつれて, コンピュータの使われ方の多くは, 計算の自動化よりはいわゆる「情報処理」になりつつあります. ここでは, 「情報処理とは何か」という理論的な話は抜きにして, 取り敢えず「情報処理 = データの作成と加工+情報通信」と捕える事にします. まず情報処理の具体的な方法の初歩とともに, 情報処理のためにどのような仕組が用意されているかを説明します.

演習の後半では (第 5 回あるいは第 6 回以降), 数学のために使えるプログラム言語として C 言語について説明します.

3 コンピュータはどのような構成になっているか

皆さんが使うコンピュータは, 大ざっぱにいって図のような構成になっています.

[figure: コンピュータ; 使用者; 入出力装置; 中央処理装置; 記憶装置; 他のコンピュータ; ネットワーク]

入出力装置その名の通り, データを入力し出力するための装置です. これを通じて人がコンピュータとやり取りします. この演習では, 入力装置としてキーボードとマウスを使います. また出力装置は, テレビのブラウン管を使います.

中央処理装置 (CPU) データの処理を実際に行うものです. コンピュータの心臓部です.

CPU の以下の４つのステップを電源の入っている限り繰り返します.

[1] 命令を主記憶から読み出す

[2] 命令を解読する

[3] その命令を実行する

[4] 割り込みの有無を調べ、あれば受け付ける

[4] について、割り込みの例としては, プログラムが暴走したときキーボートのキーを押して CPU に働きかけその暴走を止める命令などがあります.

記憶装置データを処理のために蓄えておく場所です. 蓄えられている時間によって一次記憶装置 (主記憶装置）と二次記憶装置 (補助記憶装置) に分類されます. 一次記憶装置 (主記憶装置) には、半導体メモリが主に使われ, 二次記憶装置 (補助記憶装置) には磁気ディスク (ハードディスク、フロッピーディスク) が使われることが多いですが, 必ずしもこの通りに使い分けられているとは限りません.

3.1 ハードウェアとソフトウェア

コンピュータの実体を構成する, 物理的な物体のことをハードウェアといいます. 具体的に述べますと, CPU, 記憶装置などを含むコンピュータ本体があり, 入力装置としてキーボートやマウス, 出力装置としてディスプレイやプリンタがあります.

ソフトウェアとはデータ処理の手順の総称をいいます. 例えば, コンピュータに電源をいれるとまずプロンプトが表われ, 適当にキーボートを押すと「入力ミス」の意味の言葉が表示され, 再び入力を待つ状態になります (UNIX の場合). どのような内容・形式の指令を受けつけるかは, そのパソコン上を動いているソフトウェアのひとつであるオペレーティングシステム (OS, 日本語で基本ソフトウェア) によって決まります. もうひとつアプリケーションソフトウェア (日本語で応用ソフトウェア) があります. この分類も, 数学のように正確な定義があるわけではありません. 基本的な考え方は, ハードウェアを直接制御するのが OS で, アプリケーションソフトウェアは, 通常 OS を通してハードウェアを使い処理を進めていきます^{1} .

4 UNIX

4.1 UNIX とは

この講義の演習では, UNIX と言うシステムを使います.

UNIX というのはある種の OS の名前です^{2} . OS としての基本的な機能がきちんと備わっており, またコンピュータを使う上で, だれもが必要とするアプリケーションが付属しているのが特徴です. UNIX は、 1960 年代の後半に AT&T(American Telephone and Telegram) のベル研究所で開発されました. その後の歴史等は, 参考文献を見てください.

因みに, UNIX の最後の日は、 2038 年 1 月 19 日 12 時 14 分 07 秒らしいです. 理由は, ファイルの日付が 32 ビットの整数の範囲を超えてしまうからです. コンピュータにおける数字について学べばこのことは理解できます. (来週します)

4.2 用語の説明

• アカウント UNIX のように複数の人が同時に一つの計算機を利用できるようなシステムでは, システムを利用するにあたってあらかじめ, 管理者によるユーザー登録手続きを受けておく必要があります. それによって管理者から与えられるシステムを利用する権限を (ユーザー) アカウントと呼びます.

cf. アカウントは文字通りの意味は口座の意味. 計算機を使うのに課金する単位. RAINBOW では, 学生の利用者はお金を払わなくてもよいが, 研究用利用者は研究費を払わないといけない.

• ログイン (login), ログオン (logon), ログアウト (logout), ログオフ (logoff) 各ユーザーが, システムを利用するに当たっては, ログインと呼ばれる利用開始の手続きを取る必要があります. (Windows 98 の場合はログオン) また, 利用終了時には, ログアウト (Window 98 の場合はログオフ) と呼ばれる, 利用終了手続きを行なわねばなりません. ログイン時, 各ユーザーは各人の login 名とパスワードを要求されます.

1 ファミコンで言うと, 本体の中身に入っているソフトウェアが OS で, カセットの中に入っているのがアプリケーション

2 実際には OS と共に付随するプログラミング環境やネットワーク環境総体を UNIX と言う事が多い.

• ログイン名 (login 名) システムを利用する際の各ユーザーの名前のこと.

• パスワードユーザーが本物かどうかを判別するために, ログイン手続きの際にシステムから要求される「あいことば」のこと. はじめて RAINBOW を利用する場合は, RAINBOW から交付された, 初期パスワードを用います. これは後述の注意にしたがって変更されねばなりません.

5 実習室及びその機材を利用する上での注意

最近のコンピュータは結構丈夫にできており, 滅多なことでは壊れません. しかししょせんは機械ですので, 手荒に扱うと壊れはしないものの寿命が短くなったり, 実質使い物にならなくなったりします. 暴力的破壊行為を加えれば, もちろん壊れます. コンピュータを扱う上では, 次のようなことに注意してください.

なお, 皆さんが使うものは, 大学で大切な財産ですし, 他に使う方も当然おられますので, 使用に当たっては壊すことの無いよう十分注意してください. 物理的破壊行為によって壊した場合には, 当然弁償していただくことになります.

5.1 コンピュータを使う上での注意事項

1. コンピュータのディスプレイ (ブラウン管) は, 素手で触らないようにしてください. ディスプレイの汚れの原因になります. またもし汚れていたら, 乾いた柔らかい布で拭いてください. ディスプレイの表面は, 光の反射を防ぐために特殊なコーティングがしてあります. それをできる限り傷つけないようにお願いします.

2. コンピュータの電源には触れないで下さい. コンピュータの電源を切るのは, 実はかなり危険な行為なのです.

5.2 簡単なコマンド

UNIX では, ユーザがコマンドといわれる文字列をタイプし, それをシステムが解釈して処理が進めるのが基本です. 従ってユーザは, 自分がやりたいことはどのコマンドで実現できるかを知らなければなりません. またどのようなコマンドが, 実行できるかも知る必要があります. 最悪の場合そのようなコマンドは存在しないかもしれません. このときにはプログラミングをして, それを作ることが必要になります.

ここでは, ENTER を押す事を ENTER と書く事にします.

注意もしキーボードをタイプしても何も起こらなければ、マウスカーソルの位置を見て, Window の上にあるかどうかを確かめて下さい. clear 画面をクリアするコマンドです.

 clear ENTER

とタイプしてみてください.

date 現在の日時を知るコマンドです.

date ENTER とタイプしてください. 今の日時がわかります. JST は日本標準時のことです.

cal calendar を表示します.

cal ENTER とタイプしてみてください. 今月のカレンダーが表示されます. 来月のカレンダーを表示するには

 cal 5 2000 ENTER

とタイプします. 5 2000 は 2000 年 5 月の意味です.

 cal 2001 ENTER

とタイプすると, 来年のカレンダーが全部でてきます.

who, w 今あなたが使っているワークステーションを, 同時に使っている人全員を表示します. who ENTER とタイプしてみてください. w ENTER とタイプすると, 少し違った表示が出ます.

finger 登録ユーザの情報を表示します.

finger (知りたいユーザ名) タイプしてみてください. finger とすればwho と同じです.

bc 電卓です. 実はプログラマブルですがここではそれについては触れません. bc ENTER とすると, 計算式の入力を待つモードに入ります. 例えば,

 1234567890+987654321 ENTER

とタイプすると,

 2222222211

と答が返ってきます. 終了するには, CTRL + d か quit ENTER です.

banner 花文字作成コマンドです.

 banner  UNIX ENTER

とタイプしてみてください.

man オンラインマニュアルです. 例えば clear の説明を見たければ,

 man  clear ENTER

と入力します.

      man  man ENTER

で man コマンドの説明がえられます.

      --継続 (6%)--

という表示で止まったら, スペースバー (キーボード下方の長いキー) を押せば, 次のページが見られます. b キーで 1 ページ戻ります. ほとんどのコマンドにきちんとオンラインマニュアルがありますので, コマンドの内容を詳しく知りたいとき, man コマンドでそれを確かめることが UNIX を使う上では重要です.

5.3 bc の演習

bc コマンドを使って簡単な計算をしましょう．使用できる２項演算子は， +,-,*,/の四則演算の他に， %,^を加えた６つの演算があります． +は足し算， -は引き算， * （アスタリスク）はかけ算， / （スラッシュ）は割算の商を計算します． %と^（キャレット，ハット）の機能は実験で確かめて下さい．

まず，計算コマンド（命令） bc を実行します．

     bc

とタイプして， Enter キーを押します．

では，順番に次のように入力してみて下さい．（「…と入力して下さい．」と言われたら，「…とタイプして Enter キーを押す」という意味です．）キーボードの上側に書いてある(や *などの記号は，左または右端の shift キー（シフトキー）を押しながら入力します．入力を間違えたら Enter キーを押して，再度入力して下さい．

     123*9+4
     1234*9+5
     12345*9+6

終了は， control （又は ctrl）キーを押しながら D を入力します．（control+D を入力と言われたら， control キーを押しながら D を入力するという意味です．簡単に^D を入力をして下さいと書いてある場合もあります．この場合^はキャレットキーではなく， control キーという意味です．）

再び bc と入力して計算コマンドを実行します．今度はキャレット（^）の機能について調べてみましょう．次の計算を実行してみて下さい．（キャレットキー^は数字の0 キーの２つ隣にあります．）

     3^2
     4^2
     5^2

     2^6
     2^7
     2^8
     2^10

control+D を入力する代わりに， quit と入力しても bc コマンドを終了することが出来ます．

括弧() のついた演算は優先的に計算されます．中括弧{}は使用出来ませんので注意して下さい．例えば，

     9*{8-(7-6)}

は構文エラー（syntax error）となりますので，

     9*(8-(7-6))

と入力します．また，かけ算記号*を省略することは出来ません．上の計算を

     9(8-(7-6))

と入力すると syntax error となります．

問題１２項演算子%の機能を調べよ．

問題２括弧のない場合の計算において，６つの演算子+,-,*,/,%,^の優先順序を調べよ．

問題３ 2^{2^{3}} + 1 が素数かどうかを調べよ．

問題４ 2^{2^{4}} + 1 が素数かどうかを調べよ．

問題５ 2^{2^{5}} + 1 が素数かどうかを調べよ．

6 単位の認定

この講義の単位は, 数回のレポートと数回のテストで認定します. レポート問題は, テキストの中に書いてあります. レポートは, 電子メールにてのみ受け付けます. 電子メールの使い方は, 来週説明します (演習でも習います). 紙に書かれたレポートは, 無効です. レポートを紙で提出しないようにしてください.

6.1 タイピングの練習

コンピュータのデータ処理においては, まずデータを入力しなければなりません. この演習では, データ入力に主にキーボード^{3} を用います. 授業内容をより効率よく把握するには, 遠回りのように見えますがタッチタイピング (キーボードを見ないでタイプすること) の練習をある程度することをお薦めします. コンピュータをある程度楽に使おうと思ったら, タイピングの練習は必須です. キーボードを触るのが初めてという方は, 積極的にプリズムの自習室に通ってタイピングに慣れてください. 参考文献の [1] に練習方法が簡単に述べられています. 一週間集中して練習すれば, それなりにできるようになります.

3 皆さんが使うキーボードの配列は上段のキー配列を取って, QWERTY 配列と呼ばれています. この配列は, 必ずしも人間が打ち易いとは限らない事が知られていますが.

6.2 参考文献について

この講義と関係が深い書籍を末尾に挙げておきました. 演習では, 時間の都合で正確さを欠いた内容を話す事が多々あります. その意味でも、参考文献を眺める事は常々心がけて下さい.

最初の六つは, UNIX の使い方全般について解説したものです. UNIX に関する本は沢山出版されていますが, このうち最初の四つは著者 (達) が実際に UNIX を教えた経験を元に書かれていますので, 初心者には接しやすいと思います.

[7] はこの講義の後半で解説する C 言語のバイブルです. プロフィショナルを目指す人は一読すべきでしょう. [8][9] は一人で C 言語を学ぶ人に最適な本です.

他の本は, 授業中に出て来るソフトウェアを開発者自身が解説した本です. これらの本もとても良く練られて書かれております. より詳しく知りたい方は, 是非これらの原典を一読する事をお勧めします.

[10] は, これから数学を基礎にした情報関係を行いたい方には参考になると思います. メディアセンターに一冊入れておきましたので見て下さい.

またその他, メディアセンターにはこの授業に関連するいろんな本があると思いますので, 各自拾い読み等をしてください.

参考文献

[1] The UNIX Super Text (上), 山口和紀監修, 技術評論社.

[2] UNIX WHITE BOOK, 雪田修一著, マグロウヒル.

[3] たのしい UNIX, 坂本文著, アスキー.

[4] 続たのしい UNIX, 坂本文著, アスキー.

[5] UNIX プログラミング環境, B. Kernighan, R. Pike 著石田晴久監訳, アスキー.

[6] UNIX ワールド, Kaare Christian, Susan Richter 著久野靖監訳, 丸善.

[7] The C Programing Language, カーニンハン・リッチー著石田晴久監訳, プログラミング言語 C 第２版, 共立出版.

[8] C 言語によるプログラミング [基礎編], [応用編], 内田智史著, オーム社.

[9] C 言語プログラミングレッスン [入門編], [文法編], 結城 浩著, ソフトバンク.

[10] インターネット時代の数学, 戸川 隼人その他編, 共立出版.

[11] L^{A}TEX 2e, Leslie Lamport 著阿瀬はるみ訳, ピアソン.

[12] 応用 UNIX, 羽山 博著, アスキー.

[13] コンピュータ概論, 都倉信樹著, 岩波書店.

7 パスワードについて

次回の演習までにパスワードの変更をしていただくと思います. 以下で説明するように, 良いパスワードを各自決めて変更しておきましょう.

7.1 パスワードの変更の必要性と良いパスワードを付けるための注意

• なぜパスワードをつけるか.

自分のアカウントの安全だけでなく他人のアカウントやシステム全体の安全上大変重要です. アカウントを破られないように以下の注意に従って良いパスワードを用いなければならない.

• パスワードが悪いと他人にばれる!! パスワードは暗号化されているが, 暗号系としてはあまり強くありません. 悪いパスワードはしかるべきプログラムを用いればたやすく破れます.

• パスワードがばれて他人にアカウントを奪われると

○自分が被害を受ける他人が自分になりすます.

・ファイルを消される.

・他人に困ったメールを出される.

それだけならアナタ自身が被害を被るだけだから良いのですが

○同じシステムを使う他人が被害を受ける.

・使用不可能状態にする.

・さらに他の人のアカウントを次々に奪う.

さらに

○ネットワーク上に接続された他の機器が被害を受ける.

・踏台という.

に使われて非常に困ります. 実際、毎年このような被害にありました官庁, 大学, 企業がおります. なお, Microsoft ネットワークの方は, 使っている本人が困る以外は, 外部に対してそれほど影響を与えません. Unix のパスワード管理は, 注意深く行って下さい.

• 基本的な注意パスワードは大文字, 小文字, 数字, 記号などを少なくとも 6 文字以上並べたものにする. 但し, パスワードは先頭 8 文字までが有効です. 浅はかなパスワードはすぐに破られるので注意する. 破られると, 自分だけでなく世界中の御迷惑になります.

• パスワードをつける際のルール

○推測されやすいパスワードをつけない.

・ログイン名,

・自分の名前や配偶者等の名前, ・電話番号, 車種, 住所, ・全部が数字, 全部が同じ文字, ・辞書等に出ている単語, ・および, 上記の繰り返しや逆綴.

詳細は, 付録「安全なパスワードを選ぶ方法」を参照.

• パスワードのマナー ○人が打鍵しているところは見ない ○アカウントの貸し借りはしない ○パスワードを他人に教えない (システム管理者にも) ○パスワードは頭の中にだけしまっておく (紙などに書かない) ○パスワードは頻繁に変更する ○初期パスワードは最初のログイン時に変更する

8 付録「安全なパスワードを選ぶ方法」

×: で始まっているのは悪い例. ○: になっているのは勧められる例.

* 絶対にしてはいけないこと.

・login name と同じパスワードを付けてはいけない.

×: login name が tss のとき → tss

・login name から容易に作れるものも同じくいけない.

×: login name が tss のとき → sst → tsstss → tsssst → Tss → TssSst

・finger で現れる文字列（passwd -r nis -g で設定した文字: finger コマンドで表示されるほか,mail/News の From: 行の () 内に現われる）をパスワードにしてはいけない. ×: login name = tss, In real life = SASABE Tetsuro → sasabe

・login name の時と同様,finger で現れる内容から容易に作れるものもいけない. ×: login name = tss, In real life = SASABE Tetsuro → SaSaBe → sasabeT → ebasas → tetsurosasabe

・login name や finger で現れる物に数字や記号を追加しただけのもを使ってはいけない. ×: login name = tss, In real life = SASABE Tetsuro → tss01 → sasabe0 → 1tetsuro → tetsuro?

・login name や finger で現れる内容の一部を「s を $ に」「o を 0 に」「i を 1 に」「l を 1 に」などの単純な規則で変えたものも使ってはいけない. ×: login name = tss, In real life = SASABE Tetsuro → t$$ → tet$ur0 → sa$abe

・このガイドや本などに出ている例, あるいは他の人が使っていることが判っているパスワードを使ってはいけない. このガイドに「勧められる例」として出ているのは「選び方」であって, 文字列そのものではありません.

* 避けるべきこと.

・人名を使うべきではない.

×: shiori,michiko,atsushi,yumiko,yuukinae ・単純な文字列を使ってはいけない.

×: password(というパスワード),123456,aaaaaa,abcdef, qwerty,asdfgh,11111 ・辞書に載っている単語や, コマンドの名前を使ってはいけない. 固有名詞もいけ

ない. ×: banzai, tangent, unicorn, Legend, canada, Washington

・上記 3 つに数字や記号を追加しただけでもまだ危険である.

×: lotus7, auction3, papa3, peace! ・上記のものを「s を $ に」「o を 0 に」「i を 1 に」「l を 1 に」などの規則で変

えたものもやはり危険なので使わない. ×: passw0rd, tr0n, pa$$w0rd

・電話番号や生年月日, 住所など個人情報から推測出来るものを使ってはいけない. ×: 1977 年 8 月 6 日生まれ中頭郡千原 1 電話 098-895-2221 → 19770806 → 8952221 → senbaru1

・「〜 chan」「〜 kun」あるいは短い名前の繰り返しなど, 愛称として用いられるものも危険. ×: ryoryo, kouchan, luriluri, wakochan, yumichan

* 比較的安全なパスワードの付け方

・無意味で, かつ覚えられる文字列を探す. ・関連の無い単語同士を記号でつなげるのはかなり危険だが, 間に & や * などの

非 ASCII 文字が入るならすこしだけましになる（×に近い○） . ○: dog & snow → dog%snow

・気に入った文章や詩などの頭文字を並べてみる.

○: Boys be ambitious ! – W. S. Clark. → Bba!wsc ○: Tokaino kojimano isono shirasunani warenakinurete kanito tawamuru → tkiswktawa

・パスワードには出来る限り「大文字と小文字」「記号」「数字」を混在させる. ○: tkiswktawa → tk1swkt121 ○: Bba!wsc → B6a!*wsc