技術研修土日を挟んで2日目。
本質的な内容になってきました。
前回↓
www.d0nchan.com
今回の目標
- ①ソフトウェアの基礎的な知識を理解する
- ②データ処理について理解する
- ③データベースを理解する
- ④ネットワークの基礎的な知識を理解する
①ソフトウェアの基礎
前回金曜日はハードウェアを中心に学習しました。
今回はソフトウェアについて。
ソフトウェアの分類
ソフトウェアは「システムソフトウェア」と「アプリケーションソフトウェア」に分かれ、前者はOSなどの動作必須ソフト、後者は利用目的に合わせて導入するもの。
さらにシステムソフトウェアは「基本ソフトウェア」と「ミドルウェア」に分類できます。
前者はまさにWindowsやMac、Linuxといった基本OS、後者はネットワーク管理ソフト、IME、音声認識システムなど、OSに組み込まれるソフトを指します。
なるほど。
OSの分類
OSはOSでもいくつかの種類に分類できます。
同時実行可能プログラム数による分け方
シングルタスクOS…MS-DOS
マルチタスクOS…UNIX、Linux、Windows、MacOS、iOS、Android、汎用機用OS
利用可能ユーザ数による分け方
シングルユーザOS...MS-DOS、Windows
マルチユーザOS..UNIX、Linux、汎用機OS
Windowsってマルチユーザではないんですね。アカウントの切り替えはできるけどそれとは何が違うんだろう?
プログラム管理
プログラムが読み込まれてから実行されるまでの過程を学びました。
①ユーザがOSに対し、プログラムの起動を指示
②OSは指示されたプログラムを補助記憶装置(HDDやSSD)から呼び出し
③主記憶装置(メモリ)にコピー
④OSはコピーされたプログラムを実行
⑤プログラムは、実行終了後にOSに通知
⑥OSはプログラムが占有していたメモリ領域を解放
一連の流れがわかりやすかったです。
記憶管理(メモリ管理)
プログラムが動作する上でのメモリの考え方。
「固定区画方式」と「可変区画方式」「仮想記憶(ページング)方式」があるそうです。
それぞれプログラムを区分けし、その1ブロックの大きさが違うみたいです。固定区画方式と可変区画方式は、メモリロスや断片化が多いデメリットがあり、現在では補助記憶装置を併用して使う仮想記憶方式が主流だそうです。
HDDの領域の一部を仮想的にメモリとして使うとな?
これにより、メモリの無駄が発生しにくくなるそうです。
そういえば、メモリの空いた領域をボリュームドライブとして使うソフトあったね。
言語処理ソフトウェア
人間にわかりやすい言語で書かれたプログラムを、コンピュータが実行出来る機械語プログラムに変換するソフトウェア。
あ、これプログラミング言語ですね。
インタプリタ型言語…BASIC、Perl、PHP、Ruby、Python、JavaScript
コンパイラ型言語…COBOL、C++、C#、Java
という風に分類できます。
②データ処理
バッチ処理(一括処理)
リアルタイム処理(即時処理)
オフライン処理
オンライン処理
それぞれの組み合わせでの実際の事案をグループで話し合いました。
たとえば、バッチ処理×オンライン処理ならクレジットカード決済、リアルタイム処理×オンライン処理ならネットバンキングとか。
③データベース
大量のデータの中から特定のものを取得するためにデータベースというものを利用します。
データベース内のデータを扱うのがSQLという言語。
データベースにもいくつか種類があるということも学びました。
- Oracle(有料・ライセンス高い)
- MySQL(一部有料・Oracleの管轄)
- PostgreSQL(オープンソース)
- SQLite(オープンソース・ローカルに保存される)
④ネットワーク
LANとWANがあるということを習いましたが僕は知ってました。
他にも、OSI参照モデルというのがあるそうだが、ネットワークエンジニアになるわけではないのでまだ覚えなくていいとのこと。
イーサネットやMACアドレス、ゲートウェイ、IPアドレスなどの基本用語も習いました。
大体知ってた。
小言
この日は、社会人基礎力というものもやりました。国が定める立派な社会人として必要な要素「前に踏む出す力」「考え抜く力」「チームワークで働く力」この3本の軸をもとに12の能力要素の中でどれが一番大事かをグループで話し合いました。
ちなみに僕は「計画力」「主体性」「働きかけ力」の順にチョイスしました。
まぁ答えはないんですけど、社会人について考えさせられる講義でした。
次回、コンピュータ基礎最終日です。
全然うまくまとまらない(笑)