新プログラミング等専門用語解説9(プログラミング系)
REV11
ブログ投稿しています。複数画像付き等最終版は此方から、ご覧ください。
今回は既に引用している幾つかの言葉と新規の用語を先ず挙げてから、一つ一つの用語についてボリュームを確認しながら、確認・解説したいと思います。(一部用語の、移動・纏めを行いました)
引用済み&新規用語一覧(主にプログラミング系です)(紫色用語は取り上げ済みです)(青色用語は今回ご説明するアイテムです)
インタプリタ型/コンパイラ型
AndroidOS
iOS
オブジェクト指向
オブジェクト
インスタンス
クラス
継承
ポリモーフィズム
インターフェース
オーバーライド/オーバーロード
コンストラクタ
カプセル化
デリゲード
イテレータ
アクセサ
ジェネリクス
アノテーション
UML
デザインパターン
TBD
TBD
手続き型プログラミング
イベント駆動型プログラミング
関数型プログラミング
変数
グローバル変数
ローカル変数
WEBアプリケーション
DLL
マルチスレッド
XML
スコープ
値型
参照型
関数
メソッド
ポインタ
例外処理
同期処理
非同期処理
フレームワーク
アルゴリズム
API
ライブラリ
データ構造
TBD
今回は、マルチスレッドについてコメントしてみたいと思います。
マルチスレッド
マルチスレッドとは、皆さんもご存じとは思いますが、マルチの言葉通り、複数の処理を基本的に並列で行う事を指します。
マルチスレッドのメリットは既に記しましたように、並列・同時に処理を行える点にあります。
結果、マルチスレッドであれば、余り重たい処理を沢山、同時に始めなければ、一つ一つの処理が終了するのを待ってから、各々の処理を実行するより、早い時間で最後の処理が終わると想像できます。
通常はWindows等のOSでの動作の事を指していると思いますが、プログラミングの観点でもマルチスレッドというポイントで対応する事が可能なようです。
何故、プログラミング側でマルチスレッドの対応が必要かというと、対応していないプログラムでは、複数のプロセスで分割計算などした場合の結果の纏めが簡単にはできない為だと思います。
例えば、四則演算の場合を考えてみましょう。
(1+2+3+4)/(5+6+7+8)=?
この様な演算の場合、マルチプロセスでは無い場合は、(1+2+3+4)の計算を先ず行い、(5+6+7+8)の計算を行って、最後に最初の演算結果を二度目の演算結果で割り算を行うと思います。
マルチスレッドであれば、(1+2+3+4)を一つのプロセスで実行し、(5+6+7+8)を別なプロセスで実行して、各々の結果を三つ目のプロセスで割り算を実行すれば、最短で且つ最適化されたCPU使用率で演算が可能となると思います。
また、その場合、複数のプロセスで各々の演算結果をシェアする必要があります。通常は共通メモリの様な発想になると思いますが、こういった事を考えると、単純にプログラミングをマルチスレッドに対応するだけでは旨く動作しない様に思えます。
こういった事の対応を考えると、マルチスレッドだけでなく、マルチCPUの対応もプログラミングで可能な部分がある気がしてくるのは講師だけでしょうか?
皆さんは、プログラミングについて、どの様なご意見・イメージをお持ちでしょうか?
講師の経験が、皆様のお役に立てれば幸いです。